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

Side by Side Diff: ui/events/ozone/evdev/touch_event_converter_evdev.h

Issue 991533002: Port Chromium OS touch noise filtering to Chromium (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 #ifndef UI_EVENTS_OZONE_EVDEV_TOUCH_EVENT_CONVERTER_EVDEV_H_ 5 #ifndef UI_EVENTS_OZONE_EVDEV_TOUCH_EVENT_CONVERTER_EVDEV_H_
6 #define UI_EVENTS_OZONE_EVDEV_TOUCH_EVENT_CONVERTER_EVDEV_H_ 6 #define UI_EVENTS_OZONE_EVDEV_TOUCH_EVENT_CONVERTER_EVDEV_H_
7 7
8 #include <bitset> 8 #include <bitset>
9 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
11 #include "base/files/file_path.h" 11 #include "base/files/file_path.h"
12 #include "base/memory/scoped_ptr.h"
12 #include "base/message_loop/message_pump_libevent.h" 13 #include "base/message_loop/message_pump_libevent.h"
13 #include "ui/events/event_constants.h" 14 #include "ui/events/event_constants.h"
14 #include "ui/events/ozone/evdev/event_converter_evdev.h" 15 #include "ui/events/ozone/evdev/event_converter_evdev.h"
15 #include "ui/events/ozone/evdev/event_device_info.h" 16 #include "ui/events/ozone/evdev/event_device_info.h"
16 #include "ui/events/ozone/evdev/events_ozone_evdev_export.h" 17 #include "ui/events/ozone/evdev/events_ozone_evdev_export.h"
17 18
18 namespace ui { 19 namespace ui {
19 20
21 class DeviceEventDispatcherEvdev;
20 class TouchEvent; 22 class TouchEvent;
21 23 class TouchNoiseFinder;
22 class DeviceEventDispatcherEvdev; 24 struct InProgressTouchEvdev;
23 25
24 class EVENTS_OZONE_EVDEV_EXPORT TouchEventConverterEvdev 26 class EVENTS_OZONE_EVDEV_EXPORT TouchEventConverterEvdev
25 : public EventConverterEvdev { 27 : public EventConverterEvdev {
26 public: 28 public:
27 enum { MAX_FINGERS = 20 };
28 TouchEventConverterEvdev(int fd, 29 TouchEventConverterEvdev(int fd,
29 base::FilePath path, 30 base::FilePath path,
30 int id, 31 int id,
31 InputDeviceType type, 32 InputDeviceType type,
32 DeviceEventDispatcherEvdev* dispatcher); 33 DeviceEventDispatcherEvdev* dispatcher);
33 ~TouchEventConverterEvdev() override; 34 ~TouchEventConverterEvdev() override;
34 35
35 // EventConverterEvdev: 36 // EventConverterEvdev:
36 bool HasTouchscreen() const override; 37 bool HasTouchscreen() const override;
37 gfx::Size GetTouchscreenSize() const override; 38 gfx::Size GetTouchscreenSize() const override;
38 int GetTouchPoints() const override; 39 int GetTouchPoints() const override;
39 40
40 // Unsafe part of initialization. 41 // Unsafe part of initialization.
41 virtual void Initialize(const EventDeviceInfo& info); 42 virtual void Initialize(const EventDeviceInfo& info);
42 43
43 private: 44 private:
44 friend class MockTouchEventConverterEvdev; 45 friend class MockTouchEventConverterEvdev;
45 46
46 struct InProgressEvents {
47 InProgressEvents();
48
49 bool altered_;
50 float x_;
51 float y_;
52 int id_; // Device reported "unique" touch point id; -1 means not active
53 int finger_; // "Finger" id starting from 0; -1 means not active
54
55 EventType type_;
56 float radius_x_;
57 float radius_y_;
58 float pressure_;
59 };
60
61 // Overidden from base::MessagePumpLibevent::Watcher. 47 // Overidden from base::MessagePumpLibevent::Watcher.
62 void OnFileCanReadWithoutBlocking(int fd) override; 48 void OnFileCanReadWithoutBlocking(int fd) override;
63 49
64 virtual bool Reinitialize(); 50 virtual bool Reinitialize();
65 51
66 void ProcessInputEvent(const input_event& input); 52 void ProcessInputEvent(const input_event& input);
67 void ProcessAbs(const input_event& input); 53 void ProcessAbs(const input_event& input);
68 void ProcessSyn(const input_event& input); 54 void ProcessSyn(const input_event& input);
69 55
70 void ReportEvent(int touch_id, 56 // Returns an EventType to dispatch for |touch|. Returns ET_UNKNOWN if an
71 const InProgressEvents& event, const base::TimeDelta& delta); 57 // event should not be dispatched.
58 EventType GetEventTypeForTouch(const InProgressTouchEvdev& touch);
59
60 void ReportEvent(const InProgressTouchEvdev& event,
61 EventType event_type,
62 const base::TimeDelta& delta);
72 void ReportEvents(base::TimeDelta delta); 63 void ReportEvents(base::TimeDelta delta);
73 64
74 // Dispatcher for events. 65 // Dispatcher for events.
75 DeviceEventDispatcherEvdev* dispatcher_; 66 DeviceEventDispatcherEvdev* dispatcher_;
76 67
77 // Set if we have seen a SYN_DROPPED and not yet re-synced with the device. 68 // Set if we have seen a SYN_DROPPED and not yet re-synced with the device.
78 bool syn_dropped_; 69 bool syn_dropped_;
79 70
80 // Set if this is a type A device (uses SYN_MT_REPORT).
81 bool is_type_a_;
82
83 // Pressure values. 71 // Pressure values.
84 int pressure_min_; 72 int pressure_min_;
85 int pressure_max_; // Used to normalize pressure values. 73 int pressure_max_; // Used to normalize pressure values.
86 74
87 // Input range for x-axis. 75 // Input range for x-axis.
88 float x_min_tuxels_; 76 float x_min_tuxels_;
89 float x_num_tuxels_; 77 float x_num_tuxels_;
90 78
91 // Input range for y-axis. 79 // Input range for y-axis.
92 float y_min_tuxels_; 80 float y_min_tuxels_;
93 float y_num_tuxels_; 81 float y_num_tuxels_;
94 82
95 // Size of the touchscreen as reported by the driver. 83 // Size of the touchscreen as reported by the driver.
96 gfx::Size native_size_; 84 gfx::Size native_size_;
97 85
98 // Number of touch points reported by driver 86 // Number of touch points reported by driver
99 int touch_points_; 87 int touch_points_;
100 88
101 // Touch point currently being updated from the /dev/input/event* stream. 89 // Touch point currently being updated from the /dev/input/event* stream.
102 size_t current_slot_; 90 size_t current_slot_;
103 91
104 // In-progress touch points. 92 // In-progress touch points.
105 std::vector<InProgressEvents> events_; 93 std::vector<InProgressTouchEvdev> events_;
94
95 // Finds touch noise.
96 scoped_ptr<TouchNoiseFinder> touch_noise_finder_;
106 97
107 DISALLOW_COPY_AND_ASSIGN(TouchEventConverterEvdev); 98 DISALLOW_COPY_AND_ASSIGN(TouchEventConverterEvdev);
108 }; 99 };
109 100
110 } // namespace ui 101 } // namespace ui
111 102
112 #endif // UI_EVENTS_OZONE_EVDEV_TOUCH_EVENT_CONVERTER_EVDEV_H_ 103 #endif // UI_EVENTS_OZONE_EVDEV_TOUCH_EVENT_CONVERTER_EVDEV_H_
OLDNEW
« no previous file with comments | « ui/events/ozone/evdev/touch_evdev_types.cc ('k') | ui/events/ozone/evdev/touch_event_converter_evdev.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698