diff options
author | 2021-11-07 15:15:33 +0700 | |
---|---|---|
committer | 2021-11-07 15:15:33 +0700 | |
commit | eafad00af2a9bae9f3ed8124e2a6f6e59ee5d253 (patch) | |
tree | 76413948c9c9723075189d51d4c2e02c0f8fdd23 /glutin | |
parent | 61c747b53589d98f477fea95f85d2ea5349666d3 (diff) | |
parent | 07b5097bc92ced376d09115d787ff1d2ebe00836 (diff) | |
download | iced-eafad00af2a9bae9f3ed8124e2a6f6e59ee5d253.tar.gz iced-eafad00af2a9bae9f3ed8124e2a6f6e59ee5d253.tar.bz2 iced-eafad00af2a9bae9f3ed8124e2a6f6e59ee5d253.zip |
Merge pull request #1110 from iced-rs/remove-renderer-traits
Reduce the surface of the `Renderer` APIs
Diffstat (limited to 'glutin')
-rw-r--r-- | glutin/src/application.rs | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/glutin/src/application.rs b/glutin/src/application.rs index fa2192d8..5d10e96a 100644 --- a/glutin/src/application.rs +++ b/glutin/src/application.rs @@ -1,5 +1,6 @@ //! Create interactive, native cross-platform applications. -use crate::{mouse, Error, Executor, Runtime}; +use crate::mouse; +use crate::{Error, Executor, Runtime}; pub use iced_winit::Application; @@ -179,10 +180,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(); @@ -246,10 +244,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 { + context.window().set_cursor_icon( + conversion::mouse_interaction(new_mouse_interaction), + ); + + mouse_interaction = new_mouse_interaction; + } + context.window().request_redraw(); } event::Event::PlatformSpecific(event::PlatformSpecific::MacOS( @@ -291,10 +297,20 @@ 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()); debug.draw_finished(); + if new_mouse_interaction != mouse_interaction { + context.window().set_cursor_icon( + conversion::mouse_interaction( + new_mouse_interaction, + ), + ); + + mouse_interaction = new_mouse_interaction; + } + context.resize(glutin::dpi::PhysicalSize::new( physical_size.width, physical_size.height, @@ -305,11 +321,10 @@ async fn run_instance<A, E, C>( viewport_version = current_viewport_version; } - let new_mouse_interaction = compositor.draw( + compositor.present( &mut renderer, state.viewport(), state.background_color(), - &primitive, &debug.overlay(), ); @@ -317,14 +332,6 @@ async fn run_instance<A, E, C>( debug.render_finished(); - if new_mouse_interaction != mouse_interaction { - context.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. } |