linux: only tick the main thread tasks and one at a time in the event loop
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 9.3 KiB |
@@ -46,6 +46,13 @@ impl LinuxDispatcher {
|
||||
main_thread_id: thread::current().id(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn tick_main(&self) {
|
||||
assert!(self.is_main_thread());
|
||||
if let Ok(runnable) = self.main_receiver.try_recv() {
|
||||
runnable.run();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl PlatformDispatcher for LinuxDispatcher {
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
use crate::{
|
||||
Action, AnyWindowHandle, BackgroundExecutor, Bounds, ClipboardItem, CursorStyle, DisplayId,
|
||||
ForegroundExecutor, Keymap, LinuxDispatcher, LinuxDisplay, LinuxTextSystem, LinuxWindow,
|
||||
LinuxWindowState, Menu, PathPromptOptions, Platform, PlatformDispatcher as _, PlatformDisplay,
|
||||
PlatformInput, PlatformTextSystem, PlatformWindow, Point, Result, SemanticVersion, Size, Task,
|
||||
WindowOptions,
|
||||
LinuxWindowState, Menu, PathPromptOptions, Platform, PlatformDisplay, PlatformInput,
|
||||
PlatformTextSystem, PlatformWindow, Point, Result, SemanticVersion, Size, Task, WindowOptions,
|
||||
};
|
||||
|
||||
use collections::{HashMap, HashSet};
|
||||
@@ -121,7 +120,7 @@ impl Platform for LinuxPlatform {
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
self.0.lock().dispatcher.tick(false);
|
||||
self.0.lock().dispatcher.tick_main();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user