mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Stop returning in-process senders from {CanvasPaintThread, WebGLPaintThread}::start.
This commit is contained in:
parent
fb1b0d1a09
commit
22447055b9
3 changed files with 10 additions and 15 deletions
|
@ -125,12 +125,12 @@ impl<'a> CanvasPaintThread<'a> {
|
||||||
/// sender for it.
|
/// sender for it.
|
||||||
pub fn start(size: Size2D<i32>,
|
pub fn start(size: Size2D<i32>,
|
||||||
webrender_api_sender: Option<webrender_traits::RenderApiSender>)
|
webrender_api_sender: Option<webrender_traits::RenderApiSender>)
|
||||||
-> (IpcSender<CanvasMsg>, Sender<CanvasMsg>) {
|
-> IpcSender<CanvasMsg> {
|
||||||
// TODO(pcwalton): Ask the pipeline to create this for us instead of spawning it directly.
|
// TODO(pcwalton): Ask the pipeline to create this for us instead of spawning it directly.
|
||||||
// This will be needed for multiprocess Servo.
|
// This will be needed for multiprocess Servo.
|
||||||
let (out_of_process_chan, out_of_process_port) = ipc::channel::<CanvasMsg>().unwrap();
|
let (out_of_process_chan, out_of_process_port) = ipc::channel::<CanvasMsg>().unwrap();
|
||||||
let (in_process_chan, in_process_port) = channel();
|
let (in_process_chan, in_process_port) = channel();
|
||||||
ROUTER.route_ipc_receiver_to_mpsc_sender(out_of_process_port, in_process_chan.clone());
|
ROUTER.route_ipc_receiver_to_mpsc_sender(out_of_process_port, in_process_chan);
|
||||||
spawn_named("CanvasThread".to_owned(), move || {
|
spawn_named("CanvasThread".to_owned(), move || {
|
||||||
let mut painter = CanvasPaintThread::new(size, webrender_api_sender);
|
let mut painter = CanvasPaintThread::new(size, webrender_api_sender);
|
||||||
loop {
|
loop {
|
||||||
|
@ -217,7 +217,7 @@ impl<'a> CanvasPaintThread<'a> {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
(out_of_process_chan, in_process_chan)
|
out_of_process_chan
|
||||||
}
|
}
|
||||||
|
|
||||||
fn save_context_state(&mut self) {
|
fn save_context_state(&mut self) {
|
||||||
|
|
|
@ -62,7 +62,7 @@ impl WebGLPaintThread {
|
||||||
pub fn start(size: Size2D<i32>,
|
pub fn start(size: Size2D<i32>,
|
||||||
attrs: GLContextAttributes,
|
attrs: GLContextAttributes,
|
||||||
webrender_api_sender: Option<webrender_traits::RenderApiSender>)
|
webrender_api_sender: Option<webrender_traits::RenderApiSender>)
|
||||||
-> Result<(IpcSender<CanvasMsg>, Sender<CanvasMsg>), String> {
|
-> Result<IpcSender<CanvasMsg>, String> {
|
||||||
let (in_process_chan, in_process_port) = channel();
|
let (in_process_chan, in_process_port) = channel();
|
||||||
let (result_chan, result_port) = channel();
|
let (result_chan, result_port) = channel();
|
||||||
spawn_named("WebGLThread".to_owned(), move || {
|
spawn_named("WebGLThread".to_owned(), move || {
|
||||||
|
@ -106,8 +106,8 @@ impl WebGLPaintThread {
|
||||||
|
|
||||||
result_port.recv().unwrap().map(|_| {
|
result_port.recv().unwrap().map(|_| {
|
||||||
let (out_of_process_chan, out_of_process_port) = ipc::channel::<CanvasMsg>().unwrap();
|
let (out_of_process_chan, out_of_process_port) = ipc::channel::<CanvasMsg>().unwrap();
|
||||||
ROUTER.route_ipc_receiver_to_mpsc_sender(out_of_process_port, in_process_chan.clone());
|
ROUTER.route_ipc_receiver_to_mpsc_sender(out_of_process_port, in_process_chan);
|
||||||
(out_of_process_chan, in_process_chan)
|
out_of_process_chan
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1200,8 +1200,8 @@ impl<LTF: LayoutThreadFactory, STF: ScriptThreadFactory> Constellation<LTF, STF>
|
||||||
size: &Size2D<i32>,
|
size: &Size2D<i32>,
|
||||||
response_sender: IpcSender<IpcSender<CanvasMsg>>) {
|
response_sender: IpcSender<IpcSender<CanvasMsg>>) {
|
||||||
let webrender_api = self.webrender_api_sender.clone();
|
let webrender_api = self.webrender_api_sender.clone();
|
||||||
let (out_of_process_sender, _) = CanvasPaintThread::start(*size, webrender_api);
|
let sender = CanvasPaintThread::start(*size, webrender_api);
|
||||||
response_sender.send(out_of_process_sender).unwrap()
|
response_sender.send(sender).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_create_webgl_paint_thread_msg(
|
fn handle_create_webgl_paint_thread_msg(
|
||||||
|
@ -1210,14 +1210,9 @@ impl<LTF: LayoutThreadFactory, STF: ScriptThreadFactory> Constellation<LTF, STF>
|
||||||
attributes: GLContextAttributes,
|
attributes: GLContextAttributes,
|
||||||
response_sender: IpcSender<Result<IpcSender<CanvasMsg>, String>>) {
|
response_sender: IpcSender<Result<IpcSender<CanvasMsg>, String>>) {
|
||||||
let webrender_api = self.webrender_api_sender.clone();
|
let webrender_api = self.webrender_api_sender.clone();
|
||||||
let response = match WebGLPaintThread::start(*size, attributes, webrender_api) {
|
let sender = WebGLPaintThread::start(*size, attributes, webrender_api);
|
||||||
Ok((out_of_process_sender, _)) => {
|
|
||||||
Ok(out_of_process_sender)
|
|
||||||
},
|
|
||||||
Err(msg) => Err(msg),
|
|
||||||
};
|
|
||||||
|
|
||||||
response_sender.send(response).unwrap()
|
response_sender.send(sender).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_webdriver_msg(&mut self, msg: WebDriverCommandMsg) {
|
fn handle_webdriver_msg(&mut self, msg: WebDriverCommandMsg) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue