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

Unified Diff: ui/events/platform/x11/x11_event_source.cc

Issue 1602173005: Add PlatformWindow/Event related code for Ozone X11. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: XEventDispatcher added. Created 4 years, 11 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
Index: ui/events/platform/x11/x11_event_source.cc
diff --git a/ui/events/platform/x11/x11_event_source.cc b/ui/events/platform/x11/x11_event_source.cc
index ba55e0b1751a92eec498934a293125f6b87ded90..d9891ddff8f5a0d045f67fbefc2667f3dd53d371 100644
--- a/ui/events/platform/x11/x11_event_source.cc
+++ b/ui/events/platform/x11/x11_event_source.cc
@@ -94,6 +94,15 @@ X11EventSource* X11EventSource::GetInstance() {
////////////////////////////////////////////////////////////////////////////////
// X11EventSource, public
+void X11EventSource::AddXEventDispatcher(XEventDispatcher* dispatcher) {
+ CHECK(dispatcher);
spang 2016/01/26 21:37:40 CHECK is not allowed except for security-critical
kylechar 2016/01/27 15:39:26 Done.
+ x_dispatchers_.AddObserver(dispatcher);
+}
+
+void X11EventSource::RemoveXEventDispatcher(XEventDispatcher* dispatcher) {
+ x_dispatchers_.RemoveObserver(dispatcher);
+}
+
void X11EventSource::DispatchXEvents() {
DCHECK(display_);
// Handle all pending events.
@@ -132,8 +141,17 @@ uint32_t X11EventSource::ExtractCookieDataDispatchEvent(XEvent* xevent) {
return action;
}
-uint32_t X11EventSource::DispatchEvent(XEvent* xevent) {
- uint32_t action = PlatformEventSource::DispatchEvent(xevent);
+void X11EventSource::DispatchXEventToXEventDispatchers(XEvent* xevent) {
+ if (x_dispatchers_.might_have_observers()) {
+ base::ObserverList<XEventDispatcher>::Iterator iter(&x_dispatchers_);
+ while (XEventDispatcher* dispatcher = iter.GetNext()) {
+ if (dispatcher->DispatchXEvent(*xevent))
+ break;
spang 2016/01/26 21:37:40 If DispatchXEvent returns true, do we still try to
kylechar 2016/01/27 15:39:26 It doesn't right now because it actually happens i
+ }
+ }
+}
+
+void X11EventSource::PostDispatchEvent(XEvent* xevent) {
if (xevent->type == GenericEvent &&
(xevent->xgeneric.evtype == XI_HierarchyChanged ||
xevent->xgeneric.evtype == XI_DeviceChanged)) {
@@ -147,7 +165,6 @@ uint32_t X11EventSource::DispatchEvent(XEvent* xevent) {
// Clear stored scroll data
ui::DeviceDataManagerX11::GetInstance()->InvalidateScrollClasses();
}
- return action;
}
void X11EventSource::StopCurrentEventStream() {

Powered by Google App Engine
This is Rietveld 408576698