1
0
Fork 0
forked from wry/wry

autocommit 2022-02-06 23:54:46 CET

This commit is contained in:
Julian Orth 2022-02-06 23:54:46 +01:00
parent 96038f49bc
commit 7d531257ed
51 changed files with 290 additions and 276 deletions

View file

@ -1,10 +1,10 @@
use crate::client::ClientId;
use crate::object::{Interface, ObjectId};
use crate::utils::buffd::{BufFdError, MsgParserError};
use crate::wire::WlDisplayId;
use crate::AsyncError;
use std::error::Error;
use thiserror::Error;
use crate::wire::WlDisplayId;
#[derive(Debug, Error)]
pub enum ClientError {

View file

@ -3,13 +3,15 @@ use crate::client::error::LookupError;
use crate::client::objects::Objects;
use crate::ifs::wl_callback::WlCallback;
use crate::ifs::wl_display::WlDisplay;
use crate::ifs::wl_registry::{WlRegistry};
use crate::ifs::wl_registry::WlRegistry;
use crate::object::{Interface, Object, ObjectId, WL_DISPLAY_ID};
use crate::state::State;
use crate::utils::asyncevent::AsyncEvent;
use crate::utils::buffd::{MsgFormatter, MsgParser, MsgParserError, OutBufferSwapchain};
use crate::utils::numcell::NumCell;
use crate::utils::oneshot::{oneshot, OneshotTx};
use crate::utils::queue::AsyncQueue;
use crate::wire::WlRegistryId;
use crate::ErrorFmt;
use ahash::AHashMap;
pub use error::{ClientError, ObjectError};
@ -19,8 +21,6 @@ use std::fmt::{Debug, Display, Formatter};
use std::mem;
use std::rc::Rc;
use uapi::{c, OwnedFd};
use crate::utils::asyncevent::AsyncEvent;
use crate::wire::WlRegistryId;
mod error;
mod objects;
@ -199,7 +199,7 @@ impl Client {
Ok(d) => {
d.send_invalid_request(obj, request);
self.state.clients.shutdown(self.id);
},
}
Err(e) => {
log::error!(
"Could not retrieve display of client {}: {}",
@ -246,7 +246,7 @@ impl Client {
Ok(d) => {
d.send_implementation_error(msg);
self.state.clients.shutdown(self.id);
},
}
Err(e) => {
log::error!(
"Could not retrieve display of client {}: {}",

View file

@ -1,27 +1,28 @@
use crate::client::{Client, ClientError};
use crate::ifs::wl_buffer::{WlBuffer};
use crate::ifs::wl_data_source::{WlDataSource};
use crate::ifs::wl_buffer::WlBuffer;
use crate::ifs::wl_data_source::WlDataSource;
use crate::ifs::wl_display::WlDisplay;
use crate::ifs::wl_region::{WlRegion};
use crate::ifs::wl_registry::{WlRegistry};
use crate::ifs::wl_seat::{WlSeat};
use crate::ifs::wl_surface::xdg_surface::xdg_toplevel::{XdgToplevel};
use crate::ifs::wl_surface::xdg_surface::{XdgSurface};
use crate::ifs::wl_surface::{WlSurface};
use crate::ifs::xdg_positioner::{XdgPositioner};
use crate::ifs::xdg_wm_base::{XdgWmBase};
use crate::ifs::zwp_primary_selection_source_v1::{
ZwpPrimarySelectionSourceV1,
};
use crate::ifs::wl_region::WlRegion;
use crate::ifs::wl_registry::WlRegistry;
use crate::ifs::wl_seat::WlSeat;
use crate::ifs::wl_surface::xdg_surface::xdg_toplevel::XdgToplevel;
use crate::ifs::wl_surface::xdg_surface::XdgSurface;
use crate::ifs::wl_surface::WlSurface;
use crate::ifs::xdg_positioner::XdgPositioner;
use crate::ifs::xdg_wm_base::XdgWmBase;
use crate::ifs::zwp_primary_selection_source_v1::ZwpPrimarySelectionSourceV1;
use crate::object::{Object, ObjectId};
use crate::tree::Node;
use crate::utils::clonecell::CloneCell;
use crate::utils::copyhashmap::CopyHashMap;
use crate::wire::{
WlBufferId, WlDataSourceId, WlRegionId, WlRegistryId, WlSeatId, WlSurfaceId, XdgPositionerId,
XdgSurfaceId, XdgToplevelId, XdgWmBaseId, ZwpPrimarySelectionSourceV1Id,
};
use ahash::AHashMap;
use std::cell::{RefCell, RefMut};
use std::mem;
use std::rc::Rc;
use crate::wire::{WlBufferId, WlDataSourceId, WlRegionId, WlRegistryId, WlSeatId, WlSurfaceId, XdgPositionerId, XdgSurfaceId, XdgToplevelId, XdgWmBaseId, ZwpPrimarySelectionSourceV1Id};
pub struct Objects {
pub display: CloneCell<Option<Rc<WlDisplay>>>,

View file

@ -1,4 +1,3 @@
use std::collections::VecDeque;
use crate::client::{Client, ClientError};
use crate::object::ObjectId;
use crate::utils::buffd::{BufFdIn, BufFdOut, MsgParser};
@ -6,6 +5,7 @@ use crate::utils::oneshot::OneshotRx;
use crate::utils::vec_ext::VecExt;
use crate::ErrorFmt;
use futures::{select, FutureExt};
use std::collections::VecDeque;
use std::mem;
use std::rc::Rc;

View file

@ -1,5 +1,5 @@
use std::rc::Rc;
use crate::format::Format;
use std::rc::Rc;
use uapi::OwnedFd;
pub struct DmaBufPlane {

View file

@ -1,4 +1,4 @@
use crate::client::{Client};
use crate::client::Client;
use crate::ifs::org_kde_kwin_server_decoration_manager::OrgKdeKwinServerDecorationManagerGlobal;
use crate::ifs::wl_drm::WlDrmGlobal;
use crate::ifs::wl_output::WlOutputGlobal;

View file

@ -1,12 +1,12 @@
use crate::client::{Client, ClientError};
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::org_kde_kwin_server_decoration::*;
use crate::wire::OrgKdeKwinServerDecorationId;
use std::cell::Cell;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::org_kde_kwin_server_decoration::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::OrgKdeKwinServerDecorationId;
#[allow(dead_code)]
const NONE: u32 = 0;

View file

@ -3,11 +3,11 @@ use crate::globals::{Global, GlobalName};
use crate::ifs::org_kde_kwin_server_decoration::OrgKdeKwinServerDecoration;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::org_kde_kwin_server_decoration_manager::*;
use crate::wire::OrgKdeKwinServerDecorationManagerId;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::org_kde_kwin_server_decoration_manager::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::OrgKdeKwinServerDecorationManagerId;
#[allow(dead_code)]
const NONE: u32 = 0;

View file

@ -5,14 +5,14 @@ use crate::object::Object;
use crate::rect::Rect;
use crate::render::{Image, Texture};
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::utils::clonecell::CloneCell;
use crate::wire::wl_buffer::*;
use crate::wire::WlBufferId;
use crate::{ClientMemError, RenderError};
use std::cell::Cell;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_buffer::*;
use crate::{ClientMemError, RenderError};
use crate::utils::buffd::MsgParserError;
use crate::wire::WlBufferId;
pub enum WlBufferStorage {
Shm { mem: ClientMemOffset, stride: i32 },

View file

@ -1,9 +1,9 @@
use crate::client::{Client};
use crate::client::Client;
use crate::object::Object;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_callback::*;
use crate::wire::WlCallbackId;
use std::rc::Rc;
use thiserror::Error;
pub struct WlCallback {
client: Rc<Client>,
@ -12,11 +12,17 @@ pub struct WlCallback {
impl WlCallback {
pub fn new(id: WlCallbackId, client: &Rc<Client>) -> Self {
Self { client: client.clone(), id }
Self {
client: client.clone(),
id,
}
}
pub fn send_done(&self) {
self.client.event(Done { self_id: self.id, callback_data: 0 });
self.client.event(Done {
self_id: self.id,
callback_data: 0,
});
}
}

View file

@ -4,11 +4,11 @@ use crate::ifs::wl_region::WlRegion;
use crate::ifs::wl_surface::WlSurface;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_compositor::*;
use crate::wire::WlCompositorId;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_compositor::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlCompositorId;
pub struct WlCompositorGlobal {
name: GlobalName,

View file

@ -1,14 +1,14 @@
use crate::client::{ClientError};
use crate::client::ClientError;
use crate::ifs::wl_data_device_manager::WlDataDeviceManager;
use crate::ifs::wl_data_source::WlDataSourceError;
use crate::ifs::wl_seat::WlSeat;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_data_device::*;
use crate::wire::{WlDataDeviceId, WlDataOfferId};
use std::rc::Rc;
use thiserror::Error;
use crate::ifs::wl_data_source::WlDataSourceError;
use crate::wire::wl_data_device::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::{WlDataDeviceId, WlDataOfferId};
#[allow(dead_code)]
const ROLE: u32 = 0;

View file

@ -1,15 +1,14 @@
use crate::client::{Client, ClientError};
use crate::globals::{Global, GlobalName};
use crate::ifs::wl_data_device::WlDataDevice;
use crate::ifs::wl_data_source::WlDataSource;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_data_device_manager::*;
use crate::wire::WlDataDeviceManagerId;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_data_device_manager::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlDataDeviceManagerId;
#[allow(dead_code)]
const DND_NONE: u32 = 0;

View file

@ -1,16 +1,16 @@
use std::mem;
use crate::client::{Client, ClientError};
use crate::ifs::wl_data_source::WlDataSource;
use crate::ifs::wl_seat::WlSeatGlobal;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::utils::clonecell::CloneCell;
use crate::wire::wl_data_offer::*;
use crate::wire::WlDataOfferId;
use std::mem;
use std::ops::Deref;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_data_offer::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlDataOfferId;
#[allow(dead_code)]
const INVALID_FINISH: u32 = 0;

View file

@ -1,18 +1,17 @@
use crate::client::{Client, ClientError};
use crate::ifs::wl_data_offer::{DataOfferRole, WlDataOffer};
use crate::ifs::wl_seat::WlSeatGlobal;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::utils::clonecell::{CloneCell, UnsafeCellCloneSafe};
use crate::wire::wl_data_source::*;
use crate::wire::WlDataSourceId;
use ahash::AHashSet;
use std::cell::RefCell;
use std::rc::Rc;
use thiserror::Error;
use uapi::OwnedFd;
use crate::wire::wl_data_source::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlDataSourceId;
#[allow(dead_code)]
const INVALID_ACTION_MASK: u32 = 0;

View file

@ -1,15 +1,14 @@
use crate::client::{Client, ClientError};
use crate::globals::GlobalsError;
use crate::ifs::wl_callback::WlCallback;
use crate::ifs::wl_registry::WlRegistry;
use crate::object::{Object, ObjectId, WL_DISPLAY_ID};
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_display::*;
use crate::wire::WlDisplayId;
use std::rc::Rc;
use thiserror::Error;
use crate::globals::GlobalsError;
use crate::wire::wl_display::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlDisplayId;
const INVALID_OBJECT: u32 = 0;
const INVALID_METHOD: u32 = 1;
@ -43,19 +42,11 @@ impl WlDisplay {
let gr: GetRegistry = self.client.parse(self, parser)?;
let registry = Rc::new(WlRegistry::new(gr.registry, &self.client));
self.client.add_client_obj(&registry)?;
self.client
.state
.globals
.notify_all(&registry);
self.client.state.globals.notify_all(&registry);
Ok(())
}
pub fn send_error<O: Into<ObjectId>>(
&self,
object_id: O,
code: u32,
message: &str,
) {
pub fn send_error<O: Into<ObjectId>>(&self, object_id: O, code: u32, message: &str) {
self.client.event(Error {
self_id: self.id,
object_id: object_id.into(),

View file

@ -2,14 +2,13 @@ use crate::client::{Client, ClientError};
use crate::globals::{Global, GlobalName};
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_drm::*;
use crate::wire::WlDrmId;
use bstr::ByteSlice;
use std::ffi::CString;
use std::rc::Rc;
use bstr::ByteSlice;
use thiserror::Error;
use crate::wire::wl_drm::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlDrmId;
const PRIME: u32 = 1;

View file

@ -1,17 +1,16 @@
use crate::backend::Output;
use crate::client::{Client, ClientError, ClientId};
use crate::globals::{Global, GlobalName};
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_output::*;
use crate::wire::WlOutputId;
use ahash::AHashMap;
use std::cell::{Cell, RefCell};
use std::collections::hash_map::Entry;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_output::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlOutputId;
const SP_UNKNOWN: i32 = 0;
#[allow(dead_code)]

View file

@ -1,14 +1,13 @@
use crate::client::{Client, ClientError};
use crate::object::Object;
use crate::pixman::Region;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_region::*;
use crate::wire::WlRegionId;
use std::cell::RefCell;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_region::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlRegionId;
pub struct WlRegion {
id: WlRegionId,

View file

@ -1,13 +1,12 @@
use crate::client::{Client};
use crate::client::Client;
use crate::globals::{Global, GlobalName, GlobalsError};
use crate::object::{Interface, Object};
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_registry::*;
use crate::wire::WlRegistryId;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_registry::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlRegistryId;
pub struct WlRegistry {
id: WlRegistryId,
@ -40,7 +39,11 @@ impl WlRegistry {
fn bind(&self, parser: MsgParser<'_, '_>) -> Result<(), BindError> {
let bind: Bind = self.client.parse(self, parser)?;
let global = self.client.state.globals.get(GlobalName::from_raw(bind.name))?;
let global = self
.client
.state
.globals
.get(GlobalName::from_raw(bind.name))?;
if global.interface().name() != bind.interface {
return Err(BindError::InvalidInterface(InterfaceError {
name: global.name(),
@ -111,4 +114,3 @@ pub struct VersionError {
pub version: u32,
pub actual: u32,
}

View file

@ -8,25 +8,31 @@ use crate::client::{Client, ClientError, ClientId};
use crate::cursor::{Cursor, KnownCursor};
use crate::fixed::Fixed;
use crate::globals::{Global, GlobalName};
use crate::ifs::wl_data_device::{WlDataDevice};
use crate::ifs::wl_data_offer::{DataOfferRole};
use crate::ifs::wl_data_device::WlDataDevice;
use crate::ifs::wl_data_offer::DataOfferRole;
use crate::ifs::wl_data_source::{WlDataSource, WlDataSourceError};
use crate::ifs::wl_seat::wl_keyboard::{WlKeyboard, REPEAT_INFO_SINCE, WlKeyboardError};
use crate::ifs::wl_seat::wl_pointer::{WlPointer};
use crate::ifs::wl_seat::wl_keyboard::{WlKeyboard, WlKeyboardError, REPEAT_INFO_SINCE};
use crate::ifs::wl_seat::wl_pointer::WlPointer;
use crate::ifs::wl_seat::wl_touch::WlTouch;
use crate::ifs::wl_surface::xdg_surface::xdg_toplevel::XdgToplevel;
use crate::ifs::zwp_primary_selection_device_v1::{
ZwpPrimarySelectionDeviceV1,
use crate::ifs::zwp_primary_selection_device_v1::ZwpPrimarySelectionDeviceV1;
use crate::ifs::zwp_primary_selection_source_v1::{
ZwpPrimarySelectionSourceV1, ZwpPrimarySelectionSourceV1Error,
};
use crate::ifs::zwp_primary_selection_source_v1::{ZwpPrimarySelectionSourceV1, ZwpPrimarySelectionSourceV1Error};
use crate::object::Object;
use crate::tree::{FloatNode, FoundNode, Node};
use crate::utils::asyncevent::AsyncEvent;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::utils::clonecell::CloneCell;
use crate::utils::copyhashmap::CopyHashMap;
use crate::utils::linkedlist::LinkedList;
use crate::utils::smallmap::SmallMap;
use crate::wire::wl_seat::*;
use crate::wire::{
WlDataDeviceId, WlDataOfferId, WlKeyboardId, WlPointerId, WlSeatId,
ZwpPrimarySelectionDeviceV1Id, ZwpPrimarySelectionOfferV1Id,
};
use crate::xkbcommon::{XkbContext, XkbState};
use crate::{NumCell, State};
use ahash::{AHashMap, AHashSet};
@ -38,9 +44,6 @@ use std::io::Write;
use std::rc::Rc;
use thiserror::Error;
use uapi::{c, OwnedFd};
use crate::wire::wl_seat::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::{WlDataDeviceId, WlDataOfferId, WlKeyboardId, WlPointerId, WlSeatId, ZwpPrimarySelectionDeviceV1Id, ZwpPrimarySelectionOfferV1Id};
const POINTER: u32 = 1;
const KEYBOARD: u32 = 2;

View file

@ -1,5 +1,5 @@
use crate::backend::{KeyState, OutputId, ScrollAxis, SeatEvent, SeatId};
use crate::client::{ClientId};
use crate::client::ClientId;
use crate::fixed::Fixed;
use crate::ifs::wl_data_device::WlDataDevice;
use crate::ifs::wl_seat::wl_keyboard::WlKeyboard;
@ -14,10 +14,10 @@ use crate::ifs::wl_surface::WlSurface;
use crate::ifs::zwp_primary_selection_device_v1::ZwpPrimarySelectionDeviceV1;
use crate::tree::{FloatNode, FoundNode, Node};
use crate::utils::smallmap::SmallMap;
use crate::wire::{WlDataOfferId, ZwpPrimarySelectionOfferV1Id};
use crate::xkbcommon::{ModifierState, XKB_KEY_DOWN, XKB_KEY_UP};
use std::ops::{Deref, DerefMut};
use std::rc::Rc;
use crate::wire::{WlDataOfferId, ZwpPrimarySelectionOfferV1Id};
#[derive(Default)]
pub struct NodeSeatState {

View file

@ -1,14 +1,13 @@
use crate::client::{ClientError};
use crate::client::ClientError;
use crate::ifs::wl_seat::WlSeat;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_keyboard::*;
use crate::wire::{WlKeyboardId, WlSurfaceId};
use std::rc::Rc;
use thiserror::Error;
use uapi::{c, Errno, OwnedFd};
use crate::wire::wl_keyboard::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::{WlKeyboardId, WlSurfaceId};
pub const REPEAT_INFO_SINCE: u32 = 4;
@ -71,12 +70,7 @@ impl WlKeyboard {
})
}
pub fn send_enter(
self: &Rc<Self>,
serial: u32,
surface: WlSurfaceId,
keys: &[u32],
) {
pub fn send_enter(self: &Rc<Self>, serial: u32, surface: WlSurfaceId, keys: &[u32]) {
self.seat.client.event(Enter {
self_id: self.id,
serial,

View file

@ -1,16 +1,15 @@
use crate::client::{ClientError};
use crate::client::ClientError;
use crate::cursor::Cursor;
use crate::fixed::Fixed;
use crate::ifs::wl_seat::WlSeat;
use crate::ifs::wl_surface::WlSurfaceError;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_pointer::*;
use crate::wire::{WlPointerId, WlSurfaceId};
use std::rc::Rc;
use thiserror::Error;
use crate::ifs::wl_surface::WlSurfaceError;
use crate::wire::wl_pointer::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::{WlPointerId, WlSurfaceId};
#[allow(dead_code)]
const ROLE: u32 = 0;
@ -45,13 +44,7 @@ impl WlPointer {
}
}
pub fn send_enter(
&self,
serial: u32,
surface: WlSurfaceId,
x: Fixed,
y: Fixed,
) {
pub fn send_enter(&self, serial: u32, surface: WlSurfaceId, x: Fixed, y: Fixed) {
self.seat.client.event(Enter {
self_id: self.id,
serial,
@ -78,13 +71,7 @@ impl WlPointer {
})
}
pub fn send_button(
&self,
serial: u32,
time: u32,
button: u32,
state: u32,
) {
pub fn send_button(&self, serial: u32, time: u32, button: u32, state: u32) {
self.seat.client.event(Button {
self_id: self.id,
serial,

View file

@ -1,13 +1,12 @@
use crate::client::ClientError;
use crate::ifs::wl_seat::WlSeat;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_touch::*;
use crate::wire::WlTouchId;
use std::rc::Rc;
use thiserror::Error;
use crate::client::ClientError;
use crate::wire::wl_touch::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlTouchId;
#[allow(dead_code)]
const DOWN: u32 = 0;

View file

@ -1,15 +1,14 @@
use crate::client::{Client, ClientError};
use crate::format::FORMATS;
use crate::globals::{Global, GlobalName};
use crate::ifs::wl_shm_pool::{WlShmPool, WlShmPoolError};
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_shm::*;
use crate::wire::WlShmId;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_shm::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlShmId;
pub struct WlShmGlobal {
name: GlobalName,

View file

@ -1,18 +1,17 @@
use crate::client::{Client, ClientError};
use crate::clientmem::ClientMem;
use crate::format::{formats, map_wayland_format_id};
use crate::ifs::wl_buffer::{WlBuffer, WlBufferError};
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::utils::clonecell::CloneCell;
use crate::wire::wl_shm_pool::*;
use crate::wire::WlShmPoolId;
use crate::ClientMemError;
use std::rc::Rc;
use thiserror::Error;
use uapi::OwnedFd;
use crate::ClientMemError;
use crate::wire::wl_shm_pool::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlShmPoolId;
pub struct WlShmPool {
id: WlShmPoolId,

View file

@ -1,14 +1,13 @@
use crate::client::{Client, ClientError};
use crate::globals::{Global, GlobalName};
use crate::ifs::wl_surface::wl_subsurface::{WlSubsurface, WlSubsurfaceError};
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::wl_subcompositor::*;
use crate::wire::WlSubcompositorId;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_subcompositor::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlSubcompositorId;
#[allow(dead_code)]
const BAD_SURFACE: u32 = 0;

View file

@ -20,6 +20,8 @@ use crate::utils::buffd::{MsgParser, MsgParserError};
use crate::utils::clonecell::CloneCell;
use crate::utils::linkedlist::LinkedList;
use crate::utils::smallmap::SmallMap;
use crate::wire::wl_surface::*;
use crate::wire::{WlOutputId, WlSurfaceId};
use crate::xkbcommon::ModifierState;
use crate::NumCell;
use ahash::AHashMap;
@ -28,8 +30,6 @@ use std::mem;
use std::ops::{Deref, DerefMut};
use std::rc::Rc;
use thiserror::Error;
use crate::wire::wl_surface::*;
use crate::wire::{WlOutputId, WlSurfaceId};
#[allow(dead_code)]
const INVALID_SCALE: u32 = 0;

View file

@ -1,4 +1,4 @@
use crate::client::ClientError;
use crate::ifs::wl_surface::{
CommitAction, CommitContext, StackElement, SurfaceExt, SurfaceRole, WlSurface, WlSurfaceError,
WlSurfaceId,
@ -6,16 +6,15 @@ use crate::ifs::wl_surface::{
use crate::object::Object;
use crate::rect::Rect;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::utils::linkedlist::LinkedNode;
use crate::wire::wl_subsurface::*;
use crate::wire::WlSubsurfaceId;
use crate::NumCell;
use std::cell::{Cell, RefCell};
use std::ops::Deref;
use std::rc::Rc;
use thiserror::Error;
use crate::client::ClientError;
use crate::wire::wl_subsurface::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::WlSubsurfaceId;
#[allow(dead_code)]
const BAD_SURFACE: u32 = 0;

View file

@ -2,7 +2,7 @@ pub mod xdg_popup;
pub mod xdg_toplevel;
use crate::backend::SeatId;
use crate::client::{ClientError};
use crate::client::ClientError;
use crate::ifs::wl_seat::{NodeSeatState, WlSeatGlobal};
use crate::ifs::wl_surface::xdg_surface::xdg_popup::{XdgPopup, XdgPopupError};
use crate::ifs::wl_surface::xdg_surface::xdg_toplevel::XdgToplevel;
@ -14,16 +14,16 @@ use crate::object::Object;
use crate::rect::Rect;
use crate::tree::{FindTreeResult, FoundNode, Node, WorkspaceNode};
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::utils::clonecell::CloneCell;
use crate::utils::copyhashmap::CopyHashMap;
use crate::utils::smallmap::SmallMap;
use crate::wire::xdg_surface::*;
use crate::wire::{WlSurfaceId, XdgPopupId, XdgSurfaceId};
use crate::NumCell;
use std::cell::Cell;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::xdg_surface::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::{WlSurfaceId, XdgPopupId, XdgSurfaceId};
#[allow(dead_code)]
const NOT_CONSTRUCTED: u32 = 1;

View file

@ -1,4 +1,3 @@
use crate::client::{Client, ClientError};
use crate::cursor::KnownCursor;
use crate::fixed::Fixed;
@ -10,14 +9,14 @@ use crate::rect::Rect;
use crate::render::Renderer;
use crate::tree::{FindTreeResult, FoundNode, Node, NodeId, WorkspaceNode};
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::utils::clonecell::CloneCell;
use crate::utils::linkedlist::LinkedNode;
use crate::wire::xdg_popup::*;
use crate::wire::XdgPopupId;
use std::cell::{Cell, RefCell};
use std::rc::Rc;
use thiserror::Error;
use crate::wire::xdg_popup::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::XdgPopupId;
#[allow(dead_code)]
const INVALID_GRAB: u32 = 1;
@ -76,7 +75,10 @@ impl XdgPopup {
}
fn send_popup_done(&self) {
self.xdg.surface.client.event(PopupDone { self_id: self.id })
self.xdg
.surface
.client
.event(PopupDone { self_id: self.id })
}
fn update_position(&self, parent: &XdgSurface) -> Result<(), XdgPopupError> {
@ -206,12 +208,7 @@ impl XdgPopup {
self.update_position(&parent)?;
let rel = self.relative_position.get();
self.send_repositioned(req.token);
self.send_configure(
rel.x1(),
rel.y1(),
rel.width(),
rel.height(),
);
self.send_configure(rel.x1(), rel.y1(), rel.width(), rel.height());
self.xdg.do_send_configure();
}
Ok(())
@ -303,12 +300,7 @@ impl XdgSurfaceExt for XdgPopup {
if let Some(parent) = self.parent.get() {
self.update_position(&parent)?;
let rel = self.relative_position.get();
self.send_configure(
rel.x1(),
rel.y1(),
rel.width(),
rel.height(),
);
self.send_configure(rel.x1(), rel.y1(), rel.width(), rel.height());
}
Ok(())
}

View file

@ -1,4 +1,3 @@
use crate::backend::SeatId;
use crate::bugs::Bugs;
use crate::client::{Client, ClientError};
@ -12,9 +11,12 @@ use crate::render::Renderer;
use crate::tree::{ContainerNode, FindTreeResult};
use crate::tree::{FloatNode, FoundNode, Node, NodeId, ToplevelNodeId, WorkspaceNode};
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::utils::clonecell::CloneCell;
use crate::utils::linkedlist::LinkedNode;
use crate::utils::smallmap::SmallMap;
use crate::wire::xdg_toplevel::*;
use crate::wire::XdgToplevelId;
use crate::{bugs, NumCell};
use ahash::{AHashMap, AHashSet};
use num_derive::FromPrimitive;
@ -22,9 +24,6 @@ use std::cell::{Cell, RefCell};
use std::mem;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::xdg_toplevel::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::XdgToplevelId;
#[derive(Copy, Clone, Debug, FromPrimitive)]
pub enum ResizeEdge {

View file

@ -1,16 +1,15 @@
use crate::client::{Client, ClientError};
use crate::ifs::xdg_wm_base::XdgWmBase;
use crate::object::Object;
use crate::rect::Rect;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::xdg_positioner::*;
use crate::wire::XdgPositionerId;
use bitflags::bitflags;
use std::cell::RefCell;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::xdg_positioner::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::XdgPositionerId;
const INVALID_INPUT: u32 = 0;

View file

@ -1,16 +1,15 @@
use crate::client::{Client, ClientError};
use crate::globals::{Global, GlobalName};
use crate::ifs::wl_surface::xdg_surface::{XdgSurface, XdgSurfaceError};
use crate::ifs::xdg_positioner::XdgPositioner;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::utils::copyhashmap::CopyHashMap;
use crate::wire::xdg_wm_base::*;
use crate::wire::{XdgSurfaceId, XdgWmBaseId};
use std::rc::Rc;
use thiserror::Error;
use crate::wire::xdg_wm_base::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::{XdgSurfaceId, XdgWmBaseId};
#[allow(dead_code)]
const ROLE: u32 = 0;

View file

@ -1,19 +1,18 @@
use crate::client::{ClientError};
use crate::client::ClientError;
use crate::drm::dma::{DmaBuf, DmaBufPlane};
use crate::drm::INVALID_MODIFIER;
use crate::ifs::wl_buffer::{WlBuffer};
use crate::ifs::wl_buffer::WlBuffer;
use crate::ifs::zwp_linux_dmabuf_v1::ZwpLinuxDmabufV1;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::zwp_linux_buffer_params_v1::*;
use crate::wire::{WlBufferId, ZwpLinuxBufferParamsV1Id};
use crate::{ErrorFmt, RenderError};
use ahash::AHashMap;
use std::cell::{Cell, RefCell};
use std::rc::Rc;
use thiserror::Error;
use crate::wire::zwp_linux_buffer_params_v1::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::{WlBufferId, ZwpLinuxBufferParamsV1Id};
#[allow(dead_code)]
const Y_INVERT: u32 = 1;

View file

@ -4,12 +4,11 @@ use crate::globals::{Global, GlobalName};
use crate::ifs::zwp_linux_buffer_params_v1::ZwpLinuxBufferParamsV1;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::zwp_linux_dmabuf_v1::*;
use crate::wire::ZwpLinuxDmabufV1Id;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::zwp_linux_dmabuf_v1::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::ZwpLinuxDmabufV1Id;
pub struct ZwpLinuxDmabufV1Global {
name: GlobalName,

View file

@ -1,15 +1,14 @@
use crate::client::{Client, ClientError};
use crate::globals::{Global, GlobalName};
use crate::ifs::zwp_primary_selection_device_v1::ZwpPrimarySelectionDeviceV1;
use crate::ifs::zwp_primary_selection_source_v1::ZwpPrimarySelectionSourceV1;
use crate::object::Object;
use crate::utils::buffd::MsgParser;
use crate::utils::buffd::MsgParserError;
use crate::wire::zwp_primary_selection_device_manager_v1::*;
use crate::wire::ZwpPrimarySelectionDeviceManagerV1Id;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::zwp_primary_selection_device_manager_v1::*;
use crate::utils::buffd::MsgParserError;
use crate::wire::ZwpPrimarySelectionDeviceManagerV1Id;
pub struct ZwpPrimarySelectionDeviceManagerV1Global {
name: GlobalName,

View file

@ -1,14 +1,13 @@
use crate::client::{ClientError};
use crate::client::ClientError;
use crate::ifs::wl_seat::WlSeat;
use crate::ifs::zwp_primary_selection_device_manager_v1::ZwpPrimarySelectionDeviceManagerV1;
use crate::ifs::zwp_primary_selection_source_v1::ZwpPrimarySelectionSourceV1Error;
use crate::object::Object;
use crate::utils::buffd::{MsgParser, MsgParserError};
use std::rc::Rc;
use thiserror::Error;
use crate::ifs::zwp_primary_selection_source_v1::ZwpPrimarySelectionSourceV1Error;
use crate::wire::zwp_primary_selection_device_v1::*;
use crate::wire::{ZwpPrimarySelectionDeviceV1Id, ZwpPrimarySelectionOfferV1Id};
use std::rc::Rc;
use thiserror::Error;
pub struct ZwpPrimarySelectionDeviceV1 {
pub id: ZwpPrimarySelectionDeviceV1Id,

View file

@ -1,15 +1,15 @@
use std::mem;
use crate::client::{Client, ClientError};
use crate::ifs::wl_seat::WlSeatGlobal;
use crate::ifs::zwp_primary_selection_source_v1::ZwpPrimarySelectionSourceV1;
use crate::object::Object;
use crate::utils::buffd::{MsgParser, MsgParserError};
use crate::utils::clonecell::CloneCell;
use crate::wire::zwp_primary_selection_offer_v1::*;
use crate::wire::ZwpPrimarySelectionOfferV1Id;
use std::mem;
use std::ops::Deref;
use std::rc::Rc;
use thiserror::Error;
use crate::wire::zwp_primary_selection_offer_v1::*;
use crate::wire::ZwpPrimarySelectionOfferV1Id;
pub struct ZwpPrimarySelectionOfferV1 {
pub id: ZwpPrimarySelectionOfferV1Id,

View file

@ -1,17 +1,16 @@
use crate::client::{Client, ClientError};
use crate::ifs::wl_seat::WlSeatGlobal;
use crate::ifs::zwp_primary_selection_offer_v1::ZwpPrimarySelectionOfferV1;
use crate::object::Object;
use crate::utils::buffd::{MsgParser, MsgParserError};
use crate::utils::clonecell::CloneCell;
use crate::wire::zwp_primary_selection_source_v1::*;
use crate::wire::ZwpPrimarySelectionSourceV1Id;
use ahash::AHashSet;
use std::cell::RefCell;
use std::rc::Rc;
use thiserror::Error;
use uapi::OwnedFd;
use crate::wire::zwp_primary_selection_source_v1::*;
use crate::wire::ZwpPrimarySelectionSourceV1Id;
pub struct ZwpPrimarySelectionSourceV1 {
pub id: ZwpPrimarySelectionSourceV1Id,

View file

@ -3,11 +3,10 @@ use crate::globals::{Global, GlobalName};
use crate::ifs::zxdg_toplevel_decoration_v1::ZxdgToplevelDecorationV1;
use crate::object::Object;
use crate::utils::buffd::{MsgParser, MsgParserError};
use std::rc::Rc;
use thiserror::Error;
use crate::wire::zxdg_decoration_manager_v1::*;
use crate::wire::ZxdgDecorationManagerV1Id;
use std::rc::Rc;
use thiserror::Error;
pub struct ZxdgDecorationManagerV1Global {
name: GlobalName,

View file

@ -1,12 +1,11 @@
use crate::client::{Client, ClientError};
use crate::ifs::wl_surface::xdg_surface::xdg_toplevel::{Decoration, XdgToplevel};
use crate::object::Object;
use crate::utils::buffd::{MsgParser, MsgParserError};
use std::rc::Rc;
use thiserror::Error;
use crate::wire::zxdg_toplevel_decoration_v1::*;
use crate::wire::ZxdgToplevelDecorationV1Id;
use std::rc::Rc;
use thiserror::Error;
const CLIENT_SIDE: u32 = 1;
const SERVER_SIDE: u32 = 2;

View file

@ -67,8 +67,8 @@ mod time;
mod tree;
mod utils;
mod wheel;
mod xkbcommon;
mod wire;
mod xkbcommon;
fn main() {
env_logger::builder()

View file

@ -1,8 +1,8 @@
use crate::client::ClientError;
use crate::utils::buffd::MsgParser;
use crate::wire::WlDisplayId;
use std::fmt::{Display, Formatter};
use std::rc::Rc;
use crate::wire::WlDisplayId;
pub const WL_DISPLAY_ID: WlDisplayId = WlDisplayId::from_raw(1);

View file

@ -1,11 +1,11 @@
use crate::async_engine::{AsyncFd, Timeout};
use crate::utils::buffd::{BufFdError, BUF_SIZE, CMSG_BUF_SIZE};
use futures::future::Fuse;
use futures::{select, FutureExt};
use std::collections::VecDeque;
use std::mem::MaybeUninit;
use std::rc::Rc;
use std::{mem, slice};
use futures::future::Fuse;
use uapi::{c, Errno, OwnedFd};
pub(super) const OUT_BUF_SIZE: usize = 2 * BUF_SIZE;
@ -90,7 +90,11 @@ impl BufFdOut {
}
}
pub async fn flush(&mut self, buf: &mut OutBuffer, timeout: &mut Option<Fuse<Timeout>>) -> Result<(), BufFdError> {
pub async fn flush(
&mut self,
buf: &mut OutBuffer,
timeout: &mut Option<Fuse<Timeout>>,
) -> Result<(), BufFdError> {
while buf.read_pos < buf.write_pos {
if self.flush_sync(buf)? {
self.fd.writable().await?;

View file

@ -73,7 +73,8 @@ impl<'a> MsgFormatter<'a> {
f(&mut fmt);
let len = self.buf.write_pos - pos - 4;
let none = [MaybeUninit::new(0); 4];
self.buf.write(&none[..self.buf.write_pos.wrapping_neg() & 3]);
self.buf
.write(&none[..self.buf.write_pos.wrapping_neg() & 3]);
len as u32
};
unsafe {
@ -86,7 +87,8 @@ impl<'a> MsgFormatter<'a> {
self.uint(mem::size_of_val(t) as u32);
self.buf.write(uapi::as_maybe_uninit_bytes(t));
let none = [MaybeUninit::new(0); 4];
self.buf.write(&none[..self.buf.write_pos.wrapping_neg() & 3]);
self.buf
.write(&none[..self.buf.write_pos.wrapping_neg() & 3]);
self
}

View file

@ -1,10 +1,10 @@
use std::{mem, ptr};
use std::rc::Rc;
use crate::fixed::Fixed;
use crate::globals::GlobalName;
use crate::object::ObjectId;
use crate::utils::buffd::BufFdIn;
use bstr::{BStr, ByteSlice};
use std::rc::Rc;
use std::{mem, ptr};
use thiserror::Error;
use uapi::{OwnedFd, Pod};
@ -76,7 +76,7 @@ impl<'a, 'b> MsgParser<'a, 'b> {
if s.len() == 0 {
return Err(MsgParserError::EmptyString);
}
Ok(s[..s.len()-1].as_bstr())
Ok(s[..s.len() - 1].as_bstr())
}
pub fn str(&mut self) -> Result<&'b str, MsgParserError> {
@ -120,9 +120,7 @@ impl<'a, 'b> MsgParser<'a, 'b> {
if array.len() > mem::size_of::<T>() {
return Err(MsgParserError::BinaryArrayTooLarge);
}
unsafe {
Ok(ptr::read_unaligned(array.as_ptr() as _))
}
unsafe { Ok(ptr::read_unaligned(array.as_ptr() as _)) }
}
pub fn binary_array<T: Pod>(&mut self) -> Result<&'b [T], MsgParserError> {
@ -137,7 +135,10 @@ impl<'a, 'b> MsgParser<'a, 'b> {
return Err(MsgParserError::BinaryArraySize);
}
unsafe {
Ok(std::slice::from_raw_parts(array.as_ptr() as _, array.len() / mem::size_of::<T>()))
Ok(std::slice::from_raw_parts(
array.as_ptr() as _,
array.len() / mem::size_of::<T>(),
))
}
}
}