@@ -284,9 +284,12 @@ impl PanelSpace {
284
284
elements. extend ( bg) ;
285
285
} ;
286
286
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) ?;
288
289
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 ( ) ) ?;
290
293
291
294
for window in self . space . elements ( ) . filter_map ( |w| {
292
295
if let CosmicMappedInternal :: Window ( w) = w {
@@ -351,16 +354,17 @@ impl PanelSpace {
351
354
1.0 ,
352
355
smithay:: backend:: renderer:: element:: Kind :: Unspecified ,
353
356
) ;
354
- p. popup . damage_tracked_renderer . render_output (
357
+ let res = p. popup . damage_tracked_renderer . render_output (
355
358
renderer,
356
359
& mut f,
357
360
age,
358
361
& elements,
359
362
clear_color,
360
363
) ?;
361
364
drop ( f) ;
365
+ let mut dmg = res. damage . cloned ( ) ;
362
366
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 ( ) ) ?;
364
368
365
369
let wl_surface = p. popup . c_popup . wl_surface ( ) . clone ( ) ;
366
370
wl_surface. frame ( qh, wl_surface. clone ( ) ) ;
@@ -392,16 +396,17 @@ impl PanelSpace {
392
396
1.0 ,
393
397
smithay:: backend:: renderer:: element:: Kind :: Unspecified ,
394
398
) ;
395
- subsurface. subsurface . damage_tracked_renderer . render_output (
399
+ let res = subsurface. subsurface . damage_tracked_renderer . render_output (
396
400
renderer,
397
401
& mut f,
398
402
age,
399
403
& elements,
400
404
clear_color,
401
405
) ?;
402
406
drop ( f) ;
407
+ let mut dmg = res. damage . cloned ( ) ;
403
408
404
- subsurface. subsurface . egl_surface . swap_buffers ( None ) ?;
409
+ subsurface. subsurface . egl_surface . swap_buffers ( dmg . as_deref_mut ( ) ) ?;
405
410
406
411
let wl_surface = subsurface. subsurface . c_surface . clone ( ) ;
407
412
wl_surface. frame ( qh, wl_surface. clone ( ) ) ;
@@ -499,15 +504,17 @@ impl PanelSpace {
499
504
500
505
elements. extend ( bg_render_element. unwrap_or_default ( ) ) ;
501
506
502
- _ = p. damage_tracked_renderer . render_output (
507
+ let res = p. damage_tracked_renderer . render_output (
503
508
renderer,
504
509
& mut f,
505
510
age,
506
511
& elements,
507
512
clear_color,
508
- ) ;
513
+ ) ? ;
509
514
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 ( ) ) ?;
511
518
let wl_surface = p. c_popup . wl_surface ( ) ;
512
519
wl_surface. frame ( qh, wl_surface. clone ( ) ) ;
513
520
wl_surface. commit ( ) ;
0 commit comments