diff --git a/solid/solid/backends/udisks2/udisksmanager.cpp b/solid/solid/backends/udisks2/udisksmanager.cpp index ecb9add..a73cb32 100644 --- a/solid/solid/backends/udisks2/udisksmanager.cpp +++ b/solid/solid/backends/udisks2/udisksmanager.cpp @@ -203,6 +203,10 @@ void Manager::slotInterfacesAdded(const QDBusObjectPath &object_path, const QVar m_deviceCache.append(udi); Q_EMIT deviceAdded(udi); } + // re-emit in case of 2-stage devices like N9 or some Android phones + else if (m_deviceCache.contains(udi) && interfaces_and_properties.keys().contains(UD2_DBUS_INTERFACE_FILESYSTEM)) { + Q_EMIT deviceAdded(udi); + } } void Manager::slotInterfacesRemoved(const QDBusObjectPath &object_path, const QStringList &interfaces) @@ -222,7 +222,7 @@ void Manager::slotInterfacesRemoved(const QDBusObjectPath &object_path, const QS Device device(udi); - if (!udi.isEmpty() && (interfaces.isEmpty() || device.interfaces().isEmpty() || device.interfaces().contains(UD2_DBUS_INTERFACE_FILESYSTEM))) { + if (!udi.isEmpty() && (interfaces.isEmpty() || device.interfaces().isEmpty() || interfaces.contains(UD2_DBUS_INTERFACE_FILESYSTEM))) { Q_EMIT deviceRemoved(udi); m_deviceCache.removeAll(udi); DeviceBackend::destroyBackend(udi);