mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
feat(windowevent): expose CaptureWebRender event
This commit is contained in:
parent
b943a711f5
commit
7b0beedf3d
4 changed files with 21 additions and 1 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -22,6 +22,7 @@
|
|||
Servo.app
|
||||
.config.mk.last
|
||||
/glfw
|
||||
capture_webrender/
|
||||
|
||||
# Editors
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ use script_traits::CompositorEvent::{MouseMoveEvent, MouseButtonEvent, TouchEven
|
|||
use servo_config::opts;
|
||||
use servo_geometry::DeviceIndependentPixel;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::fs::File;
|
||||
use std::rc::Rc;
|
||||
use std::sync::mpsc::Sender;
|
||||
|
@ -30,7 +31,7 @@ use std::time::{Duration, Instant};
|
|||
use style_traits::{CSSPixel, DevicePixel, PinchZoomFactor};
|
||||
use style_traits::cursor::CursorKind;
|
||||
use style_traits::viewport::ViewportConstraints;
|
||||
use time::{precise_time_ns, precise_time_s};
|
||||
use time::{now, precise_time_ns, precise_time_s};
|
||||
use touch::{TouchHandler, TouchAction};
|
||||
use webrender;
|
||||
use webrender_api::{self, DeviceUintRect, DeviceUintSize, HitTestFlags, HitTestResult};
|
||||
|
@ -1530,6 +1531,17 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
txn.generate_frame();
|
||||
self.webrender_api.send_transaction(self.webrender_document, txn);
|
||||
}
|
||||
|
||||
pub fn capture_webrender(&mut self) {
|
||||
match env::current_dir() {
|
||||
Ok(current_dir) => {
|
||||
let capture_id = now().to_timespec().sec.to_string();
|
||||
let capture_path = current_dir.join("capture_webrender").join(capture_id);
|
||||
self.webrender_api.save_capture(capture_path, webrender_api::CaptureBits::all());
|
||||
},
|
||||
Err(err) => println!("could not locate path to save captures: {:?}", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Why we performed a composite. This is used for debugging.
|
||||
|
|
|
@ -84,6 +84,8 @@ pub enum WindowEvent {
|
|||
SelectBrowser(TopLevelBrowsingContextId),
|
||||
/// Toggles a debug flag in WebRender
|
||||
ToggleWebRenderDebug(WebRenderDebugOption),
|
||||
/// Capture current WebRender
|
||||
CaptureWebRender,
|
||||
}
|
||||
|
||||
impl Debug for WindowEvent {
|
||||
|
@ -108,6 +110,7 @@ impl Debug for WindowEvent {
|
|||
WindowEvent::CloseBrowser(..) => write!(f, "CloseBrowser"),
|
||||
WindowEvent::SelectBrowser(..) => write!(f, "SelectBrowser"),
|
||||
WindowEvent::ToggleWebRenderDebug(..) => write!(f, "ToggleWebRenderDebug"),
|
||||
WindowEvent::CaptureWebRender => write!(f, "CaptureWebRender"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -333,6 +333,10 @@ impl<Window> Servo<Window> where Window: WindowMethods + 'static {
|
|||
self.compositor.toggle_webrender_debug(option);
|
||||
}
|
||||
|
||||
WindowEvent::CaptureWebRender => {
|
||||
self.compositor.capture_webrender();
|
||||
}
|
||||
|
||||
WindowEvent::NewBrowser(url, response_chan) => {
|
||||
let msg = ConstellationMsg::NewBrowser(url, response_chan);
|
||||
if let Err(e) = self.constellation_chan.send(msg) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue