mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Only request synchronous repaint when a resize will actually occur.
This commit is contained in:
parent
10231573be
commit
49ddc5ea3d
3 changed files with 12 additions and 14 deletions
|
@ -835,7 +835,7 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn on_resize_window_event(&mut self) {
|
||||
pub fn on_resize_window_event(&mut self) -> bool {
|
||||
debug!("compositor resize requested");
|
||||
|
||||
let old_coords = self.embedder_coordinates;
|
||||
|
@ -847,11 +847,12 @@ impl<Window: WindowMethods + ?Sized> IOCompositor<Window> {
|
|||
}
|
||||
|
||||
if self.embedder_coordinates.viewport == old_coords.viewport {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
self.send_window_size(WindowSizeType::Resize);
|
||||
self.composite_if_necessary(CompositingReason::Resize);
|
||||
return true;
|
||||
}
|
||||
|
||||
pub fn on_mouse_window_event_class(&mut self, mouse_window_event: MouseWindowEvent) {
|
||||
|
|
|
@ -549,7 +549,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
fn handle_window_event(&mut self, event: WindowEvent) {
|
||||
fn handle_window_event(&mut self, event: WindowEvent) -> bool {
|
||||
match event {
|
||||
WindowEvent::Idle => {},
|
||||
|
||||
|
@ -558,7 +558,7 @@ where
|
|||
},
|
||||
|
||||
WindowEvent::Resize => {
|
||||
self.compositor.on_resize_window_event();
|
||||
return self.compositor.on_resize_window_event();
|
||||
},
|
||||
|
||||
WindowEvent::AllowNavigationResponse(pipeline_id, allowed) => {
|
||||
|
@ -745,6 +745,7 @@ where
|
|||
}
|
||||
},
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
fn receive_messages(&mut self) {
|
||||
|
@ -776,18 +777,20 @@ where
|
|||
::std::mem::replace(&mut self.embedder_events, Vec::new())
|
||||
}
|
||||
|
||||
pub fn handle_events(&mut self, events: Vec<WindowEvent>) {
|
||||
pub fn handle_events(&mut self, events: Vec<WindowEvent>) -> bool {
|
||||
if self.compositor.receive_messages() {
|
||||
self.receive_messages();
|
||||
}
|
||||
let mut need_resize = false;
|
||||
for event in events {
|
||||
self.handle_window_event(event);
|
||||
need_resize |= self.handle_window_event(event);
|
||||
}
|
||||
if self.compositor.shutdown_state != ShutdownState::FinishedShuttingDown {
|
||||
self.compositor.perform_updates();
|
||||
} else {
|
||||
self.embedder_events.push((None, EmbedderMsg::Shutdown));
|
||||
}
|
||||
need_resize
|
||||
}
|
||||
|
||||
pub fn repaint_synchronously(&mut self) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue