libcamera: device_enumerator_udev: Use std::string_view
In `udevNotify()`, constructing an std::string from the device's associated action is unnecessary as it is only compared against static strings, and for that purpose an std::string_view works just as well, while being cheaper to construct. In the same vein, an std::string_view can be used to store the device's devnode initially, and the string construction can be deferred until it is needed. Furthermore, previously `udev_device_get_devnode()` was called twice. The extra call is now removed. Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
committed by
Laurent Pinchart
parent
e0a51061bc
commit
46852241a3
@@ -13,6 +13,7 @@
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <string.h>
|
||||
#include <string_view>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/sysmacros.h>
|
||||
#include <unistd.h>
|
||||
@@ -331,18 +332,18 @@ int DeviceEnumeratorUdev::addV4L2Device(dev_t devnum)
|
||||
void DeviceEnumeratorUdev::udevNotify()
|
||||
{
|
||||
struct udev_device *dev = udev_monitor_receive_device(monitor_);
|
||||
std::string action(udev_device_get_action(dev));
|
||||
std::string deviceNode(udev_device_get_devnode(dev));
|
||||
std::string_view action(udev_device_get_action(dev));
|
||||
std::string_view deviceNode(udev_device_get_devnode(dev));
|
||||
|
||||
LOG(DeviceEnumerator, Debug)
|
||||
<< action << " device " << udev_device_get_devnode(dev);
|
||||
<< action << " device " << deviceNode;
|
||||
|
||||
if (action == "add") {
|
||||
addUdevDevice(dev);
|
||||
} else if (action == "remove") {
|
||||
const char *subsystem = udev_device_get_subsystem(dev);
|
||||
if (subsystem && !strcmp(subsystem, "media"))
|
||||
removeDevice(deviceNode);
|
||||
removeDevice(std::string(deviceNode));
|
||||
}
|
||||
|
||||
udev_device_unref(dev);
|
||||
|
||||
Reference in New Issue
Block a user