use super::runner; use crate::event::Event; use crate::event_loop::EventLoopClosed; use crate::platform_impl::platform::r#async::Channel; pub struct EventLoopProxy { runner: Channel, T>, } impl EventLoopProxy { pub fn new(runner: runner::Shared) -> Self { Self { runner: Channel::new(runner, |runner, event| { runner.send_event(Event::UserEvent(event)) }) .unwrap(), } } pub fn send_event(&self, event: T) -> Result<(), EventLoopClosed> { self.runner.send(event); Ok(()) } } impl Clone for EventLoopProxy { fn clone(&self) -> Self { Self { runner: self.runner.clone(), } } }