Auto merge of #9493 - Ms2ger:paint-thread-messages, r=jdm

Use the select macro on the paint thread.

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9493)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-02-03 10:16:46 +05:30
commit 2d4a5eb983

View file

@ -30,7 +30,7 @@ use std::borrow::ToOwned;
use std::collections::HashMap; use std::collections::HashMap;
use std::mem as std_mem; use std::mem as std_mem;
use std::sync::Arc; use std::sync::Arc;
use std::sync::mpsc::{Receiver, Select, Sender, channel}; use std::sync::mpsc::{Receiver, Sender, channel};
use url::Url; use url::Url;
use util::geometry::{ExpandToPixelBoundaries}; use util::geometry::{ExpandToPixelBoundaries};
use util::opts; use util::opts;
@ -301,20 +301,13 @@ impl<C> PaintThread<C> where C: PaintListener + Send + 'static {
loop { loop {
let message = { let message = {
let select = Select::new(); let layout_to_paint = &self.layout_to_paint_port;
let mut layout_to_paint_handle = select.handle(&self.layout_to_paint_port); let chrome_to_paint = &self.chrome_to_paint_port;
let mut chrome_to_paint_handle = select.handle(&self.chrome_to_paint_port); select! {
unsafe { msg = layout_to_paint.recv() =>
layout_to_paint_handle.add(); Msg::FromLayout(msg.unwrap()),
chrome_to_paint_handle.add(); msg = chrome_to_paint.recv() =>
} Msg::FromChrome(msg.unwrap())
let result = select.wait();
if result == layout_to_paint_handle.id() {
Msg::FromLayout(self.layout_to_paint_port.recv().unwrap())
} else if result == chrome_to_paint_handle.id() {
Msg::FromChrome(self.chrome_to_paint_port.recv().unwrap())
} else {
panic!("unexpected select result")
} }
}; };