aboutsummaryrefslogtreecommitdiffstats
path: root/components/net_traits/lib.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2019-11-25 17:18:04 -0500
committerJosh Matthews <josh@joshmatthews.net>2019-11-27 20:47:53 -0500
commit564c16d75499ae45b3945f487e49587c6fd662c7 (patch)
treef650d6eb383e95133a19baec32016a5b122203a3 /components/net_traits/lib.rs
parenta922c497fade0250123b86d7535838c9a8d3b0af (diff)
downloadservo-564c16d75499ae45b3945f487e49587c6fd662c7.tar.gz
servo-564c16d75499ae45b3945f487e49587c6fd662c7.zip
Use non-IPC webrender API over explicit IPC channels.
Diffstat (limited to 'components/net_traits/lib.rs')
-rw-r--r--components/net_traits/lib.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/components/net_traits/lib.rs b/components/net_traits/lib.rs
index cdba4f2066d..a25a804ce01 100644
--- a/components/net_traits/lib.rs
+++ b/components/net_traits/lib.rs
@@ -33,6 +33,7 @@ use msg::constellation_msg::HistoryStateId;
use servo_url::ServoUrl;
use std::error::Error;
use time::precise_time_ns;
+use webrender_api::ImageKey;
pub mod blob_url_store;
pub mod filemanager_thread;
@@ -755,3 +756,32 @@ pub fn http_percent_encode(bytes: &[u8]) -> String {
percent_encoding::percent_encode(bytes, HTTP_VALUE).to_string()
}
+
+#[derive(Deserialize, Serialize)]
+pub enum WebrenderImageMsg {
+ UpdateResources(Vec<webrender_api::ResourceUpdate>),
+ GenerateImageKey(IpcSender<ImageKey>),
+}
+
+#[derive(Clone, Deserialize, Serialize)]
+pub struct WebrenderIpcSender(IpcSender<WebrenderImageMsg>);
+
+impl WebrenderIpcSender {
+ pub fn new(sender: IpcSender<WebrenderImageMsg>) -> Self {
+ Self(sender)
+ }
+
+ pub fn generate_image_key(&self) -> ImageKey {
+ let (sender, receiver) = ipc::channel().unwrap();
+ self.0
+ .send(WebrenderImageMsg::GenerateImageKey(sender))
+ .expect("error sending image key generation");
+ receiver.recv().expect("error receiving image key result")
+ }
+
+ pub fn update_resources(&self, updates: Vec<webrender_api::ResourceUpdate>) {
+ if let Err(e) = self.0.send(WebrenderImageMsg::UpdateResources(updates)) {
+ warn!("Error sending image update: {}", e);
+ }
+ }
+}