diff options
author | 2023-01-13 20:33:59 +0100 | |
---|---|---|
committer | 2023-01-13 20:33:59 +0100 | |
commit | 597af315af714f3ecadd195516e80506504dcb26 (patch) | |
tree | 200d0447efc60c9066b762c9f1a00ce55d66def7 /native/src/window.rs | |
parent | d2b66805b350b4bd2ca5cb2818a6c05e3cfb5235 (diff) | |
parent | 507820a8438cec25074f92b72e118e0931fa7f9f (diff) | |
download | iced-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.rs | 20 |
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, + }) +} |