| Index: base/message_pump_win.cc
|
| ===================================================================
|
| --- base/message_pump_win.cc (revision 6915)
|
| +++ base/message_pump_win.cc (working copy)
|
| @@ -380,19 +380,13 @@
|
| 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);
|
| }
|
|
|
| //-----------------------------------------------------------------------------
|
|
|