about summary refs log tree commit diff
path: root/src/libstd/rt
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-08-04 21:55:52 -0700
committerBrian Anderson <banderson@mozilla.com>2013-08-04 21:56:48 -0700
commit167bdff04164c92c203c319b730bdc2344dbe089 (patch)
tree0b5c5de0ac1b00bf888d20c7268c241dca1d2ea9 /src/libstd/rt
parentd123df26ff1796f4712b10290a3b6647d754a6e3 (diff)
downloadrust-167bdff04164c92c203c319b730bdc2344dbe089.tar.gz
rust-167bdff04164c92c203c319b730bdc2344dbe089.zip
std::rt: Schedule more scheduler callbacks to avoid dropping messages
Diffstat (limited to 'src/libstd/rt')
-rw-r--r--src/libstd/rt/sched.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libstd/rt/sched.rs b/src/libstd/rt/sched.rs
index a5c8abc2a6c..1a75f2569b5 100644
--- a/src/libstd/rt/sched.rs
+++ b/src/libstd/rt/sched.rs
@@ -339,8 +339,8 @@ impl Scheduler {
         let mut this = self;
         match this.message_queue.pop() {
             Some(PinnedTask(task)) => {
-                let mut task = task;
                 this.event_loop.callback(Scheduler::run_sched_once);
+                let mut task = task;
                 task.give_home(Sched(this.make_handle()));
                 this.resume_task_immediately(task);
                 return None;
@@ -351,10 +351,12 @@ impl Scheduler {
                 return this.sched_schedule_task(task);
             }
             Some(Wake) => {
+                this.event_loop.callback(Scheduler::run_sched_once);
                 this.sleepy = false;
                 return Some(this);
             }
             Some(Shutdown) => {
+                this.event_loop.callback(Scheduler::run_sched_once);
                 if this.sleepy {
                     // There may be an outstanding handle on the
                     // sleeper list.  Pop them all to make sure that's