diff options
Diffstat (limited to 'winit/src/application.rs')
-rw-r--r-- | winit/src/application.rs | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs index ab9a70a0..9d787933 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -253,10 +253,7 @@ async fn run_instance<A, E, C>( &mut debug, )); - let mut primitive = - user_interface.draw(&mut renderer, state.cursor_position()); let mut mouse_interaction = mouse::Interaction::default(); - let mut events = Vec::new(); let mut messages = Vec::new(); @@ -319,10 +316,18 @@ async fn run_instance<A, E, C>( } debug.draw_started(); - primitive = + let new_mouse_interaction = user_interface.draw(&mut renderer, state.cursor_position()); debug.draw_finished(); + if new_mouse_interaction != mouse_interaction { + window.set_cursor_icon(conversion::mouse_interaction( + new_mouse_interaction, + )); + + mouse_interaction = new_mouse_interaction; + } + window.request_redraw(); } event::Event::PlatformSpecific(event::PlatformSpecific::MacOS( @@ -359,8 +364,16 @@ async fn run_instance<A, E, C>( debug.layout_finished(); debug.draw_started(); - primitive = user_interface + let new_mouse_interaction = user_interface .draw(&mut renderer, state.cursor_position()); + + if new_mouse_interaction != mouse_interaction { + window.set_cursor_icon(conversion::mouse_interaction( + new_mouse_interaction, + )); + + mouse_interaction = new_mouse_interaction; + } debug.draw_finished(); compositor.configure_surface( @@ -372,27 +385,16 @@ async fn run_instance<A, E, C>( viewport_version = current_viewport_version; } - match compositor.draw( + match compositor.present( &mut renderer, &mut surface, state.viewport(), state.background_color(), - &primitive, &debug.overlay(), ) { - Ok(new_mouse_interaction) => { + Ok(()) => { debug.render_finished(); - if new_mouse_interaction != mouse_interaction { - window.set_cursor_icon( - conversion::mouse_interaction( - new_mouse_interaction, - ), - ); - - mouse_interaction = new_mouse_interaction; - } - // TODO: Handle animations! // Maybe we can use `ControlFlow::WaitUntil` for this. } |