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

Side by Side Diff: ui/events/platform/x11/x11_event_source.cc

Issue 2398343002: X11: Avoid round-tripping to get the cursor position (Closed)
Patch Set: Revert install-sysroot thing Created 4 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/events/platform/x11/x11_event_source.h" 5 #include "ui/events/platform/x11/x11_event_source.h"
6 6
7 #include <X11/Xatom.h> 7 #include <X11/Xatom.h>
8 #include <X11/XKBlib.h> 8 #include <X11/XKBlib.h>
9 #include <X11/Xlib.h> 9 #include <X11/Xlib.h>
10 10
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 90
91 } // namespace 91 } // namespace
92 92
93 X11EventSource* X11EventSource::instance_ = nullptr; 93 X11EventSource* X11EventSource::instance_ = nullptr;
94 94
95 X11EventSource::X11EventSource(X11EventSourceDelegate* delegate, 95 X11EventSource::X11EventSource(X11EventSourceDelegate* delegate,
96 XDisplay* display) 96 XDisplay* display)
97 : delegate_(delegate), 97 : delegate_(delegate),
98 display_(display), 98 display_(display),
99 event_timestamp_(CurrentTime), 99 event_timestamp_(CurrentTime),
100 dispatching_event_(nullptr),
100 dummy_initialized_(false), 101 dummy_initialized_(false),
101 continue_stream_(true) { 102 continue_stream_(true) {
102 DCHECK(!instance_); 103 DCHECK(!instance_);
103 instance_ = this; 104 instance_ = this;
104 105
105 DCHECK(delegate_); 106 DCHECK(delegate_);
106 DCHECK(display_); 107 DCHECK(display_);
107 DeviceDataManagerX11::CreateInstance(); 108 DeviceDataManagerX11::CreateInstance();
108 InitializeXkb(display_); 109 InitializeXkb(display_);
109 } 110 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 //////////////////////////////////////////////////////////////////////////////// 195 ////////////////////////////////////////////////////////////////////////////////
195 // X11EventSource, protected 196 // X11EventSource, protected
196 197
197 void X11EventSource::ExtractCookieDataDispatchEvent(XEvent* xevent) { 198 void X11EventSource::ExtractCookieDataDispatchEvent(XEvent* xevent) {
198 bool have_cookie = false; 199 bool have_cookie = false;
199 if (xevent->type == GenericEvent && 200 if (xevent->type == GenericEvent &&
200 XGetEventData(xevent->xgeneric.display, &xevent->xcookie)) { 201 XGetEventData(xevent->xgeneric.display, &xevent->xcookie)) {
201 have_cookie = true; 202 have_cookie = true;
202 } 203 }
203 204
205 dispatching_event_ = xevent;
204 event_timestamp_ = ExtractTimeFromXEvent(*xevent); 206 event_timestamp_ = ExtractTimeFromXEvent(*xevent);
205 207
206 delegate_->ProcessXEvent(xevent); 208 delegate_->ProcessXEvent(xevent);
sadrul 2016/10/07 02:12:51 This can trigger a nested message loop, which mean
Tom (Use chromium acct) 2016/10/07 21:13:18 done: added a stack of events to handle this.
207 PostDispatchEvent(xevent); 209 PostDispatchEvent(xevent);
208 210
209 event_timestamp_ = CurrentTime; 211 event_timestamp_ = CurrentTime;
212 dispatching_event_ = nullptr;
210 213
211 if (have_cookie) 214 if (have_cookie)
212 XFreeEventData(xevent->xgeneric.display, &xevent->xcookie); 215 XFreeEventData(xevent->xgeneric.display, &xevent->xcookie);
213 } 216 }
214 217
215 void X11EventSource::PostDispatchEvent(XEvent* xevent) { 218 void X11EventSource::PostDispatchEvent(XEvent* xevent) {
216 bool should_update_device_list = false; 219 bool should_update_device_list = false;
217 220
218 if (xevent->type == GenericEvent) { 221 if (xevent->type == GenericEvent) {
219 if (xevent->xgeneric.evtype == XI_HierarchyChanged) { 222 if (xevent->xgeneric.evtype == XI_HierarchyChanged) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 263
261 void X11EventSource::OnDispatcherListChanged() { 264 void X11EventSource::OnDispatcherListChanged() {
262 if (!hotplug_event_handler_) { 265 if (!hotplug_event_handler_) {
263 hotplug_event_handler_.reset(new X11HotplugEventHandler()); 266 hotplug_event_handler_.reset(new X11HotplugEventHandler());
264 // Force the initial device query to have an update list of active devices. 267 // Force the initial device query to have an update list of active devices.
265 hotplug_event_handler_->OnHotplugEvent(); 268 hotplug_event_handler_->OnHotplugEvent();
266 } 269 }
267 } 270 }
268 271
269 } // namespace ui 272 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698