solid: unmount optical drives conditionally

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-09-07 21:40:51 +03:00
parent b77a8b70fd
commit 49637b249d

View file

@ -19,6 +19,7 @@
*/
#include "udevopticaldrive.h"
#include "kmountpoint.h"
#include <QDBusInterface>
#include <QDBusReply>
@ -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());