mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Add key bindings for more WR debug / profiler options.
This commit is contained in:
parent
e23ae30489
commit
e1b1bc7c96
3 changed files with 30 additions and 8 deletions
|
@ -34,7 +34,7 @@ use touch::{TouchHandler, TouchAction};
|
||||||
use webrender;
|
use webrender;
|
||||||
use webrender_api::{self, ClipId, DeviceUintRect, DeviceUintSize, LayoutPoint, LayoutVector2D};
|
use webrender_api::{self, ClipId, DeviceUintRect, DeviceUintSize, LayoutPoint, LayoutVector2D};
|
||||||
use webrender_api::{ScrollEventPhase, ScrollLocation, ScrollClamping};
|
use webrender_api::{ScrollEventPhase, ScrollLocation, ScrollClamping};
|
||||||
use windowing::{self, MouseWindowEvent, WindowEvent, WindowMethods};
|
use windowing::{self, MouseWindowEvent, WebRenderDebugOption, WindowEvent, WindowMethods};
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
enum UnableToComposite {
|
enum UnableToComposite {
|
||||||
|
@ -813,9 +813,14 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WindowEvent::ToggleWebRenderProfiler => {
|
WindowEvent::ToggleWebRenderDebug(option) => {
|
||||||
let mut flags = self.webrender.get_debug_flags();
|
let mut flags = self.webrender.get_debug_flags();
|
||||||
flags.toggle(webrender::renderer::PROFILER_DBG);
|
let flag = match option {
|
||||||
|
WebRenderDebugOption::Profiler => webrender::renderer::PROFILER_DBG,
|
||||||
|
WebRenderDebugOption::TextureCacheDebug => webrender::renderer::TEXTURE_CACHE_DBG,
|
||||||
|
WebRenderDebugOption::RenderTargetDebug => webrender::renderer::RENDER_TARGET_DBG,
|
||||||
|
};
|
||||||
|
flags.toggle(flag);
|
||||||
self.webrender.set_debug_flags(flags);
|
self.webrender.set_debug_flags(flags);
|
||||||
self.webrender_api.generate_frame(self.webrender_document, None);
|
self.webrender_api.generate_frame(self.webrender_document, None);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,14 @@ pub enum MouseWindowEvent {
|
||||||
MouseUp(MouseButton, TypedPoint2D<f32, DevicePixel>),
|
MouseUp(MouseButton, TypedPoint2D<f32, DevicePixel>),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Various debug and profiling flags that WebRender supports.
|
||||||
|
#[derive(Clone)]
|
||||||
|
pub enum WebRenderDebugOption {
|
||||||
|
Profiler,
|
||||||
|
TextureCacheDebug,
|
||||||
|
RenderTargetDebug,
|
||||||
|
}
|
||||||
|
|
||||||
/// Events that the windowing system sends to Servo.
|
/// Events that the windowing system sends to Servo.
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub enum WindowEvent {
|
pub enum WindowEvent {
|
||||||
|
@ -68,14 +76,14 @@ pub enum WindowEvent {
|
||||||
/// Sent when a key input state changes
|
/// Sent when a key input state changes
|
||||||
KeyEvent(Option<char>, Key, KeyState, KeyModifiers),
|
KeyEvent(Option<char>, Key, KeyState, KeyModifiers),
|
||||||
/// Sent when Ctr+R/Apple+R is called to reload the current page.
|
/// Sent when Ctr+R/Apple+R is called to reload the current page.
|
||||||
/// Toggles the Web renderer profiler on and off
|
|
||||||
ToggleWebRenderProfiler,
|
|
||||||
Reload(TopLevelBrowsingContextId),
|
Reload(TopLevelBrowsingContextId),
|
||||||
/// Create a new top level browsing context
|
/// Create a new top level browsing context
|
||||||
NewBrowser(ServoUrl, IpcSender<TopLevelBrowsingContextId>),
|
NewBrowser(ServoUrl, IpcSender<TopLevelBrowsingContextId>),
|
||||||
/// Make a top level browsing context visible, hiding the previous
|
/// Make a top level browsing context visible, hiding the previous
|
||||||
/// visible one.
|
/// visible one.
|
||||||
SelectBrowser(TopLevelBrowsingContextId),
|
SelectBrowser(TopLevelBrowsingContextId),
|
||||||
|
/// Toggles a debug flag in WebRender
|
||||||
|
ToggleWebRenderDebug(WebRenderDebugOption),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Debug for WindowEvent {
|
impl Debug for WindowEvent {
|
||||||
|
@ -96,10 +104,10 @@ impl Debug for WindowEvent {
|
||||||
WindowEvent::ResetZoom => write!(f, "ResetZoom"),
|
WindowEvent::ResetZoom => write!(f, "ResetZoom"),
|
||||||
WindowEvent::Navigation(..) => write!(f, "Navigation"),
|
WindowEvent::Navigation(..) => write!(f, "Navigation"),
|
||||||
WindowEvent::Quit => write!(f, "Quit"),
|
WindowEvent::Quit => write!(f, "Quit"),
|
||||||
WindowEvent::ToggleWebRenderProfiler => write!(f, "ToggleWebRenderProfiler"),
|
|
||||||
WindowEvent::Reload(..) => write!(f, "Reload"),
|
WindowEvent::Reload(..) => write!(f, "Reload"),
|
||||||
WindowEvent::NewBrowser(..) => write!(f, "NewBrowser"),
|
WindowEvent::NewBrowser(..) => write!(f, "NewBrowser"),
|
||||||
WindowEvent::SelectBrowser(..) => write!(f, "SelectBrowser"),
|
WindowEvent::SelectBrowser(..) => write!(f, "SelectBrowser"),
|
||||||
|
WindowEvent::ToggleWebRenderDebug(..) => write!(f, "ToggleWebRenderDebug"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
use NestedEventLoopListener;
|
use NestedEventLoopListener;
|
||||||
use compositing::compositor_thread::EventLoopWaker;
|
use compositing::compositor_thread::EventLoopWaker;
|
||||||
use compositing::windowing::{AnimationState, MouseWindowEvent};
|
use compositing::windowing::{AnimationState, MouseWindowEvent};
|
||||||
use compositing::windowing::{WindowEvent, WindowMethods};
|
use compositing::windowing::{WebRenderDebugOption, WindowEvent, WindowMethods};
|
||||||
use euclid::{Point2D, Size2D, TypedPoint2D, TypedVector2D, ScaleFactor, TypedSize2D};
|
use euclid::{Point2D, Size2D, TypedPoint2D, TypedVector2D, ScaleFactor, TypedSize2D};
|
||||||
#[cfg(target_os = "windows")]
|
#[cfg(target_os = "windows")]
|
||||||
use gdi32;
|
use gdi32;
|
||||||
|
@ -1312,8 +1312,17 @@ impl WindowMethods for Window {
|
||||||
self.event_queue.borrow_mut().push(WindowEvent::Quit);
|
self.event_queue.borrow_mut().push(WindowEvent::Quit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
(CONTROL, None, Key::F10) => {
|
||||||
|
let event = WindowEvent::ToggleWebRenderDebug(WebRenderDebugOption::RenderTargetDebug);
|
||||||
|
self.event_queue.borrow_mut().push(event);
|
||||||
|
}
|
||||||
|
(CONTROL, None, Key::F11) => {
|
||||||
|
let event = WindowEvent::ToggleWebRenderDebug(WebRenderDebugOption::TextureCacheDebug);
|
||||||
|
self.event_queue.borrow_mut().push(event);
|
||||||
|
}
|
||||||
(CONTROL, None, Key::F12) => {
|
(CONTROL, None, Key::F12) => {
|
||||||
self.event_queue.borrow_mut().push(WindowEvent::ToggleWebRenderProfiler);
|
let event = WindowEvent::ToggleWebRenderDebug(WebRenderDebugOption::Profiler);
|
||||||
|
self.event_queue.borrow_mut().push(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
_ => {
|
_ => {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue