diff --git a/src/backends/xorg/mod.rs b/src/backends/xorg/mod.rs index e39ce595..03055d9c 100644 --- a/src/backends/xorg/mod.rs +++ b/src/backends/xorg/mod.rs @@ -23,7 +23,7 @@ use std::ptr; use std::rc::Rc; use thiserror::Error; use uapi::{c, OwnedFd}; -use xcb_dl::{ffi, Xcb, XcbDri3, XcbPresent, XcbShm, XcbXinput, XcbXkb}; +use xcb_dl::{ffi, Xcb, XcbDri3, XcbPresent, XcbXinput, XcbXkb}; use xcb_dl_util::error::{XcbError, XcbErrorParser}; use xcb_dl_util::xcb_box::XcbBox; @@ -66,9 +66,9 @@ pub enum XorgBackendError { #[error("Could not query device")] QueryDevice(#[source] XcbError), } -efrom!(XorgBackendError, EventLoopError, EventLoopError); -efrom!(XorgBackendError, ServerMemError, ServerMemError); -efrom!(XorgBackendError, WheelError, WheelError); +efrom!(XorgBackendError, EventLoopError); +efrom!(XorgBackendError, ServerMemError); +efrom!(XorgBackendError, WheelError); struct XcbCon { xcb: Box, diff --git a/src/client/mod.rs b/src/client/mod.rs index 1c2e274d..f8b2e18d 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1,5 +1,11 @@ use crate::async_engine::{AsyncError, AsyncFd, SpawnedFuture}; use crate::client::objects::Objects; +use crate::ifs::org_kde_kwin_server_decoration::{ + OrgKdeKwinServerDecoration, OrgKdeKwinServerDecorationError, +}; +use crate::ifs::org_kde_kwin_server_decoration_manager::{ + OrgKdeKwinServerDecorationManagerError, OrgKdeKwinServerDecorationManagerObj, +}; use crate::ifs::wl_buffer::{WlBuffer, WlBufferError, WlBufferId}; use crate::ifs::wl_callback::WlCallback; use crate::ifs::wl_compositor::{WlCompositorError, WlCompositorObj}; @@ -8,6 +14,7 @@ use crate::ifs::wl_data_device_manager::{WlDataDeviceManagerError, WlDataDeviceM use crate::ifs::wl_data_offer::{WlDataOffer, WlDataOfferError}; use crate::ifs::wl_data_source::{WlDataSource, WlDataSourceError}; use crate::ifs::wl_display::{WlDisplay, WlDisplayError}; +use crate::ifs::wl_drm::{WlDrmError, WlDrmObj}; use crate::ifs::wl_output::{WlOutputError, WlOutputObj}; use crate::ifs::wl_region::{WlRegion, WlRegionError, WlRegionId}; use crate::ifs::wl_registry::{WlRegistry, WlRegistryError, WlRegistryId}; @@ -41,7 +48,6 @@ use std::mem; use std::rc::Rc; use thiserror::Error; use uapi::{c, OwnedFd}; -use crate::ifs::wl_drm::{WlDrmError, WlDrmObj}; mod objects; mod tasks; @@ -144,44 +150,58 @@ pub enum ClientError { ZwpLinuxBufferParamsV1Error(#[source] Box), #[error("An error occurred in a `wl_drm`")] WlDrmError(#[source] Box), + #[error("An error occurred in a `org_kde_kwin_server_decoration_manager`")] + OrgKdeKwinServerDecorationManagerError(#[source] Box), + #[error("An error occurred in a `org_kde_kwin_server_decoration`")] + OrgKdeKwinServerDecorationError(#[source] Box), } efrom!(ClientError, ParserError, MsgParserError); -efrom!(ClientError, WlDisplayError, WlDisplayError); -efrom!(ClientError, WlRegistryError, WlRegistryError); -efrom!(ClientError, WlSurfaceError, WlSurfaceError); -efrom!(ClientError, WlCompositorError, WlCompositorError); -efrom!(ClientError, WlShmError, WlShmError); -efrom!(ClientError, WlShmPoolError, WlShmPoolError); -efrom!(ClientError, WlRegionError, WlRegionError); -efrom!(ClientError, WlSubsurfaceError, WlSubsurfaceError); -efrom!(ClientError, WlSubcompositorError, WlSubcompositorError); -efrom!(ClientError, XdgSurfaceError, XdgSurfaceError); -efrom!(ClientError, XdgPositionerError, XdgPositionerError); -efrom!(ClientError, XdgWmBaseError, XdgWmBaseError); -efrom!(ClientError, XdgToplevelError, XdgToplevelError); -efrom!(ClientError, XdgPopupError, XdgPopupError); -efrom!(ClientError, WlBufferError, WlBufferError); -efrom!(ClientError, WlOutputError, WlOutputError); -efrom!(ClientError, WlSeatError, WlSeatError); -efrom!(ClientError, WlTouchError, WlTouchError); -efrom!(ClientError, WlPointerError, WlPointerError); -efrom!(ClientError, WlKeyboardError, WlKeyboardError); +efrom!(ClientError, WlDisplayError); +efrom!(ClientError, WlRegistryError); +efrom!(ClientError, WlSurfaceError); +efrom!(ClientError, WlCompositorError); +efrom!(ClientError, WlShmError); +efrom!(ClientError, WlShmPoolError); +efrom!(ClientError, WlRegionError); +efrom!(ClientError, WlSubsurfaceError); +efrom!(ClientError, WlSubcompositorError); +efrom!(ClientError, XdgSurfaceError); +efrom!(ClientError, XdgPositionerError); +efrom!(ClientError, XdgWmBaseError); +efrom!(ClientError, XdgToplevelError); +efrom!(ClientError, XdgPopupError); +efrom!(ClientError, WlBufferError); +efrom!(ClientError, WlOutputError); +efrom!(ClientError, WlSeatError); +efrom!(ClientError, WlTouchError); +efrom!(ClientError, WlPointerError); +efrom!(ClientError, WlKeyboardError); efrom!( ClientError, WlDataDeviceManagerError, WlDataDeviceManagerError ); -efrom!(ClientError, WlDataDeviceError, WlDataDeviceError); -efrom!(ClientError, WlDataSourceError, WlDataSourceError); -efrom!(ClientError, WlDataOfferError, WlDataOfferError); -efrom!(ClientError, ZwpLinuxDmabufV1Error, ZwpLinuxDmabufV1Error); +efrom!(ClientError, WlDataDeviceError); +efrom!(ClientError, WlDataSourceError); +efrom!(ClientError, WlDataOfferError); +efrom!(ClientError, ZwpLinuxDmabufV1Error); efrom!( ClientError, ZwpLinuxBufferParamsV1Error, ZwpLinuxBufferParamsV1Error ); efrom!(ClientError, WlDrmError, WlDrmError); +efrom!( + ClientError, + OrgKdeKwinServerDecorationManagerError, + OrgKdeKwinServerDecorationManagerError +); +efrom!( + ClientError, + OrgKdeKwinServerDecorationError, + OrgKdeKwinServerDecorationError +); impl ClientError { fn peer_closed(&self) -> bool { @@ -561,6 +581,8 @@ simple_add_obj!(WlDataSource); simple_add_obj!(ZwpLinuxDmabufV1Obj); simple_add_obj!(ZwpLinuxBufferParamsV1); simple_add_obj!(WlDrmObj); +simple_add_obj!(OrgKdeKwinServerDecorationManagerObj); +simple_add_obj!(OrgKdeKwinServerDecoration); macro_rules! dedicated_add_obj { ($ty:ty, $field:ident) => { diff --git a/src/globals.rs b/src/globals.rs index cd941a3f..40cb3b9e 100644 --- a/src/globals.rs +++ b/src/globals.rs @@ -1,6 +1,10 @@ use crate::client::{Client, DynEventFormatter}; +use crate::ifs::org_kde_kwin_server_decoration_manager::{ + OrgKdeKwinServerDecorationManagerError, OrgKdeKwinServerDecorationManagerGlobal, +}; use crate::ifs::wl_compositor::WlCompositorError; use crate::ifs::wl_data_device_manager::WlDataDeviceManagerError; +use crate::ifs::wl_drm::{WlDrmError, WlDrmGlobal}; use crate::ifs::wl_output::{WlOutputError, WlOutputGlobal}; use crate::ifs::wl_registry::WlRegistry; use crate::ifs::wl_seat::{WlSeatError, WlSeatGlobal}; @@ -17,7 +21,6 @@ use crate::{ use std::fmt::{Display, Formatter}; use std::rc::Rc; use thiserror::Error; -use crate::ifs::wl_drm::{WlDrmError, WlDrmGlobal}; #[derive(Debug, Error)] pub enum GlobalError { @@ -43,21 +46,20 @@ pub enum GlobalError { ZwpLinuxDmabufV1Error(#[source] Box), #[error("An error occurred in a `wl_drm` global")] WlDrmError(#[source] Box), + #[error("An error occurred in a `org_kde_kwin_server_decoration_manager` global")] + OrgKdeKwinServerDecorationManagerError(#[source] Box), } -efrom!(GlobalError, WlCompositorError, WlCompositorError); -efrom!(GlobalError, WlShmError, WlShmError); -efrom!(GlobalError, WlSubcompositorError, WlSubcompositorError); -efrom!(GlobalError, XdgWmBaseError, XdgWmBaseError); -efrom!(GlobalError, WlOutputError, WlOutputError); -efrom!(GlobalError, WlSeatError, WlSeatError); -efrom!(GlobalError, ZwpLinuxDmabufV1Error, ZwpLinuxDmabufV1Error); -efrom!(GlobalError, WlDrmError, WlDrmError); -efrom!( - GlobalError, - WlDataDeviceManagerError, - WlDataDeviceManagerError -); +efrom!(GlobalError, WlCompositorError); +efrom!(GlobalError, WlShmError); +efrom!(GlobalError, WlSubcompositorError); +efrom!(GlobalError, XdgWmBaseError); +efrom!(GlobalError, WlOutputError); +efrom!(GlobalError, WlSeatError); +efrom!(GlobalError, ZwpLinuxDmabufV1Error); +efrom!(GlobalError, WlDrmError); +efrom!(GlobalError, WlDataDeviceManagerError); +efrom!(GlobalError, OrgKdeKwinServerDecorationManagerError); #[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)] pub struct GlobalName(u32); @@ -221,6 +223,7 @@ simple_add_global!(XdgWmBaseGlobal); simple_add_global!(WlDataDeviceManagerGlobal); simple_add_global!(ZwpLinuxDmabufV1Global); simple_add_global!(WlDrmGlobal); +simple_add_global!(OrgKdeKwinServerDecorationManagerGlobal); macro_rules! dedicated_add_global { ($ty:ty, $field:ident) => { diff --git a/src/ifs/mod.rs b/src/ifs/mod.rs index 14cf888b..4876ff27 100644 --- a/src/ifs/mod.rs +++ b/src/ifs/mod.rs @@ -1,3 +1,5 @@ +pub mod org_kde_kwin_server_decoration; +pub mod org_kde_kwin_server_decoration_manager; pub mod wl_buffer; pub mod wl_callback; pub mod wl_compositor; diff --git a/src/ifs/org_kde_kwin_server_decoration/mod.rs b/src/ifs/org_kde_kwin_server_decoration/mod.rs new file mode 100644 index 00000000..e488ac75 --- /dev/null +++ b/src/ifs/org_kde_kwin_server_decoration/mod.rs @@ -0,0 +1,93 @@ +use crate::client::{Client, DynEventFormatter}; +use crate::object::{Interface, Object, ObjectId}; +use crate::utils::buffd::MsgParser; +use std::cell::Cell; +use std::rc::Rc; +pub use types::*; + +mod types; + +const RELEASE: u32 = 0; +const REQUEST_MODE: u32 = 1; + +const MODE: u32 = 0; + +#[allow(dead_code)] +const NONE: u32 = 0; +#[allow(dead_code)] +const CLIENT: u32 = 1; +const SERVER: u32 = 2; + +id!(OrgKdeKwinServerDecorationId); + +pub struct OrgKdeKwinServerDecoration { + id: OrgKdeKwinServerDecorationId, + client: Rc, + requested: Cell, +} + +impl OrgKdeKwinServerDecoration { + pub fn new(id: OrgKdeKwinServerDecorationId, client: &Rc) -> Self { + Self { + id, + client: client.clone(), + requested: Cell::new(false), + } + } + + pub fn mode(self: &Rc, mode: u32) -> DynEventFormatter { + Box::new(Mode { + obj: self.clone(), + mode, + }) + } + + fn release(&self, parser: MsgParser<'_, '_>) -> Result<(), ReleaseError> { + let _req: Release = self.client.parse(self, parser)?; + self.client.remove_obj(self)?; + Ok(()) + } + + fn request_mode(self: &Rc, parser: MsgParser<'_, '_>) -> Result<(), RequestModeError> { + let req: RequestMode = self.client.parse(&**self, parser)?; + if req.mode > SERVER { + return Err(RequestModeError::InvalidMode(req.mode)); + } + let mode = if self.requested.replace(true) { + req.mode + } else { + SERVER + }; + self.client.event(self.mode(mode)); + Ok(()) + } + + fn handle_request_( + self: &Rc, + request: u32, + parser: MsgParser<'_, '_>, + ) -> Result<(), OrgKdeKwinServerDecorationError> { + match request { + RELEASE => self.release(parser)?, + REQUEST_MODE => self.request_mode(parser)?, + _ => unreachable!(), + } + Ok(()) + } +} + +handle_request!(OrgKdeKwinServerDecoration); + +impl Object for OrgKdeKwinServerDecoration { + fn id(&self) -> ObjectId { + self.id.into() + } + + fn interface(&self) -> Interface { + Interface::OrgKdeKwinServerDecoration + } + + fn num_requests(&self) -> u32 { + REQUEST_MODE + 1 + } +} diff --git a/src/ifs/org_kde_kwin_server_decoration/types.rs b/src/ifs/org_kde_kwin_server_decoration/types.rs new file mode 100644 index 00000000..3c8d4092 --- /dev/null +++ b/src/ifs/org_kde_kwin_server_decoration/types.rs @@ -0,0 +1,86 @@ +use crate::client::{ClientError, EventFormatter, RequestParser}; +use crate::ifs::org_kde_kwin_server_decoration::{OrgKdeKwinServerDecoration, MODE}; +use crate::object::Object; +use crate::utils::buffd::{MsgFormatter, MsgParser, MsgParserError}; +use std::fmt::{Debug, Formatter}; +use std::rc::Rc; +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum OrgKdeKwinServerDecorationError { + #[error("Could not process a `release` request")] + ReleaseError(#[from] ReleaseError), + #[error("Could not process a `request_mode` request")] + RequestModeError(#[from] RequestModeError), + #[error(transparent)] + ClientError(Box), +} +efrom!(OrgKdeKwinServerDecorationError, ClientError); + +#[derive(Debug, Error)] +pub enum ReleaseError { + #[error(transparent)] + ClientError(Box), + #[error("Parsing failed")] + ParseError(#[source] Box), +} +efrom!(ReleaseError, ClientError); +efrom!(ReleaseError, ParseError, MsgParserError); + +#[derive(Debug, Error)] +pub enum RequestModeError { + #[error(transparent)] + ClientError(Box), + #[error("Parsing failed")] + ParseError(#[source] Box), + #[error("Mode {0} does not exist")] + InvalidMode(u32), +} +efrom!(RequestModeError, ClientError); +efrom!(RequestModeError, ParseError, MsgParserError); + +pub(super) struct Release; +impl RequestParser<'_> for Release { + fn parse(_parser: &mut MsgParser<'_, '_>) -> Result { + Ok(Self) + } +} +impl Debug for Release { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "release()") + } +} + +pub(super) struct RequestMode { + pub mode: u32, +} +impl RequestParser<'_> for RequestMode { + fn parse(parser: &mut MsgParser<'_, '_>) -> Result { + Ok(Self { + mode: parser.uint()?, + }) + } +} +impl Debug for RequestMode { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "request_mode(mode: {})", self.mode) + } +} + +pub(super) struct Mode { + pub obj: Rc, + pub mode: u32, +} +impl EventFormatter for Mode { + fn format(self: Box, fmt: &mut MsgFormatter<'_>) { + fmt.header(self.obj.id, MODE).uint(self.mode); + } + fn obj(&self) -> &dyn Object { + &*self.obj + } +} +impl Debug for Mode { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "mode(mode: {})", self.mode) + } +} diff --git a/src/ifs/org_kde_kwin_server_decoration_manager/mod.rs b/src/ifs/org_kde_kwin_server_decoration_manager/mod.rs new file mode 100644 index 00000000..fc483f29 --- /dev/null +++ b/src/ifs/org_kde_kwin_server_decoration_manager/mod.rs @@ -0,0 +1,119 @@ +use crate::client::{Client, DynEventFormatter}; +use crate::globals::{Global, GlobalName}; +use crate::ifs::org_kde_kwin_server_decoration::OrgKdeKwinServerDecoration; +use crate::object::{Interface, Object, ObjectId}; +use crate::utils::buffd::MsgParser; +use std::rc::Rc; +pub use types::*; + +mod types; + +const CREATE: u32 = 0; + +const DEFAULT_MODE: u32 = 0; + +#[allow(dead_code)] +const NONE: u32 = 0; +#[allow(dead_code)] +const CLIENT: u32 = 1; +const SERVER: u32 = 2; + +id!(OrgKdeKwinServerDecorationManagerGlobalId); + +pub struct OrgKdeKwinServerDecorationManagerGlobal { + name: GlobalName, +} +impl OrgKdeKwinServerDecorationManagerGlobal { + pub fn new(name: GlobalName) -> Self { + Self { name } + } + + fn bind_( + self: Rc, + id: OrgKdeKwinServerDecorationManagerGlobalId, + client: &Rc, + version: u32, + ) -> Result<(), OrgKdeKwinServerDecorationManagerError> { + let obj = Rc::new(OrgKdeKwinServerDecorationManagerObj { + id, + client: client.clone(), + _version: version, + }); + client.add_client_obj(&obj)?; + client.event(obj.default_mode(SERVER)); + Ok(()) + } +} + +bind!(OrgKdeKwinServerDecorationManagerGlobal); + +impl Global for OrgKdeKwinServerDecorationManagerGlobal { + fn name(&self) -> GlobalName { + self.name + } + + fn singleton(&self) -> bool { + true + } + + fn interface(&self) -> Interface { + Interface::OrgKdeKwinServerDecorationManager + } + + fn version(&self) -> u32 { + 1 + } +} + +pub struct OrgKdeKwinServerDecorationManagerObj { + id: OrgKdeKwinServerDecorationManagerGlobalId, + client: Rc, + _version: u32, +} + +impl OrgKdeKwinServerDecorationManagerObj { + fn default_mode(self: &Rc, mode: u32) -> DynEventFormatter { + Box::new(DefaultMode { + obj: self.clone(), + mode, + }) + } + + fn create(&self, parser: MsgParser<'_, '_>) -> Result<(), CreateError> { + let req: Create = self.client.parse(self, parser)?; + let _ = self.client.get_surface(req.surface)?; + let obj = Rc::new(OrgKdeKwinServerDecoration::new(req.id, &self.client)); + self.client.add_client_obj(&obj)?; + self.client.event(obj.mode(SERVER)); + log::info!("ayo"); + Ok(()) + } + + fn handle_request_( + self: &Rc, + request: u32, + parser: MsgParser<'_, '_>, + ) -> Result<(), OrgKdeKwinServerDecorationManagerError> { + match request { + CREATE => self.create(parser)?, + _ => unreachable!(), + } + Ok(()) + } +} + +handle_request!(OrgKdeKwinServerDecorationManagerObj); + +impl Object for OrgKdeKwinServerDecorationManagerObj { + fn id(&self) -> ObjectId { + self.id.into() + } + + fn interface(&self) -> Interface { + Interface::OrgKdeKwinServerDecorationManager + } + + fn num_requests(&self) -> u32 { + CREATE + 1 + } +} diff --git a/src/ifs/org_kde_kwin_server_decoration_manager/types.rs b/src/ifs/org_kde_kwin_server_decoration_manager/types.rs new file mode 100644 index 00000000..d9b61139 --- /dev/null +++ b/src/ifs/org_kde_kwin_server_decoration_manager/types.rs @@ -0,0 +1,70 @@ +use crate::client::{ClientError, EventFormatter, RequestParser}; +use crate::ifs::org_kde_kwin_server_decoration::OrgKdeKwinServerDecorationId; +use crate::ifs::org_kde_kwin_server_decoration_manager::{ + OrgKdeKwinServerDecorationManagerObj, DEFAULT_MODE, +}; +use crate::ifs::wl_surface::WlSurfaceId; +use crate::object::Object; +use crate::utils::buffd::{MsgFormatter, MsgParser, MsgParserError}; +use std::fmt::{Debug, Formatter}; +use std::rc::Rc; +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum OrgKdeKwinServerDecorationManagerError { + #[error("Could not process a `create` request")] + CreateError(#[from] CreateError), + #[error(transparent)] + ClientError(Box), +} +efrom!( + OrgKdeKwinServerDecorationManagerError, + ClientError, + ClientError +); + +#[derive(Debug, Error)] +pub enum CreateError { + #[error(transparent)] + ClientError(Box), + #[error("Parsing failed")] + ParseError(#[source] Box), +} +efrom!(CreateError, ClientError); +efrom!(CreateError, ParseError, MsgParserError); + +pub(super) struct Create { + pub id: OrgKdeKwinServerDecorationId, + pub surface: WlSurfaceId, +} +impl RequestParser<'_> for Create { + fn parse(parser: &mut MsgParser<'_, '_>) -> Result { + Ok(Self { + id: parser.object()?, + surface: parser.object()?, + }) + } +} +impl Debug for Create { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "create(id: {}, surface: {})", self.id, self.surface) + } +} + +pub(super) struct DefaultMode { + pub obj: Rc, + pub mode: u32, +} +impl EventFormatter for DefaultMode { + fn format(self: Box, fmt: &mut MsgFormatter<'_>) { + fmt.header(self.obj.id, DEFAULT_MODE).uint(self.mode); + } + fn obj(&self) -> &dyn Object { + &*self.obj + } +} +impl Debug for DefaultMode { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "default_mode(mode: {})", self.mode) + } +} diff --git a/src/ifs/wl_buffer/types.rs b/src/ifs/wl_buffer/types.rs index e84eac00..a15ed764 100644 --- a/src/ifs/wl_buffer/types.rs +++ b/src/ifs/wl_buffer/types.rs @@ -21,7 +21,7 @@ pub enum WlBufferError { #[error("GLES could not import the client image")] GlesError(#[source] Box), } -efrom!(WlBufferError, ClientMemError, ClientMemError); +efrom!(WlBufferError, ClientMemError); efrom!(WlBufferError, GlesError, RenderError); #[derive(Debug, Error)] @@ -32,7 +32,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseFailed, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); pub(super) struct Destroy; impl RequestParser<'_> for Destroy { diff --git a/src/ifs/wl_compositor/types.rs b/src/ifs/wl_compositor/types.rs index 7d8c73bd..ebe9f78d 100644 --- a/src/ifs/wl_compositor/types.rs +++ b/src/ifs/wl_compositor/types.rs @@ -15,9 +15,9 @@ pub enum WlCompositorError { CreateRegionError(#[source] Box), } -efrom!(WlCompositorError, ClientError, ClientError); -efrom!(WlCompositorError, CreateSurfaceError, CreateSurfaceError); -efrom!(WlCompositorError, CreateRegionError, CreateRegionError); +efrom!(WlCompositorError, ClientError); +efrom!(WlCompositorError, CreateSurfaceError); +efrom!(WlCompositorError, CreateRegionError); #[derive(Debug, Error)] pub enum CreateSurfaceError { @@ -28,7 +28,7 @@ pub enum CreateSurfaceError { } efrom!(CreateSurfaceError, ParseFailed, MsgParserError); -efrom!(CreateSurfaceError, ClientError, ClientError); +efrom!(CreateSurfaceError, ClientError); #[derive(Debug, Error)] pub enum CreateRegionError { diff --git a/src/ifs/wl_data_device/types.rs b/src/ifs/wl_data_device/types.rs index 0e63dae3..18768cf6 100644 --- a/src/ifs/wl_data_device/types.rs +++ b/src/ifs/wl_data_device/types.rs @@ -21,7 +21,7 @@ pub enum WlDataDeviceError { #[error("Could not process `release` request")] ReleaseError(#[from] ReleaseError), } -efrom!(WlDataDeviceError, ClientError, ClientError); +efrom!(WlDataDeviceError, ClientError); #[derive(Debug, Error)] pub enum StartDragError { @@ -31,7 +31,7 @@ pub enum StartDragError { ClientError(Box), } efrom!(StartDragError, ParseFailed, MsgParserError); -efrom!(StartDragError, ClientError, ClientError); +efrom!(StartDragError, ClientError); #[derive(Debug, Error)] pub enum SetSelectionError { @@ -41,7 +41,7 @@ pub enum SetSelectionError { ClientError(Box), } efrom!(SetSelectionError, ParseFailed, MsgParserError); -efrom!(SetSelectionError, ClientError, ClientError); +efrom!(SetSelectionError, ClientError); #[derive(Debug, Error)] pub enum ReleaseError { @@ -51,7 +51,7 @@ pub enum ReleaseError { ClientError(Box), } efrom!(ReleaseError, ParseFailed, MsgParserError); -efrom!(ReleaseError, ClientError, ClientError); +efrom!(ReleaseError, ClientError); pub(super) struct StartDrag { pub source: WlDataSourceId, diff --git a/src/ifs/wl_data_device_manager/types.rs b/src/ifs/wl_data_device_manager/types.rs index 2940b36d..afc595ab 100644 --- a/src/ifs/wl_data_device_manager/types.rs +++ b/src/ifs/wl_data_device_manager/types.rs @@ -15,7 +15,7 @@ pub enum WlDataDeviceManagerError { #[error("Could not process `get_data_device` request")] GetDataDeviceError(#[from] GetDataDeviceError), } -efrom!(WlDataDeviceManagerError, ClientError, ClientError); +efrom!(WlDataDeviceManagerError, ClientError); #[derive(Debug, Error)] pub enum CreateDataSourceError { @@ -25,7 +25,7 @@ pub enum CreateDataSourceError { ClientError(Box), } efrom!(CreateDataSourceError, ParseFailed, MsgParserError); -efrom!(CreateDataSourceError, ClientError, ClientError); +efrom!(CreateDataSourceError, ClientError); #[derive(Debug, Error)] pub enum GetDataDeviceError { @@ -35,7 +35,7 @@ pub enum GetDataDeviceError { ClientError(Box), } efrom!(GetDataDeviceError, ParseFailed, MsgParserError); -efrom!(GetDataDeviceError, ClientError, ClientError); +efrom!(GetDataDeviceError, ClientError); pub(super) struct CreateDataSource { pub id: WlDataSourceId, diff --git a/src/ifs/wl_data_offer/types.rs b/src/ifs/wl_data_offer/types.rs index 6b80c825..cf487570 100644 --- a/src/ifs/wl_data_offer/types.rs +++ b/src/ifs/wl_data_offer/types.rs @@ -23,7 +23,7 @@ pub enum WlDataOfferError { #[error("Could not process `set_actions` request")] SetActionsError(#[from] SetActionsError), } -efrom!(WlDataOfferError, ClientError, ClientError); +efrom!(WlDataOfferError, ClientError); #[derive(Debug, Error)] pub enum AcceptError { @@ -33,7 +33,7 @@ pub enum AcceptError { ClientError(Box), } efrom!(AcceptError, ParseFailed, MsgParserError); -efrom!(AcceptError, ClientError, ClientError); +efrom!(AcceptError, ClientError); #[derive(Debug, Error)] pub enum ReceiveError { @@ -43,7 +43,7 @@ pub enum ReceiveError { ClientError(Box), } efrom!(ReceiveError, ParseFailed, MsgParserError); -efrom!(ReceiveError, ClientError, ClientError); +efrom!(ReceiveError, ClientError); #[derive(Debug, Error)] pub enum DestroyError { @@ -53,7 +53,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseFailed, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum FinishError { @@ -63,7 +63,7 @@ pub enum FinishError { ClientError(Box), } efrom!(FinishError, ParseFailed, MsgParserError); -efrom!(FinishError, ClientError, ClientError); +efrom!(FinishError, ClientError); #[derive(Debug, Error)] pub enum SetActionsError { @@ -73,7 +73,7 @@ pub enum SetActionsError { ClientError(Box), } efrom!(SetActionsError, ParseFailed, MsgParserError); -efrom!(SetActionsError, ClientError, ClientError); +efrom!(SetActionsError, ClientError); pub(super) struct Accept<'a> { pub serial: u32, diff --git a/src/ifs/wl_data_source/types.rs b/src/ifs/wl_data_source/types.rs index 97c292c8..8e4e1ae9 100644 --- a/src/ifs/wl_data_source/types.rs +++ b/src/ifs/wl_data_source/types.rs @@ -21,7 +21,7 @@ pub enum WlDataSourceError { #[error("Could not process `set_actions` request")] SetActionsError(#[from] SetActionsError), } -efrom!(WlDataSourceError, ClientError, ClientError); +efrom!(WlDataSourceError, ClientError); #[derive(Debug, Error)] pub enum OfferError { @@ -31,7 +31,7 @@ pub enum OfferError { ClientError(Box), } efrom!(OfferError, ParseFailed, MsgParserError); -efrom!(OfferError, ClientError, ClientError); +efrom!(OfferError, ClientError); #[derive(Debug, Error)] pub enum DestroyError { @@ -41,7 +41,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseFailed, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum SetActionsError { @@ -51,7 +51,7 @@ pub enum SetActionsError { ClientError(Box), } efrom!(SetActionsError, ParseFailed, MsgParserError); -efrom!(SetActionsError, ClientError, ClientError); +efrom!(SetActionsError, ClientError); pub(super) struct Offer<'a> { pub mime_type: &'a BStr, diff --git a/src/ifs/wl_display/types.rs b/src/ifs/wl_display/types.rs index 01d7418e..d0f939d4 100644 --- a/src/ifs/wl_display/types.rs +++ b/src/ifs/wl_display/types.rs @@ -12,13 +12,13 @@ use thiserror::Error; #[derive(Debug, Error)] pub enum WlDisplayError { #[error("Could not process a get_registry request")] - GetRegistry(#[source] Box), + GetRegistryError(#[source] Box), #[error("A client error occurred")] SyncError(#[source] Box), } -efrom!(WlDisplayError, GetRegistry, GetRegistryError); -efrom!(WlDisplayError, SyncError, SyncError); +efrom!(WlDisplayError, GetRegistryError); +efrom!(WlDisplayError, SyncError); #[derive(Debug, Error)] pub enum GetRegistryError { @@ -31,8 +31,8 @@ pub enum GetRegistryError { } efrom!(GetRegistryError, ParseFailed, MsgParserError); -efrom!(GetRegistryError, GlobalError, GlobalError); -efrom!(GetRegistryError, ClientError, ClientError); +efrom!(GetRegistryError, GlobalError); +efrom!(GetRegistryError, ClientError); #[derive(Debug, Error)] pub enum SyncError { @@ -43,7 +43,7 @@ pub enum SyncError { } efrom!(SyncError, ParseFailed, MsgParserError); -efrom!(SyncError, ClientError, ClientError); +efrom!(SyncError, ClientError); pub(super) struct GetRegistry { pub registry: WlRegistryId, diff --git a/src/ifs/wl_drm/mod.rs b/src/ifs/wl_drm/mod.rs index 11c7ff52..df2ac774 100644 --- a/src/ifs/wl_drm/mod.rs +++ b/src/ifs/wl_drm/mod.rs @@ -1,8 +1,8 @@ -use std::ffi::CString; use crate::client::{Client, DynEventFormatter}; use crate::globals::{Global, GlobalName}; use crate::object::{Interface, Object, ObjectId}; use crate::utils::buffd::MsgParser; +use std::ffi::CString; use std::rc::Rc; pub use types::*; @@ -85,9 +85,7 @@ impl WlDrmObj { } fn authenticated(self: &Rc) -> DynEventFormatter { - Box::new(Authenticated { - obj: self.clone(), - }) + Box::new(Authenticated { obj: self.clone() }) } fn capabilities(self: &Rc, value: u32) -> DynEventFormatter { @@ -108,7 +106,10 @@ impl WlDrmObj { Err(CreateBufferError::Unsupported) } - fn create_planar_buffer(self: &Rc, parser: MsgParser<'_, '_>) -> Result<(), CreatePlanarBufferError> { + fn create_planar_buffer( + self: &Rc, + parser: MsgParser<'_, '_>, + ) -> Result<(), CreatePlanarBufferError> { let _req: CreatePlanarBuffer = self.client.parse(&**self, parser)?; Err(CreatePlanarBufferError::Unsupported) } diff --git a/src/ifs/wl_drm/types.rs b/src/ifs/wl_drm/types.rs index 9a58c70d..1a0b4e0a 100644 --- a/src/ifs/wl_drm/types.rs +++ b/src/ifs/wl_drm/types.rs @@ -1,12 +1,12 @@ -use std::ffi::CString; use crate::client::{ClientError, EventFormatter, RequestParser}; use crate::ifs::wl_buffer::WlBufferId; +use crate::ifs::wl_drm::{WlDrmObj, AUTHENTICATED, CAPABILITIES, DEVICE, FORMAT}; use crate::object::Object; use crate::utils::buffd::{MsgFormatter, MsgParser, MsgParserError}; +use std::ffi::CString; use std::fmt::{Debug, Formatter}; use std::rc::Rc; use thiserror::Error; -use crate::ifs::wl_drm::{AUTHENTICATED, CAPABILITIES, DEVICE, FORMAT, WlDrmObj}; #[derive(Debug, Error)] pub enum WlDrmError { @@ -19,7 +19,7 @@ pub enum WlDrmError { #[error(transparent)] ClientError(Box), } -efrom!(WlDrmError, ClientError, ClientError); +efrom!(WlDrmError, ClientError); #[derive(Debug, Error)] pub enum AuthenticateError { @@ -162,8 +162,7 @@ pub(super) struct Format { } impl EventFormatter for Format { fn format(self: Box, fmt: &mut MsgFormatter<'_>) { - fmt.header(self.obj.id, FORMAT) - .uint(self.format); + fmt.header(self.obj.id, FORMAT).uint(self.format); } fn obj(&self) -> &dyn Object { &*self.obj @@ -171,11 +170,7 @@ impl EventFormatter for Format { } impl Debug for Format { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - write!( - f, - "format(format: {})", - self.format, - ) + write!(f, "format(format: {})", self.format,) } } @@ -192,10 +187,7 @@ impl EventFormatter for Authenticated { } impl Debug for Authenticated { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - write!( - f, - "authenticated()", - ) + write!(f, "authenticated()",) } } @@ -205,8 +197,7 @@ pub(super) struct Capabilities { } impl EventFormatter for Capabilities { fn format(self: Box, fmt: &mut MsgFormatter<'_>) { - fmt.header(self.obj.id, CAPABILITIES) - .uint(self.value); + fmt.header(self.obj.id, CAPABILITIES).uint(self.value); } fn obj(&self) -> &dyn Object { &*self.obj @@ -214,10 +205,6 @@ impl EventFormatter for Capabilities { } impl Debug for Capabilities { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - write!( - f, - "capabilities(value: {})", - self.value, - ) + write!(f, "capabilities(value: {})", self.value,) } } diff --git a/src/ifs/wl_output/types.rs b/src/ifs/wl_output/types.rs index ff2f5dce..4b7cb051 100644 --- a/src/ifs/wl_output/types.rs +++ b/src/ifs/wl_output/types.rs @@ -13,7 +13,7 @@ pub enum WlOutputError { #[error(transparent)] ClientError(Box), } -efrom!(WlOutputError, ClientError, ClientError); +efrom!(WlOutputError, ClientError); #[derive(Debug, Error)] pub enum ReleaseError { @@ -22,7 +22,7 @@ pub enum ReleaseError { #[error(transparent)] ClientError(Box), } -efrom!(ReleaseError, ClientError, ClientError); +efrom!(ReleaseError, ClientError); efrom!(ReleaseError, ParseError, MsgParserError); pub(super) struct Release; diff --git a/src/ifs/wl_region/types.rs b/src/ifs/wl_region/types.rs index 6debb393..6eb2dca5 100644 --- a/src/ifs/wl_region/types.rs +++ b/src/ifs/wl_region/types.rs @@ -21,7 +21,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseFailed, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum AddError { diff --git a/src/ifs/wl_registry/types.rs b/src/ifs/wl_registry/types.rs index 75c95398..e8527770 100644 --- a/src/ifs/wl_registry/types.rs +++ b/src/ifs/wl_registry/types.rs @@ -14,7 +14,7 @@ pub enum WlRegistryError { BindError(#[source] Box), } -efrom!(WlRegistryError, BindError, BindError); +efrom!(WlRegistryError, BindError); #[derive(Debug, Error)] pub enum BindError { @@ -44,7 +44,7 @@ pub struct VersionError { } efrom!(BindError, ParseError, MsgParserError); -efrom!(BindError, GlobalError, GlobalError); +efrom!(BindError, GlobalError); pub(super) struct GlobalE { pub obj: Rc, diff --git a/src/ifs/wl_seat/mod.rs b/src/ifs/wl_seat/mod.rs index 70be1f1a..0f089345 100644 --- a/src/ifs/wl_seat/mod.rs +++ b/src/ifs/wl_seat/mod.rs @@ -7,7 +7,7 @@ use crate::backend::{KeyState, OutputId, ScrollAxis, Seat, SeatEvent}; use crate::client::{Client, ClientId, DynEventFormatter}; use crate::fixed::Fixed; use crate::globals::{Global, GlobalName}; -use crate::ifs::wl_seat::wl_keyboard::{REPEAT_INFO_SINCE, WlKeyboard, WlKeyboardId}; +use crate::ifs::wl_seat::wl_keyboard::{WlKeyboard, WlKeyboardId, REPEAT_INFO_SINCE}; use crate::ifs::wl_seat::wl_pointer::{WlPointer, WlPointerId, POINTER_FRAME_SINCE_VERSION}; use crate::ifs::wl_seat::wl_touch::WlTouch; use crate::ifs::wl_surface::xdg_surface::xdg_toplevel::{XdgToplevel, XdgToplevelId}; diff --git a/src/ifs/wl_seat/types.rs b/src/ifs/wl_seat/types.rs index b62892e6..f0456c2e 100644 --- a/src/ifs/wl_seat/types.rs +++ b/src/ifs/wl_seat/types.rs @@ -22,7 +22,7 @@ pub enum WlSeatError { #[error(transparent)] ClientError(Box), } -efrom!(WlSeatError, ClientError, ClientError); +efrom!(WlSeatError, ClientError); #[derive(Debug, Error)] pub enum GetPointerError { @@ -31,7 +31,7 @@ pub enum GetPointerError { #[error(transparent)] ClientError(Box), } -efrom!(GetPointerError, ClientError, ClientError); +efrom!(GetPointerError, ClientError); efrom!(GetPointerError, ParseError, MsgParserError); #[derive(Debug, Error)] @@ -43,7 +43,7 @@ pub enum GetKeyboardError { #[error(transparent)] WlKeyboardError(Box), } -efrom!(GetKeyboardError, ClientError, ClientError); +efrom!(GetKeyboardError, ClientError); efrom!(GetKeyboardError, ParseError, MsgParserError); efrom!(GetKeyboardError, WlKeyboardError, WlKeyboardError); diff --git a/src/ifs/wl_seat/wl_pointer/types.rs b/src/ifs/wl_seat/wl_pointer/types.rs index e87102eb..703be6e7 100644 --- a/src/ifs/wl_seat/wl_pointer/types.rs +++ b/src/ifs/wl_seat/wl_pointer/types.rs @@ -20,7 +20,7 @@ pub enum WlPointerError { #[error("Could not process a `release` request")] ReleaseError(#[from] ReleaseError), } -efrom!(WlPointerError, ClientError, ClientError); +efrom!(WlPointerError, ClientError); #[derive(Debug, Error)] pub enum SetCursorError { @@ -30,7 +30,7 @@ pub enum SetCursorError { ClientError(Box), } efrom!(SetCursorError, ParseError, MsgParserError); -efrom!(SetCursorError, ClientError, ClientError); +efrom!(SetCursorError, ClientError); #[derive(Debug, Error)] pub enum ReleaseError { diff --git a/src/ifs/wl_seat/wl_touch/types.rs b/src/ifs/wl_seat/wl_touch/types.rs index b0861688..4ab668e9 100644 --- a/src/ifs/wl_seat/wl_touch/types.rs +++ b/src/ifs/wl_seat/wl_touch/types.rs @@ -10,7 +10,7 @@ pub enum WlTouchError { #[error("Could not process a `release` request")] ReleaseError(#[from] ReleaseError), } -efrom!(WlTouchError, ClientError, ClientError); +efrom!(WlTouchError, ClientError); #[derive(Debug, Error)] pub enum ReleaseError { @@ -20,7 +20,7 @@ pub enum ReleaseError { ClientError(Box), } efrom!(ReleaseError, ParseError, MsgParserError); -efrom!(ReleaseError, ClientError, ClientError); +efrom!(ReleaseError, ClientError); pub(super) struct Release; impl RequestParser<'_> for Release { diff --git a/src/ifs/wl_shm/types.rs b/src/ifs/wl_shm/types.rs index 6e3ffa8e..32c2d3a4 100644 --- a/src/ifs/wl_shm/types.rs +++ b/src/ifs/wl_shm/types.rs @@ -16,7 +16,7 @@ pub enum WlShmError { #[error("Could not process a `create_pool` request")] CreatePoolError(#[from] CreatePoolError), } -efrom!(WlShmError, ClientError, ClientError); +efrom!(WlShmError, ClientError); #[derive(Debug, Error)] pub enum CreatePoolError { @@ -30,8 +30,8 @@ pub enum CreatePoolError { ClientError(Box), } efrom!(CreatePoolError, ParseError, MsgParserError); -efrom!(CreatePoolError, WlShmPoolError, WlShmPoolError); -efrom!(CreatePoolError, ClientError, ClientError); +efrom!(CreatePoolError, WlShmPoolError); +efrom!(CreatePoolError, ClientError); pub(super) struct CreatePool { pub id: WlShmPoolId, diff --git a/src/ifs/wl_shm_pool/types.rs b/src/ifs/wl_shm_pool/types.rs index bb2786ca..a9e4dc29 100644 --- a/src/ifs/wl_shm_pool/types.rs +++ b/src/ifs/wl_shm_pool/types.rs @@ -18,8 +18,8 @@ pub enum WlShmPoolError { #[error(transparent)] ClientMemError(Box), } -efrom!(WlShmPoolError, ClientError, ClientError); -efrom!(WlShmPoolError, ClientMemError, ClientMemError); +efrom!(WlShmPoolError, ClientError); +efrom!(WlShmPoolError, ClientMemError); #[derive(Debug, Error)] pub enum CreateBufferError { @@ -35,8 +35,8 @@ pub enum CreateBufferError { WlBufferError(Box), } efrom!(CreateBufferError, ParseError, MsgParserError); -efrom!(CreateBufferError, ClientError, ClientError); -efrom!(CreateBufferError, WlBufferError, WlBufferError); +efrom!(CreateBufferError, ClientError); +efrom!(CreateBufferError, WlBufferError); #[derive(Debug, Error)] pub enum DestroyError { @@ -46,7 +46,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseError, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum ResizeError { @@ -60,7 +60,7 @@ pub enum ResizeError { ClientMemError(Box), } efrom!(ResizeError, ParseError, MsgParserError); -efrom!(ResizeError, ClientMemError, ClientMemError); +efrom!(ResizeError, ClientMemError); pub(super) struct CreateBuffer { pub id: WlBufferId, diff --git a/src/ifs/wl_subcompositor/types.rs b/src/ifs/wl_subcompositor/types.rs index 2f5049a5..7189823b 100644 --- a/src/ifs/wl_subcompositor/types.rs +++ b/src/ifs/wl_subcompositor/types.rs @@ -14,7 +14,7 @@ pub enum WlSubcompositorError { #[error("Could not process `get_subsurface` request")] GetSubsurfaceError(#[from] GetSubsurfaceError), } -efrom!(WlSubcompositorError, ClientError, ClientError); +efrom!(WlSubcompositorError, ClientError); #[derive(Debug, Error)] pub enum DestroyError { @@ -24,7 +24,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseFailed, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum GetSubsurfaceError { @@ -36,7 +36,7 @@ pub enum GetSubsurfaceError { SubsurfaceError(Box), } efrom!(GetSubsurfaceError, ParseFailed, MsgParserError); -efrom!(GetSubsurfaceError, ClientError, ClientError); +efrom!(GetSubsurfaceError, ClientError); efrom!(GetSubsurfaceError, SubsurfaceError, WlSubsurfaceError); pub(super) struct Destroy; diff --git a/src/ifs/wl_surface/types.rs b/src/ifs/wl_surface/types.rs index 2a31d732..669641f0 100644 --- a/src/ifs/wl_surface/types.rs +++ b/src/ifs/wl_surface/types.rs @@ -37,21 +37,21 @@ pub enum WlSurfaceError { new: SurfaceRole, }, } -efrom!(WlSurfaceError, ClientError, ClientError); -efrom!(WlSurfaceError, DestroyError, DestroyError); -efrom!(WlSurfaceError, AttachError, AttachError); -efrom!(WlSurfaceError, DamageError, DamageError); -efrom!(WlSurfaceError, FrameError, FrameError); -efrom!(WlSurfaceError, SetOpaqueRegionError, SetOpaqueRegionError); -efrom!(WlSurfaceError, SetInputRegionError, SetInputRegionError); -efrom!(WlSurfaceError, CommitError, CommitError); +efrom!(WlSurfaceError, ClientError); +efrom!(WlSurfaceError, DestroyError); +efrom!(WlSurfaceError, AttachError); +efrom!(WlSurfaceError, DamageError); +efrom!(WlSurfaceError, FrameError); +efrom!(WlSurfaceError, SetOpaqueRegionError); +efrom!(WlSurfaceError, SetInputRegionError); +efrom!(WlSurfaceError, CommitError); efrom!( WlSurfaceError, SetBufferTransformError, SetBufferTransformError ); -efrom!(WlSurfaceError, SetBufferScaleError, SetBufferScaleError); -efrom!(WlSurfaceError, DamageBufferError, DamageBufferError); +efrom!(WlSurfaceError, SetBufferScaleError); +efrom!(WlSurfaceError, DamageBufferError); #[derive(Debug, Error)] pub enum DestroyError { @@ -63,7 +63,7 @@ pub enum DestroyError { ReloObjectStillExists, } efrom!(DestroyError, ParseFailed, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum AttachError { @@ -73,7 +73,7 @@ pub enum AttachError { ClientError(Box), } efrom!(AttachError, ParseFailed, MsgParserError); -efrom!(AttachError, ClientError, ClientError); +efrom!(AttachError, ClientError); #[derive(Debug, Error)] pub enum DamageError { @@ -90,7 +90,7 @@ pub enum FrameError { ClientError(Box), } efrom!(FrameError, ParseFailed, MsgParserError); -efrom!(FrameError, ClientError, ClientError); +efrom!(FrameError, ClientError); #[derive(Debug, Error)] pub enum SetOpaqueRegionError { @@ -100,7 +100,7 @@ pub enum SetOpaqueRegionError { ClientError(Box), } efrom!(SetOpaqueRegionError, ParseFailed, MsgParserError); -efrom!(SetOpaqueRegionError, ClientError, ClientError); +efrom!(SetOpaqueRegionError, ClientError); #[derive(Debug, Error)] pub enum SetInputRegionError { @@ -110,7 +110,7 @@ pub enum SetInputRegionError { ClientError(Box), } efrom!(SetInputRegionError, ParseFailed, MsgParserError); -efrom!(SetInputRegionError, ClientError, ClientError); +efrom!(SetInputRegionError, ClientError); #[derive(Debug, Error)] pub enum CommitError { @@ -121,9 +121,9 @@ pub enum CommitError { #[error(transparent)] ClientError(Box), } -efrom!(CommitError, WlSurfaceError, WlSurfaceError); +efrom!(CommitError, WlSurfaceError); efrom!(CommitError, ParseFailed, MsgParserError); -efrom!(CommitError, ClientError, ClientError); +efrom!(CommitError, ClientError); #[derive(Debug, Error)] pub enum SetBufferTransformError { diff --git a/src/ifs/wl_surface/wl_subsurface/types.rs b/src/ifs/wl_surface/wl_subsurface/types.rs index fb33c7b5..f64791db 100644 --- a/src/ifs/wl_surface/wl_subsurface/types.rs +++ b/src/ifs/wl_surface/wl_subsurface/types.rs @@ -29,7 +29,7 @@ pub enum WlSubsurfaceError { #[error(transparent)] WlSurfaceError(Box), } -efrom!(WlSubsurfaceError, WlSurfaceError, WlSurfaceError); +efrom!(WlSubsurfaceError, WlSurfaceError); #[derive(Debug, Error)] pub enum DestroyError { @@ -39,7 +39,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseFailed, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum SetPositionError { diff --git a/src/ifs/wl_surface/xdg_surface/types.rs b/src/ifs/wl_surface/xdg_surface/types.rs index f221ebb0..bce2ba85 100644 --- a/src/ifs/wl_surface/xdg_surface/types.rs +++ b/src/ifs/wl_surface/xdg_surface/types.rs @@ -27,7 +27,7 @@ pub enum XdgSurfaceError { #[error(transparent)] WlSurfaceError(Box), } -efrom!(XdgSurfaceError, WlSurfaceError, WlSurfaceError); +efrom!(XdgSurfaceError, WlSurfaceError); #[derive(Debug, Error)] pub enum DestroyError { @@ -39,7 +39,7 @@ pub enum DestroyError { RoleNotYetDestroyed(XdgSurfaceId), } efrom!(DestroyError, ParseFailed, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum GetToplevelError { @@ -53,8 +53,8 @@ pub enum GetToplevelError { WlSurfaceError(Box), } efrom!(GetToplevelError, ParseFailed, MsgParserError); -efrom!(GetToplevelError, ClientError, ClientError); -efrom!(GetToplevelError, WlSurfaceError, WlSurfaceError); +efrom!(GetToplevelError, ClientError); +efrom!(GetToplevelError, WlSurfaceError); #[derive(Debug, Error)] pub enum GetPopupError { @@ -68,8 +68,8 @@ pub enum GetPopupError { WlSurfaceError(Box), } efrom!(GetPopupError, ParseFailed, MsgParserError); -efrom!(GetPopupError, ClientError, ClientError); -efrom!(GetPopupError, WlSurfaceError, WlSurfaceError); +efrom!(GetPopupError, ClientError); +efrom!(GetPopupError, WlSurfaceError); #[derive(Debug, Error)] pub enum SetWindowGeometryError { @@ -81,7 +81,7 @@ pub enum SetWindowGeometryError { NonPositiveWidthHeight, } efrom!(SetWindowGeometryError, ParseFailed, MsgParserError); -efrom!(SetWindowGeometryError, ClientError, ClientError); +efrom!(SetWindowGeometryError, ClientError); #[derive(Debug, Error)] pub enum AckConfigureError { @@ -91,7 +91,7 @@ pub enum AckConfigureError { ClientError(Box), } efrom!(AckConfigureError, ParseFailed, MsgParserError); -efrom!(AckConfigureError, ClientError, ClientError); +efrom!(AckConfigureError, ClientError); pub(super) struct Destroy; impl RequestParser<'_> for Destroy { diff --git a/src/ifs/wl_surface/xdg_surface/xdg_popup/types.rs b/src/ifs/wl_surface/xdg_surface/xdg_popup/types.rs index 2c1b426d..a0359bf2 100644 --- a/src/ifs/wl_surface/xdg_surface/xdg_popup/types.rs +++ b/src/ifs/wl_surface/xdg_surface/xdg_popup/types.rs @@ -28,7 +28,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseFailed, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum GrabError { @@ -38,7 +38,7 @@ pub enum GrabError { ClientError(Box), } efrom!(GrabError, ParseFailed, MsgParserError); -efrom!(GrabError, ClientError, ClientError); +efrom!(GrabError, ClientError); #[derive(Debug, Error)] pub enum RepositionError { @@ -48,7 +48,7 @@ pub enum RepositionError { ClientError(Box), } efrom!(RepositionError, ParseFailed, MsgParserError); -efrom!(RepositionError, ClientError, ClientError); +efrom!(RepositionError, ClientError); pub(super) struct Destroy; impl RequestParser<'_> for Destroy { diff --git a/src/ifs/wl_surface/xdg_surface/xdg_toplevel/types.rs b/src/ifs/wl_surface/xdg_surface/xdg_toplevel/types.rs index a2670d00..e7312e5b 100644 --- a/src/ifs/wl_surface/xdg_surface/xdg_toplevel/types.rs +++ b/src/ifs/wl_surface/xdg_surface/xdg_toplevel/types.rs @@ -49,7 +49,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseFailed, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum SetParentError { @@ -59,7 +59,7 @@ pub enum SetParentError { ClientError(Box), } efrom!(SetParentError, ParseFailed, MsgParserError); -efrom!(SetParentError, ClientError, ClientError); +efrom!(SetParentError, ClientError); #[derive(Debug, Error)] pub enum SetTitleError { @@ -69,7 +69,7 @@ pub enum SetTitleError { ClientError(Box), } efrom!(SetTitleError, ParseFailed, MsgParserError); -efrom!(SetTitleError, ClientError, ClientError); +efrom!(SetTitleError, ClientError); #[derive(Debug, Error)] pub enum SetAppIdError { @@ -79,7 +79,7 @@ pub enum SetAppIdError { ClientError(Box), } efrom!(SetAppIdError, ParseFailed, MsgParserError); -efrom!(SetAppIdError, ClientError, ClientError); +efrom!(SetAppIdError, ClientError); #[derive(Debug, Error)] pub enum ShowWindowMenuError { @@ -89,7 +89,7 @@ pub enum ShowWindowMenuError { ClientError(Box), } efrom!(ShowWindowMenuError, ParseFailed, MsgParserError); -efrom!(ShowWindowMenuError, ClientError, ClientError); +efrom!(ShowWindowMenuError, ClientError); #[derive(Debug, Error)] pub enum MoveError { @@ -99,7 +99,7 @@ pub enum MoveError { ClientError(Box), } efrom!(MoveError, ParseFailed, MsgParserError); -efrom!(MoveError, ClientError, ClientError); +efrom!(MoveError, ClientError); #[derive(Debug, Error)] pub enum ResizeError { @@ -109,7 +109,7 @@ pub enum ResizeError { ClientError(Box), } efrom!(ResizeError, ParseFailed, MsgParserError); -efrom!(ResizeError, ClientError, ClientError); +efrom!(ResizeError, ClientError); #[derive(Debug, Error)] pub enum SetMaxSizeError { @@ -119,7 +119,7 @@ pub enum SetMaxSizeError { ClientError(Box), } efrom!(SetMaxSizeError, ParseFailed, MsgParserError); -efrom!(SetMaxSizeError, ClientError, ClientError); +efrom!(SetMaxSizeError, ClientError); #[derive(Debug, Error)] pub enum SetMinSizeError { @@ -129,7 +129,7 @@ pub enum SetMinSizeError { ClientError(Box), } efrom!(SetMinSizeError, ParseFailed, MsgParserError); -efrom!(SetMinSizeError, ClientError, ClientError); +efrom!(SetMinSizeError, ClientError); #[derive(Debug, Error)] pub enum SetMaximizedError { @@ -139,7 +139,7 @@ pub enum SetMaximizedError { ClientError(Box), } efrom!(SetMaximizedError, ParseFailed, MsgParserError); -efrom!(SetMaximizedError, ClientError, ClientError); +efrom!(SetMaximizedError, ClientError); #[derive(Debug, Error)] pub enum UnsetMaximizedError { @@ -149,7 +149,7 @@ pub enum UnsetMaximizedError { ClientError(Box), } efrom!(UnsetMaximizedError, ParseFailed, MsgParserError); -efrom!(UnsetMaximizedError, ClientError, ClientError); +efrom!(UnsetMaximizedError, ClientError); #[derive(Debug, Error)] pub enum SetFullscreenError { @@ -159,7 +159,7 @@ pub enum SetFullscreenError { ClientError(Box), } efrom!(SetFullscreenError, ParseFailed, MsgParserError); -efrom!(SetFullscreenError, ClientError, ClientError); +efrom!(SetFullscreenError, ClientError); #[derive(Debug, Error)] pub enum UnsetFullscreenError { diff --git a/src/ifs/xdg_positioner/types.rs b/src/ifs/xdg_positioner/types.rs index 83ab6569..0edb04be 100644 --- a/src/ifs/xdg_positioner/types.rs +++ b/src/ifs/xdg_positioner/types.rs @@ -35,7 +35,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseError, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum SetSizeError { diff --git a/src/ifs/xdg_wm_base/types.rs b/src/ifs/xdg_wm_base/types.rs index 8754da90..4f3cc8c2 100644 --- a/src/ifs/xdg_wm_base/types.rs +++ b/src/ifs/xdg_wm_base/types.rs @@ -22,7 +22,7 @@ pub enum XdgWmBaseError { #[error("Could not process a `pong` request")] PongError(#[from] PongError), } -efrom!(XdgWmBaseError, ClientError, ClientError); +efrom!(XdgWmBaseError, ClientError); #[derive(Debug, Error)] pub enum DestroyError { @@ -34,7 +34,7 @@ pub enum DestroyError { ClientError(Box), } efrom!(DestroyError, ParseError, MsgParserError); -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); #[derive(Debug, Error)] pub enum CreatePositionerError { @@ -44,7 +44,7 @@ pub enum CreatePositionerError { ClientError(Box), } efrom!(CreatePositionerError, ParseError, MsgParserError); -efrom!(CreatePositionerError, ClientError, ClientError); +efrom!(CreatePositionerError, ClientError); #[derive(Debug, Error)] pub enum GetXdgSurfaceError { @@ -56,8 +56,8 @@ pub enum GetXdgSurfaceError { XdgSurfaceError(Box), } efrom!(GetXdgSurfaceError, ParseError, MsgParserError); -efrom!(GetXdgSurfaceError, ClientError, ClientError); -efrom!(GetXdgSurfaceError, XdgSurfaceError, XdgSurfaceError); +efrom!(GetXdgSurfaceError, ClientError); +efrom!(GetXdgSurfaceError, XdgSurfaceError); #[derive(Debug, Error)] pub enum PongError { diff --git a/src/ifs/zwp_linux_buffer_params_v1/types.rs b/src/ifs/zwp_linux_buffer_params_v1/types.rs index 0886e3af..23c2d3e2 100644 --- a/src/ifs/zwp_linux_buffer_params_v1/types.rs +++ b/src/ifs/zwp_linux_buffer_params_v1/types.rs @@ -22,7 +22,7 @@ pub enum ZwpLinuxBufferParamsV1Error { #[error(transparent)] ClientError(Box), } -efrom!(ZwpLinuxBufferParamsV1Error, ClientError, ClientError); +efrom!(ZwpLinuxBufferParamsV1Error, ClientError); #[derive(Debug, Error)] pub enum DestroyError { @@ -31,7 +31,7 @@ pub enum DestroyError { #[error(transparent)] ClientError(Box), } -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); efrom!(DestroyError, ParseError, MsgParserError); #[derive(Debug, Error)] @@ -47,7 +47,7 @@ pub enum AddError { #[error("The plane {0} was already set")] AlreadySet(u32), } -efrom!(AddError, ClientError, ClientError); +efrom!(AddError, ClientError); efrom!(AddError, ParseError, MsgParserError); #[derive(Debug, Error)] @@ -63,7 +63,7 @@ pub enum DoCreateError { #[error("Could not import the buffer")] ImportError(#[from] RenderError), } -efrom!(DoCreateError, ClientError, ClientError); +efrom!(DoCreateError, ClientError); #[derive(Debug, Error)] pub enum CreateError { diff --git a/src/ifs/zwp_linux_dmabuf_v1/types.rs b/src/ifs/zwp_linux_dmabuf_v1/types.rs index 93d3e123..69ece504 100644 --- a/src/ifs/zwp_linux_dmabuf_v1/types.rs +++ b/src/ifs/zwp_linux_dmabuf_v1/types.rs @@ -16,7 +16,7 @@ pub enum ZwpLinuxDmabufV1Error { #[error(transparent)] ClientError(Box), } -efrom!(ZwpLinuxDmabufV1Error, ClientError, ClientError); +efrom!(ZwpLinuxDmabufV1Error, ClientError); #[derive(Debug, Error)] pub enum DestroyError { @@ -25,7 +25,7 @@ pub enum DestroyError { #[error(transparent)] ClientError(Box), } -efrom!(DestroyError, ClientError, ClientError); +efrom!(DestroyError, ClientError); efrom!(DestroyError, ParseError, MsgParserError); #[derive(Debug, Error)] @@ -35,7 +35,7 @@ pub enum CreateParamsError { #[error(transparent)] ClientError(Box), } -efrom!(CreateParamsError, ClientError, ClientError); +efrom!(CreateParamsError, ClientError); efrom!(CreateParamsError, ParseError, MsgParserError); pub(super) struct Destroy; diff --git a/src/macros.rs b/src/macros.rs index 46c3c6ba..de639e76 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -1,4 +1,7 @@ macro_rules! efrom { + ($ename:ty, $vname:ident) => { + efrom!($ename, $vname, $vname); + }; ($ename:ty, $vname:ident, $sname:ty) => { impl From<$sname> for $ename { fn from(e: $sname) -> Self { diff --git a/src/main.rs b/src/main.rs index 55b182f0..6130a07f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,8 +20,10 @@ use crate::client::Clients; use crate::clientmem::ClientMemError; use crate::event_loop::EventLoopError; use crate::globals::{AddGlobal, Globals}; +use crate::ifs::org_kde_kwin_server_decoration_manager::OrgKdeKwinServerDecorationManagerGlobal; use crate::ifs::wl_compositor::WlCompositorGlobal; use crate::ifs::wl_data_device_manager::WlDataDeviceManagerGlobal; +use crate::ifs::wl_drm::WlDrmGlobal; use crate::ifs::wl_shm::WlShmGlobal; use crate::ifs::wl_subcompositor::WlSubcompositorGlobal; use crate::ifs::wl_surface::NoneSurfaceExt; @@ -42,7 +44,6 @@ use log::LevelFilter; use std::rc::Rc; use thiserror::Error; use wheel::Wheel; -use crate::ifs::wl_drm::WlDrmGlobal; #[macro_use] mod macros; @@ -118,6 +119,9 @@ fn main_() -> Result<(), MainError> { globals.add_global_no_broadcast(&Rc::new(WlDataDeviceManagerGlobal::new(globals.name()))); globals.add_global_no_broadcast(&Rc::new(ZwpLinuxDmabufV1Global::new(globals.name()))); globals.add_global_no_broadcast(&Rc::new(WlDrmGlobal::new(globals.name()))); + globals.add_global_no_broadcast(&Rc::new(OrgKdeKwinServerDecorationManagerGlobal::new( + globals.name(), + ))); let node_ids = NodeIds::default(); let state = Rc::new(State { eng: engine.clone(), diff --git a/src/object.rs b/src/object.rs index 62256f99..a5680a7d 100644 --- a/src/object.rs +++ b/src/object.rs @@ -69,6 +69,8 @@ pub enum Interface { WlDrm, ZwpLinuxDmabufV1, ZwpLinuxBufferParamsV1, + OrgKdeKwinServerDecorationManager, + OrgKdeKwinServerDecoration, } impl Interface { @@ -102,6 +104,10 @@ impl Interface { Interface::ZwpLinuxDmabufV1 => "zwp_linux_dmabuf_v1", Interface::ZwpLinuxBufferParamsV1 => "zwp_linux_buffer_params_v1", Interface::WlDrm => "wl_drm", + Interface::OrgKdeKwinServerDecorationManager => { + "org_kde_kwin_server_decoration_manager" + } + Interface::OrgKdeKwinServerDecoration => "org_kde_kwin_server_decoration", } } } diff --git a/src/render/egl/mod.rs b/src/render/egl/mod.rs index deaa8bac..903314ec 100644 --- a/src/render/egl/mod.rs +++ b/src/render/egl/mod.rs @@ -1,4 +1,4 @@ -use crate::drm::drm::{DrmDevice}; +use crate::drm::drm::DrmDevice; use crate::render::egl::device::EglDevice; use crate::render::egl::sys::{ eglBindAPI, EGLAttrib, EGLLabelKHR, EGLenum, EGLint, EGL_DEBUG_MSG_CRITICAL_KHR,