//! An event loop proxy. use std::sync::mpsc::SendError; use sctk::reexports::calloop::channel::Sender; use crate::event_loop::EventLoopClosed; /// A handle that can be sent across the threads and used to wake up the `EventLoop`. pub struct EventLoopProxy { user_events_sender: Sender, } impl Clone for EventLoopProxy { fn clone(&self) -> Self { EventLoopProxy { user_events_sender: self.user_events_sender.clone(), } } } impl EventLoopProxy { pub fn new(user_events_sender: Sender) -> Self { Self { user_events_sender } } pub fn send_event(&self, event: T) -> Result<(), EventLoopClosed> { self.user_events_sender .send(event) .map_err(|SendError(error)| EventLoopClosed(error)) } }