aboutsummaryrefslogtreecommitdiffstats
path: root/components/msg/constellation_msg.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/msg/constellation_msg.rs')
-rw-r--r--components/msg/constellation_msg.rs30
1 files changed, 29 insertions, 1 deletions
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),
+ }
+ }
+}