diff options
author | Ms2ger <Ms2ger@gmail.com> | 2016-03-07 14:13:31 +0100 |
---|---|---|
committer | Ms2ger <Ms2ger@gmail.com> | 2016-03-07 14:13:33 +0100 |
commit | 9c4f2265d09bb4b56739f1f29f246ab0b84e00c6 (patch) | |
tree | 94f985ba4202b600b94c392e4d462078ea4ed533 /components/net/image_cache_thread.rs | |
parent | 6de127a343eed0124f2a5739e498869e5c717550 (diff) | |
download | servo-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.rs | 36 |
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()) + } } }; |