[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/solid/solid/backends/udisks
From:       Lukáš Tinkl <lukas () kde ! org>
Date:       2011-01-19 16:56:31
Message-ID: 20110119165631.5A50AAC8B7 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1215781 by lukas:

forwardport, workaround for 2-stage storage drives


 M  +20 -1     udisksmanager.cpp  
 M  +1 -0      udisksmanager.h  


--- trunk/KDE/kdelibs/solid/solid/backends/udisks/udisksmanager.cpp #1215780:1215781
@@ -186,9 +186,16 @@
 {
     const QString udi = opath.path();
 
-    if (!m_deviceCache.isEmpty()) {
+    if (!m_deviceCache.contains(udi)) {
         m_deviceCache.append(udi);
     }
+
+    UDisksDevice device(udi);
+    if (device.queryDeviceInterface(Solid::DeviceInterface::StorageDrive)
+            && !device.property("DeviceIsMediaAvailable").toBool()
+            && !m_dirtyDevices.contains(udi))
+        m_dirtyDevices.append(udi);
+
     emit deviceAdded(udi);
     slotDeviceChanged(opath);  // case: hotswap event (optical drive with media inside)
 }
@@ -204,6 +211,9 @@
         emit deviceRemoved(udi + ":media");
     }
 
+    if (m_dirtyDevices.contains(udi))
+        m_dirtyDevices.removeAll(udi);
+
     emit deviceRemoved(udi);
     m_deviceCache.removeAll(opath.path());
 }
@@ -231,7 +241,16 @@
             emit deviceRemoved(udi + ":media");
         }
     }
+
+    if (device.queryDeviceInterface(Solid::DeviceInterface::StorageDrive)
+            && device.property("DeviceIsMediaAvailable").toBool()
+            && m_dirtyDevices.contains(udi))
+    {
+        //qDebug() << "dirty device added:" << udi;
+        emit deviceAdded(udi);
+        m_dirtyDevices.removeAll(udi);
 }
+}
 
 const QStringList &UDisksManager::deviceCache()
 {
--- trunk/KDE/kdelibs/solid/solid/backends/udisks/udisksmanager.h #1215780:1215781
@@ -61,6 +61,7 @@
     QSet<Solid::DeviceInterface::Type> m_supportedInterfaces;
     QDBusInterface m_manager;
     QStringList m_deviceCache;
+    QStringList m_dirtyDevices; // special 2-stage storage like Nokia N900
 };
 
 }
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic