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

Side by Side Diff: ui/events/x/touch_factory_x11.h

Issue 134773004: Include external touchscreen vid/pid in UMA hardware profile (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase onto refactor. Created 6 years, 10 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 | 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 #ifndef UI_EVENTS_X_TOUCH_FACTORY_X11_H_ 5 #ifndef UI_EVENTS_X_TOUCH_FACTORY_X11_H_
6 #define UI_EVENTS_X_TOUCH_FACTORY_X11_H_ 6 #define UI_EVENTS_X_TOUCH_FACTORY_X11_H_
7 7
8 #include <bitset> 8 #include <bitset>
9 #include <map> 9 #include <map>
10 #include <set>
11 #include <utility>
10 #include <vector> 12 #include <vector>
11 13
12 #include "base/timer/timer.h" 14 #include "base/timer/timer.h"
13 #include "ui/events/events_base_export.h" 15 #include "ui/events/events_base_export.h"
14 #include "ui/gfx/sequential_id_generator.h" 16 #include "ui/gfx/sequential_id_generator.h"
15 17
16 template <typename T> struct DefaultSingletonTraits; 18 template <typename T> struct DefaultSingletonTraits;
17 19
18 typedef unsigned long Cursor; 20 typedef unsigned long Cursor;
19 typedef unsigned long Window; 21 typedef unsigned long Window;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 // Tries to find an existing slot ID mapping to tracking ID. If there 67 // Tries to find an existing slot ID mapping to tracking ID. If there
66 // isn't one already, allocates a new slot ID and sets up the mapping. 68 // isn't one already, allocates a new slot ID and sets up the mapping.
67 int GetSlotForTrackingID(uint32 tracking_id); 69 int GetSlotForTrackingID(uint32 tracking_id);
68 70
69 // Releases the slot ID mapping to tracking ID. 71 // Releases the slot ID mapping to tracking ID.
70 void ReleaseSlotForTrackingID(uint32 tracking_id); 72 void ReleaseSlotForTrackingID(uint32 tracking_id);
71 73
72 // Whether any touch device is currently present and enabled. 74 // Whether any touch device is currently present and enabled.
73 bool IsTouchDevicePresent(); 75 bool IsTouchDevicePresent();
74 76
77 // Pairs of <vendor id, product id> of external touch screens.
78 const std::set<std::pair<int, int> >& GetTouchscreenIds() const {
79 return touchscreen_ids_;
80 }
81
75 // Return maximum simultaneous touch points supported by device. 82 // Return maximum simultaneous touch points supported by device.
76 int GetMaxTouchPoints() const; 83 int GetMaxTouchPoints() const;
77 84
78 // Sets up the device id in the list |devices| as multi-touch capable 85 // Sets up the device id in the list |devices| as multi-touch capable
79 // devices and enables touch events processing. This function is only 86 // devices and enables touch events processing. This function is only
80 // for test purpose, and it does not query from X server. 87 // for test purpose, and it does not query from X server.
81 void SetTouchDeviceForTest(const std::vector<unsigned int>& devices); 88 void SetTouchDeviceForTest(const std::vector<unsigned int>& devices);
82 89
83 // Sets up the device id in the list |devices| as pointer devices. 90 // Sets up the device id in the list |devices| as pointer devices.
84 // This function is only for test purpose, and it does not query from 91 // This function is only for test purpose, and it does not query from
85 // X server. 92 // X server.
86 void SetPointerDeviceForTest(const std::vector<unsigned int>& devices); 93 void SetPointerDeviceForTest(const std::vector<unsigned int>& devices);
87 94
88 private: 95 private:
89 // Requirement for Singleton 96 // Requirement for Singleton
90 friend struct DefaultSingletonTraits<TouchFactory>; 97 friend struct DefaultSingletonTraits<TouchFactory>;
91 98
99 void CacheTouchscreenIds(Display* display, int id);
100
92 // NOTE: To keep track of touch devices, we currently maintain a lookup table 101 // NOTE: To keep track of touch devices, we currently maintain a lookup table
93 // to quickly decide if a device is a touch device or not. We also maintain a 102 // to quickly decide if a device is a touch device or not. We also maintain a
94 // list of the touch devices. Ideally, there will be only one touch device, 103 // list of the touch devices. Ideally, there will be only one touch device,
95 // and instead of having the lookup table and the list, there will be a single 104 // and instead of having the lookup table and the list, there will be a single
96 // identifier for the touch device. This can be completed after enough testing 105 // identifier for the touch device. This can be completed after enough testing
97 // on real touch devices. 106 // on real touch devices.
98 107
99 static const int kMaxDeviceNum = 128; 108 static const int kMaxDeviceNum = 128;
100 109
101 // A quick lookup table for determining if events from the pointer device 110 // A quick lookup table for determining if events from the pointer device
102 // should be processed. 111 // should be processed.
103 std::bitset<kMaxDeviceNum> pointer_device_lookup_; 112 std::bitset<kMaxDeviceNum> pointer_device_lookup_;
104 113
105 // A quick lookup table for determining if a device is a touch device. 114 // A quick lookup table for determining if a device is a touch device.
106 std::bitset<kMaxDeviceNum> touch_device_lookup_; 115 std::bitset<kMaxDeviceNum> touch_device_lookup_;
107 116
108 // Indicates whether a touch device is currently available or not. 117 // Indicates whether a touch device is currently available or not.
109 bool touch_device_available_; 118 bool touch_device_available_;
110 119
111 // Indicates whether touch events are explicitly disabled. 120 // Indicates whether touch events are explicitly disabled.
112 bool touch_events_disabled_; 121 bool touch_events_disabled_;
113 122
123 // Indicates whether the device's internal display produces touch events.
124 bool internal_display_supports_touch_;
125
114 // The list of touch devices. For testing/debugging purposes, a single-pointer 126 // The list of touch devices. For testing/debugging purposes, a single-pointer
115 // device (mouse or touch screen without sufficient X/driver support for MT) 127 // device (mouse or touch screen without sufficient X/driver support for MT)
116 // can sometimes be treated as a touch device. The key in the map represents 128 // can sometimes be treated as a touch device. The key in the map represents
117 // the device id, and the value represents if the device is multi-touch 129 // the device id, and the value represents if the device is multi-touch
118 // capable. 130 // capable.
119 std::map<int, bool> touch_device_list_; 131 std::map<int, bool> touch_device_list_;
120 132
133 // Touch screen <vid, pid>s.
134 std::set<std::pair<int, int> > touchscreen_ids_;
135
121 // Maximum simultaneous touch points supported by device. In the case of 136 // Maximum simultaneous touch points supported by device. In the case of
122 // devices with multiple digitizers (e.g. multiple touchscreens), the value 137 // devices with multiple digitizers (e.g. multiple touchscreens), the value
123 // is the maximum of the set of maximum supported contacts by each individual 138 // is the maximum of the set of maximum supported contacts by each individual
124 // digitizer. 139 // digitizer.
125 int max_touch_points_; 140 int max_touch_points_;
126 141
127 SequentialIDGenerator id_generator_; 142 SequentialIDGenerator id_generator_;
128 143
129 DISALLOW_COPY_AND_ASSIGN(TouchFactory); 144 DISALLOW_COPY_AND_ASSIGN(TouchFactory);
130 }; 145 };
131 146
132 } // namespace ui 147 } // namespace ui
133 148
134 #endif // UI_EVENTS_X_TOUCH_FACTORY_X11_H_ 149 #endif // UI_EVENTS_X_TOUCH_FACTORY_X11_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698