From 46057d71220ea6072d9bce1d3504aca2fe3a86a4 Mon Sep 17 00:00:00 2001 From: Joe Wilm Date: Tue, 9 May 2017 21:30:31 -0700 Subject: [PATCH] Remove unnecessary locking For X11 interrupt, we can just use the root window which doesn't require taking a lock to find. --- src/platform/linux/x11/mod.rs | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/src/platform/linux/x11/mod.rs b/src/platform/linux/x11/mod.rs index 2c8ac3f3..9f9f06f3 100644 --- a/src/platform/linux/x11/mod.rs +++ b/src/platform/linux/x11/mod.rs @@ -105,22 +105,9 @@ impl EventsLoop { self.interrupted.store(true, ::std::sync::atomic::Ordering::Relaxed); // Push an event on the X event queue so that methods like run_forever will advance. - - // Get a window for the event. - // - // It should not matter which window is used since the purpose is merely - // to advance the event loop. - let window = { - let windows = self.windows.lock().unwrap(); - match windows.keys().nth(0) { - Some(window_id) => window_id.0, - None => return - } - }; - let mut xev = ffi::XClientMessageEvent { type_: ffi::ClientMessage, - window: window, + window: self.root, format: 32, message_type: 0, serial: 0, @@ -130,7 +117,7 @@ impl EventsLoop { }; unsafe { - (self.display.xlib.XSendEvent)(self.display.display, window, 0, 0, mem::transmute(&mut xev)); + (self.display.xlib.XSendEvent)(self.display.display, self.root, 0, 0, mem::transmute(&mut xev)); (self.display.xlib.XFlush)(self.display.display); self.display.check_errors().expect("Failed to call XSendEvent after wakeup"); }