diff options
author | 2023-01-12 04:35:41 +0100 | |
---|---|---|
committer | 2023-01-12 04:35:41 +0100 | |
commit | 0b86c4a299d384cafca31206eac8c94f1123518d (patch) | |
tree | 6101ee28b8f030963bcc0f0cc7c51e67076fcf72 /native/src/window.rs | |
parent | c649ec8cf7066eb190193ff499c0ecccbca76796 (diff) | |
download | iced-0b86c4a299d384cafca31206eac8c94f1123518d.tar.gz iced-0b86c4a299d384cafca31206eac8c94f1123518d.tar.bz2 iced-0b86c4a299d384cafca31206eac8c94f1123518d.zip |
Implement `window::frames` subscription
... and use it in the `solar_system` example :tada:
Diffstat (limited to 'native/src/window.rs')
-rw-r--r-- | native/src/window.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/native/src/window.rs b/native/src/window.rs index 1b97e655..4bccc471 100644 --- a/native/src/window.rs +++ b/native/src/window.rs @@ -8,3 +8,18 @@ pub use action::Action; pub use event::Event; pub use mode::Mode; pub use user_attention::UserAttention; + +use crate::subscription::{self, Subscription}; + +use std::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 +/// framerate of the monitor of said window. +pub fn frames() -> Subscription<Instant> { + subscription::raw_events(|event, _status| match event { + crate::Event::Window(Event::RedrawRequested(at)) => Some(at), + _ => None, + }) +} |