[kdelibs] Resolves #868530 - cache information about solid device in 'Places'
Lukas Tinkl
ltinkl at fedoraproject.org
Mon Oct 29 17:26:29 UTC 2012
commit 032b78558d03c9f15e204698bcc04e925cf713ce
Author: Lukáš Tinkl <lukas at kde.org>
Date: Mon Oct 29 18:26:23 2012 +0100
Resolves #868530 - cache information about solid device in 'Places'
panel in open/save dialog
- update solid/udisks2 backend, switch to cmake-define
kdelibs-udisks2-backend.patch | 332 +++++++++++++++++++----------------------
kdelibs.spec | 12 ++-
2 files changed, 166 insertions(+), 178 deletions(-)
---
diff --git a/kdelibs-udisks2-backend.patch b/kdelibs-udisks2-backend.patch
index 09c3eb5..fb87c38 100644
--- a/kdelibs-udisks2-backend.patch
+++ b/kdelibs-udisks2-backend.patch
@@ -1,5 +1,5 @@
diff --git a/solid/solid/CMakeLists.txt b/solid/solid/CMakeLists.txt
-index 0aa7a43..0a74053 100644
+index 0aa7a43..5cd1484 100644
--- a/solid/solid/CMakeLists.txt
+++ b/solid/solid/CMakeLists.txt
@@ -1,6 +1,7 @@
@@ -10,55 +10,12 @@ index 0aa7a43..0a74053 100644
if(WIN32)
include_directories( ${KDEWIN_INCLUDES} )
-@@ -39,7 +40,6 @@ configure_file(config-processor.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-proce
-
- file(MAKE_DIRECTORY
- ${CMAKE_CURRENT_BINARY_DIR}/backends/fakehw
-- ${CMAKE_CURRENT_BINARY_DIR}/backends/hal
- ${CMAKE_CURRENT_BINARY_DIR}/backends/udev
- ${CMAKE_CURRENT_BINARY_DIR}/backends/wmi
- )
-@@ -225,33 +225,6 @@ if(NOT WIN32 AND NOT APPLE)
- endif( UDEV_FOUND )
-
-
-- message(STATUS "Building Solid HAL backend." )
-- set(solid_LIB_SRCS ${solid_LIB_SRCS}
-- backends/hal/halacadapter.cpp
-- backends/hal/halaudiointerface.cpp
-- backends/hal/halbattery.cpp
-- backends/hal/halblock.cpp
-- backends/hal/halbutton.cpp
-- backends/hal/halcamera.cpp
-- backends/hal/halcdrom.cpp
-- backends/hal/haldeviceinterface.cpp
-- backends/hal/haldvbinterface.cpp
-- backends/hal/halfstabhandling.cpp
-- backends/hal/halgenericinterface.cpp
-- backends/hal/haldevice.cpp
-- backends/hal/halmanager.cpp
-- backends/hal/halnetworkinterface.cpp
-- backends/hal/halserialinterface.cpp
-- backends/hal/halopticaldisc.cpp
-- backends/hal/halportablemediaplayer.cpp
-- backends/hal/halprocessor.cpp
-- backends/hal/halstorageaccess.cpp
-- backends/hal/halstorage.cpp
-- backends/hal/halvideo.cpp
-- backends/hal/halvolume.cpp
-- backends/hal/halsmartcardreader.cpp
-- )
--
- message(STATUS "Building Solid UPower backend." )
- set(solid_LIB_SRCS ${solid_LIB_SRCS}
- backends/upower/upowermanager.cpp
-@@ -264,18 +237,19 @@ if(NOT WIN32 AND NOT APPLE)
+@@ -264,19 +265,38 @@ if(NOT WIN32 AND NOT APPLE)
# FIXME: this should work on more Unix systems
if (CMAKE_SYSTEM_NAME MATCHES Linux)
- message(STATUS "Building Solid UDisks backend." )
-+ message(STATUS "Building Solid UDisks2 backend." )
- set(solid_LIB_SRCS ${solid_LIB_SRCS}
+- set(solid_LIB_SRCS ${solid_LIB_SRCS}
- backends/udisks/udisksmanager.cpp
- backends/udisks/udisksdevice.cpp
- backends/udisks/udisksblock.cpp
@@ -69,20 +26,42 @@ index 0aa7a43..0a74053 100644
- backends/udisks/udisksstoragedrive.cpp
- backends/udisks/udisksstorageaccess.cpp
- backends/udisks/udisksgenericinterface.cpp
-+ backends/udisks2/udisksmanager.cpp
-+ backends/udisks2/udisksdevice.cpp
-+ backends/udisks2/udisksblock.cpp
-+ backends/udisks2/udisksstoragevolume.cpp
-+ backends/udisks2/udisksdeviceinterface.cpp
-+ backends/udisks2/udisksopticaldisc.cpp
-+ backends/udisks2/udisksopticaldrive.cpp
-+ backends/udisks2/udisksstoragedrive.cpp
-+ backends/udisks2/udisksstorageaccess.cpp
-+ backends/udisks2/udisksgenericinterface.cpp
-+ backends/udisks2/dbus/manager.cpp
- )
+- )
++
++ if ( WITH_SOLID_UDISKS2 )
++ message(STATUS "Building Solid UDisks2 backend." )
++ add_definitions(-DWITH_SOLID_UDISKS2)
++ set(solid_LIB_SRCS ${solid_LIB_SRCS}
++ backends/udisks2/udisksmanager.cpp
++ backends/udisks2/udisksdevice.cpp
++ backends/udisks2/udisksblock.cpp
++ backends/udisks2/udisksstoragevolume.cpp
++ backends/udisks2/udisksdeviceinterface.cpp
++ backends/udisks2/udisksopticaldisc.cpp
++ backends/udisks2/udisksopticaldrive.cpp
++ backends/udisks2/udisksstoragedrive.cpp
++ backends/udisks2/udisksstorageaccess.cpp
++ backends/udisks2/udisksgenericinterface.cpp
++ backends/udisks2/dbus/manager.cpp
++ )
++ else ( WITH_SOLID_UDISKS2 )
++ message(STATUS "Building Solid UDisks backend." )
++ set(solid_LIB_SRCS ${solid_LIB_SRCS}
++ backends/udisks/udisksmanager.cpp
++ backends/udisks/udisksdevice.cpp
++ backends/udisks/udisksblock.cpp
++ backends/udisks/udisksstoragevolume.cpp
++ backends/udisks/udisksdeviceinterface.cpp
++ backends/udisks/udisksopticaldisc.cpp
++ backends/udisks/udisksopticaldrive.cpp
++ backends/udisks/udisksstoragedrive.cpp
++ backends/udisks/udisksstorageaccess.cpp
++ backends/udisks/udisksgenericinterface.cpp
++ )
++ endif ( WITH_SOLID_UDISKS2 )
endif (CMAKE_SYSTEM_NAME MATCHES Linux)
+ message(STATUS "Building Solid fstab backend." )
diff --git a/solid/solid/backends/udisks2/dbus/manager.cpp b/solid/solid/backends/udisks2/dbus/manager.cpp
new file mode 100644
index 0000000..7ea4aa8
@@ -209,10 +188,10 @@ index 0000000..8f25cb6
+</node>
diff --git a/solid/solid/backends/udisks2/udisks2.h b/solid/solid/backends/udisks2/udisks2.h
new file mode 100644
-index 0000000..25a1dc0
+index 0000000..8dda86a
--- /dev/null
+++ b/solid/solid/backends/udisks2/udisks2.h
-@@ -0,0 +1,77 @@
+@@ -0,0 +1,78 @@
+/*
+ Copyright 2012 Lukáš Tinkl <ltinkl at redhat.com>
+
@@ -268,6 +247,7 @@ index 0000000..25a1dc0
+#define UD2_DBUS_INTERFACE_FILESYSTEM "org.freedesktop.UDisks2.Filesystem"
+#define UD2_DBUS_INTERFACE_ENCRYPTED "org.freedesktop.UDisks2.Encrypted"
+#define UD2_DBUS_INTERFACE_SWAP "org.freedesktop.UDisks2.Swapspace"
++#define UD2_DBUS_INTERFACE_LOOP "org.freedesktop.UDisks2.Loop"
+
+/* errors */
+#define UD2_ERROR_UNAUTHORIZED "org.freedesktop.PolicyKit.Error.NotAuthorized"
@@ -292,10 +272,10 @@ index 0000000..25a1dc0
+#endif // SOLID_BACKENDS_UDISKS2_H
diff --git a/solid/solid/backends/udisks2/udisksblock.cpp b/solid/solid/backends/udisks2/udisksblock.cpp
new file mode 100644
-index 0000000..474f3d6
+index 0000000..f3cd1e8
--- /dev/null
+++ b/solid/solid/backends/udisks2/udisksblock.cpp
-@@ -0,0 +1,84 @@
+@@ -0,0 +1,88 @@
+/*
+ Copyright 2012 Lukáš Tinkl <ltinkl at redhat.com>
+
@@ -321,9 +301,9 @@ index 0000000..474f3d6
+#include <QFile>
+#include <QtDBus/QDBusConnection>
+#include <QtDBus/QDBusPendingReply>
++#include <QtXml/QDomDocument>
+
+#include "udisksblock.h"
-+#include "dbus/manager.h"
+
+using namespace Solid::Backends::UDisks2;
+
@@ -335,28 +315,32 @@ index 0000000..474f3d6
+
+ // we have a drive (non-block device for udisks), so let's find the corresponding (real) block device
+ if (m_devNum == 0 || m_devFile.isEmpty()) {
-+ org::freedesktop::DBus::ObjectManager manager(UD2_DBUS_SERVICE, UD2_DBUS_PATH, QDBusConnection::systemBus());
-+ QDBusPendingReply<DBUSManagerStruct> reply = manager.GetManagedObjects();
++ const QString path = "/org/freedesktop/UDisks2/block_devices";
++ QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, path,
++ DBUS_INTERFACE_INTROSPECT, "Introspect");
++ QDBusPendingReply<QString> reply = QDBusConnection::systemBus().asyncCall(call);
+ reply.waitForFinished();
-+ if (!reply.isError()) { // enum devices
-+ Q_FOREACH(const QDBusObjectPath &path, reply.value().keys()) {
-+ const QString udi = path.path();
-+
-+ if (udi == UD2_DBUS_PATH_MANAGER || udi == UD2_UDI_DISKS_PREFIX || udi.startsWith(UD2_DBUS_PATH_JOBS))
-+ continue;
+
-+ Device device(udi);
-+ if (device.drivePath() == dev->udi()) {
-+ m_devNum = device.prop("DeviceNumber").toULongLong();
-+ m_devFile = QFile::decodeName(device.prop("Device").toByteArray());
-+ break;
++ if (reply.isValid()) {
++ QDomDocument dom;
++ dom.setContent(reply.value());
++ QDomNodeList nodeList = dom.documentElement().elementsByTagName("node");
++ for (int i = 0; i < nodeList.count(); i++) {
++ QDomElement nodeElem = nodeList.item(i).toElement();
++ if (!nodeElem.isNull() && nodeElem.hasAttribute("name")) {
++ const QString udi = path + "/" + nodeElem.attribute("name");
++
++ Device device(udi);
++ if (device.drivePath() == dev->udi()) {
++ m_devNum = device.prop("DeviceNumber").toULongLong();
++ m_devFile = QFile::decodeName(device.prop("Device").toByteArray());
++ break;
++ }
+ }
+ }
+ }
-+ else // show error
-+ {
++ else
+ qWarning() << "Failed enumerating UDisks2 objects:" << reply.error().name() << "\n" << reply.error().message();
-+ }
+ }
+
+ //qDebug() << "devnum:" << m_devNum << "dev file:" << m_devFile;
@@ -444,10 +428,10 @@ index 0000000..19cb70a
+#endif // UDISKS2BLOCK_H
diff --git a/solid/solid/backends/udisks2/udisksdevice.cpp b/solid/solid/backends/udisks2/udisksdevice.cpp
new file mode 100644
-index 0000000..22b0c45
+index 0000000..a3f780f
--- /dev/null
+++ b/solid/solid/backends/udisks2/udisksdevice.cpp
-@@ -0,0 +1,910 @@
+@@ -0,0 +1,927 @@
+/*
+ Copyright 2010 Michael Zanetti <mzanetti at kde.org>
+ Copyright 2010-2012 Lukáš Tinkl <ltinkl at redhat.com>
@@ -651,11 +635,15 @@ index 0000000..22b0c45
+
+QString Device::description() const
+{
-+ const QString hintName = prop("HintName").toString();
++ const QString hintName = property("HintName").toString(); // non-cached
+ if (!hintName.isEmpty())
+ return hintName;
+
-+ if (queryDeviceInterface(Solid::DeviceInterface::StorageDrive))
++ if (isLoop())
++ return QObject::tr("Loop Device");
++ else if (isSwap())
++ return QObject::tr("Swap Space");
++ else if (queryDeviceInterface(Solid::DeviceInterface::StorageDrive))
+ return storageDescription();
+ else if (queryDeviceInterface(Solid::DeviceInterface::StorageVolume))
+ return volumeDescription();
@@ -668,7 +656,7 @@ index 0000000..22b0c45
+ QString description;
+ const UDisks2::StorageDrive storageDrive(const_cast<Device*>(this));
+ Solid::StorageDrive::DriveType drive_type = storageDrive.driveType();
-+ bool drive_is_hotpluggable = storageDrive.isHotpluggable();
++ const bool drive_is_hotpluggable = storageDrive.isHotpluggable();
+
+ if (drive_type == Solid::StorageDrive::CdromDrive)
+ {
@@ -740,7 +728,7 @@ index 0000000..22b0c45
+ return description;
+ }
+
-+ bool drive_is_removable = storageDrive.isRemovable();
++ const bool drive_is_removable = storageDrive.isRemovable();
+
+ if (drive_type == Solid::StorageDrive::HardDisk && !drive_is_removable)
+ {
@@ -973,19 +961,23 @@ index 0000000..22b0c45
+
+QString Device::icon() const
+{
-+ QString iconName = prop( "HintIconName" ).toString();
++ QString iconName = property( "HintIconName" ).toString(); // non-cached
+
+ if ( !iconName.isEmpty() )
+ {
+ return iconName;
+ }
++ else if (isLoop() || isSwap())
++ {
++ return "drive-harddisk";
++ }
+ else if (isDrive()) {
+ const bool isRemovable = prop("Removable").toBool();
+ const QString conn = prop("ConnectionBus").toString();
+
+ if (isOpticalDrive())
+ return "drive-optical";
-+ else if (isRemovable && !isOpticalDisc()) {
++ else if (isRemovable && !prop("Optical").toBool()) {
+ if (conn == "usb")
+ return "drive-removable-media-usb";
+ else
@@ -993,14 +985,18 @@ index 0000000..22b0c45
+ }
+ }
+ else if (isBlock()) {
-+ Device drive(drivePath());
++ const QString drv = drivePath();
++ if (drv.isEmpty() || drv == "/")
++ return "drive-harddisk"; // stuff like loop devices or swap which don't have the Drive prop set
++
++ Device drive(drv);
+
+ // handle media
+ const QString media = drive.prop("Media").toString();
+
+ if ( !media.isEmpty() )
+ {
-+ if ( isOpticalDisc() ) // optical stuff
++ if ( drive.prop("Optical").toBool() ) // optical stuff
+ {
+ bool isWritable = drive.prop("OpticalBlank").toBool();
+
@@ -1107,8 +1103,7 @@ index 0000000..22b0c45
+ if (reply.isValid()) {
+ m_cache.insert(key, reply);
+ } else {
-+ //qDebug() << "got invalid reply for cache:" << key;
-+ //m_cache.insert(key, QVariant());
++ qWarning() << "got invalid reply for cache:" << key;
+ }
+}
+
@@ -1140,11 +1135,12 @@ index 0000000..22b0c45
+
+QVariantMap Device::allProperties() const
+{
++ QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, m_udi, DBUS_INTERFACE_PROPS, "GetAll");
++
+ Q_FOREACH (const QString & iface, m_interfaces) {
+ if (iface.startsWith("org.freedesktop.DBus"))
+ continue;
-+ QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, m_udi, DBUS_INTERFACE_PROPS, "GetAll");
-+ call << iface;
++ call.setArguments(QVariantList() << iface);
+ QDBusPendingReply<QVariantMap> reply = QDBusConnection::systemBus().asyncCall(call);
+ reply.waitForFinished();
+
@@ -1354,16 +1350,21 @@ index 0000000..22b0c45
+ return hasInterface(UD2_DBUS_INTERFACE_SWAP);
+}
+
++bool Device::isLoop() const
++{
++ return hasInterface(UD2_DBUS_INTERFACE_LOOP);
++}
++
+QString Device::drivePath() const
+{
+ return prop("Drive").value<QDBusObjectPath>().path();
+}
diff --git a/solid/solid/backends/udisks2/udisksdevice.h b/solid/solid/backends/udisks2/udisksdevice.h
new file mode 100644
-index 0000000..cf8e2f5
+index 0000000..7e27634
--- /dev/null
+++ b/solid/solid/backends/udisks2/udisksdevice.h
-@@ -0,0 +1,112 @@
+@@ -0,0 +1,113 @@
+/*
+ Copyright 2010 Michael Zanetti <mzanetti at kde.org>
+ Copyright 2010-2012 Lukáš Tinkl <ltinkl at redhat.com>
@@ -1445,6 +1446,7 @@ index 0000000..cf8e2f5
+ bool isEncryptedContainer() const;
+ bool isEncryptedCleartext() const;
+ bool isSwap() const;
++ bool isLoop() const;
+
+ QString drivePath() const;
+
@@ -1793,10 +1795,10 @@ index 0000000..d225f32
+#endif // SOLID_BACKENDS_UDISKS2_GENERICINTERFACE_H
diff --git a/solid/solid/backends/udisks2/udisksmanager.cpp b/solid/solid/backends/udisks2/udisksmanager.cpp
new file mode 100644
-index 0000000..46d934e
+index 0000000..fab5208
--- /dev/null
+++ b/solid/solid/backends/udisks2/udisksmanager.cpp
-@@ -0,0 +1,228 @@
+@@ -0,0 +1,269 @@
+/*
+ Copyright 2012 Lukáš Tinkl <ltinkl at redhat.com>
+
@@ -1822,6 +1824,7 @@ index 0000000..46d934e
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDebug>
+#include <QtDBus>
++#include <QtXml/QDomDocument>
+
+#include "../shared/rootdevice.h"
+
@@ -1927,6 +1930,7 @@ index 0000000..46d934e
+{
+ m_deviceCache.clear();
+
++#if 0
+ QDBusPendingReply<DBUSManagerStruct> reply = m_manager.GetManagedObjects();
+ reply.waitForFinished();
+ if (!reply.isError()) { // enum devices
@@ -1955,9 +1959,47 @@ index 0000000..46d934e
+ qWarning() << "Failed enumerating UDisks2 objects:" << reply.error().name() << "\n" << reply.error().message();
+ }
+
++#endif
++
++ introspect("/org/freedesktop/UDisks2/block_devices", true /*checkOptical*/);
++ introspect("/org/freedesktop/UDisks2/drives");
++
+ return m_deviceCache;
+}
+
++void Manager::introspect(const QString & path, bool checkOptical)
++{
++ QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, path,
++ DBUS_INTERFACE_INTROSPECT, "Introspect");
++ QDBusPendingReply<QString> reply = QDBusConnection::systemBus().asyncCall(call);
++ reply.waitForFinished();
++
++ if (reply.isValid()) {
++ QDomDocument dom;
++ dom.setContent(reply.value());
++ QDomNodeList nodeList = dom.documentElement().elementsByTagName("node");
++ for (int i = 0; i < nodeList.count(); i++) {
++ QDomElement nodeElem = nodeList.item(i).toElement();
++ if (!nodeElem.isNull() && nodeElem.hasAttribute("name")) {
++ const QString udi = path + "/" + nodeElem.attribute("name");
++
++ if (checkOptical) {
++ Device device(udi);
++ if (device.mightBeOpticalDisc()) {
++ QDBusConnection::systemBus().connect(UD2_DBUS_SERVICE, udi, DBUS_INTERFACE_PROPS, "PropertiesChanged", this,
++ SLOT(slotMediaChanged(QDBusMessage)));
++ if (!device.isOpticalDisc()) // skip empty CD disc
++ continue;
++ }
++ }
++
++ m_deviceCache.append(udi);
++ }
++ }
++ }
++ else
++ qWarning() << "Failed enumerating UDisks2 objects:" << reply.error().name() << "\n" << reply.error().message();
++}
+
+QSet< Solid::DeviceInterface::Type > Manager::supportedInterfaces() const
+{
@@ -2025,12 +2067,13 @@ index 0000000..46d934e
+
+ return m_deviceCache;
+}
++
diff --git a/solid/solid/backends/udisks2/udisksmanager.h b/solid/solid/backends/udisks2/udisksmanager.h
new file mode 100644
-index 0000000..7cf0a72
+index 0000000..fb929ce
--- /dev/null
+++ b/solid/solid/backends/udisks2/udisksmanager.h
-@@ -0,0 +1,69 @@
+@@ -0,0 +1,70 @@
+/*
+ Copyright 2010 Michael Zanetti <mzanetti at kde.org>
+ Copyright 2010-2012 Lukáš Tinkl <ltinkl at redhat.com>
@@ -2091,6 +2134,7 @@ index 0000000..7cf0a72
+
+private:
+ const QStringList &deviceCache();
++ void introspect(const QString & path, bool checkOptical = false);
+ QSet<Solid::DeviceInterface::Type> m_supportedInterfaces;
+ org::freedesktop::DBus::ObjectManager m_manager;
+ QStringList m_deviceCache;
@@ -3666,94 +3710,30 @@ index 0000000..2ca04d2
+
+#endif // UDISKS2STORAGEVOLUME_H
diff --git a/solid/solid/managerbase.cpp b/solid/solid/managerbase.cpp
-index fb5a67c..d832f31 100644
+index fb5a67c..beaeac5 100644
--- a/solid/solid/managerbase.cpp
+++ b/solid/solid/managerbase.cpp
-@@ -21,7 +21,7 @@
- #include "managerbase_p.h"
-
- #include <stdlib.h>
--#if !defined (Q_WS_WIN) && !defined (Q_OS_MAC)
-+#if !defined (Q_OS_WIN) && !defined (Q_OS_MAC)
- #include <config-solid.h>
- #endif
-
-@@ -30,8 +30,7 @@
- #if defined (Q_OS_MAC)
+@@ -31,7 +31,11 @@
#include "backends/iokit/iokitmanager.h"
#elif defined (Q_OS_UNIX)
--#include "backends/hal/halmanager.h"
--#include "backends/udisks/udisksmanager.h"
+ #include "backends/hal/halmanager.h"
++#if defined (WITH_SOLID_UDISKS2)
+#include "backends/udisks2/udisksmanager.h"
++#else
+ #include "backends/udisks/udisksmanager.h"
++#endif
#include "backends/upower/upowermanager.h"
#if defined (HUPNP_FOUND)
-@@ -44,7 +43,7 @@
-
- #include "backends/fstab/fstabmanager.h"
-
--#elif defined (Q_WS_WIN) && defined(HAVE_WBEM) && !defined(_WIN32_WCE)
-+#elif defined (Q_OS_WIN) && defined(HAVE_WBEM) && !defined(_WIN32_WCE)
- #include "backends/wmi/wmimanager.h"
- #endif
-
-@@ -68,25 +67,16 @@ void Solid::ManagerBasePrivate::loadBackends()
- # if defined(Q_OS_MAC)
- m_backends << new Solid::Backends::IOKit::IOKitManager(0);
-
--# elif defined(Q_WS_WIN) && defined(HAVE_WBEM) && !defined(_WIN32_WCE)
-+# elif defined(Q_OS_WIN) && defined(HAVE_WBEM) && !defined(_WIN32_WCE)
- m_backends << new Solid::Backends::Wmi::WmiManager(0);
-
--# elif defined(Q_OS_UNIX) && !defined(Q_OS_LINUX)
-- m_backends << new Solid::Backends::Hal::HalManager(0);
--
- # elif defined(Q_OS_LINUX)
-- bool solidHalLegacyEnabled
-- = QString::fromLocal8Bit(qgetenv("SOLID_HAL_LEGACY")).toInt()==1;
-- if (solidHalLegacyEnabled) {
-- m_backends << new Solid::Backends::Hal::HalManager(0);
-- } else {
+@@ -83,7 +87,11 @@ void Solid::ManagerBasePrivate::loadBackends()
# if defined(UDEV_FOUND)
m_backends << new Solid::Backends::UDev::UDevManager(0);
# endif
-- m_backends << new Solid::Backends::UDisks::UDisksManager(0)
++# if defined(WITH_SOLID_UDISKS2)
+ m_backends << new Solid::Backends::UDisks2::Manager(0)
++# else
+ m_backends << new Solid::Backends::UDisks::UDisksManager(0)
++# endif
<< new Solid::Backends::UPower::UPowerManager(0)
<< new Solid::Backends::Fstab::FstabManager(0);
-- }
- # endif
-
- # if defined (HUPNP_FOUND)
-@@ -99,5 +89,3 @@ QList<QObject*> Solid::ManagerBasePrivate::managerBackends() const
- {
- return m_backends;
- }
--
--
-diff --git a/solid/tests/CMakeLists.txt b/solid/tests/CMakeLists.txt
-index ef507d1..b9f3720 100644
---- a/solid/tests/CMakeLists.txt
-+++ b/solid/tests/CMakeLists.txt
-@@ -15,21 +15,6 @@ endif(WIN32)
- target_link_libraries(fakehardwaretest solid_static ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTTEST_LIBRARY} )
- add_definitions(-DTEST_DATA="\\"${CMAKE_CURRENT_SOURCE_DIR}/../solid/backends/fakehw/fakecomputer.xml\\"")
-
--
--########### halbasictest ###############
--
--if(NOT WIN32 AND NOT APPLE)
--set(halbasictest_SRCS halbasictest.cpp )
--
--kde4_add_executable(halbasictest ${halbasictest_SRCS})
--
--if(WIN32)
-- set_target_properties(halbasictest PROPERTIES COMPILE_FLAGS -DSOLID_EXPORT=)
--endif(WIN32)
--
--target_link_libraries(halbasictest solid_static ${KDEWIN_LIBRARIES} ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTTEST_LIBRARY} )
--endif(NOT WIN32 AND NOT APPLE)
--
- ########### solidhwtest ###############
-
- set(solidhwtest_SRCS
+ }
diff --git a/kdelibs.spec b/kdelibs.spec
index 6e3e0f0..f5fd35b 100644
--- a/kdelibs.spec
+++ b/kdelibs.spec
@@ -25,7 +25,7 @@
Summary: KDE Libraries
Version: 4.9.2
-Release: 8%{?dist}
+Release: 9%{?dist}
Name: kdelibs
Epoch: 6
@@ -121,7 +121,7 @@ Patch42: 0003-Implement-automatic-scanning-of-source-code-for-requ.patch
# make forcefully hal-free build
Patch45: kdelibs-4.7.3-halectomy.patch
-# udisks2 Solid backend, halectomy
+# udisks2 Solid backend
Patch47: kdelibs-udisks2-backend.patch
## upstreamable
@@ -350,6 +350,9 @@ mkdir -p %{_target_platform}
pushd %{_target_platform}
%{cmake_kde4} \
-DKDE_DISTRIBUTION_TEXT="%{version}-%{release} Fedora" \
+ %if 0%{?rhel} > 6 || 0%{?fedora} > 17
+ -DWITH_SOLID_UDISKS2:BOOL=ON \
+ %endif
..
popd
@@ -590,6 +593,11 @@ rm -rf %{buildroot}
%changelog
+* Mon Oct 29 2012 Lukáš Tinkl <ltinkl at redhat.com> 6:4.9.2-9
+- Resolves #868530 - cache information about solid device in 'Places'
+ panel in open/save dialog
+- update solid/udisks2 backend, switch to cmake-define
+
* Thu Oct 25 2012 Dan Vrátil <dvratil at redhat.com> 6:4.9.2-8
- Resolves #868530 - cache information about solid device in 'Places'
panel in open/save dialog
More information about the scm-commits
mailing list