diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2017-08-16 09:45:13 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-16 09:45:13 -0500 |
commit | 4d10d39e8fe841c5fe2ac58da2daaa13c10c140e (patch) | |
tree | f77d68b734a6327898cc8c01505b0723bf45ed4a /components/canvas_traits/webgl_channel | |
parent | ee94e2b7c0bd327abe8f9545b2a1f792f67a2bdd (diff) | |
parent | cfe22e3979b7270833a4b450b25fb2157deb1da2 (diff) | |
download | servo-4d10d39e8fe841c5fe2ac58da2daaa13c10c140e.tar.gz servo-4d10d39e8fe841c5fe2ac58da2daaa13c10c140e.zip |
Auto merge of #18114 - emilio:revert-webgl-refactor, r=nox
Revert "Auto merge of #17891 - MortimerGoro:webgl_move, r=glennw,emilio"
This reverts commit 90f55ea4580e2a15f7d70d0491444f18b972d450, reversing
changes made to 2e60b27a2186a8cba4b952960155dfcf3f47d7db.
Doing that per Josh's request, since it's causing very frequent intermittent OOMs on the android builders.
<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18114)
<!-- Reviewable:end -->
Diffstat (limited to 'components/canvas_traits/webgl_channel')
-rw-r--r-- | components/canvas_traits/webgl_channel/ipc.rs | 15 | ||||
-rw-r--r-- | components/canvas_traits/webgl_channel/mod.rs | 87 | ||||
-rw-r--r-- | components/canvas_traits/webgl_channel/mpsc.rs | 51 |
3 files changed, 0 insertions, 153 deletions
diff --git a/components/canvas_traits/webgl_channel/ipc.rs b/components/canvas_traits/webgl_channel/ipc.rs deleted file mode 100644 index ac3020bbc7a..00000000000 --- a/components/canvas_traits/webgl_channel/ipc.rs +++ /dev/null @@ -1,15 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -use ipc_channel; -use serde::{Deserialize, Serialize}; -use std::io; - -pub type WebGLSender<T> = ipc_channel::ipc::IpcSender<T>; -pub type WebGLReceiver<T> = ipc_channel::ipc::IpcReceiver<T>; - -pub fn webgl_channel<T: Serialize + for<'de> Deserialize<'de>>() - -> Result<(WebGLSender<T>, WebGLReceiver<T>), io::Error> { - ipc_channel::ipc::channel() -} diff --git a/components/canvas_traits/webgl_channel/mod.rs b/components/canvas_traits/webgl_channel/mod.rs deleted file mode 100644 index 1ac4ce15cb1..00000000000 --- a/components/canvas_traits/webgl_channel/mod.rs +++ /dev/null @@ -1,87 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -//! Enum wrappers to be able to select different channel implementations at runtime. - -mod ipc; -mod mpsc; - -use ::webgl::WebGLMsg; -use serde::{Deserialize, Serialize}; -use servo_config::opts; - -lazy_static! { - static ref IS_MULTIPROCESS: bool = { - opts::multiprocess() - }; -} - -#[derive(Clone, Deserialize, Serialize)] -pub enum WebGLSender<T: Serialize> { - Ipc(ipc::WebGLSender<T>), - Mpsc(mpsc::WebGLSender<T>), -} - -impl<T: Serialize> WebGLSender<T> { - #[inline] - pub fn send(&self, msg: T) -> WebGLSendResult { - match *self { - WebGLSender::Ipc(ref sender) => { - sender.send(msg).map_err(|_| ()) - }, - WebGLSender::Mpsc(ref sender) => { - sender.send(msg).map_err(|_| ()) - } - } - } -} - -pub type WebGLSendResult = Result<(), ()>; - -pub enum WebGLReceiver<T> where T: for<'de> Deserialize<'de> + Serialize { - Ipc(ipc::WebGLReceiver<T>), - Mpsc(mpsc::WebGLReceiver<T>), -} - -impl<T> WebGLReceiver<T> where T: for<'de> Deserialize<'de> + Serialize { - pub fn recv(&self) -> Result<T, ()> { - match *self { - WebGLReceiver::Ipc(ref receiver) => { - receiver.recv().map_err(|_| ()) - }, - WebGLReceiver::Mpsc(ref receiver) => { - receiver.recv().map_err(|_| ()) - } - } - } -} - -pub fn webgl_channel<T>() -> Result<(WebGLSender<T>, WebGLReceiver<T>), ()> - where T: for<'de> Deserialize<'de> + Serialize { - if *IS_MULTIPROCESS { - ipc::webgl_channel().map(|(tx, rx)| (WebGLSender::Ipc(tx), WebGLReceiver::Ipc(rx))) - .map_err(|_| ()) - } else { - mpsc::webgl_channel().map(|(tx, rx)| (WebGLSender::Mpsc(tx), WebGLReceiver::Mpsc(rx))) - } -} - -#[derive(Clone, Deserialize, Serialize)] -pub struct WebGLChan(pub WebGLSender<WebGLMsg>); - -impl WebGLChan { - #[inline] - pub fn send(&self, msg: WebGLMsg) -> WebGLSendResult { - self.0.send(msg) - } -} - -#[derive(Clone, Deserialize, Serialize)] -pub struct WebGLPipeline(pub WebGLChan); - -impl WebGLPipeline { - pub fn channel(&self) -> WebGLChan { - self.0.clone() - } -} diff --git a/components/canvas_traits/webgl_channel/mpsc.rs b/components/canvas_traits/webgl_channel/mpsc.rs deleted file mode 100644 index b0fe29241f3..00000000000 --- a/components/canvas_traits/webgl_channel/mpsc.rs +++ /dev/null @@ -1,51 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -use serde::{Deserialize, Serialize}; -use serde::{Deserializer, Serializer}; -use std::sync::mpsc; - -#[macro_use] -macro_rules! unreachable_serializable { - ($name:ident) => { - impl<T> Serialize for $name<T> { - fn serialize<S: Serializer>(&self, _: S) -> Result<S::Ok, S::Error> { - unreachable!(); - } - } - - impl<'a, T> Deserialize<'a> for $name<T> { - fn deserialize<D>(_: D) -> Result<$name<T>, D::Error> - where D: Deserializer<'a> { - unreachable!(); - } - } - }; -} - -#[derive(Clone)] -pub struct WebGLSender<T>(mpsc::Sender<T>); -pub struct WebGLReceiver<T>(mpsc::Receiver<T>); - -impl<T> WebGLSender<T> { - #[inline] - pub fn send(&self, data: T) -> Result<(), mpsc::SendError<T>> { - self.0.send(data) - } -} - -impl<T> WebGLReceiver<T> { - #[inline] - pub fn recv(&self) -> Result<T, mpsc::RecvError> { - self.0.recv() - } -} - -pub fn webgl_channel<T>() -> Result<(WebGLSender<T>, WebGLReceiver<T>), ()> { - let (sender, receiver) = mpsc::channel(); - Ok((WebGLSender(sender), WebGLReceiver(receiver))) -} - -unreachable_serializable!(WebGLReceiver); -unreachable_serializable!(WebGLSender); |