From 42f0671531155a2a468de31f9b3ea545d29c4eb1 Mon Sep 17 00:00:00 2001 From: Francesca Frangipane Date: Sat, 21 Apr 2018 11:53:57 -0400 Subject: [PATCH] x11: Windows are Sync again (#474) * x11: Windows are Sync again Fixes #472 * Add test ensuring that Window is Sync Window must be Sync for Vulkano's Arc to be usable. --- src/platform/linux/x11/mod.rs | 9 ++++++--- tests/sync_object.rs | 9 +++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 tests/sync_object.rs diff --git a/src/platform/linux/x11/mod.rs b/src/platform/linux/x11/mod.rs index f0e0fa01ae..a46f919538 100644 --- a/src/platform/linux/x11/mod.rs +++ b/src/platform/linux/x11/mod.rs @@ -1004,7 +1004,7 @@ pub struct Window { pub window: Arc, display: Weak, windows: Weak>>, - ime_sender: ImeSender, + ime_sender: Mutex, } impl ::std::ops::Deref for Window { @@ -1038,7 +1038,7 @@ impl Window { window: win, windows: Arc::downgrade(&x_events_loop.windows), display: Arc::downgrade(&x_events_loop.display), - ime_sender: x_events_loop.ime_sender.clone(), + ime_sender: Mutex::new(x_events_loop.ime_sender.clone()), }) } @@ -1049,7 +1049,10 @@ impl Window { #[inline] pub fn send_xim_spot(&self, x: i16, y: i16) { - let _ = self.ime_sender.send((self.window.id().0, x, y)); + let _ = self.ime_sender + .lock() + .unwrap() + .send((self.window.id().0, x, y)); } } diff --git a/tests/sync_object.rs b/tests/sync_object.rs new file mode 100644 index 0000000000..eb9a06e344 --- /dev/null +++ b/tests/sync_object.rs @@ -0,0 +1,9 @@ +extern crate winit; + +fn needs_sync() {} + +#[test] +fn window_sync() { + // ensures that `winit::Window` implements `Sync` + needs_sync::(); +}