Chromium Code Reviews| 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..b68a76bcba8a6d0d797350a726364d1fce865385 100644 |
| --- a/base/message_loop/message_loop.cc |
| +++ b/base/message_loop/message_loop.cc |
| @@ -97,6 +97,14 @@ uint64 GetTaskTraceID(const PendingTask& task, MessageLoop* loop) { |
| static_cast<uint64>(reinterpret_cast<intptr_t>(loop)); |
| } |
| +bool AlwaysNotifyPump(MessageLoop::Type type) { |
|
brettw
2013/07/10 18:27:03
Can you add a comment for this function? Like what
Kristian Monsen
2013/07/11 23:29:42
Done.
|
| +#if defined(OS_ANDROID) |
| + return type == MessageLoop::TYPE_UI; |
| +#else |
| + return false; |
| +#endif |
| +} |
| + |
| } // namespace |
| //------------------------------------------------------------------------------ |
| @@ -624,7 +632,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. |
| + if (!was_empty && !AlwaysNotifyPump(type_)) |
| return true; // Someone else should have started the sub-pump. |
| pump = pump_; |