Skip to content

Commit 388794f

Browse files
committed
improv: use damage
1 parent 727bee0 commit 388794f

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

cosmic-panel-bin/src/space/overflow.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ impl PanelSpace {
181181
let scaled_size: Size<i32, _> =
182182
p.rectangle.size.to_f64().to_physical(p.scale).to_i32_round();
183183
if let Some(s) = p.egl_surface.as_ref() {
184-
// TODO do we need to have the renderer for this?
184+
// TODO do we need to have the renderer for
185185
s.resize(scaled_size.w.max(1), scaled_size.h.max(1), 0, 0);
186186
}
187187
if let Some(viewport) = p.viewport.as_ref() {

cosmic-panel-bin/src/space/render.rs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -284,9 +284,12 @@ impl PanelSpace {
284284
elements.extend(bg);
285285
};
286286

287-
_ = my_renderer.render_output(renderer, &mut f, age, &elements, clear_color);
287+
let res =
288+
my_renderer.render_output(renderer, &mut f, age, &elements, clear_color)?;
288289
drop(f);
289-
egl_surface.swap_buffers(None)?;
290+
let mut dmg = res.damage.cloned();
291+
292+
egl_surface.swap_buffers(dmg.as_deref_mut())?;
290293

291294
for window in self.space.elements().filter_map(|w| {
292295
if let CosmicMappedInternal::Window(w) = w {
@@ -351,16 +354,17 @@ impl PanelSpace {
351354
1.0,
352355
smithay::backend::renderer::element::Kind::Unspecified,
353356
);
354-
p.popup.damage_tracked_renderer.render_output(
357+
let res = p.popup.damage_tracked_renderer.render_output(
355358
renderer,
356359
&mut f,
357360
age,
358361
&elements,
359362
clear_color,
360363
)?;
361364
drop(f);
365+
let mut dmg = res.damage.cloned();
362366

363-
p.popup.egl_surface.as_ref().unwrap().swap_buffers(None)?;
367+
p.popup.egl_surface.as_ref().unwrap().swap_buffers(dmg.as_deref_mut())?;
364368

365369
let wl_surface = p.popup.c_popup.wl_surface().clone();
366370
wl_surface.frame(qh, wl_surface.clone());
@@ -392,16 +396,17 @@ impl PanelSpace {
392396
1.0,
393397
smithay::backend::renderer::element::Kind::Unspecified,
394398
);
395-
subsurface.subsurface.damage_tracked_renderer.render_output(
399+
let res = subsurface.subsurface.damage_tracked_renderer.render_output(
396400
renderer,
397401
&mut f,
398402
age,
399403
&elements,
400404
clear_color,
401405
)?;
402406
drop(f);
407+
let mut dmg = res.damage.cloned();
403408

404-
subsurface.subsurface.egl_surface.swap_buffers(None)?;
409+
subsurface.subsurface.egl_surface.swap_buffers(dmg.as_deref_mut())?;
405410

406411
let wl_surface = subsurface.subsurface.c_surface.clone();
407412
wl_surface.frame(qh, wl_surface.clone());
@@ -499,15 +504,17 @@ impl PanelSpace {
499504

500505
elements.extend(bg_render_element.unwrap_or_default());
501506

502-
_ = p.damage_tracked_renderer.render_output(
507+
let res = p.damage_tracked_renderer.render_output(
503508
renderer,
504509
&mut f,
505510
age,
506511
&elements,
507512
clear_color,
508-
);
513+
)?;
509514
drop(f);
510-
p.egl_surface.as_ref().unwrap().swap_buffers(None)?;
515+
let mut dmg = res.damage.cloned();
516+
517+
p.egl_surface.as_ref().unwrap().swap_buffers(dmg.as_deref_mut())?;
511518
let wl_surface = p.c_popup.wl_surface();
512519
wl_surface.frame(qh, wl_surface.clone());
513520
wl_surface.commit();

0 commit comments

Comments
 (0)