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

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

Powered by Google App Engine
This is Rietveld 408576698