Bug 1419440 - Update for API changes in WR PR 2050. r?kats
MozReview-Commit-ID: 4TFZB8XpY6l
--- a/gfx/webrender_bindings/Cargo.toml
+++ b/gfx/webrender_bindings/Cargo.toml
@@ -1,16 +1,15 @@
[package]
name = "webrender_bindings"
version = "0.1.0"
authors = ["The Mozilla Project Developers"]
license = "MPL-2.0"
[dependencies]
-webrender_api = {path = "../webrender_api", version = "0.54.0"}
rayon = "0.8"
thread_profiler = "0.1.1"
euclid = "0.15"
app_units = "0.5.6"
gleam = "0.4.14"
log = "0.3"
[dependencies.webrender]
--- a/gfx/webrender_bindings/src/bindings.rs
+++ b/gfx/webrender_bindings/src/bindings.rs
@@ -1,17 +1,17 @@
use std::ffi::{CStr, CString};
use std::{mem, slice};
use std::path::PathBuf;
use std::ptr;
use std::sync::Arc;
use std::os::raw::{c_void, c_char, c_float};
use gleam::gl;
-use webrender_api::*;
+use webrender::api::*;
use webrender::{ReadPixelsFormat, Renderer, RendererOptions, ThreadListener};
use webrender::{ExternalImage, ExternalImageHandler, ExternalImageSource};
use webrender::DebugFlags;
use webrender::{ApiRecordingReceiver, BinaryRecorder};
use thread_profiler::register_thread_with_profiler;
use moz2d_renderer::Moz2dImageRenderer;
use app_units::Au;
use rayon;
@@ -21,18 +21,16 @@ use log::{set_logger, shutdown_logger, L
#[cfg(target_os = "windows")]
use dwrote::{FontDescriptor, FontWeight, FontStretch, FontStyle};
#[cfg(target_os = "macos")]
use core_foundation::string::CFString;
#[cfg(target_os = "macos")]
use core_graphics::font::CGFont;
-extern crate webrender_api;
-
/// cbindgen:field-names=[mNamespace, mHandle]
type WrExternalImageBufferType = ExternalImageType;
/// cbindgen:field-names=[mHandle]
/// cbindgen:derive-lt=true
/// cbindgen:derive-lte=true
type WrEpoch = Epoch;
/// cbindgen:field-names=[mHandle]
@@ -73,17 +71,18 @@ fn make_slice_mut<'a, T>(ptr: *mut T, le
pub struct DocumentHandle {
api: RenderApi,
document_id: DocumentId,
}
impl DocumentHandle {
pub fn new(api: RenderApi, size: DeviceUintSize) -> DocumentHandle {
- let doc = api.add_document(size);
+ let layer = 0; //TODO
+ let doc = api.add_document(size, layer);
DocumentHandle {
api: api,
document_id: doc
}
}
}
#[repr(C)]
@@ -441,33 +440,39 @@ unsafe impl Send for CppNotifier {}
extern "C" {
fn wr_notifier_new_frame_ready(window_id: WrWindowId);
fn wr_notifier_new_scroll_frame_ready(window_id: WrWindowId,
composite_needed: bool);
fn wr_notifier_external_event(window_id: WrWindowId,
raw_event: usize);
}
-impl webrender_api::RenderNotifier for CppNotifier {
- fn clone(&self) -> Box<webrender_api::RenderNotifier> {
+impl RenderNotifier for CppNotifier {
+ fn clone(&self) -> Box<RenderNotifier> {
Box::new(CppNotifier {
window_id: self.window_id,
})
}
- fn new_frame_ready(&self) {
+ fn wake_up(&self) {
unsafe {
wr_notifier_new_frame_ready(self.window_id);
}
}
- fn new_scroll_frame_ready(&self,
- composite_needed: bool) {
+ fn new_document_ready(&self,
+ _: DocumentId,
+ scrolled: bool,
+ composite_needed: bool) {
unsafe {
- wr_notifier_new_scroll_frame_ready(self.window_id, composite_needed);
+ if scrolled {
+ wr_notifier_new_scroll_frame_ready(self.window_id, composite_needed);
+ } else {
+ wr_notifier_new_frame_ready(self.window_id);
+ }
}
}
fn external_event(&self,
event: ExternalEvent) {
unsafe {
wr_notifier_external_event(self.window_id, event.unwrap());
}
@@ -1161,33 +1166,33 @@ pub unsafe extern "C" fn wr_api_get_name
// As part of that I am moving the bindings closer to WebRender's API boundary,
// and moving more of the logic in C++ land.
// This work is tracked by bug 1328602.
//
// See RenderThread.h for some notes about how the pieces fit together.
pub struct WebRenderFrameBuilder {
pub root_pipeline_id: WrPipelineId,
- pub dl_builder: webrender_api::DisplayListBuilder,
+ pub dl_builder: DisplayListBuilder,
}
impl WebRenderFrameBuilder {
pub fn new(root_pipeline_id: WrPipelineId,
content_size: LayoutSize) -> WebRenderFrameBuilder {
WebRenderFrameBuilder {
root_pipeline_id: root_pipeline_id,
- dl_builder: webrender_api::DisplayListBuilder::new(root_pipeline_id, content_size),
+ dl_builder: DisplayListBuilder::new(root_pipeline_id, content_size),
}
}
pub fn with_capacity(root_pipeline_id: WrPipelineId,
content_size: LayoutSize,
capacity: usize) -> WebRenderFrameBuilder {
WebRenderFrameBuilder {
root_pipeline_id: root_pipeline_id,
- dl_builder: webrender_api::DisplayListBuilder::with_capacity(root_pipeline_id, content_size, capacity),
+ dl_builder: DisplayListBuilder::with_capacity(root_pipeline_id, content_size, capacity),
}
}
}
pub struct WrState {
pipeline_id: WrPipelineId,
frame_builder: WebRenderFrameBuilder,
@@ -1295,17 +1300,17 @@ pub extern "C" fn wr_dp_push_stacking_co
let mut prim_info = LayoutPrimitiveInfo::new(bounds);
prim_info.is_backface_visible = is_backface_visible;
prim_info.tag = state.current_tag;
state.frame_builder
.dl_builder
.push_stacking_context(&prim_info,
- webrender_api::ScrollPolicy::Scrollable,
+ ScrollPolicy::Scrollable,
transform_binding,
transform_style,
perspective,
mix_blend_mode,
filters);
}
#[no_mangle]
--- a/gfx/webrender_bindings/src/lib.rs
+++ b/gfx/webrender_bindings/src/lib.rs
@@ -1,16 +1,15 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#![deny(warnings)]
extern crate webrender;
-extern crate webrender_api;
extern crate euclid;
extern crate app_units;
extern crate gleam;
extern crate rayon;
extern crate thread_profiler;
extern crate log;
#[cfg(target_os = "windows")]
--- a/gfx/webrender_bindings/src/moz2d_renderer.rs
+++ b/gfx/webrender_bindings/src/moz2d_renderer.rs
@@ -1,10 +1,10 @@
#![allow(improper_ctypes)] // this is needed so that rustc doesn't complain about passing the &Arc<Vec> to an extern function
-use webrender_api::*;
+use webrender::api::*;
use bindings::{ByteSlice, MutByteSlice, wr_moz2d_render_cb, ArcVecU8};
use rayon::ThreadPool;
use std::collections::hash_map::{HashMap, Entry};
use std::mem;
use std::os::raw::c_void;
use std::ptr;
use std::sync::mpsc::{channel, Sender, Receiver};
--- a/toolkit/library/gtest/rust/Cargo.lock
+++ b/toolkit/library/gtest/rust/Cargo.lock
@@ -1544,17 +1544,16 @@ dependencies = [
"dwrote 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)",
"foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gleam 0.4.14 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
"thread_profiler 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"webrender 0.54.0",
- "webrender_api 0.54.0",
]
[[package]]
name = "which"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
--- a/toolkit/library/rust/Cargo.lock
+++ b/toolkit/library/rust/Cargo.lock
@@ -1556,17 +1556,16 @@ dependencies = [
"dwrote 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.15.5 (registry+https://github.com/rust-lang/crates.io-index)",
"foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gleam 0.4.14 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
"thread_profiler 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"webrender 0.54.0",
- "webrender_api 0.54.0",
]
[[package]]
name = "which"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",