Skip to content

Commit 1c681e6

Browse files
committed
Add an alternative winit runner that can be started when not on the main thread
1 parent f7aa09f commit 1c681e6

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

crates/bevy_winit/src/lib.rs

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@ use winit::{
2222
event_loop::{ControlFlow, EventLoop, EventLoopWindowTarget},
2323
};
2424

25+
#[cfg(any(
26+
target_os = "linux",
27+
target_os = "dragonfly",
28+
target_os = "freebsd",
29+
target_os = "netbsd",
30+
target_os = "openbsd"
31+
))]
32+
use winit::platform::unix::EventLoopExtUnix;
33+
2534
#[derive(Default)]
2635
pub struct WinitPlugin;
2736

@@ -157,8 +166,22 @@ where
157166
panic!("Run return is not supported on this platform!")
158167
}
159168

160-
pub fn winit_runner(mut app: App) {
161-
let mut event_loop = EventLoop::new();
169+
pub fn winit_runner(app: App) {
170+
winit_runner_with(app, EventLoop::new());
171+
}
172+
173+
#[cfg(any(
174+
target_os = "linux",
175+
target_os = "dragonfly",
176+
target_os = "freebsd",
177+
target_os = "netbsd",
178+
target_os = "openbsd"
179+
))]
180+
pub fn winit_runner_any_thread(app: App) {
181+
winit_runner_with(app, EventLoop::new_any_thread());
182+
}
183+
184+
pub fn winit_runner_with(mut app: App, mut event_loop: EventLoop<()>) {
162185
let mut create_window_event_reader = EventReader::<CreateWindow>::default();
163186
let mut app_exit_event_reader = EventReader::<AppExit>::default();
164187

0 commit comments

Comments
 (0)