Skip to content

Commit 403c766

Browse files
hecrjOttatop
andcommitted
Fix buffer presentation in iced_tiny_skia
Co-authored-by: Ottatop <[email protected]>
1 parent 8b2b302 commit 403c766

File tree

1 file changed

+25
-22
lines changed

1 file changed

+25
-22
lines changed

tiny_skia/src/window/compositor.rs

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -186,29 +186,32 @@ pub fn present(
186186
.unwrap_or_else(|| vec![Rectangle::with_size(viewport.logical_size())]);
187187

188188
if damage.is_empty() {
189-
return Ok(());
190-
}
191-
192-
surface.layer_stack.push_front(renderer.layers().to_vec());
193-
surface.background_color = background_color;
194-
195-
let damage =
196-
damage::group(damage, Rectangle::with_size(viewport.logical_size()));
197-
198-
let mut pixels = tiny_skia::PixmapMut::from_bytes(
199-
bytemuck::cast_slice_mut(&mut buffer),
200-
physical_size.width,
201-
physical_size.height,
202-
)
203-
.expect("Create pixel map");
189+
let layers = surface.layer_stack.pop_back().unwrap();
190+
surface.layer_stack.push_front(layers);
191+
} else {
192+
surface.layer_stack.push_front(renderer.layers().to_vec());
193+
surface.background_color = background_color;
194+
195+
let damage = damage::group(
196+
damage,
197+
Rectangle::with_size(viewport.logical_size()),
198+
);
199+
200+
let mut pixels = tiny_skia::PixmapMut::from_bytes(
201+
bytemuck::cast_slice_mut(&mut buffer),
202+
physical_size.width,
203+
physical_size.height,
204+
)
205+
.expect("Create pixel map");
204206

205-
renderer.draw(
206-
&mut pixels,
207-
&mut surface.clip_mask,
208-
viewport,
209-
&damage,
210-
background_color,
211-
);
207+
renderer.draw(
208+
&mut pixels,
209+
&mut surface.clip_mask,
210+
viewport,
211+
&damage,
212+
background_color,
213+
);
214+
}
212215

213216
on_pre_present();
214217
buffer.present().map_err(|_| compositor::SurfaceError::Lost)

0 commit comments

Comments
 (0)