Work around absense of winit::event_loop in headless case.

This commit is contained in:
Paulo E. Castro 2021-03-11 00:22:52 +00:00
parent 2aa4778f86
commit 84b06ab6d1
2 changed files with 8 additions and 4 deletions

View file

@ -69,7 +69,7 @@ impl App {
if let winit::event::Event::NewEvents(winit::event::StartCause::Init) = e {
let surfman = window.webrender_surfman();
let xr_discovery = if pref!(dom.webxr.glwindow.enabled) {
let xr_discovery = if pref!(dom.webxr.glwindow.enabled) && ! opts::get().headless {
let window = window.clone();
// This should be safe because run_forever does, in fact,
// run forever. The event loop window target doesn't get

View file

@ -80,18 +80,22 @@ impl EventsLoop {
}
EventLoop::Headless(ref data) => {
let &(ref flag, ref condvar) = &**data;
let mut event = winit::event::Event::NewEvents(winit::event::StartCause::Init);
loop {
self.sleep(flag, condvar);
let mut control_flow = winit::event_loop::ControlFlow::Poll;
callback(
winit::event::Event::<ServoEvent>::UserEvent(ServoEvent::Awakened),
event,
None,
&mut control_flow
);
event = winit::event::Event::<ServoEvent>::UserEvent(ServoEvent::Awakened);
if control_flow != winit::event_loop::ControlFlow::Poll {
*flag.lock().unwrap() = false;
} else if control_flow == winit::event_loop::ControlFlow::Exit {
}
if control_flow == winit::event_loop::ControlFlow::Exit {
break;
}
}