Constant spinning of cd/dvd drive ... (#690123, kde#264487)

This commit is contained in:
Rex Dieter 2011-03-23 14:47:28 -05:00
parent 91b310e667
commit b872dae409
2 changed files with 82 additions and 1 deletions

View File

@ -0,0 +1,75 @@
diff -up kdelibs-4.6.1/solid/solid/backends/udisks/udisksopticaldisc.cpp.kde264487 kdelibs-4.6.1/solid/solid/backends/udisks/udisksopticaldisc.cpp
--- kdelibs-4.6.1/solid/solid/backends/udisks/udisksopticaldisc.cpp.kde264487 2011-02-25 16:00:34.000000000 -0600
+++ kdelibs-4.6.1/solid/solid/backends/udisks/udisksopticaldisc.cpp 2011-03-23 14:46:15.767586207 -0500
@@ -162,9 +162,9 @@ out:
using namespace Solid::Backends::UDisks;
OpticalDisc::OpticalDisc(UDisksDevice *device)
- : UDisksStorageVolume(device)
+ : UDisksStorageVolume(device), m_needsReprobe(true), m_cachedContent(Solid::OpticalDisc::NoContent)
{
-
+ connect(device, SIGNAL(changed()), this, SLOT(slotChanged()));
}
OpticalDisc::~OpticalDisc()
@@ -228,21 +228,35 @@ Solid::OpticalDisc::DiscType OpticalDisc
Solid::OpticalDisc::ContentTypes OpticalDisc::availableContent() const
{
- Solid::OpticalDisc::ContentTypes content = Solid::OpticalDisc::NoContent;
-
- if (!isBlank())
+ if (isBlank()) {
+ m_needsReprobe = false;
+ return Solid::OpticalDisc::NoContent;
+ }
+
+ if (m_needsReprobe)
{
+ m_cachedContent = Solid::OpticalDisc::NoContent;
+
bool hasData = m_device->prop("OpticalDiscNumTracks").toInt() > 0;
bool hasAudio = m_device->prop("OpticalDiscNumAudioTracks").toInt() > 0;
if ( hasData )
- content |= Solid::OpticalDisc::Data;
+ m_cachedContent |= Solid::OpticalDisc::Data;
if ( hasAudio )
- content |= Solid::OpticalDisc::Audio;
+ m_cachedContent |= Solid::OpticalDisc::Audio;
+
+ m_cachedContent |= advancedDiscDetect(m_device->property("DeviceFile").toString());
- content |= advancedDiscDetect(m_device->prop("DeviceFile").toString());
+ m_needsReprobe = false;
}
- return content;
+ return m_cachedContent;
}
+void Solid::Backends::UDisks::OpticalDisc::slotChanged()
+{
+ m_needsReprobe = true;
+ m_cachedContent = Solid::OpticalDisc::NoContent;
+}
+
+
diff -up kdelibs-4.6.1/solid/solid/backends/udisks/udisksopticaldisc.h.kde264487 kdelibs-4.6.1/solid/solid/backends/udisks/udisksopticaldisc.h
--- kdelibs-4.6.1/solid/solid/backends/udisks/udisksopticaldisc.h.kde264487 2011-02-25 15:53:32.000000000 -0600
+++ kdelibs-4.6.1/solid/solid/backends/udisks/udisksopticaldisc.h 2011-03-23 14:41:27.523063466 -0500
@@ -48,6 +48,13 @@ public:
virtual bool isAppendable() const;
virtual Solid::OpticalDisc::DiscType discType() const;
virtual Solid::OpticalDisc::ContentTypes availableContent() const;
+
+private slots:
+ void slotChanged();
+
+private:
+ mutable bool m_needsReprobe;
+ mutable Solid::OpticalDisc::ContentTypes m_cachedContent;
};
}

View File

@ -16,7 +16,7 @@
Summary: KDE Libraries
Version: 4.6.1
Release: 4%{?dist}
Release: 5%{?dist}
Name: kdelibs
Epoch: 6
@ -89,6 +89,8 @@ Patch27: kdelibs-4.5.80-no_rpath.patch
# reverting to our past gnupg2-only setup.
# TODO: try to use either gpg or gpg2, whichever is available
Patch50: kdelibs-4.5.1-knewstuff_gpg2.patch
# https://bugs.kde.org/show_bug.cgi?id=264487#c2
Patch51: kdelibs-4.6.1-kde264487.patch
## upstream
# https://projects.kde.org/projects/kde/kdelibs/repository/revisions/51707e7154082b549216b8a8ecde73505302fadc
@ -278,6 +280,7 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
# upstreamable patches
%patch50 -p1 -b .knewstuff_gpg2
%patch51 -p1 -b .kde264487
# upstream patches
%patch100 -p1 -b .dirlister
@ -537,6 +540,9 @@ rm -rf %{buildroot}
%changelog
* Wed Mar 23 2011 Rex Dieter <rdieter@fedoraproject.org> 4.6.1-5
- Constant spinning of cd/dvd drive ... (#690123, kde#264487)
* Fri Mar 11 2011 Kevin Kofler <Kevin@tigcc.ticalc.org> - 4.6.1-4
- use upstream patch for #682300 (kde#267770), my previous one didn't work