summaryrefslogtreecommitdiffstats
path: root/base/message_loop.cc
diff options
context:
space:
mode:
authordarin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-19 18:36:23 +0000
committerdarin@google.com <darin@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-19 18:36:23 +0000
commitb16ef312cb28582a1d324d20e4328afeef2c7538 (patch)
treebcbc40bbe3950501c888eab655f5070619ad1ac7 /base/message_loop.cc
parent4880adb3346faa91feea9d8ecfecc4ef499bf7fc (diff)
downloadchromium_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.cc8
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