From cd17b6ca666b22248f3ce44d2c071dc6c84a2499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez=20Moreno?= Date: Mon, 1 Jul 2019 16:48:18 +0200 Subject: [PATCH] Fix typos, warnings and other nits --- components/media/lib.rs | 4 +- components/media/media_thread.rs | 6 +- components/script/dom/bindings/trace.rs | 2 + components/script/dom/htmlmediaelement.rs | 68 ++++++++--------------- components/script/dom/window.rs | 2 +- components/script/script_thread.rs | 4 +- ports/glutin/context.rs | 2 + 7 files changed, 35 insertions(+), 53 deletions(-) diff --git a/components/media/lib.rs b/components/media/lib.rs index 0f937125e7a..fa07399af86 100644 --- a/components/media/lib.rs +++ b/components/media/lib.rs @@ -35,8 +35,8 @@ pub enum GLPlayerMsgForward { /// GLPlayer thread Message API /// -/// These are the message that the thread will receive from the -/// constellation, the webrender::ExternalImageHandle multiplexor +/// These are the messages that the thread will receive from the +/// constellation, the webrender::ExternalImageHandle demultiplexor /// implementation, or a htmlmediaelement #[derive(Debug, Deserialize, Serialize)] pub enum GLPlayerMsg { diff --git a/components/media/media_thread.rs b/components/media/media_thread.rs index 2d6e85573eb..9dc3bf625f1 100644 --- a/components/media/media_thread.rs +++ b/components/media/media_thread.rs @@ -11,10 +11,10 @@ use std::sync::{Arc, Mutex}; use std::thread; use webrender_traits::{WebrenderExternalImageRegistry, WebrenderImageHandlerType}; -/// A GLPlayerThrx1ead manages the life cycle and message multiplexign of +/// A GLPlayerThread manages the life cycle and message demultiplexing of /// a set of video players with GL render. pub struct GLPlayerThread { - // Map of live players. + /// Map of live players. players: FnvHashMap>, /// List of registered webrender external images. /// We use it to get an unique ID for new players. @@ -50,7 +50,7 @@ impl GLPlayerThread { sender } - /// Handles a generic WebGLMsg message + /// Handles a generic GLPlayerMsg message #[inline] fn handle_msg(&mut self, msg: GLPlayerMsg) -> bool { trace!("processing {:?}", msg); diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index 7d5d0b0b093..d9e0cf893b6 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -73,6 +73,7 @@ use js::jsval::JSVal; use js::rust::{GCMethods, Handle, Runtime}; use js::typedarray::TypedArray; use js::typedarray::TypedArrayElement; +use media::WindowGLContext; use metrics::{InteractiveMetrics, InteractiveWindow}; use mime::Mime; use msg::constellation_msg::{ @@ -507,6 +508,7 @@ unsafe_no_jsmanaged_fields!(Rotation3D, Transform2D, Transform3D) unsafe_no_jsmanaged_fields!(Point2D, Vector2D, Rect); unsafe_no_jsmanaged_fields!(Rect, RigidTransform3D); unsafe_no_jsmanaged_fields!(CascadeData); +unsafe_no_jsmanaged_fields!(WindowGLContext); unsafe impl<'a> JSTraceable for &'a str { #[inline] diff --git a/components/script/dom/htmlmediaelement.rs b/components/script/dom/htmlmediaelement.rs index 6b1191d6373..1d7dfebd832 100644 --- a/components/script/dom/htmlmediaelement.rs +++ b/components/script/dom/htmlmediaelement.rs @@ -133,7 +133,7 @@ impl FrameHolder { } pub struct MediaFrameRenderer { - id: u64, + player_id: Option, api: RenderApi, current_frame: Option<(ImageKey, i32, i32)>, old_frame: Option, @@ -144,7 +144,7 @@ pub struct MediaFrameRenderer { impl MediaFrameRenderer { fn new(render_api_sender: RenderApiSender) -> Self { Self { - id: 0, + player_id: None, api: render_api_sender.create_api(), current_frame: None, old_frame: None, @@ -187,7 +187,7 @@ impl FrameRenderer for MediaFrameRenderer { ImageData::Raw(frame.get_data()), &webrender_api::DirtyRect::All, ); - } else if self.id != 0 { + } else if self.player_id.is_some() { self.current_frame_holder .get_or_insert_with(|| FrameHolder::new(frame.clone())) .set(frame); @@ -207,55 +207,35 @@ impl FrameRenderer for MediaFrameRenderer { *width = frame.get_width(); *height = frame.get_height(); - if !frame.is_gl_texture() { - txn.add_image( - new_image_key, - descriptor, - ImageData::Raw(frame.get_data()), - None, - ); - } else if self.id != 0 { - txn.add_image( - new_image_key, - descriptor, - ImageData::External(ExternalImageData { - id: ExternalImageId(self.id), - channel_index: 0, - image_type: ExternalImageType::TextureHandle(TextureTarget::Default), - }), - None, - ); - + let image_data = if let Some(player_id) = self.player_id { self.current_frame_holder .get_or_insert_with(|| FrameHolder::new(frame.clone())) .set(frame); - } + ImageData::External(ExternalImageData { + id: ExternalImageId(player_id), + channel_index: 0, + image_type: ExternalImageType::TextureHandle(TextureTarget::Default), + }) + } else { + ImageData::Raw(frame.get_data()) + }; + txn.add_image(new_image_key, descriptor, image_data, None); }, None => { let image_key = self.api.generate_image_key(); self.current_frame = Some((image_key, frame.get_width(), frame.get_height())); - if !frame.is_gl_texture() { - txn.add_image( - image_key, - descriptor, - ImageData::Raw(frame.get_data()), - None, - ); - } else if self.id != 0 { - txn.add_image( - image_key, - descriptor, - ImageData::External(ExternalImageData { - id: ExternalImageId(self.id), - channel_index: 0, - image_type: ExternalImageType::TextureHandle(TextureTarget::Default), - }), - None, - ); - + let image_data = if let Some(player_id) = self.player_id { self.current_frame_holder = Some(FrameHolder::new(frame)); - } + ImageData::External(ExternalImageData { + id: ExternalImageId(player_id), + channel_index: 0, + image_type: ExternalImageType::TextureHandle(TextureTarget::Default), + }) + } else { + ImageData::Raw(frame.get_data()) + }; + txn.add_image(image_key, descriptor, image_data, None); }, } self.api.update_resources(txn.resource_updates); @@ -1371,7 +1351,7 @@ impl HTMLMediaElement { .unwrap_or((0, None)); self.id.set(player_id); - self.frame_renderer.lock().unwrap().id = player_id; + self.frame_renderer.lock().unwrap().player_id = Some(player_id); if let Some(image_receiver) = image_receiver { let trusted_node = Trusted::new(self); diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index c5866bc5e6b..8ca1e324511 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -319,7 +319,7 @@ pub struct Window { /// Replace unpaired surrogates in DOM strings with U+FFFD. /// See replace_surrogates: bool, - + /// Window's GL context from application #[ignore_malloc_size_of = "defined in script_thread"] player_context: WindowGLContext, diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index fc9498a8ebb..e6d91a1bc2e 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -513,8 +513,6 @@ unsafe_no_jsmanaged_fields!(TaskQueue); unsafe_no_jsmanaged_fields!(dyn BackgroundHangMonitorRegister); unsafe_no_jsmanaged_fields!(dyn BackgroundHangMonitor); -unsafe_no_jsmanaged_fields!(WindowGLContext); - #[derive(JSTraceable)] // ScriptThread instances are rooted on creation, so this is okay #[allow(unrooted_must_root)] @@ -681,7 +679,7 @@ pub struct ScriptThread { /// An optional string allowing the user agent to be set for testing. user_agent: Cow<'static, str>, - + /// Application window's GL Context for Media player player_context: WindowGLContext, } diff --git a/ports/glutin/context.rs b/ports/glutin/context.rs index 5e62c2b3e92..39749f82b90 100644 --- a/ports/glutin/context.rs +++ b/ports/glutin/context.rs @@ -74,6 +74,7 @@ impl GlContext { GlContext::None => unreachable!(), }; } + #[allow(unreachable_code, unused_variables)] pub fn raw_context(&self) -> RawContext { match self { GlContext::Current(c) => { @@ -135,6 +136,7 @@ impl GlContext { } } + #[allow(dead_code)] pub fn egl_display(&self) -> Option<*const raw::c_void> { match self { GlContext::Current(c) => unsafe { c.get_egl_display() },