aboutsummaryrefslogtreecommitdiffstats
path: root/components/canvas_traits/webgl_channel/mod.rs
diff options
context:
space:
mode:
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>), ()>