aboutsummaryrefslogtreecommitdiffstats
path: root/components/net/image_cache_thread.rs
diff options
context:
space:
mode:
authorMs2ger <Ms2ger@gmail.com>2016-03-07 14:13:31 +0100
committerMs2ger <Ms2ger@gmail.com>2016-03-07 14:13:33 +0100
commit9c4f2265d09bb4b56739f1f29f246ab0b84e00c6 (patch)
tree94f985ba4202b600b94c392e4d462078ea4ed533 /components/net/image_cache_thread.rs
parent6de127a343eed0124f2a5739e498869e5c717550 (diff)
downloadservo-9c4f2265d09bb4b56739f1f29f246ab0b84e00c6.tar.gz
servo-9c4f2265d09bb4b56739f1f29f246ab0b84e00c6.zip
Use the select! macro in ImageCacheThread.
Diffstat (limited to 'components/net/image_cache_thread.rs')
-rw-r--r--components/net/image_cache_thread.rs36
1 files changed, 15 insertions, 21 deletions
diff --git a/components/net/image_cache_thread.rs b/components/net/image_cache_thread.rs
index cda0f6bad00..e95284853bf 100644
--- a/components/net/image_cache_thread.rs
+++ b/components/net/image_cache_thread.rs
@@ -18,7 +18,7 @@ use std::fs::File;
use std::io::Read;
use std::mem;
use std::sync::Arc;
-use std::sync::mpsc::{Receiver, Select, Sender, channel};
+use std::sync::mpsc::{Receiver, Sender, channel};
use url::Url;
use util::resource_files::resources_dir_path;
use util::thread::spawn_named;
@@ -335,26 +335,20 @@ impl ImageCache {
loop {
let result = {
- let sel = Select::new();
-
- let mut cmd_handle = sel.handle(&self.cmd_receiver);
- let mut progress_handle = sel.handle(&self.progress_receiver);
- let mut decoder_handle = sel.handle(&self.decoder_receiver);
-
- unsafe {
- cmd_handle.add();
- progress_handle.add();
- decoder_handle.add();
- }
-
- let ret = sel.wait();
-
- if ret == cmd_handle.id() {
- SelectResult::Command(self.cmd_receiver.recv().unwrap())
- } else if ret == decoder_handle.id() {
- SelectResult::Decoder(self.decoder_receiver.recv().unwrap())
- } else {
- SelectResult::Progress(self.progress_receiver.recv().unwrap())
+ let cmd_receiver = &self.cmd_receiver;
+ let progress_receiver = &self.progress_receiver;
+ let decoder_receiver = &self.decoder_receiver;
+
+ select! {
+ msg = cmd_receiver.recv() => {
+ SelectResult::Command(msg.unwrap())
+ },
+ msg = decoder_receiver.recv() => {
+ SelectResult::Decoder(msg.unwrap())
+ },
+ msg = progress_receiver.recv() => {
+ SelectResult::Progress(msg.unwrap())
+ }
}
};