summaryrefslogtreecommitdiffstats
path: root/native/src/window.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2023-01-13 20:33:59 +0100
committerLibravatar GitHub <noreply@github.com>2023-01-13 20:33:59 +0100
commit597af315af714f3ecadd195516e80506504dcb26 (patch)
tree200d0447efc60c9066b762c9f1a00ce55d66def7 /native/src/window.rs
parentd2b66805b350b4bd2ca5cb2818a6c05e3cfb5235 (diff)
parent507820a8438cec25074f92b72e118e0931fa7f9f (diff)
downloadiced-597af315af714f3ecadd195516e80506504dcb26.tar.gz
iced-597af315af714f3ecadd195516e80506504dcb26.tar.bz2
iced-597af315af714f3ecadd195516e80506504dcb26.zip
Merge pull request #1647 from iced-rs/feature/widget-request-redraw
Widget-driven animations
Diffstat (limited to 'native/src/window.rs')
-rw-r--r--native/src/window.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/native/src/window.rs b/native/src/window.rs
index 1b97e655..a5cdc8ce 100644
--- a/native/src/window.rs
+++ b/native/src/window.rs
@@ -2,9 +2,29 @@
mod action;
mod event;
mod mode;
+mod redraw_request;
mod user_attention;
pub use action::Action;
pub use event::Event;
pub use mode::Mode;
+pub use redraw_request::RedrawRequest;
pub use user_attention::UserAttention;
+
+use crate::subscription::{self, Subscription};
+use crate::time::Instant;
+
+/// Subscribes to the frames of the window of the running application.
+///
+/// The resulting [`Subscription`] will produce items at a rate equal to the
+/// refresh rate of the window. Note that this rate may be variable, as it is
+/// normally managed by the graphics driver and/or the OS.
+///
+/// In any case, this [`Subscription`] is useful to smoothly draw application-driven
+/// animations without missing any frames.
+pub fn frames() -> Subscription<Instant> {
+ subscription::raw_events(|event, _status| match event {
+ crate::Event::Window(Event::RedrawRequested(at)) => Some(at),
+ _ => None,
+ })
+}