diff options
author | darin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-30 00:22:48 +0000 |
---|---|---|
committer | darin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-30 00:22:48 +0000 |
commit | 9bcbf478c173d91958cdabc8a8902619392b7f1f (patch) | |
tree | bad2b3022719370e6eb01a66f94924a1f848a968 /base/message_pump.h | |
parent | 3f9f500b82c82402d9eef92606ebd149762e9f0c (diff) | |
download | chromium_src-9bcbf478c173d91958cdabc8a8902619392b7f1f.zip chromium_src-9bcbf478c173d91958cdabc8a8902619392b7f1f.tar.gz chromium_src-9bcbf478c173d91958cdabc8a8902619392b7f1f.tar.bz2 |
Switch SharedTimerWin over to using PostDelayedTask. I made some tweaks to the
PostDelayedTask implementation to ensure that perf is still good. This
involved recording the intended fire time of PostDelayedTask on the Task object
so that it can be used to properly determine the delay passed to the StartTimer
call. With this change, I am able to service timers (call DoDelayedWork) more
often from within the MessagePump implementations.
R=mbelshe
BUG=1346553
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1578 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/message_pump.h')
-rw-r--r-- | base/message_pump.h | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/base/message_pump.h b/base/message_pump.h index 4b53f4e..da4d214 100644 --- a/base/message_pump.h +++ b/base/message_pump.h @@ -54,21 +54,22 @@ class MessagePump : public RefCountedThreadSafe<MessagePump> { // bool did_work = DoInternalWork(); // if (should_quit_) // break; + // // did_work |= delegate_->DoWork(); // if (should_quit_) // break; - // if (did_work) - // continue; // - // did_work = delegate_->DoDelayedWork(); + // did_work |= delegate_->DoDelayedWork(); // if (should_quit_) // break; + // // if (did_work) // continue; // // did_work = delegate_->DoIdleWork(); // if (should_quit_) // break; + // // if (did_work) // continue; // @@ -80,13 +81,10 @@ class MessagePump : public RefCountedThreadSafe<MessagePump> { // completion (for example). WaitForWork is a private method that simply // blocks until there is more work of any type to do. // - // Notice that the run loop alternates between calling DoInternalWork and - // calling the delegate's DoWork method. This helps ensure that neither work - // queue starves the other. However, DoDelayedWork may be starved. The - // implementation may decide to periodically let some DoDelayedWork calls go - // through if either DoInternalWork or DoWork is dominating the run loop. - // This can be important for message pumps that are used to drive animations, - // for example. + // Notice that the run loop cycles between calling DoInternalWork, DoWork, + // and DoDelayedWork methods. This helps ensure that neither work queue + // starves the other. This is important for message pumps that are used to + // drive animations, for example. // // Notice also that after each callout to foreign code, the run loop checks // to see if it should quit. The Quit method is responsible for setting this |