diff options
Diffstat (limited to 'components/canvas_traits/webgl_channel/mpsc.rs')
-rw-r--r-- | components/canvas_traits/webgl_channel/mpsc.rs | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/components/canvas_traits/webgl_channel/mpsc.rs b/components/canvas_traits/webgl_channel/mpsc.rs index 0dd063967ea..40acb050861 100644 --- a/components/canvas_traits/webgl_channel/mpsc.rs +++ b/components/canvas_traits/webgl_channel/mpsc.rs @@ -4,7 +4,6 @@ use serde::{Deserialize, Serialize}; use serde::{Deserializer, Serializer}; -use std::sync::mpsc; #[macro_use] macro_rules! unreachable_serializable { @@ -26,8 +25,8 @@ macro_rules! unreachable_serializable { }; } -pub struct WebGLSender<T>(mpsc::Sender<T>); -pub struct WebGLReceiver<T>(mpsc::Receiver<T>); +pub struct WebGLSender<T>(crossbeam_channel::Sender<T>); +pub struct WebGLReceiver<T>(crossbeam_channel::Receiver<T>); impl<T> Clone for WebGLSender<T> { fn clone(&self) -> Self { @@ -37,24 +36,27 @@ impl<T> Clone for WebGLSender<T> { impl<T> WebGLSender<T> { #[inline] - pub fn send(&self, data: T) -> Result<(), mpsc::SendError<T>> { + pub fn send(&self, data: T) -> Result<(), crossbeam_channel::SendError<T>> { self.0.send(data) } } impl<T> WebGLReceiver<T> { #[inline] - pub fn recv(&self) -> Result<T, mpsc::RecvError> { + pub fn recv(&self) -> Result<T, crossbeam_channel::RecvError> { self.0.recv() } #[inline] - pub fn try_recv(&self) -> Result<T, mpsc::TryRecvError> { + pub fn try_recv(&self) -> Result<T, crossbeam_channel::TryRecvError> { self.0.try_recv() } + pub fn into_inner(self) -> crossbeam_channel::Receiver<T> { + self.0 + } } pub fn webgl_channel<T>() -> Result<(WebGLSender<T>, WebGLReceiver<T>), ()> { - let (sender, receiver) = mpsc::channel(); + let (sender, receiver) = crossbeam_channel::unbounded(); Ok((WebGLSender(sender), WebGLReceiver(receiver))) } |