From 49637b249d0387f9c597add750499f1035c84212 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Thu, 7 Sep 2023 21:40:51 +0300 Subject: [PATCH] solid: unmount optical drives conditionally Signed-off-by: Ivailo Monev --- solid/solid/backends/udev/udevopticaldrive.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/solid/solid/backends/udev/udevopticaldrive.cpp b/solid/solid/backends/udev/udevopticaldrive.cpp index b619b8ff..63548bf7 100644 --- a/solid/solid/backends/udev/udevopticaldrive.cpp +++ b/solid/solid/backends/udev/udevopticaldrive.cpp @@ -19,6 +19,7 @@ */ #include "udevopticaldrive.h" +#include "kmountpoint.h" #include #include @@ -64,8 +65,13 @@ OpticalDrive::~OpticalDrive() bool OpticalDrive::eject() { // cdio fails to unmount unless current user is root - QDBusInterface soliduiserver("org.kde.kded", "/modules/soliduiserver", "org.kde.SolidUiServer"); - soliduiserver.call("unmountUdi", m_device->udi()); + const KMountPoint::List mountpoints = KMountPoint::currentMountPoints(); + const QString devname(m_device->deviceProperty("DEVNAME")); + const KMountPoint::Ptr mp = mountpoints.findByDevice(devname); + if (mp && !mp->mountPoint().isEmpty()) { + QDBusInterface soliduiserver("org.kde.kded", "/modules/soliduiserver", "org.kde.SolidUiServer"); + soliduiserver.call("unmountUdi", m_device->udi()); + } emit ejectRequested(m_device->udi());