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 { if let winit::event::Event::NewEvents(winit::event::StartCause::Init) = e {
let surfman = window.webrender_surfman(); 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(); let window = window.clone();
// This should be safe because run_forever does, in fact, // This should be safe because run_forever does, in fact,
// run forever. The event loop window target doesn't get // run forever. The event loop window target doesn't get

View file

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