mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
Upgrade to the latest version of WebRender
This commit is contained in:
parent
4b6e79337e
commit
e58e8ab42e
88 changed files with 554 additions and 521 deletions
|
@ -26,4 +26,4 @@ servo_url = {path = "../url"}
|
|||
style_traits = {path = "../style_traits"}
|
||||
time = "0.1.17"
|
||||
webrender = {git = "https://github.com/servo/webrender"}
|
||||
webrender_traits = {git = "https://github.com/servo/webrender", features = ["ipc"]}
|
||||
webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]}
|
||||
|
|
|
@ -34,7 +34,7 @@ use style_traits::viewport::ViewportConstraints;
|
|||
use time::{precise_time_ns, precise_time_s};
|
||||
use touch::{TouchHandler, TouchAction};
|
||||
use webrender;
|
||||
use webrender_traits::{self, ClipId, LayoutPoint, LayoutVector2D, ScrollEventPhase, ScrollLocation, ScrollClamping};
|
||||
use webrender_api::{self, ClipId, LayoutPoint, LayoutVector2D, ScrollEventPhase, ScrollLocation, ScrollClamping};
|
||||
use windowing::{self, MouseWindowEvent, WindowEvent, WindowMethods, WindowNavigateMsg};
|
||||
|
||||
#[derive(Debug, PartialEq)]
|
||||
|
@ -58,7 +58,7 @@ trait ConvertPipelineIdFromWebRender {
|
|||
fn from_webrender(&self) -> PipelineId;
|
||||
}
|
||||
|
||||
impl ConvertPipelineIdFromWebRender for webrender_traits::PipelineId {
|
||||
impl ConvertPipelineIdFromWebRender for webrender_api::PipelineId {
|
||||
fn from_webrender(&self) -> PipelineId {
|
||||
PipelineId {
|
||||
namespace_id: PipelineNamespaceId(self.0),
|
||||
|
@ -180,7 +180,7 @@ pub struct IOCompositor<Window: WindowMethods> {
|
|||
webrender: webrender::Renderer,
|
||||
|
||||
/// The webrender interface, if enabled.
|
||||
webrender_api: webrender_traits::RenderApi,
|
||||
webrender_api: webrender_api::RenderApi,
|
||||
|
||||
/// GL functions interface (may be GL or GLES)
|
||||
gl: Rc<gl::Gl>,
|
||||
|
@ -315,7 +315,7 @@ impl RenderNotifier {
|
|||
}
|
||||
}
|
||||
|
||||
impl webrender_traits::RenderNotifier for RenderNotifier {
|
||||
impl webrender_api::RenderNotifier for RenderNotifier {
|
||||
fn new_frame_ready(&mut self) {
|
||||
self.compositor_proxy.recomposite(CompositingReason::NewWebRenderFrame);
|
||||
}
|
||||
|
@ -330,7 +330,7 @@ struct CompositorThreadDispatcher {
|
|||
compositor_proxy: CompositorProxy
|
||||
}
|
||||
|
||||
impl webrender_traits::RenderDispatcher for CompositorThreadDispatcher {
|
||||
impl webrender_api::RenderDispatcher for CompositorThreadDispatcher {
|
||||
fn dispatch(&self, f: Box<Fn() + Send>) {
|
||||
self.compositor_proxy.send(Msg::Dispatch(f));
|
||||
}
|
||||
|
@ -704,12 +704,12 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
let dppx = self.page_zoom * self.hidpi_factor();
|
||||
|
||||
let window_rect = {
|
||||
let offset = webrender_traits::DeviceUintPoint::new(self.window_rect.origin.x, self.window_rect.origin.y);
|
||||
let size = webrender_traits::DeviceUintSize::new(self.window_rect.size.width, self.window_rect.size.height);
|
||||
webrender_traits::DeviceUintRect::new(offset, size)
|
||||
let offset = webrender_api::DeviceUintPoint::new(self.window_rect.origin.x, self.window_rect.origin.y);
|
||||
let size = webrender_api::DeviceUintSize::new(self.window_rect.size.width, self.window_rect.size.height);
|
||||
webrender_api::DeviceUintRect::new(offset, size)
|
||||
};
|
||||
|
||||
let frame_size = webrender_traits::DeviceUintSize::new(self.frame_size.width, self.frame_size.height);
|
||||
let frame_size = webrender_api::DeviceUintSize::new(self.frame_size.width, self.frame_size.height);
|
||||
self.webrender_api.set_window_parameters(frame_size, window_rect);
|
||||
|
||||
let initial_viewport = self.window_rect.size.to_f32() / dppx;
|
||||
|
@ -988,7 +988,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
let cursor = TypedPoint2D::new(-1, -1); // Make sure this hits the base layer.
|
||||
self.pending_scroll_zoom_events.push(ScrollZoomEvent {
|
||||
magnification: magnification,
|
||||
scroll_location: ScrollLocation::Delta(webrender_traits::LayoutVector2D::from_untyped(
|
||||
scroll_location: ScrollLocation::Delta(webrender_api::LayoutVector2D::from_untyped(
|
||||
&scroll_delta.to_untyped())),
|
||||
cursor: cursor,
|
||||
phase: ScrollEventPhase::Move(true),
|
||||
|
@ -1128,8 +1128,8 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
|
||||
let cursor =
|
||||
(combined_event.cursor.to_f32() / self.scale).to_untyped();
|
||||
let location = webrender_traits::ScrollLocation::Delta(delta);
|
||||
let cursor = webrender_traits::WorldPoint::from_untyped(&cursor);
|
||||
let location = webrender_api::ScrollLocation::Delta(delta);
|
||||
let cursor = webrender_api::WorldPoint::from_untyped(&cursor);
|
||||
self.webrender_api.scroll(location, cursor, combined_event.phase);
|
||||
last_combined_event = None
|
||||
}
|
||||
|
@ -1139,7 +1139,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
(last_combined_event @ &mut None, _) => {
|
||||
*last_combined_event = Some(ScrollZoomEvent {
|
||||
magnification: scroll_event.magnification,
|
||||
scroll_location: ScrollLocation::Delta(webrender_traits::LayoutVector2D::from_untyped(
|
||||
scroll_location: ScrollLocation::Delta(webrender_api::LayoutVector2D::from_untyped(
|
||||
&this_delta.to_untyped())),
|
||||
cursor: this_cursor,
|
||||
phase: scroll_event.phase,
|
||||
|
@ -1178,14 +1178,14 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
ScrollLocation::Delta(delta) => {
|
||||
let scaled_delta = (TypedVector2D::from_untyped(&delta.to_untyped()) / self.scale)
|
||||
.to_untyped();
|
||||
let calculated_delta = webrender_traits::LayoutVector2D::from_untyped(&scaled_delta);
|
||||
let calculated_delta = webrender_api::LayoutVector2D::from_untyped(&scaled_delta);
|
||||
ScrollLocation::Delta(calculated_delta)
|
||||
},
|
||||
// Leave ScrollLocation unchanged if it is Start or End location.
|
||||
sl @ ScrollLocation::Start | sl @ ScrollLocation::End => sl,
|
||||
};
|
||||
let cursor = (combined_event.cursor.to_f32() / self.scale).to_untyped();
|
||||
let cursor = webrender_traits::WorldPoint::from_untyped(&cursor);
|
||||
let cursor = webrender_api::WorldPoint::from_untyped(&cursor);
|
||||
self.webrender_api.scroll(scroll_location, cursor, combined_event.phase);
|
||||
self.waiting_for_results_of_scroll = true
|
||||
}
|
||||
|
@ -1283,7 +1283,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
}
|
||||
|
||||
fn update_page_zoom_for_webrender(&mut self) {
|
||||
let page_zoom = webrender_traits::ZoomFactor::new(self.page_zoom.get());
|
||||
let page_zoom = webrender_api::ZoomFactor::new(self.page_zoom.get());
|
||||
self.webrender_api.set_page_zoom(page_zoom);
|
||||
}
|
||||
|
||||
|
@ -1381,8 +1381,8 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
let mut pipeline_epochs = HashMap::new();
|
||||
for (id, _) in &self.pipeline_details {
|
||||
let webrender_pipeline_id = id.to_webrender();
|
||||
if let Some(webrender_traits::Epoch(epoch)) = self.webrender
|
||||
.current_epoch(webrender_pipeline_id) {
|
||||
if let Some(webrender_api::Epoch(epoch)) = self.webrender
|
||||
.current_epoch(webrender_pipeline_id) {
|
||||
let epoch = Epoch(epoch);
|
||||
pipeline_epochs.insert(*id, epoch);
|
||||
}
|
||||
|
@ -1475,7 +1475,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
|
|||
debug!("compositor: compositing");
|
||||
|
||||
// Paint the scene.
|
||||
let size = webrender_traits::DeviceUintSize::from_untyped(&self.frame_size.to_untyped());
|
||||
let size = webrender_api::DeviceUintSize::from_untyped(&self.frame_size.to_untyped());
|
||||
self.webrender.render(size);
|
||||
});
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ use std::sync::mpsc::{Receiver, Sender};
|
|||
use style_traits::cursor::Cursor;
|
||||
use style_traits::viewport::ViewportConstraints;
|
||||
use webrender;
|
||||
use webrender_traits;
|
||||
use webrender_api;
|
||||
|
||||
|
||||
/// Used to wake up the event loop, provided by the servo port/embedder.
|
||||
|
@ -85,7 +85,7 @@ pub enum Msg {
|
|||
ShutdownComplete,
|
||||
|
||||
/// Scroll a page in a window
|
||||
ScrollFragmentPoint(webrender_traits::ClipId, Point2D<f32>, bool),
|
||||
ScrollFragmentPoint(webrender_api::ClipId, Point2D<f32>, bool),
|
||||
/// Alerts the compositor that the current page has changed its title.
|
||||
ChangePageTitle(PipelineId, Option<String>),
|
||||
/// Alerts the compositor that the given pipeline has changed whether it is running animations.
|
||||
|
@ -194,5 +194,5 @@ pub struct InitialCompositorState {
|
|||
pub mem_profiler_chan: mem::ProfilerChan,
|
||||
/// Instance of webrender API
|
||||
pub webrender: webrender::Renderer,
|
||||
pub webrender_api_sender: webrender_traits::RenderApiSender,
|
||||
pub webrender_api_sender: webrender_api::RenderApiSender,
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ extern crate servo_url;
|
|||
extern crate style_traits;
|
||||
extern crate time;
|
||||
extern crate webrender;
|
||||
extern crate webrender_traits;
|
||||
extern crate webrender_api;
|
||||
|
||||
pub use compositor_thread::CompositorProxy;
|
||||
pub use compositor::IOCompositor;
|
||||
|
|
|
@ -16,7 +16,7 @@ use servo_url::ServoUrl;
|
|||
use std::fmt::{Debug, Error, Formatter};
|
||||
use std::rc::Rc;
|
||||
use style_traits::cursor::Cursor;
|
||||
use webrender_traits::ScrollLocation;
|
||||
use webrender_api::ScrollLocation;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub enum MouseWindowEvent {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue