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

Side by Side Diff: ui/events/ozone/device/udev/device_manager_udev.cc

Issue 291473002: ozone: Initialize a subsystem only if necessary. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tot-merge-r270817 Created 6 years, 7 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 | Annotate | Revision Log
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 #include "ui/events/ozone/device/udev/device_manager_udev.h" 5 #include "ui/events/ozone/device/udev/device_manager_udev.h"
6 6
7 #include <libudev.h> 7 #include <libudev.h>
8 8
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 LOG(ERROR) << "Failed to start receiving events from udev"; 71 LOG(ERROR) << "Failed to start receiving events from udev";
72 } else { 72 } else {
73 LOG(ERROR) << "Failed to create udev monitor"; 73 LOG(ERROR) << "Failed to create udev monitor";
74 } 74 }
75 75
76 return scoped_udev_monitor(monitor); 76 return scoped_udev_monitor(monitor);
77 } 77 }
78 78
79 } // namespace 79 } // namespace
80 80
81 DeviceManagerUdev::DeviceManagerUdev() 81 DeviceManagerUdev::DeviceManagerUdev() : udev_(UdevCreate()) {
82 : udev_(UdevCreate()), 82 }
83 monitor_(UdevCreateMonitor(udev_.get())) {
84 83
84 DeviceManagerUdev::~DeviceManagerUdev() {
85 }
86
87 void DeviceManagerUdev::CreateMonitor() {
88 if (monitor_)
89 return;
90 monitor_ = UdevCreateMonitor(udev_.get());
85 if (monitor_) { 91 if (monitor_) {
86 int fd = udev_monitor_get_fd(monitor_.get()); 92 int fd = udev_monitor_get_fd(monitor_.get());
87 CHECK_GT(fd, 0); 93 CHECK_GT(fd, 0);
88 base::MessageLoopForUI::current()->WatchFileDescriptor( 94 base::MessageLoopForUI::current()->WatchFileDescriptor(
89 fd, true, base::MessagePumpLibevent::WATCH_READ, &controller_, this); 95 fd, true, base::MessagePumpLibevent::WATCH_READ, &controller_, this);
90 } 96 }
91 } 97 }
92 98
93 DeviceManagerUdev::~DeviceManagerUdev() {} 99 void DeviceManagerUdev::ScanDevices(DeviceEventObserver* observer) {
100 CreateMonitor();
94 101
95 void DeviceManagerUdev::ScanDevices(DeviceEventObserver* observer) {
96 scoped_udev_enumerate enumerate(udev_enumerate_new(udev_.get())); 102 scoped_udev_enumerate enumerate(udev_enumerate_new(udev_.get()));
97 if (!enumerate) 103 if (!enumerate)
98 return; 104 return;
99 105
100 for (size_t i = 0; i < arraysize(kSubsystems); ++i) 106 for (size_t i = 0; i < arraysize(kSubsystems); ++i)
101 udev_enumerate_add_match_subsystem(enumerate.get(), kSubsystems[i]); 107 udev_enumerate_add_match_subsystem(enumerate.get(), kSubsystems[i]);
102 udev_enumerate_scan_devices(enumerate.get()); 108 udev_enumerate_scan_devices(enumerate.get());
103 109
104 struct udev_list_entry* devices = 110 struct udev_list_entry* devices =
105 udev_enumerate_get_list_entry(enumerate.get()); 111 udev_enumerate_get_list_entry(enumerate.get());
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 else if (!strcmp(action, "change")) 176 else if (!strcmp(action, "change"))
171 action_type = DeviceEvent::CHANGE; 177 action_type = DeviceEvent::CHANGE;
172 else 178 else
173 return scoped_ptr<DeviceEvent>(); 179 return scoped_ptr<DeviceEvent>();
174 180
175 return scoped_ptr<DeviceEvent>( 181 return scoped_ptr<DeviceEvent>(
176 new DeviceEvent(device_type, action_type, base::FilePath(path))); 182 new DeviceEvent(device_type, action_type, base::FilePath(path)));
177 } 183 }
178 184
179 } // namespace ui 185 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/ozone/device/udev/device_manager_udev.h ('k') | ui/events/ozone/evdev/event_factory_evdev.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698