diff --git a/kdelibs-udisks2-backend.patch b/kdelibs-udisks2-backend.patch index b7a71f5..98a0b53 100644 --- a/kdelibs-udisks2-backend.patch +++ b/kdelibs-udisks2-backend.patch @@ -1,118 +1,3 @@ -diff --git a/tier1/solid/src/solid/CMakeLists.txt b/tier1/solid/src/solid/CMakeLists.txt -index 5deadcf..40af6bc 100644 ---- a/tier1/solid/src/solid/CMakeLists.txt -+++ b/tier1/solid/src/solid/CMakeLists.txt -@@ -32,7 +32,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 - ) -@@ -198,33 +197,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 -@@ -237,18 +209,19 @@ 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} -- 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 -+ 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 - ) - endif (CMAKE_SYSTEM_NAME MATCHES Linux) - -diff --git a/tier1/solid/src/solid/managerbase.cpp b/tier1/solid/src/solid/managerbase.cpp -index e228b48..7a7cc7d 100644 ---- a/tier1/solid/src/solid/managerbase.cpp -+++ b/tier1/solid/src/solid/managerbase.cpp -@@ -30,8 +30,7 @@ - #if defined (Q_OS_MAC) - #include "backends/iokit/iokitmanager.h" - #elif defined (Q_OS_UNIX) --#include "backends/hal/halmanager.h" --#include "backends/udisks/udisksmanager.h" -+#include "backends/udisks2/udisksmanager.h" - #include "backends/upower/upowermanager.h" - - #if defined (HUPNP_FOUND) -@@ -71,22 +70,13 @@ void Solid::ManagerBasePrivate::loadBackends() - # 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 { - # if defined(UDEV_FOUND) - m_backends << new Solid::Backends::UDev::UDevManager(0); - # endif -- m_backends << new Solid::Backends::UDisks::UDisksManager(0) -+ m_backends << new Solid::Backends::UDisks2::Manager(0) - << new Solid::Backends::UPower::UPowerManager(0) - << new Solid::Backends::Fstab::FstabManager(0); -- } - # endif - - # if defined (HUPNP_FOUND) diff --git a/tier1/solid/src/solid/backends/udisks2/dbus/manager.cpp b/tier1/solid/src/solid/backends/udisks2/dbus/manager.cpp new file mode 100644 index 0000000..7ea4aa8 @@ -322,10 +207,10 @@ index 0000000..25a1dc0 +#endif // SOLID_BACKENDS_UDISKS2_H diff --git a/tier1/solid/src/solid/backends/udisks2/udisksblock.cpp b/tier1/solid/src/solid/backends/udisks2/udisksblock.cpp new file mode 100644 -index 0000000..8a7a0b5 +index 0000000..c27b1c4 --- /dev/null +++ b/tier1/solid/src/solid/backends/udisks2/udisksblock.cpp -@@ -0,0 +1,52 @@ +@@ -0,0 +1,84 @@ +/* + Copyright 2012 Lukáš Tinkl + @@ -349,15 +234,47 @@ index 0000000..8a7a0b5 +#include + +#include ++#include ++#include + +#include "udisksblock.h" ++#include "dbus/manager.h" + +using namespace Solid::Backends::UDisks2; + -+Block::Block(Device *device) -+ : DeviceInterface(device) ++Block::Block(Device *dev) ++ : DeviceInterface(dev) +{ + m_devNum = m_device->prop("DeviceNumber").toULongLong(); ++ m_devFile = QFile::decodeName(m_device->prop("Device").toByteArray()); ++ ++ // 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 reply = manager.GetManagedObjects(); ++ 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; ++ } ++ } ++ } ++ else // show error ++ { ++ qWarning() << "Failed enumerating UDisks2 objects:" << reply.error().name() << "\n" << reply.error().message(); ++ } ++ } ++ ++ qDebug() << "devnum:" << m_devNum << "dev file:" << m_devFile; +} + +Block::~Block() @@ -366,7 +283,7 @@ index 0000000..8a7a0b5 + +QString Block::device() const +{ -+ return QFile::decodeName(m_device->prop("Device").toByteArray()); ++ return m_devFile; +} + +int Block::deviceMinor() const @@ -380,10 +297,10 @@ index 0000000..8a7a0b5 +} diff --git a/tier1/solid/src/solid/backends/udisks2/udisksblock.h b/tier1/solid/src/solid/backends/udisks2/udisksblock.h new file mode 100644 -index 0000000..804d712 +index 0000000..19cb70a --- /dev/null +++ b/tier1/solid/src/solid/backends/udisks2/udisksblock.h -@@ -0,0 +1,55 @@ +@@ -0,0 +1,56 @@ +/* + Copyright 2012 Lukáš Tinkl + @@ -424,7 +341,7 @@ index 0000000..804d712 + Q_INTERFACES(Solid::Ifaces::Block) + +public: -+ Block(Device *device); ++ Block(Device *dev); + virtual ~Block(); + + virtual QString device() const; @@ -432,6 +349,7 @@ index 0000000..804d712 + virtual int deviceMajor() const; +private: + dev_t m_devNum; ++ QString m_devFile; +}; + +} @@ -441,10 +359,10 @@ index 0000000..804d712 +#endif // UDISKS2BLOCK_H diff --git a/tier1/solid/src/solid/backends/udisks2/udisksdevice.cpp b/tier1/solid/src/solid/backends/udisks2/udisksdevice.cpp new file mode 100644 -index 0000000..628c0b0 +index 0000000..fb74fa2 --- /dev/null +++ b/tier1/solid/src/solid/backends/udisks2/udisksdevice.cpp -@@ -0,0 +1,906 @@ +@@ -0,0 +1,910 @@ +/* + Copyright 2010 Michael Zanetti + Copyright 2010-2012 Lukáš Tinkl @@ -803,8 +721,7 @@ index 0000000..628c0b0 + if (!volume_label.isEmpty()) + return volume_label; + -+ const QString drivePath = prop("Drive").value().path(); -+ UDisks2::Device storageDevice(drivePath); ++ UDisks2::Device storageDevice(drivePath()); + const UDisks2::StorageDrive storageDrive(&storageDevice); + Solid::StorageDrive::DriveType drive_type = storageDrive.driveType(); + @@ -991,8 +908,7 @@ index 0000000..628c0b0 + } + } + else if (isBlock()) { -+ const QString drivePath = prop("Drive").value().path(); -+ Device drive(drivePath); ++ Device drive(drivePath()); + + // handle media + const QString media = drive.prop("Media").toString(); @@ -1143,7 +1059,7 @@ index 0000000..628c0b0 + if (iface.startsWith("org.freedesktop.DBus")) + continue; + QDBusMessage call = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, m_udi, DBUS_INTERFACE_PROPS, "GetAll"); -+ call.setArguments(QList() << iface); ++ call << iface; + QDBusPendingReply reply = QDBusConnection::systemBus().asyncCall(call); + reply.waitForFinished(); + @@ -1199,9 +1115,10 @@ index 0000000..628c0b0 + QMapIterator i(changedProps); + while (i.hasNext()) { + i.next(); -+ m_cache.insert(i.key(), i.value()); // replace the value -+ changeMap.insert(i.key(), Solid::GenericInterface::PropertyModified); -+ qDebug() << "\t modified:" << i.key() << ":" << m_cache.value(i.key()); ++ const QString key = i.key(); ++ m_cache.insert(key, i.value()); // replace the value ++ changeMap.insert(key, Solid::GenericInterface::PropertyModified); ++ qDebug() << "\t modified:" << key << ":" << m_cache.value(key); + } + + Q_EMIT propertyChanged(changeMap); @@ -1310,21 +1227,21 @@ index 0000000..628c0b0 + +bool Device::isOpticalDisc() const +{ -+ QString drivePath = prop("Drive").value().path(); -+ if (drivePath.isEmpty() || drivePath == "/") ++ const QString drv = drivePath(); ++ if (drv.isEmpty() || drv == "/") + return false; + -+ Device drive(drivePath); ++ Device drive(drv); + return drive.prop("Optical").toBool(); +} + +bool Device::mightBeOpticalDisc() const +{ -+ QString drivePath = prop("Drive").value().path(); -+ if (drivePath.isEmpty() || drivePath == "/") ++ const QString drv = drivePath(); ++ if (drv.isEmpty() || drv == "/") + return false; + -+ Device drive(drivePath); ++ Device drive(drv); + return drive.isOpticalDrive(); +} + @@ -1351,12 +1268,17 @@ index 0000000..628c0b0 +{ + return hasInterface(UD2_DBUS_INTERFACE_SWAP); +} ++ ++QString Device::drivePath() const ++{ ++ return prop("Drive").value().path(); ++} diff --git a/tier1/solid/src/solid/backends/udisks2/udisksdevice.h b/tier1/solid/src/solid/backends/udisks2/udisksdevice.h new file mode 100644 -index 0000000..6f8056b +index 0000000..cf8e2f5 --- /dev/null +++ b/tier1/solid/src/solid/backends/udisks2/udisksdevice.h -@@ -0,0 +1,110 @@ +@@ -0,0 +1,112 @@ +/* + Copyright 2010 Michael Zanetti + Copyright 2010-2012 Lukáš Tinkl @@ -1439,6 +1361,8 @@ index 0000000..6f8056b + bool isEncryptedCleartext() const; + bool isSwap() const; + ++ QString drivePath() const; ++ +Q_SIGNALS: + void changed(); + void propertyChanged(const QMap &changes); @@ -1784,10 +1708,10 @@ index 0000000..d225f32 +#endif // SOLID_BACKENDS_UDISKS2_GENERICINTERFACE_H diff --git a/tier1/solid/src/solid/backends/udisks2/udisksmanager.cpp b/tier1/solid/src/solid/backends/udisks2/udisksmanager.cpp new file mode 100644 -index 0000000..2e6f8c6 +index 0000000..9af8ee2 --- /dev/null +++ b/tier1/solid/src/solid/backends/udisks2/udisksmanager.cpp -@@ -0,0 +1,294 @@ +@@ -0,0 +1,227 @@ +/* + Copyright 2012 Lukáš Tinkl + @@ -1959,77 +1883,6 @@ index 0000000..2e6f8c6 + return UD2_UDI_DISKS_PREFIX; +} + -+#if 0 -+void Manager::slotDeviceAdded(const QDBusObjectPath &opath) -+{ -+ const QString udi = opath.path(); -+ -+ if (!m_deviceCache.contains(udi)) { -+ m_deviceCache.append(udi); -+ } -+ -+ Device device(udi); -+ if (device.queryDeviceInterface(Solid::DeviceInterface::StorageDrive) -+ && !device.prop("DeviceIsMediaAvailable").toBool() -+ && !m_dirtyDevices.contains(udi)) -+ m_dirtyDevices.append(udi); -+ -+ Q_EMIT deviceAdded(udi); -+ slotDeviceChanged(opath); // case: hotswap event (optical drive with media inside) -+} -+ -+void Manager::slotDeviceRemoved(const QDBusObjectPath &opath) -+{ -+ const QString udi = opath.path(); -+ -+ // case: hotswap event (optical drive with media inside) -+ if (m_knownDrivesWithMedia.contains(udi)) { -+ m_knownDrivesWithMedia.removeAll(udi); -+ m_deviceCache.removeAll(udi + ":media"); -+ Q_EMIT deviceRemoved(udi + ":media"); -+ } -+ -+ if (m_dirtyDevices.contains(udi)) -+ m_dirtyDevices.removeAll(udi); -+ -+ Q_EMIT deviceRemoved(udi); -+ m_deviceCache.removeAll(udi); -+} -+ -+void Manager::slotDeviceChanged(const QDBusObjectPath &opath) -+{ -+ const QString udi = opath.path(); -+ Device device(udi); -+ -+ if (device.queryDeviceInterface(Solid::DeviceInterface::OpticalDrive)) -+ { -+ if (!m_knownDrivesWithMedia.contains(udi) && device.prop("DeviceIsOpticalDisc").toBool()) -+ { -+ m_knownDrivesWithMedia.append(udi); -+ if (!m_deviceCache.isEmpty()) { -+ m_deviceCache.append(udi + ":media"); -+ } -+ Q_EMIT deviceAdded(udi + ":media"); -+ } -+ -+ if (m_knownDrivesWithMedia.contains(udi) && !device.prop("DeviceIsOpticalDisc").toBool()) -+ { -+ m_knownDrivesWithMedia.removeAll(udi); -+ m_deviceCache.removeAll(udi + ":media"); -+ Q_EMIT deviceRemoved(udi + ":media"); -+ } -+ } -+ -+ if (device.queryDeviceInterface(Solid::DeviceInterface::StorageDrive) && device.prop("MediaAvailable").toBool() && m_dirtyDevices.contains(udi)) -+ { -+ qDebug() << "dirty device added:" << udi; -+ Q_EMIT deviceAdded(udi); -+ m_dirtyDevices.removeAll(udi); -+ } -+} -+#endif -+ -+ +void Manager::slotInterfacesAdded(const QDBusObjectPath &object_path, const QVariantMapMap &interfaces_and_properties) +{ + const QString udi = object_path.path(); @@ -2060,6 +1913,10 @@ index 0000000..2e6f8c6 +void Manager::slotMediaChanged(const QDBusMessage & msg) +{ + const QVariantMap properties = qdbus_cast(msg.arguments().at(1)); ++ ++ if (!properties.contains("Size")) // react only on Size changes ++ return; ++ + const QString udi = msg.path(); + qulonglong size = properties.value("Size").toULongLong(); + qDebug() << "MEDIA CHANGED in" << udi << "; size is:" << size; @@ -2159,10 +2016,10 @@ index 0000000..7cf0a72 +#endif // UDISKS2MANAGER_H diff --git a/tier1/solid/src/solid/backends/udisks2/udisksopticaldisc.cpp b/tier1/solid/src/solid/backends/udisks2/udisksopticaldisc.cpp new file mode 100644 -index 0000000..bceb277 +index 0000000..478c930 --- /dev/null +++ b/tier1/solid/src/solid/backends/udisks2/udisksopticaldisc.cpp -@@ -0,0 +1,274 @@ +@@ -0,0 +1,277 @@ +/* + Copyright 2010 Michael Zanetti + Copyright 2010 - 2012 Lukáš Tinkl @@ -2192,7 +2049,7 @@ index 0000000..bceb277 +#include +#include + -+#include "../shared/udevqt.h" ++#include "../shared/udevqtclient.h" + +#include "udisks2.h" +#include "udisksopticaldisc.h" @@ -2330,11 +2187,13 @@ index 0000000..bceb277 + +using namespace Solid::Backends::UDisks2; + -+OpticalDisc::OpticalDisc(Device *device) -+ : StorageVolume(device), m_needsReprobe(true), m_cachedContent(Solid::OpticalDisc::NoContent) ++OpticalDisc::OpticalDisc(Device *dev) ++ : StorageVolume(dev), m_needsReprobe(true), m_cachedContent(Solid::OpticalDisc::NoContent) +{ + UdevQt::Client client(this); -+ m_udevDevice = client.deviceByDeviceFile(QFile::decodeName(m_device->prop("Device").toByteArray())); ++ m_udevDevice = client.deviceByDeviceFile(device()); ++ //qDebug() << "udev device:" << m_udevDevice.name() << "valid:" << m_udevDevice.isValid(); ++ /*qDebug() << "\tProperties:" << */ m_udevDevice.deviceProperties(); // initialize the properties DB so that it doesn't crash further down, #298416 + + m_drive = new Device(m_device->prop("Drive").value().path()); + QDBusConnection::systemBus().connect(UD2_DBUS_SERVICE, m_drive->udi(), DBUS_INTERFACE_PROPS, "PropertiesChanged", this, @@ -2367,6 +2226,7 @@ index 0000000..bceb277 + +bool OpticalDisc::isAppendable() const +{ ++ //qDebug() << "appendable prop" << m_udevDevice.deviceProperty("ID_CDROM_MEDIA_STATE"); + return m_udevDevice.deviceProperty("ID_CDROM_MEDIA_STATE").toString() == QLatin1String("appendable"); +} + @@ -2439,7 +2299,7 @@ index 0000000..bceb277 +} diff --git a/tier1/solid/src/solid/backends/udisks2/udisksopticaldisc.h b/tier1/solid/src/solid/backends/udisks2/udisksopticaldisc.h new file mode 100644 -index 0000000..1e2f030 +index 0000000..5b80995 --- /dev/null +++ b/tier1/solid/src/solid/backends/udisks2/udisksopticaldisc.h @@ -0,0 +1,69 @@ @@ -2469,7 +2329,7 @@ index 0000000..1e2f030 + +#include + -+#include "../shared/udevqt.h" ++#include "../shared/udevqtdevice.h" + +#include "udisksstoragevolume.h" +#include "udisksdevice.h" @@ -2487,7 +2347,7 @@ index 0000000..1e2f030 + Q_INTERFACES(Solid::Ifaces::OpticalDisc) + +public: -+ OpticalDisc(Device *device); ++ OpticalDisc(Device *dev); + virtual ~OpticalDisc(); + + virtual qulonglong capacity() const; @@ -2795,7 +2655,7 @@ index 0000000..4c98ef5 +#endif // UDISKS2OPTICALDRIVE_H diff --git a/tier1/solid/src/solid/backends/udisks2/udisksstorageaccess.cpp b/tier1/solid/src/solid/backends/udisks2/udisksstorageaccess.cpp new file mode 100644 -index 0000000..9239bcb +index 0000000..146c227 --- /dev/null +++ b/tier1/solid/src/solid/backends/udisks2/udisksstorageaccess.cpp @@ -0,0 +1,359 @@ @@ -2859,7 +2719,7 @@ index 0000000..9239bcb + +bool StorageAccess::isLuksDevice() const +{ -+ return m_device->isEncryptedContainer(); // encrypted (and unlocked) device ++ return m_device->isEncryptedContainer(); // encrypted device +} + +bool StorageAccess::isAccessible() const @@ -2957,7 +2817,7 @@ index 0000000..9239bcb + if (m_setupInProgress) + { + if (isLuksDevice() && !isAccessible()) { // unlocked device, now mount it -+ if (reply.type() == QDBusMessage::ReplyMessage) ++ if (reply.type() == QDBusMessage::ReplyMessage) // we've got a response from Unlock + m_clearTextPath = reply.arguments().value(0).value().path(); + mount(); + } @@ -3105,7 +2965,7 @@ index 0000000..9239bcb + + QString appId = QCoreApplication::applicationName(); + -+ QDBusInterface soliduiserver("org.kde.kded", "/modules/soliduiserver", "org.kde.SolidUiServer"); ++ QDBusInterface soliduiserver("org.kde.kded5", "/modules/soliduiserver", "org.kde.SolidUiServer"); + QDBusReply reply = soliduiserver.call("showPassphraseDialog", udi, returnService, + m_lastReturnObject, wId, appId); + m_passphraseRequested = reply.isValid(); @@ -3136,7 +2996,7 @@ index 0000000..9239bcb + QDBusConnection c = QDBusConnection::systemBus(); + QDBusMessage msg = QDBusMessage::createMethodCall(UD2_DBUS_SERVICE, m_device->udi(), UD2_DBUS_INTERFACE_ENCRYPTED, "Unlock"); + -+ msg << passphrase.toUtf8(); // QByteArray ++ msg << passphrase; + msg << QVariantMap(); // options, unused now + + c.callWithCallback(msg, this, @@ -3270,10 +3130,10 @@ index 0000000..36f2102 +#endif // UDISKS2STORAGEACCESS_H diff --git a/tier1/solid/src/solid/backends/udisks2/udisksstoragedrive.cpp b/tier1/solid/src/solid/backends/udisks2/udisksstoragedrive.cpp new file mode 100644 -index 0000000..3a62857 +index 0000000..c79ac20 --- /dev/null +++ b/tier1/solid/src/solid/backends/udisks2/udisksstoragedrive.cpp -@@ -0,0 +1,144 @@ +@@ -0,0 +1,147 @@ +/* + Copyright 2010 Michael Zanetti + Copyright 2010-2012 Lukáš Tinkl @@ -3297,18 +3157,19 @@ index 0000000..3a62857 + +#include "udisksstoragedrive.h" + -+#include "../shared/udevqt.h" ++#include "../shared/udevqtclient.h" + +#include +#include + +using namespace Solid::Backends::UDisks2; + -+StorageDrive::StorageDrive(Device *device) -+ : Block(device) ++StorageDrive::StorageDrive(Device *dev) ++ : Block(dev) +{ + UdevQt::Client client(this); -+ m_udevDevice = client.deviceByDeviceFile(QFile::decodeName(m_device->prop("Device").toByteArray())); ++ m_udevDevice = client.deviceByDeviceFile(device()); ++ m_udevDevice.deviceProperties(); +} + +StorageDrive::~StorageDrive() @@ -3386,6 +3247,8 @@ index 0000000..3a62857 + const QString bus = m_device->prop("ConnectionBus").toString(); + const QString udevBus = m_udevDevice.deviceProperty("ID_BUS").toString(); + ++ //qDebug() << "bus:" << bus << "udev bus:" << udevBus; ++ + if (udevBus == "ata") + { + if (m_udevDevice.deviceProperty("ID_ATA_SATA").toInt() == 1) // serial ATA @@ -3420,7 +3283,7 @@ index 0000000..3a62857 +} diff --git a/tier1/solid/src/solid/backends/udisks2/udisksstoragedrive.h b/tier1/solid/src/solid/backends/udisks2/udisksstoragedrive.h new file mode 100644 -index 0000000..97007b3 +index 0000000..9c87a23 --- /dev/null +++ b/tier1/solid/src/solid/backends/udisks2/udisksstoragedrive.h @@ -0,0 +1,61 @@ @@ -3450,7 +3313,7 @@ index 0000000..97007b3 + +#include + -+#include "../shared/udevqt.h" ++#include "../shared/udevqtdevice.h" + +#include "udisksblock.h" + @@ -3467,7 +3330,7 @@ index 0000000..97007b3 + Q_INTERFACES(Solid::Ifaces::StorageDrive) + +public: -+ StorageDrive(Device *device); ++ StorageDrive(Device *dev); + virtual ~StorageDrive(); + + virtual qulonglong size() const; @@ -3659,3 +3522,141 @@ index 0000000..2ca04d2 +} + +#endif // UDISKS2STORAGEVOLUME_H +diff --git a/tier1/solid/autotests/CMakeLists.txt b/tier1/solid/autotests/CMakeLists.txt +index 64bfdc0..180b04c 100644 +--- a/tier1/solid/autotests/CMakeLists.txt ++++ b/tier1/solid/autotests/CMakeLists.txt +@@ -14,18 +14,6 @@ target_link_libraries(fakehardwaretest solid_static ${QT_QTCORE_LIBRARY} ${QT_QT + set_target_properties(fakehardwaretest PROPERTIES COMPILE_FLAGS -DTEST_DATA="\\"${CMAKE_CURRENT_SOURCE_DIR}/../src/solid/backends/fakehw/fakecomputer.xml\\"") + + +-########### halbasictest ############### +- +-if(NOT WIN32 AND NOT APPLE) +- set(halbasictest_SRCS halbasictest.cpp ) +- +- add_executable(halbasictest ${halbasictest_SRCS}) +- +- target_link_libraries(halbasictest solid_static ${KDEWIN_LIBRARIES} ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTTEST_LIBRARY} ) +- +- ecm_mark_as_test(halbasictest) +-endif(NOT WIN32 AND NOT APPLE) +- + ########### solidhwtest ############### + + set(solidhwtest_SRCS +diff --git a/tier1/solid/src/solid/CMakeLists.txt b/tier1/solid/src/solid/CMakeLists.txt +index 0fabd2c..75bb642 100644 +--- a/tier1/solid/src/solid/CMakeLists.txt ++++ b/tier1/solid/src/solid/CMakeLists.txt +@@ -29,7 +29,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 + ) +@@ -205,33 +204,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 +@@ -244,18 +216,19 @@ 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} +- 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 ++ 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 + ) + endif () + +diff --git a/tier1/solid/src/solid/managerbase.cpp b/tier1/solid/src/solid/managerbase.cpp +index e228b48..7a7cc7d 100644 +--- a/tier1/solid/src/solid/managerbase.cpp ++++ b/tier1/solid/src/solid/managerbase.cpp +@@ -30,8 +30,7 @@ + #if defined (Q_OS_MAC) + #include "backends/iokit/iokitmanager.h" + #elif defined (Q_OS_UNIX) +-#include "backends/hal/halmanager.h" +-#include "backends/udisks/udisksmanager.h" ++#include "backends/udisks2/udisksmanager.h" + #include "backends/upower/upowermanager.h" + + #if defined (HUPNP_FOUND) +@@ -71,22 +70,13 @@ void Solid::ManagerBasePrivate::loadBackends() + # 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 { + # if defined(UDEV_FOUND) + m_backends << new Solid::Backends::UDev::UDevManager(0); + # endif +- m_backends << new Solid::Backends::UDisks::UDisksManager(0) ++ m_backends << new Solid::Backends::UDisks2::Manager(0) + << new Solid::Backends::UPower::UPowerManager(0) + << new Solid::Backends::Fstab::FstabManager(0); +- } + # endif + + # if defined (HUPNP_FOUND) diff --git a/kdelibs.spec b/kdelibs.spec index c7e9f2b..2fbe05e 100644 --- a/kdelibs.spec +++ b/kdelibs.spec @@ -25,7 +25,7 @@ Summary: KDE Libraries Version: 4.8.3 -Release: 2%{?dist} +Release: 3%{?dist} Name: kdelibs Epoch: 6 @@ -600,6 +600,9 @@ rm -rf %{buildroot} %changelog +* Thu May 24 2012 Lukas Tinkl - 6:4.8.3-3 +- update the udisks2 backend patch, fixing some bugs with storage drives + * Thu May 03 2012 Than Ngo - 6:4.8.3-2 - add rhel/fedora condition