Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update WR (transaction API change) #20892

Merged
merged 7 commits into from Jun 26, 2018

Some generated files are not rendered by default. Learn more.

@@ -416,8 +416,7 @@ impl<'a> CanvasData<'a> {
let size = self.drawtarget.get_size();

let descriptor = webrender_api::ImageDescriptor {
width: size.width as u32,
height: size.height as u32,
size: webrender_api::DeviceUintSize::new(size.width as u32, size.height as u32),
stride: None,
format: webrender_api::ImageFormat::BGRA8,
offset: 0,
@@ -426,31 +425,25 @@ impl<'a> CanvasData<'a> {
};
let data = webrender_api::ImageData::Raw(Arc::new(element.into()));

let mut updates = webrender_api::ResourceUpdates::new();
let mut txn = webrender_api::Transaction::new();

match self.image_key {
Some(image_key) => {
debug!("Updating image {:?}.", image_key);
updates.update_image(image_key,
descriptor,
data,
None);
txn.update_image(image_key, descriptor, data, None);
}
None => {
self.image_key = Some(self.webrender_api.generate_image_key());
debug!("New image {:?}.", self.image_key);
updates.add_image(self.image_key.unwrap(),
descriptor,
data,
None);
txn.add_image(self.image_key.unwrap(), descriptor, data, None);
}
}

if let Some(image_key) = mem::replace(&mut self.very_old_image_key, self.old_image_key.take()) {
updates.delete_image(image_key);
txn.delete_image(image_key);
}

self.webrender_api.update_resources(updates);
self.webrender_api.update_resources(txn.resource_updates);

let data = CanvasImageData {
image_key: self.image_key.unwrap(),
@@ -647,16 +640,16 @@ impl<'a> CanvasData<'a> {

impl<'a> Drop for CanvasData<'a> {
fn drop(&mut self) {
let mut updates = webrender_api::ResourceUpdates::new();
let mut txn = webrender_api::Transaction::new();

if let Some(image_key) = self.old_image_key.take() {
updates.delete_image(image_key);
txn.delete_image(image_key);
}
if let Some(image_key) = self.very_old_image_key.take() {
updates.delete_image(image_key);
txn.delete_image(image_key);
}

self.webrender_api.update_resources(updates);
self.webrender_api.update_resources(txn.resource_updates);
}
}

@@ -268,13 +268,13 @@ impl<VR: WebVRRenderHandler + 'static, OB: WebGLThreadObserver> WebGLThread<VR,
fn remove_webgl_context(&mut self, context_id: WebGLContextId) {
// Release webrender image keys.
if let Some(info) = self.cached_context_info.remove(&context_id) {
let mut updates = webrender_api::ResourceUpdates::new();
let mut txn = webrender_api::Transaction::new();

if let Some(image_key) = info.image_key {
updates.delete_image(image_key);
txn.delete_image(image_key);
}

self.webrender_api.update_resources(updates)
self.webrender_api.update_resources(txn.resource_updates)
}

// Release GL context.
@@ -423,12 +423,9 @@ impl<VR: WebVRRenderHandler + 'static, OB: WebGLThreadObserver> WebGLThread<VR,
let data = Self::external_image_data(context_id);

let image_key = webrender_api.generate_image_key();
let mut updates = webrender_api::ResourceUpdates::new();
updates.add_image(image_key,
descriptor,
data,
None);
webrender_api.update_resources(updates);
let mut txn = webrender_api::Transaction::new();
txn.add_image(image_key, descriptor, data, None);
webrender_api.update_resources(txn.resource_updates);

image_key
}
@@ -442,12 +439,9 @@ impl<VR: WebVRRenderHandler + 'static, OB: WebGLThreadObserver> WebGLThread<VR,
let descriptor = Self::image_descriptor(size, alpha);
let data = Self::external_image_data(context_id);

let mut updates = webrender_api::ResourceUpdates::new();
updates.update_image(image_key,
descriptor,
data,
None);
webrender_api.update_resources(updates);
let mut txn = webrender_api::Transaction::new();
txn.update_image(image_key, descriptor, data, None);
webrender_api.update_resources(txn.resource_updates);
}

/// Creates a `webrender_api::ImageKey` that uses raw pixels.
@@ -459,12 +453,9 @@ impl<VR: WebVRRenderHandler + 'static, OB: WebGLThreadObserver> WebGLThread<VR,
let data = webrender_api::ImageData::new(data);

let image_key = webrender_api.generate_image_key();
let mut updates = webrender_api::ResourceUpdates::new();
updates.add_image(image_key,
descriptor,
data,
None);
webrender_api.update_resources(updates);
let mut txn = webrender_api::Transaction::new();
txn.add_image(image_key, descriptor, data, None);
webrender_api.update_resources(txn.resource_updates);

image_key
}
@@ -478,19 +469,15 @@ impl<VR: WebVRRenderHandler + 'static, OB: WebGLThreadObserver> WebGLThread<VR,
let descriptor = Self::image_descriptor(size, alpha);
let data = webrender_api::ImageData::new(data);

let mut updates = webrender_api::ResourceUpdates::new();
updates.update_image(image_key,
descriptor,
data,
None);
webrender_api.update_resources(updates);
let mut txn = webrender_api::Transaction::new();
txn.update_image(image_key, descriptor, data, None);
webrender_api.update_resources(txn.resource_updates);
}

/// Helper function to create a `webrender_api::ImageDescriptor`.
fn image_descriptor(size: Size2D<i32>, alpha: bool) -> webrender_api::ImageDescriptor {
webrender_api::ImageDescriptor {
width: size.width as u32,
height: size.height as u32,
size: webrender_api::DeviceUintSize::new(size.width as u32, size.height as u32),
stride: None,
format: webrender_api::ImageFormat::BGRA8,
offset: 0,
@@ -177,14 +177,14 @@ impl FontCache {
.entry((font_key, size))
.or_insert_with(|| {
let key = webrender_api.generate_font_instance_key();
let mut updates = webrender_api::ResourceUpdates::new();
updates.add_font_instance(key,
let mut txn = webrender_api::Transaction::new();
txn.add_font_instance(key,
font_key,
size,
None,
None,
Vec::new());
webrender_api.update_resources(updates);
webrender_api.update_resources(txn.resource_updates);
key
});

@@ -373,13 +373,13 @@ impl FontCache {

let font_key = *webrender_fonts.entry(template.identifier.clone()).or_insert_with(|| {
let font_key = webrender_api.generate_font_key();
let mut updates = webrender_api::ResourceUpdates::new();
let mut txn = webrender_api::Transaction::new();
match (template.bytes_if_in_memory(), template.native_font()) {
(Some(bytes), _) => updates.add_raw_font(font_key, bytes, 0),
(None, Some(native_font)) => updates.add_native_font(font_key, native_font),
(None, None) => updates.add_raw_font(font_key, template.bytes().clone(), 0),
(Some(bytes), _) => txn.add_raw_font(font_key, bytes, 0),
(None, Some(native_font)) => txn.add_native_font(font_key, native_font),
(None, None) => txn.add_raw_font(font_key, template.bytes().clone(), 0),
}
webrender_api.update_resources(updates);
webrender_api.update_resources(txn.resource_updates);
font_key
});

ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.