freya_core/
rendering_ticker.rs

1use crate::prelude::consume_root_context;
2
3pub type RenderingTickerSender = async_broadcast::Sender<()>;
4
5#[derive(Clone)]
6pub struct RenderingTicker {
7    rx: async_broadcast::Receiver<()>,
8}
9
10impl RenderingTicker {
11    pub fn get() -> Self {
12        consume_root_context()
13    }
14    pub fn new() -> (async_broadcast::Sender<()>, Self) {
15        let (tx, rx) = async_broadcast::broadcast(256);
16        (tx, Self { rx })
17    }
18
19    pub async fn tick(&mut self) {
20        self.rx.recv().await.ok();
21    }
22}