Index: ui/events/ozone/device/udev/device_manager_udev.cc |
diff --git a/ui/events/ozone/device/udev/device_manager_udev.cc b/ui/events/ozone/device/udev/device_manager_udev.cc |
index 74e50997265b6f5aef539db03f3729761e6a7f44..5264ee21179cefcb75ddec4deda586d0ea2d406f 100644 |
--- a/ui/events/ozone/device/udev/device_manager_udev.cc |
+++ b/ui/events/ozone/device/udev/device_manager_udev.cc |
@@ -79,9 +79,15 @@ scoped_udev_monitor UdevCreateMonitor(struct udev* udev) { |
} // namespace |
DeviceManagerUdev::DeviceManagerUdev() |
- : udev_(UdevCreate()), |
- monitor_(UdevCreateMonitor(udev_.get())) { |
+ : udev_(UdevCreate()) { |
+} |
+ |
+DeviceManagerUdev::~DeviceManagerUdev() {} |
+void DeviceManagerUdev::CreateMonitor() { |
+ if (monitor_) |
+ return; |
+ monitor_ = UdevCreateMonitor(udev_.get()); |
if (monitor_) { |
int fd = udev_monitor_get_fd(monitor_.get()); |
CHECK_GT(fd, 0); |
@@ -90,9 +96,9 @@ DeviceManagerUdev::DeviceManagerUdev() |
} |
} |
-DeviceManagerUdev::~DeviceManagerUdev() {} |
- |
void DeviceManagerUdev::ScanDevices(DeviceEventObserver* observer) { |
+ CreateMonitor(); |
+ |
scoped_udev_enumerate enumerate(udev_enumerate_new(udev_.get())); |
if (!enumerate) |
return; |