diff options
author | darin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-19 18:36:23 +0000 |
---|---|---|
committer | darin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-19 18:36:23 +0000 |
commit | b16ef312cb28582a1d324d20e4328afeef2c7538 (patch) | |
tree | bcbc40bbe3950501c888eab655f5070619ad1ac7 /base/message_loop.cc | |
parent | 4880adb3346faa91feea9d8ecfecc4ef499bf7fc (diff) | |
download | chromium_src-b16ef312cb28582a1d324d20e4328afeef2c7538.zip chromium_src-b16ef312cb28582a1d324d20e4328afeef2c7538.tar.gz chromium_src-b16ef312cb28582a1d324d20e4328afeef2c7538.tar.bz2 |
Define MessagePumpDefault and use it to implement MessageLoop on non-Windows
platforms. This is actually just a first-step toward the real fix which is to
use MessagePumpDefault on all platforms on non-UI and non-IO threads.
This CL also fixes some GCC compilation errors. I renamed MessageLoopOwnable
to TaskBase, which seems more appropriate since a MessageLoopOwnable has a
next Task pointer and clearly is only meaningful in the context of Task. (I
wonder why it is even a separate class, but that is another issue.) I had to
make the next_task / set_next_task methods public since they are used by an
inner class of MessageLoop. Perhaps those inner classes should be made into
top-level classes, but that seemed like too much to change at this time.
R=jar,mmentovai
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1045 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/message_loop.cc')
-rw-r--r-- | base/message_loop.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/base/message_loop.cc b/base/message_loop.cc index 4d61b6a..c82c3ee 100644 --- a/base/message_loop.cc +++ b/base/message_loop.cc @@ -32,6 +32,7 @@ #include <algorithm> #include "base/logging.h" +#include "base/message_pump_default.h" #include "base/string_util.h" #include "base/thread_local_storage.h" @@ -79,14 +80,17 @@ static LPTOP_LEVEL_EXCEPTION_FILTER GetTopSEHFilter() { MessageLoop::MessageLoop() #pragma warning(suppress: 4355) // OK, to use |this| in the initializer list. : timer_manager_(this), - exception_restoration_(false), nestable_tasks_allowed_(true), + exception_restoration_(false), state_(NULL) { DCHECK(tls_index_) << "static initializer failed"; DCHECK(!current()) << "should only have one message loop per thread"; ThreadLocalStorage::Set(tls_index_, this); + // TODO(darin): Generalize this to support instantiating different pumps. #if defined(OS_WIN) pump_ = new base::MessagePumpWin(); +#else + pump_ = new base::MessagePumpDefault(); #endif } @@ -453,7 +457,7 @@ void MessageLoop::PrioritizedTaskQueue::push(Task * task) { bool MessageLoop::PrioritizedTaskQueue::PrioritizedTask::operator < ( PrioritizedTask const & right) const { - int compare = task_->priority_ - right.task_->priority_; + int compare = task_->priority() - right.task_->priority(); if (compare) return compare < 0; // Don't compare directly, but rather subtract. This handles overflow |