diff options
author | Matt Ranostay <matt.ranostay@konsulko.com> | 2017-04-20 20:26:12 -0700 |
---|---|---|
committer | Matt Ranostay <matt.ranostay@konsulko.com> | 2017-04-20 21:46:25 -0700 |
commit | 3bf175c871cac7d6b60d8263196262ea5ffcda74 (patch) | |
tree | 013bd40e7ded4980777bc4bf547169e669dcf9c1 /app/dbus.cpp | |
parent | 1f14b62977b3deb285be13f4ede2449df76f24c1 (diff) |
dbus: monitor for udisks media removal events
This makes assumptions that there is only one media device
allowed at a time.
Bug-AGL: SPEC-527
Change-Id: Ide3d760f147551945cc14b7f6b66bd025634a17b
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
Diffstat (limited to 'app/dbus.cpp')
-rw-r--r-- | app/dbus.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/app/dbus.cpp b/app/dbus.cpp index 0deb4ee..3c298a0 100644 --- a/app/dbus.cpp +++ b/app/dbus.cpp @@ -28,11 +28,26 @@ DbusService::DbusService(QObject *parent) : QObject(parent) bool DbusService::enableLMS() { QDBusConnection session_bus = QDBusConnection::sessionBus(); + QDBusConnection system_bus = QDBusConnection::systemBus(); + bool ret; if (!session_bus.isConnected()) return false; - return session_bus.connect(QString("org.lightmediascanner"), QString("/org/lightmediascanner/Scanner1"), "org.freedesktop.DBus.Properties", "PropertiesChanged", this, SLOT(lmsUpdate(QString,QVariantMap,QStringList))); + if (!system_bus.isConnected()) + return false; + + ret = session_bus.connect(QString("org.lightmediascanner"), QString("/org/lightmediascanner/Scanner1"), "org.freedesktop.DBus.Properties", "PropertiesChanged", this, SLOT(lmsUpdate(QString,QVariantMap,QStringList))); + if (!ret) + return false; + + /* Only subscribe to DeviceRemoved events, since we need lms scan to complete on insert */ + return system_bus.connect(QString("org.freedesktop.UDisks"), QString("/org/freedesktop/UDisks"), "org.freedesktop.UDisks", "DeviceRemoved", this, SLOT(mediaRemoved(QDBusObjectPath))); +} + +void DbusService::mediaRemoved(const QDBusObjectPath&) +{ + emit stopPlayback(); } #if defined(HAVE_LIGHTMEDIASCANNER) |