mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
WebGLSender doesn't really implement Serializable
This commit is contained in:
parent
15be654868
commit
1b05ad4bb3
2 changed files with 38 additions and 2 deletions
|
@ -8,6 +8,7 @@ mod ipc;
|
|||
mod mpsc;
|
||||
|
||||
use crate::webgl::WebGLMsg;
|
||||
use ipc_channel::ipc::IpcSender;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use servo_config::opts;
|
||||
use std::fmt;
|
||||
|
@ -93,6 +94,26 @@ impl WebGLChan {
|
|||
pub fn send(&self, msg: WebGLMsg) -> WebGLSendResult {
|
||||
self.0.send(msg)
|
||||
}
|
||||
|
||||
pub fn to_ipc(&self) -> IpcSender<WebGLMsg> {
|
||||
match self.0 {
|
||||
WebGLSender::Ipc(ref sender) => sender.clone(),
|
||||
WebGLSender::Mpsc(ref mpsc_sender) => {
|
||||
let (sender, receiver) =
|
||||
ipc_channel::ipc::channel().expect("IPC Channel creation failed");
|
||||
let mpsc_sender = mpsc_sender.clone();
|
||||
ipc_channel::router::ROUTER.add_route(
|
||||
receiver.to_opaque(),
|
||||
Box::new(move |message| {
|
||||
if let Ok(message) = message.to() {
|
||||
let _ = mpsc_sender.send(message);
|
||||
}
|
||||
}),
|
||||
);
|
||||
sender
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue