use { crate::{ client::Client, leaks::Tracker, object::{Object, Version}, wire::{wl_callback::*, WlCallbackId}, }, std::{convert::Infallible, rc::Rc}, thiserror::Error, }; pub struct WlCallback { pub client: Rc, pub id: WlCallbackId, pub tracker: Tracker, } impl WlCallback { pub fn new(id: WlCallbackId, client: &Rc) -> Self { Self { client: client.clone(), id, tracker: Default::default(), } } pub fn send_done(&self) { self.client.event(Done { self_id: self.id, callback_data: 0, }); } } impl WlCallbackRequestHandler for WlCallback { type Error = Infallible; } object_base! { self = WlCallback; version = Version(1); } impl Object for WlCallback {} simple_add_obj!(WlCallback); #[derive(Debug, Error)] pub enum WlCallbackError {}