From e5e3748a463769ba7f404ffc760b8638a9ca418a Mon Sep 17 00:00:00 2001 From: Tremoneck Date: Mon, 10 Jul 2017 12:43:01 +0200 Subject: [PATCH 1/2] Move WR profiler keybindings to glutin window, where the other keybindings are located --- components/compositing/compositor.rs | 19 ++++++------------- components/compositing/windowing.rs | 3 +++ ports/glutin/window.rs | 3 +++ 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index 94c806414db..32dea8e272e 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -11,7 +11,7 @@ use gfx_traits::Epoch; use gleam::gl; use image::{DynamicImage, ImageFormat, RgbImage}; use ipc_channel::ipc::{self, IpcSharedMemory}; -use msg::constellation_msg::{Key, KeyModifiers, KeyState, CONTROL}; +use msg::constellation_msg::{Key, KeyModifiers, KeyState}; use msg::constellation_msg::{PipelineId, PipelineIndex, PipelineNamespaceId, TraversalDirection}; use net_traits::image::base::{Image, PixelFormat}; use profile_traits::time::{self, ProfilerCategory, profile}; @@ -825,6 +825,11 @@ impl IOCompositor { warn!("Sending reload to constellation failed ({}).", e); } } + + WindowEvent::ToggleWebRenderProfiler => { + let profiler_enabled = self.webrender.get_profiler_enabled(); + self.set_webrender_profiler_enabled(!profiler_enabled); + } } } @@ -1313,18 +1318,6 @@ impl IOCompositor { key: Key, state: KeyState, modifiers: KeyModifiers) { - // Steal a few key events for webrender debug options. - if modifiers.contains(CONTROL) && state == KeyState::Pressed { - match key { - Key::F12 => { - let profiler_enabled = self.webrender.get_profiler_enabled(); - self.webrender.set_profiler_enabled(!profiler_enabled); - return; - } - _ => {} - } - } - let msg = ConstellationMsg::KeyEvent(ch, key, state, modifiers); if let Err(e) = self.constellation_chan.send(msg) { warn!("Sending key event to constellation failed ({}).", e); diff --git a/components/compositing/windowing.rs b/components/compositing/windowing.rs index ac8d6a8ea21..94dfca5268e 100644 --- a/components/compositing/windowing.rs +++ b/components/compositing/windowing.rs @@ -76,6 +76,8 @@ pub enum WindowEvent { KeyEvent(Option, Key, KeyState, KeyModifiers), /// Sent when Ctr+R/Apple+R is called to reload the current page. Reload, + /// Toggles the Web renderer profiler on and off + ToggleWebRenderProfiler, } impl Debug for WindowEvent { @@ -98,6 +100,7 @@ impl Debug for WindowEvent { WindowEvent::Navigation(..) => write!(f, "Navigation"), WindowEvent::Quit => write!(f, "Quit"), WindowEvent::Reload => write!(f, "Reload"), + WindowEvent::ToggleWebRenderProfiler => write!(f, "ToggleWebRenderProfiler"), } } } diff --git a/ports/glutin/window.rs b/ports/glutin/window.rs index c82327b2335..1893fb2d47a 100644 --- a/ports/glutin/window.rs +++ b/ports/glutin/window.rs @@ -1290,6 +1290,9 @@ impl WindowMethods for Window { self.event_queue.borrow_mut().push(WindowEvent::Quit); } } + (CONTROL, None, Key::F12) => { + self.event_queue.borrow_mut().push(WindowEvent::ToggleWebRenderProfiler); + } _ => { self.platform_handle_key(key, mods); From 6309d516bde99b5f1fff5074e12ae64aaa0ff20b Mon Sep 17 00:00:00 2001 From: Tremoneck Date: Tue, 11 Jul 2017 09:51:58 +0200 Subject: [PATCH 2/2] Remove set_webrenderer_profiler_enabled in compositing/compositor.rs and servo/lib.rs and inlining this function in compositing/compositor.rs --- components/compositing/compositor.rs | 8 ++------ components/servo/lib.rs | 4 ---- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs index 32dea8e272e..666952d1240 100644 --- a/components/compositing/compositor.rs +++ b/components/compositing/compositor.rs @@ -828,7 +828,8 @@ impl IOCompositor { WindowEvent::ToggleWebRenderProfiler => { let profiler_enabled = self.webrender.get_profiler_enabled(); - self.set_webrender_profiler_enabled(!profiler_enabled); + self.webrender.set_profiler_enabled(!profiler_enabled); + self.webrender_api.generate_frame(None); } } } @@ -1632,11 +1633,6 @@ impl IOCompositor { self.shutdown_state != ShutdownState::FinishedShuttingDown } - pub fn set_webrender_profiler_enabled(&mut self, enabled: bool) { - self.webrender.set_profiler_enabled(enabled); - self.webrender_api.generate_frame(None); - } - /// Repaints and recomposites synchronously. You must be careful when calling this, as if a /// paint is not scheduled the compositor will hang forever. /// diff --git a/components/servo/lib.rs b/components/servo/lib.rs index 899ccec9986..f480e9157e9 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -244,10 +244,6 @@ impl Browser where Window: WindowMethods + 'static { self.compositor.handle_events(events) } - pub fn set_webrender_profiler_enabled(&mut self, enabled: bool) { - self.compositor.set_webrender_profiler_enabled(enabled); - } - pub fn repaint_synchronously(&mut self) { self.compositor.repaint_synchronously() }