compositing: Support multiple events per frame.

Improves scrolling performance on Mac.
This commit is contained in:
Patrick Walton 2015-05-15 15:07:26 -07:00
parent e52197d126
commit 0098d9e9e8
12 changed files with 67 additions and 59 deletions

View file

@ -64,17 +64,14 @@ fn main() {
maybe_register_glutin_resize_handler(&window, &mut browser);
browser.browser.handle_event(WindowEvent::InitializeCompositing);
browser.browser.handle_events(vec![WindowEvent::InitializeCompositing]);
// Feed events from the window to the browser until the browser
// says to stop.
loop {
let should_continue = match window {
None => browser.browser.handle_event(WindowEvent::Idle),
Some(ref window) => {
let event = window.wait_events();
browser.browser.handle_event(event)
}
None => browser.browser.handle_events(Vec::new()),
Some(ref window) => browser.browser.handle_events(window.wait_events()),
};
if !should_continue {
break
@ -123,7 +120,7 @@ impl app::NestedEventLoopListener for BrowserWrapper {
WindowEvent::Resize(..) => true,
_ => false,
};
if !self.browser.handle_event(event) {
if !self.browser.handle_events(vec![event]) {
return false
}
if is_resize {