diff options
| author | Brian Anderson <banderson@mozilla.com> | 2013-08-04 21:55:52 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2013-08-04 21:56:48 -0700 |
| commit | 167bdff04164c92c203c319b730bdc2344dbe089 (patch) | |
| tree | 0b5c5de0ac1b00bf888d20c7268c241dca1d2ea9 /src/libstd/rt | |
| parent | d123df26ff1796f4712b10290a3b6647d754a6e3 (diff) | |
| download | rust-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.rs | 4 |
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 |
