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

Unified Diff: ui/events/x/device_data_manager.cc

Issue 52823002: x11: Move XInput2 availability information out of the message pump. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/events/x/device_data_manager.h ('k') | ui/events/x/device_list_cache_x.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/x/device_data_manager.cc
diff --git a/ui/events/x/device_data_manager.cc b/ui/events/x/device_data_manager.cc
index d97b7f3fdcc126f40348b387df99eb7fdeb8351f..d82b5f3717aac098a6f4e37c4c72cbcc632d632a 100644
--- a/ui/events/x/device_data_manager.cc
+++ b/ui/events/x/device_data_manager.cc
@@ -11,7 +11,6 @@
#include "base/logging.h"
#include "base/memory/singleton.h"
#include "ui/events/event_constants.h"
-#include "ui/events/event_utils.h"
#include "ui/events/x/device_list_cache_x.h"
#include "ui/events/x/touch_factory_x11.h"
#include "ui/gfx/x/x11_types.h"
@@ -112,8 +111,10 @@ DeviceDataManager* DeviceDataManager::GetInstance() {
DeviceDataManager::DeviceDataManager()
: natural_scroll_enabled_(false),
+ xi_opcode_(-1),
atom_cache_(gfx::GetXDisplay(), kCachedAtoms),
button_map_count_(0) {
+ CHECK(gfx::GetXDisplay());
InitializeXInputInternal();
// Make sure the sizes of enum and kCachedAtoms are aligned.
@@ -134,7 +135,6 @@ bool DeviceDataManager::InitializeXInputInternal() {
VLOG(1) << "X Input extension not available: error=" << error;
return false;
}
- xi_opcode_ = opcode;
// Check the XInput version.
#if defined(USE_XI2_MT)
@@ -146,6 +146,16 @@ bool DeviceDataManager::InitializeXInputInternal() {
VLOG(1) << "XInput2 not supported in the server.";
return false;
}
+#if defined(USE_XI2_MT)
+ if (major < 2 || (major == 2 && minor < USE_XI2_MT)) {
+ DVLOG(1) << "XI version on server is " << major << "." << minor << ". "
+ << "But 2." << USE_XI2_MT << " is required.";
+ return false;
+ }
+#endif
+
+ xi_opcode_ = opcode;
+ CHECK_NE(-1, xi_opcode_);
// Possible XI event types for XIDeviceEvent. See the XI2 protocol
// specification.
@@ -163,6 +173,10 @@ bool DeviceDataManager::InitializeXInputInternal() {
return true;
}
+bool DeviceDataManager::IsXInput2Available() const {
+ return xi_opcode_ != -1;
+}
+
float DeviceDataManager::GetNaturalScrollFactor(int sourceid) const {
// Natural scroll is touchpad-only.
if (sourceid >= kMaxDeviceNum || !touchpads_[sourceid])
@@ -192,6 +206,9 @@ void DeviceDataManager::UpdateDeviceList(Display* display) {
if (dev_list[i].type == xi_touchpad)
touchpads_[dev_list[i].id] = true;
+ if (!IsXInput2Available())
+ return;
+
// Update the structs with new valuator information
XIDeviceList info_list =
ui::DeviceListCacheX::GetInstance()->GetXI2DeviceList(display);
« no previous file with comments | « ui/events/x/device_data_manager.h ('k') | ui/events/x/device_list_cache_x.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698