mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Convert all uses of UpdateResources api to use webrender transactions.
This commit is contained in:
parent
8842250033
commit
eb2f7f7f0a
15 changed files with 109 additions and 39 deletions
|
@ -81,7 +81,7 @@ use net_traits::request::{Destination, Referrer};
|
|||
use net_traits::{CoreResourceMsg, FetchChannels, FetchMetadata, FetchResponseListener, Metadata};
|
||||
use net_traits::{NetworkError, ResourceFetchTiming, ResourceTimingType};
|
||||
use script_layout_interface::HTMLMediaData;
|
||||
use script_traits::WebrenderIpcSender;
|
||||
use script_traits::{ImageUpdate, WebrenderIpcSender};
|
||||
use servo_config::pref;
|
||||
use servo_media::player::audio::AudioRenderer;
|
||||
use servo_media::player::video::{VideoFrame, VideoFrameRenderer};
|
||||
|
@ -95,9 +95,9 @@ use std::mem;
|
|||
use std::rc::Rc;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use time::{self, Duration, Timespec};
|
||||
use webrender_api::ImageKey;
|
||||
use webrender_api::{ExternalImageData, ExternalImageId, ExternalImageType, TextureTarget};
|
||||
use webrender_api::{ImageData, ImageDescriptor, ImageDescriptorFlags, ImageFormat};
|
||||
use webrender_api::{ImageKey, Transaction};
|
||||
|
||||
#[derive(PartialEq)]
|
||||
enum FrameStatus {
|
||||
|
@ -177,10 +177,10 @@ impl MediaFrameRenderer {
|
|||
|
||||
impl VideoFrameRenderer for MediaFrameRenderer {
|
||||
fn render(&mut self, frame: VideoFrame) {
|
||||
let mut txn = Transaction::new();
|
||||
let mut updates = vec![];
|
||||
|
||||
if let Some(old_image_key) = mem::replace(&mut self.very_old_frame, self.old_frame.take()) {
|
||||
txn.delete_image(old_image_key);
|
||||
updates.push(ImageUpdate::DeleteImage(old_image_key));
|
||||
}
|
||||
|
||||
let descriptor = ImageDescriptor::new(
|
||||
|
@ -195,12 +195,11 @@ impl VideoFrameRenderer for MediaFrameRenderer {
|
|||
if *width == frame.get_width() && *height == frame.get_height() =>
|
||||
{
|
||||
if !frame.is_gl_texture() {
|
||||
txn.update_image(
|
||||
updates.push(ImageUpdate::UpdateImage(
|
||||
*image_key,
|
||||
descriptor,
|
||||
ImageData::Raw(frame.get_data()),
|
||||
&webrender_api::DirtyRect::All,
|
||||
);
|
||||
));
|
||||
}
|
||||
|
||||
self.current_frame_holder
|
||||
|
@ -208,7 +207,7 @@ impl VideoFrameRenderer for MediaFrameRenderer {
|
|||
.set(frame);
|
||||
|
||||
if let Some(old_image_key) = self.old_frame.take() {
|
||||
txn.delete_image(old_image_key);
|
||||
updates.push(ImageUpdate::DeleteImage(old_image_key));
|
||||
}
|
||||
}
|
||||
Some((ref mut image_key, ref mut width, ref mut height)) => {
|
||||
|
@ -241,7 +240,7 @@ impl VideoFrameRenderer for MediaFrameRenderer {
|
|||
.get_or_insert_with(|| FrameHolder::new(frame.clone()))
|
||||
.set(frame);
|
||||
|
||||
txn.add_image(new_image_key, descriptor, image_data, None);
|
||||
updates.push(ImageUpdate::AddImage(new_image_key, descriptor, image_data));
|
||||
},
|
||||
None => {
|
||||
let image_key = self.api.generate_image_key();
|
||||
|
@ -265,10 +264,10 @@ impl VideoFrameRenderer for MediaFrameRenderer {
|
|||
|
||||
self.current_frame_holder = Some(FrameHolder::new(frame));
|
||||
|
||||
txn.add_image(image_key, descriptor, image_data, None);
|
||||
updates.push(ImageUpdate::AddImage(image_key, descriptor, image_data));
|
||||
},
|
||||
}
|
||||
self.api.update_resources(txn.resource_updates);
|
||||
self.api.update_images(updates);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue