fix(wayland): protocol error

This commit is contained in:
Nova
2025-08-03 15:43:51 -07:00
parent de045a1c68
commit 24beda4a4a
4 changed files with 60 additions and 23 deletions

View File

@@ -1,12 +1,22 @@
#![allow(unused)]
use super::{MessageSink, display::Display};
use super::{Message, MessageSink, display::Display};
use std::{fmt::Debug, sync::Arc};
use waynest::{server::Client, wire::ObjectId};
use waynest::{
server::{Client, Result, protocol::core::wayland::wl_display::WlDisplay},
wire::ObjectId,
};
pub trait ClientExt {
fn message_sink(&self) -> MessageSink;
fn display(&self) -> Arc<Display>;
async fn protocol_error(
&mut self,
sender_id: ObjectId,
object_id: ObjectId,
code: u32,
message: String,
) -> Result<()>;
}
impl ClientExt for Client {
fn message_sink(&self) -> MessageSink {
@@ -19,6 +29,21 @@ impl ClientExt for Client {
fn display(&self) -> Arc<Display> {
self.get::<Display>(ObjectId::DISPLAY).unwrap()
}
async fn protocol_error(
&mut self,
sender_id: ObjectId,
object_id: ObjectId,
code: u32,
message: String,
) -> Result<()> {
self.display()
.error(self, sender_id, object_id, code, message)
.await?;
let _ = self.message_sink().send(Message::Disconnect);
Ok(())
}
}
#[derive(Debug, Default)]