aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlmediaelement.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2020-04-28 10:43:01 -0400
committerJosh Matthews <josh@joshmatthews.net>2020-05-11 17:41:56 -0400
commiteb2f7f7f0acd7c71a370fa2122b1af4e0142a658 (patch)
treec83f8e441b41148ace075dde2edaf0211c848ab4 /components/script/dom/htmlmediaelement.rs
parent884225003358b3a4cdacc802e4b429e44f28d16f (diff)
downloadservo-eb2f7f7f0acd7c71a370fa2122b1af4e0142a658.tar.gz
servo-eb2f7f7f0acd7c71a370fa2122b1af4e0142a658.zip
Convert all uses of UpdateResources api to use webrender transactions.
Diffstat (limited to 'components/script/dom/htmlmediaelement.rs')
-rw-r--r--components/script/dom/htmlmediaelement.rs21
1 files changed, 10 insertions, 11 deletions
diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs
index a1a1d3204fb..0bcf2f45d0f 100644
--- a/components/script/dom/htmlmediaelement.rs
+++ b/components/script/dom/htmlmediaelement.rs
@@ -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);
}
}