Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Unified Diff: ui/aura/window_tree_host_x11.cc

Issue 219743002: x11: Move X event handling out of the message-pump. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tot-merge-r261267 Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/aura/window_tree_host_x11.h ('k') | ui/aura/window_tree_host_x11_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/aura/window_tree_host_x11.cc
diff --git a/ui/aura/window_tree_host_x11.cc b/ui/aura/window_tree_host_x11.cc
index a57f2a9a343a32db6d303ce3002b55fa0762cdbc..afb4d41da58172ec34fc660aacbf7ef390640de8 100644
--- a/ui/aura/window_tree_host_x11.cc
+++ b/ui/aura/window_tree_host_x11.cc
@@ -21,7 +21,6 @@
#include "base/command_line.h"
#include "base/debug/trace_event.h"
#include "base/message_loop/message_loop.h"
-#include "base/message_loop/message_pump_x11.h"
#include "base/stl_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
@@ -42,6 +41,7 @@
#include "ui/events/event_switches.h"
#include "ui/events/event_utils.h"
#include "ui/events/keycodes/keyboard_codes.h"
+#include "ui/events/platform/x11/x11_event_source.h"
#include "ui/events/x/device_data_manager.h"
#include "ui/events/x/device_list_cache_x.h"
#include "ui/events/x/touch_factory_x11.h"
@@ -266,8 +266,8 @@ WindowTreeHostX11::WindowTreeHostX11(const gfx::Rect& bounds)
CopyFromParent, // visual
CWBackPixmap | CWOverrideRedirect,
&swa);
- base::MessagePumpX11::Current()->AddDispatcherForWindow(this, xwindow_);
- base::MessagePumpX11::Current()->AddDispatcherForRootWindow(this);
+ if (ui::PlatformEventSource::GetInstance())
+ ui::PlatformEventSource::GetInstance()->AddPlatformEventDispatcher(this);
long event_mask = ButtonPressMask | ButtonReleaseMask | FocusChangeMask |
KeyPressMask | KeyReleaseMask |
@@ -316,8 +316,8 @@ WindowTreeHostX11::WindowTreeHostX11(const gfx::Rect& bounds)
WindowTreeHostX11::~WindowTreeHostX11() {
Env::GetInstance()->RemoveObserver(this);
- base::MessagePumpX11::Current()->RemoveDispatcherForRootWindow(this);
- base::MessagePumpX11::Current()->RemoveDispatcherForWindow(xwindow_);
+ if (ui::PlatformEventSource::GetInstance())
+ ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher(this);
UnConfineCursor();
@@ -326,13 +326,17 @@ WindowTreeHostX11::~WindowTreeHostX11() {
XDestroyWindow(xdisplay_, xwindow_);
}
-uint32_t WindowTreeHostX11::Dispatch(const base::NativeEvent& event) {
- XEvent* xev = event;
+bool WindowTreeHostX11::CanDispatchEvent(const ui::PlatformEvent& event) {
+ ::Window target = FindEventTarget(event);
+ return target == xwindow_ || target == x_root_window_;
+}
- if (FindEventTarget(event) == x_root_window_) {
- if (event->type == GenericEvent)
- DispatchXI2Event(event);
- return POST_DISPATCH_NONE;
+uint32_t WindowTreeHostX11::DispatchEvent(const ui::PlatformEvent& event) {
+ XEvent* xev = event;
+ if (FindEventTarget(xev) == x_root_window_) {
+ if (xev->type == GenericEvent)
+ DispatchXI2Event(xev);
+ return ui::POST_DISPATCH_NONE;
}
switch (xev->type) {
@@ -424,7 +428,7 @@ uint32_t WindowTreeHostX11::Dispatch(const base::NativeEvent& event) {
break;
}
case GenericEvent:
- DispatchXI2Event(event);
+ DispatchXI2Event(xev);
break;
case ClientMessage: {
Atom message_type = static_cast<Atom>(xev->xclient.data.l[0]);
@@ -481,7 +485,7 @@ uint32_t WindowTreeHostX11::Dispatch(const base::NativeEvent& event) {
break;
}
}
- return POST_DISPATCH_NONE;
+ return ui::POST_DISPATCH_STOP_PROPAGATION;
}
gfx::AcceleratedWidget WindowTreeHostX11::GetAcceleratedWidget() {
@@ -506,7 +510,8 @@ void WindowTreeHostX11::Show() {
// We now block until our window is mapped. Some X11 APIs will crash and
// burn if passed |xwindow_| before the window is mapped, and XMapWindow is
// asynchronous.
- base::MessagePumpX11::Current()->BlockUntilWindowMapped(xwindow_);
+ if (ui::X11EventSource::GetInstance())
+ ui::X11EventSource::GetInstance()->BlockUntilWindowMapped(xwindow_);
window_mapped_ = true;
}
}
« no previous file with comments | « ui/aura/window_tree_host_x11.h ('k') | ui/aura/window_tree_host_x11_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698