Index: device/hid/input_service_linux.cc |
diff --git a/device/hid/input_service_linux.cc b/device/hid/input_service_linux.cc |
index f6fd0dceb7bf8589fbcf8bee5c649a23978d1327..81cac1a33da7364e9a4fbed161eb19b071e03116 100644 |
--- a/device/hid/input_service_linux.cc |
+++ b/device/hid/input_service_linux.cc |
@@ -90,6 +90,9 @@ class InputServiceLinuxImpl : public InputServiceLinux, |
}; |
InputServiceLinuxImpl::InputServiceLinuxImpl() { |
+ base::ThreadRestrictions::AssertIOAllowed(); |
+ base::MessageLoop::current()->AddDestructionObserver(this); |
+ |
DeviceMonitorLinux::GetInstance()->AddObserver(this); |
DeviceMonitorLinux::GetInstance()->Enumerate(base::Bind( |
&InputServiceLinuxImpl::OnDeviceAdded, base::Unretained(this))); |
@@ -98,6 +101,7 @@ InputServiceLinuxImpl::InputServiceLinuxImpl() { |
InputServiceLinuxImpl::~InputServiceLinuxImpl() { |
if (DeviceMonitorLinux::HasInstance()) |
DeviceMonitorLinux::GetInstance()->RemoveObserver(this); |
+ base::MessageLoop::current()->RemoveDestructionObserver(this); |
} |
void InputServiceLinuxImpl::OnDeviceAdded(udev_device* device) { |
@@ -162,13 +166,10 @@ InputServiceLinux::InputDeviceInfo::InputDeviceInfo() |
is_touchscreen(false) {} |
InputServiceLinux::InputServiceLinux() { |
- base::ThreadRestrictions::AssertIOAllowed(); |
- base::MessageLoop::current()->AddDestructionObserver(this); |
} |
InputServiceLinux::~InputServiceLinux() { |
DCHECK(CalledOnValidThread()); |
- base::MessageLoop::current()->RemoveDestructionObserver(this); |
} |
// static |