Further improvements

This commit is contained in:
daxpedda 2021-03-08 11:12:54 +01:00
parent 57a2ec52dc
commit b4e2e560fd
No known key found for this signature in database
GPG key ID: 43D62A3EA388E46F

View file

@ -22,7 +22,7 @@ const POLL_DURATION: std::time::Duration = Duration::from_micros(50);
pub struct Clipboard { pub struct Clipboard {
reader: Context, reader: Context,
writer: Arc<Context>, writer: Arc<Context>,
selections: Arc<RwLock<HashMap<Atom, (Atom, Vec<u8>)>>>, selections: Arc<RwLock<HashMap<Atom, (Atom, Vec<u32>)>>>,
worker: mpsc::Sender<Atom>, worker: mpsc::Sender<Atom>,
} }
@ -71,7 +71,7 @@ impl Clipboard {
self.selections self.selections
.write() .write()
.map_err(|_| Error::SelectionLocked)? .map_err(|_| Error::SelectionLocked)?
.insert(selection, (target, contents.into())); .insert(selection, (target, contents.chars().map(u32::from).collect()));
let _ = xproto::set_selection_owner( let _ = xproto::set_selection_owner(
&self.writer.connection, &self.writer.connection,
@ -343,7 +343,7 @@ impl Context {
pub struct Worker { pub struct Worker {
context: Arc<Context>, context: Arc<Context>,
selections: Arc<RwLock<HashMap<Atom, (Atom, Vec<u8>)>>>, selections: Arc<RwLock<HashMap<Atom, (Atom, Vec<u32>)>>>,
receiver: mpsc::Receiver<Atom>, receiver: mpsc::Receiver<Atom>,
} }
@ -363,7 +363,7 @@ impl Worker {
let mut incr_map = HashMap::new(); let mut incr_map = HashMap::new();
let mut state_map = HashMap::new(); let mut state_map = HashMap::new();
let max_length = self.context.connection.maximum_request_bytes() * 4; let max_length = self.context.connection.maximum_request_bytes();
while let Ok(event) = self.context.connection.wait_for_event() { while let Ok(event) = self.context.connection.wait_for_event() {
while let Ok(selection) = self.receiver.try_recv() { while let Ok(selection) = self.receiver.try_recv() {
@ -396,8 +396,8 @@ impl Worker {
&data, &data,
) )
.expect("Change property"); .expect("Change property");
} else if value.len() < max_length - 24 { } else if value.len() < max_length {
let _ = self.context.connection.change_property8( let _ = self.context.connection.change_property32(
xproto::PropMode::REPLACE, xproto::PropMode::REPLACE,
event.requestor, event.requestor,
event.property, event.property,
@ -481,7 +481,7 @@ impl Worker {
value.len() - state.pos, value.len() - state.pos,
); );
let _ = self.context.connection.change_property8( let _ = self.context.connection.change_property32(
xproto::PropMode::REPLACE, xproto::PropMode::REPLACE,
state.requestor, state.requestor,
state.property, state.property,