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

Side by Side Diff: trunk/src/base/message_loop/message_pump_x11.cc

Issue 63443002: Revert 233414 "x11: Move XInput2 availability information out of..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/message_loop/message_pump_x11.h" 5 #include "base/message_loop/message_pump_x11.h"
6 6
7 #include <glib.h> 7 #include <glib.h>
8 #include <X11/X.h> 8 #include <X11/X.h>
9 #include <X11/extensions/XInput2.h> 9 #include <X11/extensions/XInput2.h>
10 #include <X11/XKBlib.h> 10 #include <X11/XKBlib.h>
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 // method and destroyed whenever ~MessagePumpX11() is called. We do this 46 // method and destroyed whenever ~MessagePumpX11() is called. We do this
47 // for historical reasons so user code can call 47 // for historical reasons so user code can call
48 // MessagePumpForUI::GetDefaultXDisplay() where MessagePumpForUI is a typedef 48 // MessagePumpForUI::GetDefaultXDisplay() where MessagePumpForUI is a typedef
49 // to whatever type in the current build. 49 // to whatever type in the current build.
50 // 50 //
51 // TODO(erg): This can be changed to something more sane like 51 // TODO(erg): This can be changed to something more sane like
52 // MessagePumpX11::Current()->display() once MessagePumpGtk goes away. 52 // MessagePumpX11::Current()->display() once MessagePumpGtk goes away.
53 Display* g_xdisplay = NULL; 53 Display* g_xdisplay = NULL;
54 int g_xinput_opcode = -1; 54 int g_xinput_opcode = -1;
55 55
56 bool InitializeXInput2() { 56 bool InitializeXInput2Internal() {
57 Display* display = MessagePumpX11::GetDefaultXDisplay(); 57 Display* display = MessagePumpX11::GetDefaultXDisplay();
58 if (!display) 58 if (!display)
59 return false; 59 return false;
60 60
61 int event, err; 61 int event, err;
62 62
63 int xiopcode; 63 int xiopcode;
64 if (!XQueryExtension(display, "XInputExtension", &xiopcode, &event, &err)) { 64 if (!XQueryExtension(display, "XInputExtension", &xiopcode, &event, &err)) {
65 DVLOG(1) << "X Input extension not available."; 65 DVLOG(1) << "X Input extension not available.";
66 return false; 66 return false;
(...skipping 23 matching lines...) Expand all
90 90
91 Window FindEventTarget(const NativeEvent& xev) { 91 Window FindEventTarget(const NativeEvent& xev) {
92 Window target = xev->xany.window; 92 Window target = xev->xany.window;
93 if (xev->type == GenericEvent && 93 if (xev->type == GenericEvent &&
94 static_cast<XIEvent*>(xev->xcookie.data)->extension == g_xinput_opcode) { 94 static_cast<XIEvent*>(xev->xcookie.data)->extension == g_xinput_opcode) {
95 target = static_cast<XIDeviceEvent*>(xev->xcookie.data)->event; 95 target = static_cast<XIDeviceEvent*>(xev->xcookie.data)->event;
96 } 96 }
97 return target; 97 return target;
98 } 98 }
99 99
100 bool InitializeXInput2() {
101 static bool xinput2_supported = InitializeXInput2Internal();
102 return xinput2_supported;
103 }
104
100 bool InitializeXkb() { 105 bool InitializeXkb() {
101 Display* display = MessagePumpX11::GetDefaultXDisplay(); 106 Display* display = MessagePumpX11::GetDefaultXDisplay();
102 if (!display) 107 if (!display)
103 return false; 108 return false;
104 109
105 int opcode, event, error; 110 int opcode, event, error;
106 int major = XkbMajorVersion; 111 int major = XkbMajorVersion;
107 int minor = XkbMinorVersion; 112 int minor = XkbMinorVersion;
108 if (!XkbQueryExtension(display, &opcode, &event, &error, &major, &minor)) { 113 if (!XkbQueryExtension(display, &opcode, &event, &error, &major, &minor)) {
109 DVLOG(1) << "Xkb extension not available."; 114 DVLOG(1) << "Xkb extension not available.";
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 g_xdisplay = NULL; 146 g_xdisplay = NULL;
142 } 147 }
143 148
144 // static 149 // static
145 Display* MessagePumpX11::GetDefaultXDisplay() { 150 Display* MessagePumpX11::GetDefaultXDisplay() {
146 if (!g_xdisplay) 151 if (!g_xdisplay)
147 g_xdisplay = XOpenDisplay(NULL); 152 g_xdisplay = XOpenDisplay(NULL);
148 return g_xdisplay; 153 return g_xdisplay;
149 } 154 }
150 155
156 // static
157 bool MessagePumpX11::HasXInput2() {
158 return InitializeXInput2();
159 }
160
151 #if defined(TOOLKIT_GTK) 161 #if defined(TOOLKIT_GTK)
152 // static 162 // static
153 MessagePumpX11* MessagePumpX11::Current() { 163 MessagePumpX11* MessagePumpX11::Current() {
154 MessageLoop* loop = MessageLoop::current(); 164 MessageLoop* loop = MessageLoop::current();
155 return static_cast<MessagePumpX11*>(loop->pump_gpu()); 165 return static_cast<MessagePumpX11*>(loop->pump_gpu());
156 } 166 }
157 #else 167 #else
158 // static 168 // static
159 MessagePumpX11* MessagePumpX11::Current() { 169 MessagePumpX11* MessagePumpX11::Current() {
160 MessageLoopForUI* loop = MessageLoopForUI::current(); 170 MessageLoopForUI* loop = MessageLoopForUI::current();
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 if (FindEventTarget(xev) == x_root_window_) { 314 if (FindEventTarget(xev) == x_root_window_) {
305 FOR_EACH_OBSERVER(MessagePumpDispatcher, root_window_dispatchers_, 315 FOR_EACH_OBSERVER(MessagePumpDispatcher, root_window_dispatchers_,
306 Dispatch(xev)); 316 Dispatch(xev));
307 return true; 317 return true;
308 } 318 }
309 MessagePumpDispatcher* dispatcher = GetDispatcherForXEvent(xev); 319 MessagePumpDispatcher* dispatcher = GetDispatcherForXEvent(xev);
310 return dispatcher ? dispatcher->Dispatch(xev) : true; 320 return dispatcher ? dispatcher->Dispatch(xev) : true;
311 } 321 }
312 322
313 } // namespace base 323 } // namespace base
OLDNEW
« no previous file with comments | « trunk/src/base/message_loop/message_pump_x11.h ('k') | trunk/src/ui/aura/root_window_host_x11.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698