summaryrefslogtreecommitdiffstats
path: root/winit/src/application.rs
diff options
context:
space:
mode:
Diffstat (limited to 'winit/src/application.rs')
-rw-r--r--winit/src/application.rs38
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.
}