File cpu-hog.diff of Package powerdevil
--- daemon/PollSystemLoader.cpp 2008-10-27 14:51:16.000000000 +0100
+++ daemon/PollSystemLoader.cpp 2008-12-05 16:27:41.000000000 +0100
@@ -41,7 +41,7 @@
// Test each polling system
WidgetBasedPoller *wpl = new WidgetBasedPoller(this);
- XSyncBasedPoller *xpl = new XSyncBasedPoller(this);
+ XSyncBasedPoller *xpl = XSyncBasedPoller::instance();
TimerBasedPoller *tpl = new TimerBasedPoller(this);
if (wpl->isAvailable()) {
@@ -55,7 +55,6 @@
}
wpl->deleteLater();
- xpl->deleteLater();
tpl->deleteLater();
}
@@ -96,7 +95,7 @@
m_poller = new TimerBasedPoller(this);
break;
case AbstractSystemPoller::XSyncBased:
- m_poller = new XSyncBasedPoller(this);
+ m_poller = XSyncBasedPoller::instance();
break;
default:
return false;
@@ -119,7 +118,9 @@
if (m_poller) {
m_poller->unloadPoller();
- m_poller->deleteLater();
+ if (m_poller->getPollingType() != AbstractSystemPoller::XSyncBased) {
+ m_poller->deleteLater();
+ }
}
return true;
--- daemon/powerdevil.desktop 2008-10-27 14:51:16.000000000 +0100
+++ daemon/powerdevil.desktop 2008-12-05 16:27:41.000000000 +0100
@@ -9,7 +9,9 @@
X-KDE-Kded-phase=1
Name=PowerDevil
+Name[ar]=عفريت الطاقة
Name[gu]=પાવરડેવિલ
+Name[hi]=पावर-डेविल
Name[kn]=ಪವರ್ ಡೆವಿಲ್
Name[nds]=Stroomdüvel
Name[pa]=ਪਾਵਰ-ਡੀਵਿਲ
@@ -17,21 +19,35 @@
Name[x-test]=xxPowerDevilxx
Comment=A Laptop Power Management Daemon
+Comment[ar]=مراقب إدارة الطاقة للحواسيب المحمولة
Comment[be@latin]=Słužba kiravańnia enerhijaj na laptopie
+Comment[ca]=Un dimoni per a la gestió d'energia dels portàtils
+Comment[de]=Ein Energieverwaltungsdienst für Notebooks
Comment[el]=Ένας δαίμονας διαχείρισης ενέργειας του φορητού υπολογιστή
+Comment[es]=Un demonio de gestión de energía de portátiles
+Comment[et]=Sülearvuti voolutarbe haldamise deemon
Comment[gl]=Un daemon de xestión da enerxía para portátiles
Comment[gu]=લેપટોપ પાવર વ્યવસ્થાપક ડેમોન
+Comment[hi]=लैपटॉप बिज़ली प्रबंधन डेमन
+Comment[it]=Un demone per laptop per la gestione dell'energia
+Comment[ja]=ラップトップ電源管理のデーモン
Comment[kk]=Лаптоп қуаттандыруын басқару қызметі
Comment[km]=ដេមិនគ្រប់គ្រងថាមពលរបស់កុំព្យូទ័រយួរដៃ
Comment[kn]=ಉಡಿಗಣಕ (ಲಾಪ್ಟಾಪ್) ವಿದ್ಯುಚ್ಛಕ್ತಿ ವ್ಯವಸ್ಥಾಪನಾ ನೇಪಥಿಕ (ಡೀಮನ್)
+Comment[lv]=Klēpjdatora energokontroles dēmons
+Comment[ml]=ഒരു ലാപ്ടോപ് പവര് മാനേജ്മെന്റ് നിരന്തരപ്രവ്രത്തി
Comment[nb]=Strømstyringsnisse for bærbare maskiner
Comment[nds]=En Stroomkuntrull-Dämoon för Klappreekners
+Comment[nl]=Een energiebeheerdaemon voor laptops
Comment[pa]=ਇੱਕ ਲੈਪਟਾਪ ਪਾਵਰ ਮੈਨਿਜਮੈਂਟ ਡੈਮਨ
Comment[pt]=Um Sistema de Gestão da Energia para Portáteis
Comment[pt_BR]=Um Sistema de Gestão da Energia para Portáteis
+Comment[ro]=Demon pentru gestiunea energiei laptopului
Comment[ru]=Служба управления питанием ноутбука
Comment[sv]=En strömspardemon för bärbara datorer
+Comment[th]=ดีมอนจัดการพลังงานของเครื่องแลปทอป
Comment[tr]=Dizüstü Bilgisayarlar için bir Güç Yönetimi Servisi
Comment[uk]=Фонова служба керування живленням портативного комп’ютера
Comment[x-test]=xxA Laptop Power Management Daemonxx
+Comment[zh_CN]=便携式电脑电源管理守护程序
Comment[zh_TW]=筆記型電腦電源管理守護程式
--- daemon/XSyncBasedPoller.cpp 2008-10-27 14:51:16.000000000 +0100
+++ daemon/XSyncBasedPoller.cpp 2008-12-05 16:27:41.000000000 +0100
@@ -22,6 +22,28 @@
#include <QX11Info>
#include <klocalizedstring.h>
+#include <kglobal.h>
+
+class XSyncBasedPollerHelper
+{
+public:
+ XSyncBasedPollerHelper() : q(0) {}
+ ~XSyncBasedPollerHelper() {
+ delete q;
+ }
+ XSyncBasedPoller *q;
+};
+
+K_GLOBAL_STATIC(XSyncBasedPollerHelper, s_globalXSyncBasedPoller)
+
+XSyncBasedPoller *XSyncBasedPoller::instance()
+{
+ if (!s_globalXSyncBasedPoller->q) {
+ new XSyncBasedPoller;
+ }
+
+ return s_globalXSyncBasedPoller->q;
+}
XSyncBasedPoller::XSyncBasedPoller(QObject *parent)
: AbstractSystemPoller(parent)
@@ -30,65 +52,69 @@
, m_idleCounter(None)
, m_timeoutAlarm(None)
, m_resetAlarm(None)
- , m_error(false)
#endif
+ , m_available(true)
{
+ Q_ASSERT(!s_globalXSyncBasedPoller->q);
+ s_globalXSyncBasedPoller->q = this;
+
#ifdef HAVE_XSYNC
int sync_major, sync_minor;
+ int ncounters;
if (!XSyncQueryExtension(m_display, &m_sync_event, &m_sync_error)) {
- m_error = true;
+ m_available = false;
return;
}
if (!XSyncInitialize(m_display, &sync_major, &sync_minor)) {
- m_error = true;
+ m_available = false;
return;
}
- kDebug() << "XSync Inited";
-#endif
-}
-
-XSyncBasedPoller::~XSyncBasedPoller()
-{
-}
-
-QString XSyncBasedPoller::name()
-{
- return i18n("XSync Based (recommended)");
-}
+ kDebug() << sync_major << sync_minor;
-bool XSyncBasedPoller::isAvailable()
-{
-#ifdef HAVE_XSYNC
- if (m_error) {
- return false;
- }
-
- int ncounters;
m_counters = XSyncListSystemCounters(m_display, &ncounters);
bool idleFound = false;
- for (int i = 0; i < ncounters && !m_idleCounter; ++i) {
+ for (int i = 0; i < ncounters; ++i) {
if (!strcmp(m_counters[i].name, "IDLETIME")) {
- m_idleCounter = m_counters[i].counter;
idleFound = true;
+ break;
}
}
XSyncFreeSystemCounterList(m_counters);
if (!idleFound) {
- return false;
+ m_available = false;
}
- return true;
-
#else
- return false;
+ m_available = false;
#endif
+
+ if (m_available) {
+ kDebug() << "XSync seems available and ready";
+ } else {
+ kDebug() << "XSync seems not available";
+ }
+
+}
+
+XSyncBasedPoller::~XSyncBasedPoller()
+{
+}
+
+QString XSyncBasedPoller::name()
+{
+ return i18n("XSync Based (recommended)");
+}
+
+bool XSyncBasedPoller::isAvailable()
+{
+ return m_available;
}
bool XSyncBasedPoller::setUpPoller()
@@ -100,6 +126,8 @@
return false;
}
+ kDebug() << "XSync Inited";
+
m_counters = XSyncListSystemCounters(m_display, &ncounters);
bool idleFound = false;
@@ -252,12 +280,13 @@
flags = XSyncCACounter | XSyncCAValueType | XSyncCATestType |
XSyncCAValue | XSyncCADelta;
- if (*alarm) {
+ if (*alarm)
XSyncChangeAlarm(dpy, *alarm, flags, &attr);
- } else {
+ else
*alarm = XSyncCreateAlarm(dpy, flags, &attr);
- }
}
#endif
#include "XSyncBasedPoller.moc"
+
+
--- daemon/XSyncBasedPoller.h 2008-10-27 14:51:16.000000000 +0100
+++ daemon/XSyncBasedPoller.h 2008-12-05 16:27:41.000000000 +0100
@@ -39,6 +39,9 @@
Q_OBJECT
public:
+
+ static XSyncBasedPoller *instance();
+
XSyncBasedPoller(QObject *parent = 0);
virtual ~XSyncBasedPoller();
@@ -84,7 +87,9 @@
XSyncAlarm m_resetAlarm;
#endif
QWidget * m_filterWidget;
- bool m_error;
+ bool m_available;
};
#endif /* XSYNCBASEDPOLLER_H */
+
+
--- kcmodule/CapabilitiesPage.cpp 2008-10-27 14:51:16.000000000 +0100
+++ kcmodule/CapabilitiesPage.cpp 2009-01-16 13:26:54.000000000 +0100
@@ -211,13 +211,17 @@
}
#endif
-#ifdef HAVE_XSCREENSAVER
- xss = true;
-#endif
-
-#ifdef HAVE_XSYNC
- xsync = true;
-#endif
+ QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kded",
+ "/modules/powerdevil", "org.kde.PowerDevil", "getSupportedPollingSystems");
+ QDBusReply<QVariantMap> systems = QDBusConnection::sessionBus().call(msg);
+
+ foreach(const QVariant &ent, systems.value()) {
+ if (ent.toInt() == XSyncBased) {
+ xsync = true;
+ } else if (ent.toInt() == WidgetBased) {
+ xss = true;
+ }
+ }
#ifdef HAVE_XTEST
xtest = true;
@@ -275,28 +279,11 @@
"not available. XSync grants extra efficiency and performance, saving your "
"battery and CPU. It is advised to use PowerDevil with XSync enabled."));
- } else if (PowerDevilSettings::pollingSystem() != 2) {
-
- QDBusMessage msg = QDBusMessage::createMethodCall("org.kde.kded",
- "/modules/powerdevil", "org.kde.PowerDevil", "getSupportedPollingSystems");
- QDBusReply<QVariantMap> systems = QDBusConnection::sessionBus().call(msg);
-
- bool found = false;
-
- foreach(const QVariant &ent, systems.value()) {
- if (ent.toInt() == 2) {
- found = true;
- }
- }
-
- if (!found) {
- setIssue(false, i18n("No issues found with your configuration."));
- } else {
- setIssue(true, i18n("XSync does not seem your preferred query backend, though it is available "
- "on your system. Using it largely improves performance and efficiency, and "
- "it is strongly advised. Click on the button below to enable it now."),
- i18n("Enable XSync Backend"), "dialog-ok-apply", SLOT(enableXSync()));
- }
+ } else if (PowerDevilSettings::pollingSystem() != 2 && xsync) {
+ setIssue(true, i18n("XSync does not seem your preferred query backend, though it is available "
+ "on your system. Using it largely improves performance and efficiency, and "
+ "it is strongly advised. Click on the button below to enable it now."),
+ i18n("Enable XSync Backend"), "dialog-ok-apply", SLOT(enableXSync()));
} else {
setIssue(false, i18n("No issues found with your configuration."));
}
--- kcmodule/CapabilitiesPage.h 2008-09-29 00:24:21.000000000 +0200
+++ kcmodule/CapabilitiesPage.h 2008-12-05 16:27:41.000000000 +0100
@@ -47,6 +47,13 @@
const char *slot = 0, const QString &button2 = QString(),
const QString &buticon2 = QString(), const char *slot2 = 0);
+ enum PollingType {
+ Abstract = -1,
+ WidgetBased = 1,
+ XSyncBased = 2,
+ TimerBased = 3
+ };
+
signals:
void reload();
void reloadModule();
--- kcmodule/generalPage.ui 2008-10-27 14:51:16.000000000 +0100
+++ kcmodule/generalPage.ui 2008-12-05 16:27:41.000000000 +0100
@@ -124,19 +124,6 @@
</property>
</widget>
</item>
- <item row="3" column="1" >
- <widget class="QPushButton" name="notificationsButton" >
- <property name="maximumSize" >
- <size>
- <width>200</width>
- <height>16777215</height>
- </size>
- </property>
- <property name="text" >
- <string>Configure Notifications</string>
- </property>
- </widget>
- </item>
<item row="4" column="0" >
<widget class="QCheckBox" name="suspendWait" >
<property name="toolTip" >
@@ -173,6 +160,36 @@
</property>
</widget>
</item>
+ <item row="3" column="1" >
+ <layout class="QHBoxLayout" name="horizontalLayout_2" >
+ <item>
+ <widget class="QPushButton" name="notificationsButton" >
+ <property name="maximumSize" >
+ <size>
+ <width>16777215</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="text" >
+ <string>Configure Notifications</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
</layout>
</widget>
</item>
@@ -273,8 +290,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>571</width>
- <height>431</height>
+ <width>263</width>
+ <height>206</height>
</rect>
</property>
<attribute name="label" >
--- kcmodule/powerdevilconfig.desktop 2008-09-29 18:39:20.000000000 +0200
+++ kcmodule/powerdevilconfig.desktop 2008-12-05 16:27:41.000000000 +0100
@@ -11,33 +11,72 @@
X-KDE-System-Settings-Parent-Category=system
Name=Power Management
+Name[ar]=ادارة الطاقة
Name[be@latin]=Kiravańnie enerhijaj
+Name[ca]=Gestió d'energia
+Name[de]=Energieverwaltung
Name[el]=Διαχείριση ενέργειας
+Name[es]=Gestión de energía
+Name[et]=Voolutarbe haldus
Name[gl]=Xestión da enerxía
Name[gu]=પાવર વ્યવસ્થાપક
+Name[he]=ניהול צריכת חשמל
+Name[hi]=बिज़ली प्रबंधन
+Name[it]=Gestione energetica
+Name[ja]=電源管理
Name[kk]=Қуаттандыруды басқару
Name[km]=ការគ្រប់គ្រងថាមពល
Name[kn]=ವಿದ್ಯುಚ್ಛಕ್ತಿ ವ್ಯವಸ್ಥಾಪನೆ
+Name[lt]=Energijos valdymas
+Name[lv]=Energokontrole
+Name[ml]=പവര് മാനേജ്മെന്റ്
+Name[nb]=Strømstyring
Name[nds]=Stroomkuntrull
+Name[nl]=Energiebeheer
+Name[pa]=ਪਾਵਰ ਮੈਨਿਜਮੈਂਟ
Name[pt]=Gestão de Energia
-Name[pt_BR]=Gestão de Energia
+Name[pt_BR]=Gerenciamento de energia
+Name[ro]=Gestiune energie
+Name[ru]=Управление питанием
Name[sv]=Strömsparhantering
+Name[th]=การจัดการพลังงาน
Name[tr]=Güç Yönetimi
Name[uk]=Керування живленням
Name[x-test]=xxPower Managementxx
+Name[zh_CN]=电源管理
Name[zh_TW]=電源管理
Comment=Display brightness, suspend and power profile settings
+Comment[ar]=تعرض الإضاءءة و التعليق و إعدادات ملف توصيف الطاقة
+Comment[be@latin]=Pakažy nałady jarkaści, snu j profil kiravańnia enerhijaj
+Comment[ca]=Mostra els paràmetres de la lluminositat, suspensió i del perfil d'energia
+Comment[de]=Einstellungen zu Bildschirmhelligkeit, Ruhezustand und Energieprofilen
+Comment[el]=Φωτεινότητα οθόνης, αναστολή και ρυθμίσεις προφίλ ενέργειας
+Comment[es]=Configuración del perfil de brillo de la pantalla, suspensión y energía
+Comment[et]=Heleduse, passiivseisundi ja voolutarbe profiili seadistuste näitamine
Comment[gl]=Mostra os axustes de brillo, suspensión e enerxía do perfíl
+Comment[gu]=ડિસ્પ્લે ઉજાસ, સસ્પેન્ડ અને પાવર પ્રોફાઇલ ગોઠવણીઓ
+Comment[hi]=चमकीलापन, निलंबन तथा पावर प्रोफ़ाइल विन्यास दिखाएँ
+Comment[it]=Mostra le impostazioni di luminosità, sospensione e profilo energetico
+Comment[ja]=ディスプレイの明るさ、サスペンド、電源プロファイルの設定
Comment[kk]=Дисплей жарықтығы, қалғу, қуаттандыру профилінің параметрлері
Comment[km]=បង្ហាញពន្លឺ ផ្អាក និងការកំណត់ទម្រង់ថាមពល
Comment[kn]=ಪ್ರದರ್ಶನ ಉಜ್ವಲತೆ (ಬ್ರೈಟ್ನೆಸ್), ವಜಾಮಾಡುವಿಕೆ (ಸಸ್ಪೆಂಡ್) ಹಾಗೂ ವಿದ್ಯುಚ್ಛಕ್ತಿ ವೈಶಿಷ್ಟ್ಯ ಸಂಯೋಜನೆಗಳು
+Comment[lv]=Parāda gaišumu, iemigšanas un jaudas profila iestatījumus
+Comment[ml]=തെളിച്ചവും, താല്കാലികമായി നിര്ത്തിവെക്കാനുള്ളതിന്റെയും ഊര്ജ്ജത്തിന്റെയും പ്രൊഫൈല് സജ്ജീകരണങ്ങള് കാണിക്കുക.
+Comment[nb]=Innstillinger for lysstyrke, hvile/dvale og strømprofiler
Comment[nds]=Helligkeit-, Utsett- un Stroomprofil-Instellen wiesen
+Comment[nl]=Schermhelderheid-, slaapstand- en energieprofielen instellen
+Comment[pa]=ਡਿਸਪਲੇਅ ਚਮਕ, ਸਸਪੈਂਡ ਅਤੇ ਪਾਵਰ ਪਰੋਫਾਇਲ ਸੈਟਿੰਗ
Comment[pt]=Mostra a configuração do brilho, suspensão e perfil de energia
Comment[pt_BR]=Mostra a configuração do brilho, suspensão e perfil de energia
+Comment[ro]=Configurări pentru luminozitatea ecranului, suspendare și profiluri alimentare
Comment[sv]=Visar ljusstyrka, och inställningar av viloläge och strömsparprofil
+Comment[th]=ตั้งค่าความสว่างการแสดงผล, การหยุดพักการทำงาน และโพรไฟล์จัดการพลังงาน
+Comment[tr]=Ekran parlaklığı, askıya alma ve güç profili ayarları
Comment[uk]=Показати параметри яскравості, переходу до сну та керування живленням профілю
Comment[x-test]=xxDisplay brightness, suspend and power profile settingsxx
+Comment[zh_CN]=显示亮度、挂起和电源配置方案的设置
Comment[zh_TW]=顯示亮度、暫停與電源設定檔
X-KDE-Keywords=system,power,power management,energy,laptop,battery,suspension,AC,suspend,hibernate,brightness,performance,lid
--- kcmodule/PowerDevilKCM.cpp 2008-09-29 00:24:21.000000000 +0200
+++ kcmodule/PowerDevilKCM.cpp 2008-12-05 16:27:41.000000000 +0100
@@ -142,6 +142,7 @@
if (m_widget) {
m_widget->load();
}
+ emit changed(false);
}
void PowerDevilKCM::save()
@@ -151,6 +152,7 @@
streamToDBus();
}
+ emit changed(false);
}
void PowerDevilKCM::defaults()