diff options
Diffstat (limited to 'base')
-rw-r--r-- | base/message_pump_win.cc | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/base/message_pump_win.cc b/base/message_pump_win.cc index ca5baa8..7ada5eb7 100644 --- a/base/message_pump_win.cc +++ b/base/message_pump_win.cc @@ -380,19 +380,13 @@ bool MessagePumpForUI::ProcessPumpReplacementMessage() { msg.hwnd != message_hwnd_); // Since we discarded a kMsgHaveWork message, we must update the flag. - int old_have_work = InterlockedExchange(&have_work_, 0); - DCHECK(old_have_work); + InterlockedExchange(&have_work_, 0); - // We don't need a special time slice if we didn't have_message to process. - if (!have_message) - return false; + // TODO(darin,jar): There is risk of being lost in a sub-pump within the call + // to ProcessMessageHelper, which could result in no longer getting a + // kMsgHaveWork message until the next out-of-band call to ScheduleWork. - // Guarantee we'll get another time slice in the case where we go into native - // windows code. This ScheduleWork() may hurt performance a tiny bit when - // tasks appear very infrequently, but when the event queue is busy, the - // kMsgHaveWork events get (percentage wise) rarer and rarer. - ScheduleWork(); - return ProcessMessageHelper(msg); + return have_message && ProcessMessageHelper(msg); } //----------------------------------------------------------------------------- |