1
0
Fork 0
forked from wry/wry
wry/src/ifs/wl_callback.rs
2024-07-12 20:05:31 +02:00

49 lines
958 B
Rust

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<Client>,
pub id: WlCallbackId,
pub tracker: Tracker<Self>,
}
impl WlCallback {
pub fn new(id: WlCallbackId, client: &Rc<Client>) -> Self {
Self {
client: client.clone(),
id,
tracker: Default::default(),
}
}
pub fn send_done(&self, data: u32) {
self.client.event(Done {
self_id: self.id,
callback_data: data,
});
}
}
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 {}