Resolves #753429 - battery plasmoid displays extremely incorrect information

Resolves #766399 - KDE battery monitor not working with new upower
This commit is contained in:
Lukas Tinkl 2011-12-12 20:37:07 +01:00
parent f8e80152e5
commit df1ac53552
2 changed files with 66 additions and 1 deletions

View File

@ -0,0 +1,57 @@
commit 1b6f332c3c539a45f6ed5a85897ecf8a65fbb216
Author: Lukas Tinkl <lukas@kde.org>
Date: Mon Dec 12 20:03:43 2011 +0100
disconnect the battery signals when it gets removed
see https://bugzilla.redhat.com/show_bug.cgi?id=753429 and
https://bugzilla.redhat.com/show_bug.cgi?id=766399
diff --git a/plasma/generic/dataengines/powermanagement/powermanagementengine.cpp b/plasma/generic/dataengines/powermanagement/powermanagementengine.cpp
index a5344da..2bee9a7 100644
--- a/plasma/generic/dataengines/powermanagement/powermanagementengine.cpp
+++ b/plasma/generic/dataengines/powermanagement/powermanagementengine.cpp
@@ -105,8 +105,7 @@ QStringList PowermanagementEngine::sources() const
bool PowermanagementEngine::sourceRequestEvent(const QString &name)
{
if (name == "Battery") {
- const QList<Solid::Device> listBattery =
- Solid::Device::listFromType(Solid::DeviceInterface::Battery, QString());
+ const QList<Solid::Device> listBattery = Solid::Device::listFromType(Solid::DeviceInterface::Battery);
m_batterySources.clear();
if (listBattery.isEmpty()) {
@@ -160,7 +159,7 @@ bool PowermanagementEngine::sourceRequestEvent(const QString &name)
} else if (name == "AC Adapter") {
bool isPlugged = false;
- const QList<Solid::Device> list_ac = Solid::Device::listFromType(Solid::DeviceInterface::AcAdapter, QString());
+ const QList<Solid::Device> list_ac = Solid::Device::listFromType(Solid::DeviceInterface::AcAdapter);
foreach (Solid::Device device_ac, list_ac) {
Solid::AcAdapter* acadapter = device_ac.as<Solid::AcAdapter>();
isPlugged |= acadapter->isPlugged();
@@ -232,6 +231,11 @@ void PowermanagementEngine::updateAcPlugState(bool newState)
void PowermanagementEngine::deviceRemoved(const QString& udi)
{
if (m_batterySources.contains(udi)) {
+ Solid::Device device(udi);
+ Solid::Battery* battery = device.as<Solid::Battery>();
+ if (battery)
+ battery->disconnect();
+
const QString source = m_batterySources[udi];
m_batterySources.remove(udi);
removeSource(source);
diff --git a/plasma/generic/dataengines/powermanagement/powermanagementengine.h b/plasma/generic/dataengines/powermanagement/powermanagementengine.h
index 4dcc0d9..96ffd45 100644
--- a/plasma/generic/dataengines/powermanagement/powermanagementengine.h
+++ b/plasma/generic/dataengines/powermanagement/powermanagementengine.h
@@ -63,7 +63,7 @@ private:
QStringList m_sources;
- QHash<QString, QString> m_batterySources;
+ QHash<QString, QString> m_batterySources; // <udi, Battery0>
};

View File

@ -23,7 +23,7 @@
Summary: KDE Libraries
Version: 4.7.4
Release: 2%{?dist}
Release: 3%{?dist}
Name: kdelibs
Epoch: 6
@ -131,6 +131,7 @@ Patch52: kdelibs-4.7.4-SOLID_UPNP.patch
Patch53: kdelibs-4.7.2-kjs-s390.patch
## upstream
Patch100: kdelibs-4.7.5-batteryplasmoid.patch
## security fix
# Not Upstreamed? why not ? -- Rex
@ -321,6 +322,9 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
%patch43 -p1 -b .libplasma-pk-0004
%endif
# upstream patches
%patch100 -p1 -b .batteryplasmoid
# upstreamable patches
%patch50 -p1 -b .knewstuff2_gpg2
%patch51 -p1 -b .uri_mimetypes
@ -581,6 +585,10 @@ rm -rf %{buildroot}
%changelog
* Mon Dec 12 2011 Lukas Tinkl <ltinkl@redhat.com> - 4.7.4-3
- Resolves #753429 - battery plasmoid displays extremely incorrect information
- Resolves #766399 - KDE battery monitor not working with new upower
* Tue Dec 06 2011 Than Ngo <than@redhat.com> - 4.7.4-2
- add s390/s390x support in kjs