Auto merge of #9240 - coder543:Refactoring, r=ecoal95

Refactor WebGLPaintTask to prevent creating extra IPC channels #9228

Closes #9228

I think this code will actually do what is desired now. I had to rebase off of master since WebGLPaintTask was renamed to WebGLPaintThread in a commit since last night.

I'm sorry this has been so much trouble so far. I'm still learning how things are done around here. I didn't even think about trailing whitespace, but now I know about the test-tidy tool.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9240)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-01-12 17:33:32 +05:30
commit 6b1e73c1c0

View file

@ -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,11 @@ impl WebGLPaintThread {
}
});
result_port.recv().unwrap().map(|_| (out_of_process_chan, in_process_chan))
result_port.recv().unwrap().map(|_| {
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());
(out_of_process_chan, in_process_chan)
})
}
#[inline]