summaryrefslogtreecommitdiffstats
path: root/ui/events/devices/device_data_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ui/events/devices/device_data_manager.cc')
-rw-r--r--ui/events/devices/device_data_manager.cc24
1 files changed, 15 insertions, 9 deletions
diff --git a/ui/events/devices/device_data_manager.cc b/ui/events/devices/device_data_manager.cc
index 44ca1fa..e725736 100644
--- a/ui/events/devices/device_data_manager.cc
+++ b/ui/events/devices/device_data_manager.cc
@@ -25,29 +25,35 @@ bool InputDeviceEquals(const ui::InputDevice& a, const ui::InputDevice& b) {
DeviceDataManager* DeviceDataManager::instance_ = NULL;
DeviceDataManager::DeviceDataManager() {
- CHECK(!instance_) << "Can not create multiple instances of DeviceDataManager";
- instance_ = this;
-
- base::AtExitManager::RegisterTask(
- base::Bind(&base::DeletePointer<DeviceDataManager>, this));
-
ClearTouchDeviceAssociations();
}
DeviceDataManager::~DeviceDataManager() {
- CHECK_EQ(this, instance_);
- instance_ = NULL;
}
// static
DeviceDataManager* DeviceDataManager::instance() { return instance_; }
+void DeviceDataManager::set_instance(DeviceDataManager* instance) {
+ CHECK(!instance_) << "Can not set multiple instances of DeviceDataManager";
+ instance_ = instance;
+}
+
// static
void DeviceDataManager::CreateInstance() {
if (instance())
return;
- new DeviceDataManager();
+ set_instance(new DeviceDataManager());
+
+ base::AtExitManager::RegisterTask(base::Bind(DeleteInstance));
+}
+
+void DeviceDataManager::DeleteInstance() {
+ if (instance_) {
+ delete instance_;
+ instance_ = NULL;
+ }
}
// static