From 167bdff04164c92c203c319b730bdc2344dbe089 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Sun, 4 Aug 2013 21:55:52 -0700 Subject: [PATCH] std::rt: Schedule more scheduler callbacks to avoid dropping messages --- src/libstd/rt/sched.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libstd/rt/sched.rs b/src/libstd/rt/sched.rs index a5c8abc2a6c0..1a75f2569b59 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