aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/window.rs
diff options
context:
space:
mode:
authorBastien Orivel <eijebong@bananium.fr>2018-11-07 19:48:07 +0100
committerBastien Orivel <eijebong@bananium.fr>2018-11-18 19:33:19 +0100
commit9a7eeb349a8aa657e063665ac92387ab8ef3ce28 (patch)
tree63c5aa1ba7cd7fdb1bf14bcc9cbb6e6c0e24431b /components/script/dom/window.rs
parent76195e0779469f29a5e27cd882e2bbe8b2c9d6dd (diff)
downloadservo-9a7eeb349a8aa657e063665ac92387ab8ef3ce28.tar.gz
servo-9a7eeb349a8aa657e063665ac92387ab8ef3ce28.zip
Update crossbeam-channel to 0.3
Diffstat (limited to 'components/script/dom/window.rs')
-rw-r--r--components/script/dom/window.rs23
1 files changed, 11 insertions, 12 deletions
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 51c379145c2..a8a9ce1d960 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -68,6 +68,7 @@ use crate::task_manager::TaskManager;
use crate::task_source::TaskSourceName;
use crate::timers::{IsInterval, TimerCallback};
use crate::webdriver_handlers::jsval_to_webdriver;
+use crossbeam_channel::{unbounded, Sender, TryRecvError};
use cssparser::{Parser, ParserInput};
use devtools_traits::{ScriptToDevtoolsControlMsg, TimelineMarker, TimelineMarkerType};
use dom_struct::dom_struct;
@@ -104,7 +105,6 @@ use script_traits::{ConstellationControlMsg, DocumentState, LoadData};
use script_traits::{ScriptMsg, ScriptToConstellationChan, ScrollState, TimerEvent, TimerEventId};
use script_traits::{TimerSchedulerMsg, UntrustedNodeAddress, WindowSizeData, WindowSizeType};
use selectors::attr::CaseSensitivity;
-use servo_channel::{channel, Sender};
use servo_config::opts;
use servo_geometry::{f32_rect_to_au_rect, MaxRect};
use servo_url::{Host, ImmutableOrigin, MutableOrigin, ServoUrl};
@@ -348,7 +348,7 @@ impl Window {
}
pub fn new_script_pair(&self) -> (Box<dyn ScriptChan + Send>, Box<dyn ScriptPort + Send>) {
- let (tx, rx) = channel();
+ let (tx, rx) = unbounded();
(Box::new(SendableMainThreadScriptChan(tx)), Box::new(rx))
}
@@ -1394,7 +1394,7 @@ impl Window {
};
// Layout will let us know when it's done.
- let (join_chan, join_port) = channel();
+ let (join_chan, join_port) = unbounded();
// On debug mode, print the reflow event information.
if opts::get().relayout_event {
@@ -1427,16 +1427,15 @@ impl Window {
debug!("script: layout forked");
- let complete = select! {
- recv(join_port.select(), msg) => if let Some(reflow_complete) = msg {
- reflow_complete
- } else {
- panic!("Layout thread failed while script was waiting for a result.");
- },
- default => {
+ let complete = match join_port.try_recv() {
+ Err(TryRecvError::Empty) => {
info!("script: waiting on layout");
join_port.recv().unwrap()
- }
+ },
+ Ok(reflow_complete) => reflow_complete,
+ Err(TryRecvError::Disconnected) => {
+ panic!("Layout thread failed while script was waiting for a result.");
+ },
};
debug!("script: layout joined");
@@ -2033,7 +2032,7 @@ impl Window {
webrender_api_sender: RenderApiSender,
) -> DomRoot<Self> {
let layout_rpc: Box<dyn LayoutRPC + Send> = {
- let (rpc_send, rpc_recv) = channel();
+ let (rpc_send, rpc_recv) = unbounded();
layout_chan.send(Msg::GetRPC(rpc_send)).unwrap();
rpc_recv.recv().unwrap()
};