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

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

Issue 2833243002: Fix unsafe destruction order of InputDeviceFactoryEvdev (Closed)
Patch Set: Created 3 years, 8 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_INPUT_DEVICE_FACTORY_EVDEV_H_ 5 #ifndef UI_EVENTS_OZONE_EVDEV_INPUT_DEVICE_FACTORY_EVDEV_H_
6 #define UI_EVENTS_OZONE_EVDEV_INPUT_DEVICE_FACTORY_EVDEV_H_ 6 #define UI_EVENTS_OZONE_EVDEV_INPUT_DEVICE_FACTORY_EVDEV_H_
7 7
8 #include <map> 8 #include <map>
9 #include <memory> 9 #include <memory>
10 #include <set> 10 #include <set>
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 void NotifyMouseDevicesUpdated(); 91 void NotifyMouseDevicesUpdated();
92 void NotifyTouchpadDevicesUpdated(); 92 void NotifyTouchpadDevicesUpdated();
93 93
94 void SetIntPropertyForOneType(const EventDeviceType type, 94 void SetIntPropertyForOneType(const EventDeviceType type,
95 const std::string& name, 95 const std::string& name,
96 int value); 96 int value);
97 void SetBoolPropertyForOneType(const EventDeviceType type, 97 void SetBoolPropertyForOneType(const EventDeviceType type,
98 const std::string& name, 98 const std::string& name,
99 bool value); 99 bool value);
100 100
101 // Owned per-device event converters (by path).
102 std::map<base::FilePath, std::unique_ptr<EventConverterEvdev>> converters_;
103
104 // Task runner for our thread. 101 // Task runner for our thread.
105 scoped_refptr<base::TaskRunner> task_runner_; 102 scoped_refptr<base::TaskRunner> task_runner_;
106 103
107 // Cursor movement. 104 // Cursor movement.
108 CursorDelegateEvdev* cursor_; 105 CursorDelegateEvdev* cursor_;
109 106
110 #if defined(USE_EVDEV_GESTURES) 107 #if defined(USE_EVDEV_GESTURES)
111 // Gesture library property provider (used by touchpads/mice). 108 // Gesture library property provider (used by touchpads/mice).
112 std::unique_ptr<GesturePropertyProvider> gesture_property_provider_; 109 std::unique_ptr<GesturePropertyProvider> gesture_property_provider_;
113 #endif 110 #endif
(...skipping 16 matching lines...) Expand all
130 127
131 // LEDs. 128 // LEDs.
132 bool caps_lock_led_enabled_ = false; 129 bool caps_lock_led_enabled_ = false;
133 130
134 // Whether touch palm suppression is enabled. 131 // Whether touch palm suppression is enabled.
135 bool palm_suppression_enabled_ = false; 132 bool palm_suppression_enabled_ = false;
136 133
137 // Device settings. These primarily affect libgestures behavior. 134 // Device settings. These primarily affect libgestures behavior.
138 InputDeviceSettingsEvdev input_device_settings_; 135 InputDeviceSettingsEvdev input_device_settings_;
139 136
137 // Owned per-device event converters (by path).
138 // NB: This should be destroyed early, before any shared state.
139 std::map<base::FilePath, std::unique_ptr<EventConverterEvdev>> converters_;
140
140 // Support weak pointers for attach & detach callbacks. 141 // Support weak pointers for attach & detach callbacks.
141 base::WeakPtrFactory<InputDeviceFactoryEvdev> weak_ptr_factory_; 142 base::WeakPtrFactory<InputDeviceFactoryEvdev> weak_ptr_factory_;
142 143
143 DISALLOW_COPY_AND_ASSIGN(InputDeviceFactoryEvdev); 144 DISALLOW_COPY_AND_ASSIGN(InputDeviceFactoryEvdev);
144 }; 145 };
145 146
146 } // namespace ui 147 } // namespace ui
147 148
148 #endif // UI_EVENTS_OZONE_EVDEV_INPUT_DEVICE_FACTORY_EVDEV_H_ 149 #endif // UI_EVENTS_OZONE_EVDEV_INPUT_DEVICE_FACTORY_EVDEV_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698