mirror of
https://github.com/servo/servo.git
synced 2025-08-06 22:15:33 +01:00
Don't process events while borrowing the event loop
This commit is contained in:
parent
e381cebeb6
commit
ea4b1631dd
1 changed files with 11 additions and 19 deletions
|
@ -101,29 +101,21 @@ impl App {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_loop(self) {
|
fn run_loop(self) {
|
||||||
let mut stop = false;
|
|
||||||
loop {
|
loop {
|
||||||
let mut events_loop = self.events_loop.borrow_mut();
|
if !self.window.is_animating() || self.suspended.get() {
|
||||||
if self.window.is_animating() && !self.suspended.get() {
|
// If there's no animations running then we block on the window event loop.
|
||||||
// We block on compositing (self.handle_events() ends up calling swap_buffers)
|
self.events_loop.borrow_mut().run_forever(|e| {
|
||||||
events_loop.poll_events(|e| {
|
|
||||||
self.winit_event_to_servo_event(e);
|
self.winit_event_to_servo_event(e);
|
||||||
});
|
|
||||||
stop = self.handle_events();
|
|
||||||
} else {
|
|
||||||
// We block on winit's event loop (window events)
|
|
||||||
events_loop.run_forever(|e| {
|
|
||||||
self.winit_event_to_servo_event(e);
|
|
||||||
if self.has_events() && !self.suspended.get() {
|
|
||||||
stop = self.handle_events();
|
|
||||||
}
|
|
||||||
if stop || self.window.is_animating() && !self.suspended.get() {
|
|
||||||
glutin::ControlFlow::Break
|
glutin::ControlFlow::Break
|
||||||
} else {
|
|
||||||
glutin::ControlFlow::Continue
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// Grab any other events that may have happened
|
||||||
|
self.events_loop.borrow_mut().poll_events(|e| {
|
||||||
|
self.winit_event_to_servo_event(e);
|
||||||
|
});
|
||||||
|
// If animations are running, we block on compositing
|
||||||
|
// (self.handle_events() ends up calling swap_buffers)
|
||||||
|
let stop = self.handle_events();
|
||||||
if stop {
|
if stop {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue