diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-13 19:27:51 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-13 19:27:51 +0000 |
commit | ab9fe0f8b3127a8cc224322107d2f77fe0a9ef38 (patch) | |
tree | 40a0f93e46235dcb04514e4fbee65c874ddf6b71 /base/message_pump_x.cc | |
parent | 32354b64deff166de178809850f379da837819eb (diff) | |
download | chromium_src-ab9fe0f8b3127a8cc224322107d2f77fe0a9ef38.zip chromium_src-ab9fe0f8b3127a8cc224322107d2f77fe0a9ef38.tar.gz chromium_src-ab9fe0f8b3127a8cc224322107d2f77fe0a9ef38.tar.bz2 |
Revert r114168 "Refactor MessagePumpX to dispatch events inside of the source Dispatch function."
This reverts commit bae6675d851184f2be0ac117c1a847289c1c7bd9.
TBR=piman@chromium.org
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/8931009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114245 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/message_pump_x.cc')
-rw-r--r-- | base/message_pump_x.cc | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/base/message_pump_x.cc b/base/message_pump_x.cc index 2ef34ef..13adb37 100644 --- a/base/message_pump_x.cc +++ b/base/message_pump_x.cc @@ -25,9 +25,11 @@ gboolean XSourceCheck(GSource* source) { gboolean XSourceDispatch(GSource* source, GSourceFunc unused_func, - gpointer data) { - base::MessagePumpX* pump = static_cast<base::MessagePumpX*>(data); - return pump->DispatchXEvents(); + gpointer unused_data) { + // TODO(sad): When GTK event proecssing is completely removed, the event + // processing and dispatching should be done here (i.e. XNextEvent, + // ProcessXEvent etc.) + return TRUE; } GSourceFuncs XSourceFuncs = { @@ -127,7 +129,6 @@ void MessagePumpX::InitXSource() { x_source_ = g_source_new(&XSourceFuncs, sizeof(GSource)); g_source_add_poll(x_source_, x_poll); g_source_set_can_recurse(x_source_, FALSE); - g_source_set_callback(x_source_, NULL, this, NULL); g_source_attach(x_source_, g_main_context_default()); } @@ -161,21 +162,24 @@ bool MessagePumpX::ProcessXEvent(MessagePumpDispatcher* dispatcher, return should_quit; } -gboolean MessagePumpX::DispatchXEvents() { +bool MessagePumpX::RunOnce(GMainContext* context, bool block) { Display* display = GetDefaultXDisplay(); - DCHECK(display); MessagePumpDispatcher* dispatcher = GetDispatcher() ? GetDispatcher() : g_default_dispatcher; + if (!display) + return g_main_context_iteration(context, block); + // In the general case, we want to handle all pending events before running // the tasks. This is what happens in the message_pump_glib case. while (XPending(display)) { XEvent xev; XNextEvent(display, &xev); if (dispatcher && ProcessXEvent(dispatcher, &xev)) - return TRUE; + return true; } - return TRUE; + + return g_main_context_iteration(context, block); } bool MessagePumpX::WillProcessXEvent(XEvent* xevent) { |