[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/powerdevil/daemon
From: Lukáš Tinkl <lukas () kde ! org>
Date: 2010-12-17 19:06:17
Message-ID: 20101217190617.693FAAC8A8 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1207385 by lukas:
This patch adds a fallback mechanism for setting the display brightness
to the PowerDevil upower's backend using the udev
(/sys/class/backlight/) interface. It uses the KAuth framework to setup
a helper application that does the actual read/writes.
Reviewed by drf: http://svn.reviewboard.kde.org/r/6141/
BUG:257948
M +7 -0 BackendConfig.cmake
A backends/upower/backlight_helper_actions.actions
A backends/upower/backlighthelper.cpp [License: LGPL (v2)]
A backends/upower/backlighthelper.h [License: LGPL (v2)]
M +37 -6 backends/upower/powerdevilupowerbackend.cpp
--- trunk/KDE/kdebase/workspace/powerdevil/daemon/BackendConfig.cmake \
#1207384:1207385 @@ -33,6 +33,13 @@
set(powerdevilupowerbackend_LIBS ${X11_LIBRARIES} ${QT_QTGUI_LIBRARY} \
${X11_Xrandr_LIB})
+## backlight helper executable
+kde4_add_executable(backlighthelper backends/upower/backlighthelper.cpp \
${backlighthelper_mocs}) +target_link_libraries(backlighthelper ${KDE4_KDECORE_LIBS})
+install(TARGETS backlighthelper DESTINATION ${LIBEXEC_INSTALL_DIR})
+kde4_install_auth_helper_files(backlighthelper org.kde.powerdevil.backlighthelper \
root) +kde4_install_auth_actions(org.kde.powerdevil.backlighthelper \
${CMAKE_CURRENT_SOURCE_DIR}/backends/upower/backlight_helper_actions.actions) +
########################## HAL Backend #####################################
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/backends/hal
--- trunk/KDE/kdebase/workspace/powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp \
#1207384:1207385 @@ -27,10 +27,13 @@
#include <KDebug>
#include <KPluginFactory>
+#include <KAuth/Action>
#include "xrandrbrightness.h"
#include "upowersuspendjob.h"
+#define HELPER_ID "org.kde.powerdevil.backlighthelper"
+
PowerDevilUPowerBackend::PowerDevilUPowerBackend(QObject* parent)
: BackendInterface(parent),
m_brightNessControl(0),
@@ -98,9 +101,7 @@
// Brightness Controls available
BrightnessControlsList controls;
- if (m_brightNessControl->isSupported()) {
controls.insert(QLatin1String("LVDS1"), Screen);
- }
if (m_kbdBacklight->isValid())
controls.insert(QLatin1String("KBD"), Keyboard);
@@ -177,22 +178,52 @@
float PowerDevilUPowerBackend::brightness(PowerDevil::BackendInterface::BrightnessControlType \
type) const {
+ float result = 0.0;
+
if (type == Screen) {
- kDebug() << "Screen brightness: " << m_brightNessControl->brightness();
- return m_brightNessControl->brightness();
+ if (m_brightNessControl->isSupported()) {
+ //kDebug() << "Calling xrandr brightness";
+ result = m_brightNessControl->brightness();
+ } else {
+ //kDebug() << "Falling back to helper to get brightness";
+ KAuth::Action action("org.kde.powerdevil.backlighthelper.brightness");
+ action.setHelperID(HELPER_ID);
+ KAuth::ActionReply reply = action.execute();
+ if (reply.succeeded()) {
+ result = reply.data()["brightness"].toFloat();
+ //kDebug() << "org.kde.powerdevil.backlighthelper.brightness \
succeeded: " << reply.data()["brightness"]; + }
+ else
+ kWarning() << "org.kde.powerdevil.backlighthelper.brightness \
failed"; +
+ }
+ kDebug() << "Screen brightness: " << result;
} else if (type == Keyboard) {
kDebug() << "Kbd backlight brightness: " << m_kbdBacklight->GetBrightness();
- return m_kbdBacklight->GetBrightness() / m_kbdBacklight->GetMaxBrightness() \
* 100; + result = m_kbdBacklight->GetBrightness() / \
m_kbdBacklight->GetMaxBrightness() * 100; }
- return 0.0;
+ return result;
}
bool PowerDevilUPowerBackend::setBrightness(float brightnessValue, \
PowerDevil::BackendInterface::BrightnessControlType type) {
if (type == Screen) {
kDebug() << "set screen brightness: " << brightnessValue;
+ if (m_brightNessControl->isSupported()) {
m_brightNessControl->setBrightness(brightnessValue);
+ } else {
+ //kDebug() << "Falling back to helper to set brightness";
+ KAuth::Action \
action("org.kde.powerdevil.backlighthelper.setbrightness"); + \
action.setHelperID(HELPER_ID); + action.addArgument("brightness", \
brightnessValue); + KAuth::ActionReply reply = action.execute();
+ if (reply.failed()) {
+ kWarning() << "org.kde.powerdevil.backlighthelper.setbrightness \
failed"; + return false;
+ }
+ }
+
float newBrightness = brightness(Screen);
if (!qFuzzyCompare(newBrightness, m_cachedBrightness)) {
m_cachedBrightness = newBrightness;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic