summaryrefslogtreecommitdiffstats
path: root/glutin
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2021-11-07 15:15:33 +0700
committerLibravatar GitHub <noreply@github.com>2021-11-07 15:15:33 +0700
commiteafad00af2a9bae9f3ed8124e2a6f6e59ee5d253 (patch)
tree76413948c9c9723075189d51d4c2e02c0f8fdd23 /glutin
parent61c747b53589d98f477fea95f85d2ea5349666d3 (diff)
parent07b5097bc92ced376d09115d787ff1d2ebe00836 (diff)
downloadiced-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.rs39
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.
}