diff options
Diffstat (limited to 'components/msg')
-rw-r--r-- | components/msg/Cargo.toml | 3 | ||||
-rw-r--r-- | components/msg/constellation_msg.rs | 30 | ||||
-rw-r--r-- | components/msg/lib.rs | 1 |
3 files changed, 33 insertions, 1 deletions
diff --git a/components/msg/Cargo.toml b/components/msg/Cargo.toml index b96bdeb953a..05f84756a5f 100644 --- a/components/msg/Cargo.toml +++ b/components/msg/Cargo.toml @@ -20,6 +20,9 @@ git = "https://github.com/servo/ipc-channel" [dependencies.plugins] path = "../plugins" +[dependencies.webrender_traits] +git = "https://github.com/glennw/webrender_traits" + [dependencies] bitflags = "0.3" cssparser = {version = "0.5.3", features = ["heap_size", "serde-serialization"]} diff --git a/components/msg/constellation_msg.rs b/components/msg/constellation_msg.rs index adefb76010c..83f308b26fd 100644 --- a/components/msg/constellation_msg.rs +++ b/components/msg/constellation_msg.rs @@ -17,6 +17,7 @@ use std::fmt; use url::Url; use util::geometry::{PagePx, ViewportPx}; use webdriver_msg::{LoadStatus, WebDriverScriptCommand}; +use webrender_traits; #[derive(Deserialize, Serialize)] pub struct ConstellationChan<T: Deserialize + Serialize>(pub IpcSender<T>); @@ -207,7 +208,7 @@ pub enum WebDriverCommandMsg { TakeScreenshot(PipelineId, IpcSender<Option<Image>>), } -#[derive(Deserialize, Eq, PartialEq, Serialize, HeapSizeOf)] +#[derive(Clone, Copy, Deserialize, Eq, PartialEq, Serialize, HeapSizeOf)] pub enum PixelFormat { K8, // Luminance channel only KA8, // Luminance + alpha @@ -228,6 +229,8 @@ pub struct Image { pub format: PixelFormat, #[ignore_heap_size_of = "Defined in ipc-channel"] pub bytes: IpcSharedMemory, + #[ignore_heap_size_of = "Defined in webrender_traits"] + pub id: Option<webrender_traits::ImageKey>, } /// Similar to net::resource_thread::LoadData @@ -353,3 +356,28 @@ impl fmt::Display for PipelineId { #[derive(Clone, PartialEq, Eq, Copy, Hash, Debug, Deserialize, Serialize, HeapSizeOf)] pub struct SubpageId(pub u32); + +pub trait ConvertPipelineIdToWebRender { + fn to_webrender(&self) -> webrender_traits::PipelineId; +} + +pub trait ConvertPipelineIdFromWebRender { + fn from_webrender(&self) -> PipelineId; +} + +impl ConvertPipelineIdToWebRender for PipelineId { + fn to_webrender(&self) -> webrender_traits::PipelineId { + let PipelineNamespaceId(namespace_id) = self.namespace_id; + let PipelineIndex(index) = self.index; + webrender_traits::PipelineId(namespace_id, index) + } +} + +impl ConvertPipelineIdFromWebRender for webrender_traits::PipelineId { + fn from_webrender(&self) -> PipelineId { + PipelineId { + namespace_id: PipelineNamespaceId(self.0), + index: PipelineIndex(self.1), + } + } +} diff --git a/components/msg/lib.rs b/components/msg/lib.rs index febf188fd77..93a513ef742 100644 --- a/components/msg/lib.rs +++ b/components/msg/lib.rs @@ -16,6 +16,7 @@ extern crate rustc_serialize; extern crate serde; extern crate url; extern crate util; +extern crate webrender_traits; pub mod constellation_msg; pub mod webdriver_msg; |