vizia_baseview/
proxy.rs
1use std::collections::VecDeque;
2use std::sync::{LazyLock, Mutex};
3use vizia_core::context::EventProxy;
4use vizia_core::events::Event;
5
6pub(crate) static PROXY_QUEUE: LazyLock<Mutex<VecDeque<Event>>> = LazyLock::new(Mutex::default);
7
8pub(crate) fn queue_put(event: Event) {
9 PROXY_QUEUE.lock().unwrap().push_back(event)
10}
11
12pub(crate) fn queue_get() -> Option<Event> {
13 PROXY_QUEUE.lock().unwrap().pop_front()
14}
15
16#[derive(Clone)]
17pub(crate) struct BaseviewProxy;
18
19impl EventProxy for BaseviewProxy {
20 fn send(&self, event: Event) -> Result<(), ()> {
21 queue_put(event);
22 Ok(())
23 }
24
25 fn make_clone(&self) -> Box<dyn EventProxy> {
26 Box::new(self.clone())
27 }
28}