@@ -560,27 +560,10 @@ async fn run() -> Result<()> {
560560 WindowEvent :: CloseRequested => target. exit ( ) ,
561561 WindowEvent :: Resized ( size) => {
562562 pending_resize = Some ( size) ;
563- forward_app_worker_input (
564- & mut hot_reloader,
565- DesktopInputEvent :: Window ( DesktopWindowEvent :: Resized {
566- width : size. width ,
567- height : size. height ,
568- scale_factor : window. scale_factor ( ) as f32 ,
569- } ) ,
570- ) ;
571563 window. request_redraw ( ) ;
572564 }
573565 WindowEvent :: ScaleFactorChanged { .. } => {
574566 pending_resize = Some ( window. inner_size ( ) ) ;
575- let size = window. inner_size ( ) ;
576- forward_app_worker_input (
577- & mut hot_reloader,
578- DesktopInputEvent :: Window ( DesktopWindowEvent :: Resized {
579- width : size. width ,
580- height : size. height ,
581- scale_factor : window. scale_factor ( ) as f32 ,
582- } ) ,
583- ) ;
584567 window. request_redraw ( ) ;
585568 }
586569 WindowEvent :: Focused ( focused) => {
@@ -1229,6 +1212,18 @@ async fn run() -> Result<()> {
12291212 } ;
12301213 if let Some ( size) = pending_resize. take ( ) {
12311214 canvas. resize ( size) ;
1215+ // Winit may deliver many resize events between presented
1216+ // frames. Forward only the newest dimensions so the app
1217+ // worker does not rebuild and serialize a discarded scene
1218+ // for every intermediate event.
1219+ forward_app_worker_input (
1220+ & mut hot_reloader,
1221+ DesktopInputEvent :: Window ( DesktopWindowEvent :: Resized {
1222+ width : size. width ,
1223+ height : size. height ,
1224+ scale_factor : window. scale_factor ( ) as f32 ,
1225+ } ) ,
1226+ ) ;
12321227 }
12331228 let window_size = window. inner_size ( ) ;
12341229 if !desktop_surface_size_is_renderable ( window_size) {
0 commit comments