Merge pull request #181 from vberger/master
wayland: Fix deadlock in poll_events
This commit is contained in:
commit
4a50fa6c44
1 changed files with 10 additions and 8 deletions
|
|
@ -160,6 +160,7 @@ impl EventsLoop {
|
||||||
self.ctxt.dispatch_pending();
|
self.ctxt.dispatch_pending();
|
||||||
evq_guard.dispatch_pending().expect("Wayland connection unexpectedly lost");
|
evq_guard.dispatch_pending().expect("Wayland connection unexpectedly lost");
|
||||||
|
|
||||||
|
{
|
||||||
let mut sink_guard = self.sink.lock().unwrap();
|
let mut sink_guard = self.sink.lock().unwrap();
|
||||||
|
|
||||||
// events where probably dispatched, process resize
|
// events where probably dispatched, process resize
|
||||||
|
|
@ -169,7 +170,8 @@ impl EventsLoop {
|
||||||
);
|
);
|
||||||
|
|
||||||
// replace the old noop callback
|
// replace the old noop callback
|
||||||
unsafe { self.sink.lock().unwrap().set_callback(old_cb) };
|
unsafe { sink_guard.set_callback(old_cb) };
|
||||||
|
}
|
||||||
|
|
||||||
if self.cleanup_needed.swap(false, ::std::sync::atomic::Ordering::Relaxed) {
|
if self.cleanup_needed.swap(false, ::std::sync::atomic::Ordering::Relaxed) {
|
||||||
self.prune_dead_windows()
|
self.prune_dead_windows()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue