Skip to content

Commit 81d358a

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

1 file changed

Lines changed: 26 additions & 22 deletions

File tree

tiny_skia/src/window/compositor.rs

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -186,29 +186,33 @@ 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+
surface
190+
.layer_stack
191+
.push_front(surface.layer_stack.pop_back().unwrap());
192+
} else {
193+
surface.layer_stack.push_front(renderer.layers().to_vec());
194+
surface.background_color = background_color;
195+
196+
let damage = damage::group(
197+
damage,
198+
Rectangle::with_size(viewport.logical_size()),
199+
);
200+
201+
let mut pixels = tiny_skia::PixmapMut::from_bytes(
202+
bytemuck::cast_slice_mut(&mut buffer),
203+
physical_size.width,
204+
physical_size.height,
205+
)
206+
.expect("Create pixel map");
204207

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

213217
on_pre_present();
214218
buffer.present().map_err(|_| compositor::SurfaceError::Lost)

0 commit comments

Comments
 (0)