aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas_traits/webgl_channel/mod.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2020-02-27 16:41:35 -0500
committerJosh Matthews <josh@joshmatthews.net>2020-03-09 17:50:54 -0400
commitfbcf2bbc3ef4ba0c37a6a8d77bfee96b08f3cccc (patch)
treeef5491416055e5f39910d6b84aa5cdeb0e410171 /components/canvas_traits/webgl_channel/mod.rs
parentb062f514953c326ad8d1753de715bbb24ee68625 (diff)
downloadservo-fbcf2bbc3ef4ba0c37a6a8d77bfee96b08f3cccc.tar.gz
servo-fbcf2bbc3ef4ba0c37a6a8d77bfee96b08f3cccc.zip
Integrate swapchain surface provider changes into webgl and webxr implementations.
Diffstat (limited to 'components/canvas_traits/webgl_channel/mod.rs')
-rw-r--r--components/canvas_traits/webgl_channel/mod.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/components/canvas_traits/webgl_channel/mod.rs b/components/canvas_traits/webgl_channel/mod.rs
index 45c76d54605..86a6cd23bf4 100644
--- a/components/canvas_traits/webgl_channel/mod.rs
+++ b/components/canvas_traits/webgl_channel/mod.rs
@@ -9,6 +9,7 @@ mod mpsc;
use crate::webgl::WebGLMsg;
use ipc_channel::ipc::IpcSender;
+use ipc_channel::router::ROUTER;
use serde::{Deserialize, Serialize};
use servo_config::opts;
use std::fmt;
@@ -78,6 +79,18 @@ where
WebGLReceiver::Mpsc(ref receiver) => receiver.try_recv().map_err(|_| ()),
}
}
+
+ pub fn into_inner(self) -> crossbeam_channel::Receiver<T>
+ where
+ T: Send + 'static,
+ {
+ match self {
+ WebGLReceiver::Ipc(receiver) => {
+ ROUTER.route_ipc_receiver_to_new_crossbeam_receiver(receiver)
+ },
+ WebGLReceiver::Mpsc(receiver) => receiver.into_inner(),
+ }
+ }
}
pub fn webgl_channel<T>() -> Result<(WebGLSender<T>, WebGLReceiver<T>), ()>