Index: base/message_loop/message_loop.cc |
diff --git a/base/message_loop/message_loop.cc b/base/message_loop/message_loop.cc |
index 9e33a426eb9f1241be625c25aee1a1585898c6fc..a0ce91fa4b3b39bb34c4893261cd8eafb336d4aa 100644 |
--- a/base/message_loop/message_loop.cc |
+++ b/base/message_loop/message_loop.cc |
@@ -143,7 +143,8 @@ MessageLoop::MessageLoop(Type type) |
#if defined(OS_WIN) |
os_modal_loop_(false), |
#endif // OS_WIN |
- next_sequence_num_(0) { |
+ next_sequence_num_(0), |
+ always_notify_pump_(false) { |
DCHECK(!current()) << "should only have one message loop per thread"; |
lazy_tls_ptr.Pointer()->Set(this); |
@@ -186,6 +187,7 @@ MessageLoop::MessageLoop(Type type) |
DCHECK_EQ(TYPE_DEFAULT, type_); |
pump_ = new MessagePumpDefault(); |
} |
+ always_notify_pump_ = pump_->NeedsScheduleWorkPerTask(); |
awong
2013/07/03 19:09:22
Always_notify_pump_ seems to effectively be a plat
Kristian Monsen
2013/07/03 21:20:03
I had a CL doing this locally, was not sure which
|
} |
MessageLoop::~MessageLoop() { |
@@ -624,7 +626,9 @@ bool MessageLoop::AddToIncomingQueue(PendingTask* pending_task, |
bool was_empty = incoming_queue_.empty(); |
incoming_queue_.push(*pending_task); |
pending_task->task.Reset(); |
- if (!was_empty) |
+ // The Android UI message loop needs to get notified each time |
+ // a task is added to the incoming queue |
awong
2013/07/03 19:09:22
nit: Please end sentences with a period.
Kristian Monsen
2013/07/03 21:20:03
Done.
|
+ if (!was_empty && !always_notify_pump_) |
return true; // Someone else should have started the sub-pump. |
pump = pump_; |