aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Leverette <coder543@gmail.com>2016-01-10 13:26:15 -0600
committerJosh Leverette <coder543@gmail.com>2016-01-10 13:26:15 -0600
commitbc1850240f3590404281f53f41e0fb640527aacb (patch)
treed4cc727928f627668cf6377c3121a0d9d5b46689
parentd3889b4be43eb4d637f2d1ac5d021603653601eb (diff)
downloadservo-bc1850240f3590404281f53f41e0fb640527aacb.tar.gz
servo-bc1850240f3590404281f53f41e0fb640527aacb.zip
Refactor WebGLPaintTask to prevent creating extra IPC channels #9228
-rw-r--r--components/canvas/webgl_paint_thread.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/components/canvas/webgl_paint_thread.rs b/components/canvas/webgl_paint_thread.rs
index 7558bc765cc..7e353dc3c4b 100644
--- a/components/canvas/webgl_paint_thread.rs
+++ b/components/canvas/webgl_paint_thread.rs
@@ -187,10 +187,8 @@ impl WebGLPaintThread {
/// sender for it.
pub fn start(size: Size2D<i32>, attrs: GLContextAttributes)
-> Result<(IpcSender<CanvasMsg>, Sender<CanvasMsg>), &'static str> {
- let (out_of_process_chan, out_of_process_port) = ipc::channel::<CanvasMsg>().unwrap();
let (in_process_chan, in_process_port) = channel();
let (result_chan, result_port) = channel();
- ROUTER.route_ipc_receiver_to_mpsc_sender(out_of_process_port, in_process_chan.clone());
spawn_named("WebGLThread".to_owned(), move || {
let mut painter = match WebGLPaintThread::new(size, attrs) {
Ok(thread) => {
@@ -230,7 +228,15 @@ impl WebGLPaintThread {
}
});
- result_port.recv().unwrap().map(|_| (out_of_process_chan, in_process_chan))
+ match result_port.recv() {
+ Ok(_) => {
+ 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());
+
+ Ok((out_of_process_chan, in_process_chan))
+ },
+ Err(_) => Err("Could not create WebGLPaintThread.")
+ }
}
#[inline]