[arch-commits] Commit in kdebase-workspace/kde-unstable (2 files)
Andrea Scarpino
andrea at archlinux.org
Fri Dec 3 09:43:14 UTC 2010
Date: Friday, December 3, 2010 @ 04:43:14
Author: andrea
Revision: 101968
fix suspension with UPower
Added:
kdebase-workspace/kde-unstable/fix-powerdevil-suspend.patch
Modified:
kdebase-workspace/kde-unstable/PKGBUILD
------------------------------+
PKGBUILD | 11 -
fix-powerdevil-suspend.patch | 366 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 374 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2010-12-03 09:33:54 UTC (rev 101967)
+++ PKGBUILD 2010-12-03 09:43:14 UTC (rev 101968)
@@ -4,7 +4,7 @@
pkgname=kdebase-workspace
pkgver=4.5.80
-pkgrel=2
+pkgrel=3
pkgdesc="KDE Base Workspace"
arch=('i686' 'x86_64')
url='http://www.kde.org'
@@ -26,7 +26,8 @@
'etc/pam.d/kscreensaver')
source=("http://download.kde.org/unstable/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2"
'kdm-zsh-profile.patch' 'kdm' 'kde.pam' 'kde-np.pam' 'kscreensaver.pam'
- 'fixpath.patch' 'terminate-server.patch')
+ 'fixpath.patch' 'terminate-server.patch'
+ 'fix-powerdevil-suspend.patch')
sha1sums=('488a1c06bbc386ba96a9edabcd59635c953325d7'
'8c2bdefb23a03b753b78d16944d03fa3939d2d99'
'5db3a245201bd4a50e65aa2ef583cf5490e4f646'
@@ -34,7 +35,8 @@
'603cc79c4d2b4eae62bb5f244aeecb3a778b5516'
'106635aa1aae51d6f0668b1853f6c49a4fe9d3d8'
'd7b5883f7e65c6839b1f65f94d58026673dd0226'
- 'ac7bc292c865bc1ab8c02e6341aa7aeaf1a3eeee')
+ 'ac7bc292c865bc1ab8c02e6341aa7aeaf1a3eeee'
+ 'daed6bd68a2b8ab920749d0ec8b15394846a4b77')
build() {
cd ${srcdir}/${pkgname}-${pkgver}
@@ -42,6 +44,9 @@
patch -p0 -i ${srcdir}/fixpath.patch
patch -p0 -i ${srcdir}/terminate-server.patch
+ # Already fixed upstream
+ patch -Np0 -i ${srcdir}/fix-powerdevil-suspend.patch
+
cd ${srcdir}
mkdir build
cd build
Added: fix-powerdevil-suspend.patch
===================================================================
--- fix-powerdevil-suspend.patch (rev 0)
+++ fix-powerdevil-suspend.patch 2010-12-03 09:43:14 UTC (rev 101968)
@@ -0,0 +1,366 @@
+Index: powerdevil/daemon/BackendConfig.cmake
+===================================================================
+--- powerdevil/daemon/BackendConfig.cmake (revision 0)
++++ powerdevil/daemon/BackendConfig.cmake (revision 1199129)
+@@ -0,0 +1,51 @@
++# This files sets the needed sources for powerdevil's backend
++# TODO 4.7: Compile only one backend instead of doing runtime checks
++
++
++########################## UPower Backend #####################################
++include_directories(${CMAKE_CURRENT_SOURCE_DIR}/backends/upower
++ ${CMAKE_CURRENT_BINARY_DIR}/backends/upower
++ ${X11_INCLUDE_DIR}
++ ${X11_Xrandr_INCLUDE_PATH})
++
++set(powerdevilupowerbackend_SRCS
++ backends/upower/upowersuspendjob.cpp
++ backends/upower/powerdevilupowerbackend.cpp
++ backends/upower/xrandrbrightness.cpp
++)
++
++set_source_files_properties(
++ ${CMAKE_CURRENT_SOURCE_DIR}/backends/upower/dbus/org.freedesktop.UPower.xml
++ ${CMAKE_CURRENT_SOURCE_DIR}/backends/upower/dbus/org.freedesktop.UPower.Device.xml
++ PROPERTIES NO_NAMESPACE TRUE)
++
++qt4_add_dbus_interface(powerdevilupowerbackend_SRCS
++${CMAKE_CURRENT_SOURCE_DIR}/backends/upower/dbus/org.freedesktop.UPower.xml
++upower_interface)
++
++qt4_add_dbus_interface(powerdevilupowerbackend_SRCS
++${CMAKE_CURRENT_SOURCE_DIR}/backends/upower/dbus/org.freedesktop.UPower.Device.xml
++upower_device_interface)
++
++qt4_add_dbus_interface(powerdevilupowerbackend_SRCS
++${CMAKE_CURRENT_SOURCE_DIR}/backends/upower/dbus/org.freedesktop.UPower.KbdBacklight.xml
++upower_kbdbacklight_interface)
++
++set(powerdevilupowerbackend_LIBS ${X11_LIBRARIES} ${QT_QTGUI_LIBRARY} ${X11_Xrandr_LIB})
++
++########################## HAL Backend #####################################
++
++include_directories(${CMAKE_CURRENT_SOURCE_DIR}/backends/hal
++ ${CMAKE_CURRENT_BINARY_DIR}/backends/hal)
++
++set(powerdevilhalbackend_SRCS
++ backends/hal/halsuspendjob.cpp
++ backends/hal/powerdevilhalbackend.cpp
++)
++
++set(powerdevilhalbackend_LIBS ${KDE4_SOLID_LIBS})
++
++########################## Daemon variables ################################
++
++set(POWERDEVIL_BACKEND_SRCS ${powerdevilupowerbackend_SRCS} ${powerdevilhalbackend_SRCS})
++set(POWERDEVIL_BACKEND_LIBS ${powerdevilupowerbackend_LIBS} ${powerdevilhalbackend_LIBS})
+Index: powerdevil/daemon/powerdevilbackendinterface.h
+===================================================================
+--- powerdevil/daemon/powerdevilbackendinterface.h (revision 1199128)
++++ powerdevil/daemon/powerdevilbackendinterface.h (revision 1199129)
+@@ -112,6 +112,8 @@
+
+ virtual void init() = 0;
+
++ virtual bool isAvailable() = 0;
++
+ /**
+ * Retrieves the current state of the system battery.
+ *
+Index: powerdevil/daemon/powerdevilbackendloader.cpp
+===================================================================
+--- powerdevil/daemon/powerdevilbackendloader.cpp (revision 0)
++++ powerdevil/daemon/powerdevilbackendloader.cpp (revision 1199129)
+@@ -0,0 +1,52 @@
++/***************************************************************************
++ * Copyright (C) 2010 by Dario Freddi <drf at kde.org> *
++ * *
++ * This program is free software; you can redistribute it and/or modify *
++ * it under the terms of the GNU General Public License as published by *
++ * the Free Software Foundation; either version 2 of the License, or *
++ * (at your option) any later version. *
++ * *
++ * This program is distributed in the hope that it will be useful, *
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
++ * GNU General Public License for more details. *
++ * *
++ * You should have received a copy of the GNU General Public License *
++ * along with this program; if not, write to the *
++ * Free Software Foundation, Inc., *
++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
++ ***************************************************************************/
++
++
++#include "powerdevilbackendloader.h"
++
++#include "backends/upower/powerdevilupowerbackend.h"
++#include "backends/hal/powerdevilhalbackend.h"
++
++namespace PowerDevil {
++namespace BackendLoader {
++
++BackendInterface* loadBackend(QObject *parent)
++{
++ BackendInterface *interface;
++ // Check UPower first
++ interface = new PowerDevilUPowerBackend(parent);
++ if (interface->isAvailable()) {
++ return interface;
++ }
++
++ // If we are here, try HAL
++ interface->deleteLater();
++ interface = new PowerDevilHALBackend(parent);
++ if (interface->isAvailable()) {
++ return interface;
++ }
++
++ // Fail...
++ interface->deleteLater();
++ return 0;
++}
++
++}
++}
++
+Index: powerdevil/daemon/powerdevilbackendloader.h
+===================================================================
+--- powerdevil/daemon/powerdevilbackendloader.h (revision 0)
++++ powerdevil/daemon/powerdevilbackendloader.h (revision 1199129)
+@@ -0,0 +1,36 @@
++/***************************************************************************
++ * Copyright (C) 2010 by Dario Freddi <drf at kde.org> *
++ * *
++ * This program is free software; you can redistribute it and/or modify *
++ * it under the terms of the GNU General Public License as published by *
++ * the Free Software Foundation; either version 2 of the License, or *
++ * (at your option) any later version. *
++ * *
++ * This program is distributed in the hope that it will be useful, *
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
++ * GNU General Public License for more details. *
++ * *
++ * You should have received a copy of the GNU General Public License *
++ * along with this program; if not, write to the *
++ * Free Software Foundation, Inc., *
++ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
++ ***************************************************************************/
++
++#ifndef POWERDEVIL_BACKENDLOADER_H
++#define POWERDEVIL_BACKENDLOADER_H
++
++class QObject;
++namespace PowerDevil {
++
++class BackendInterface;
++
++
++namespace BackendLoader
++{
++ BackendInterface *loadBackend(QObject *parent);
++};
++
++}
++
++#endif // POWERDEVIL_POWERDEVILBACKENDLOADER_H
+Index: powerdevil/daemon/backends/upower/powerdevilupowerbackend.h
+===================================================================
+--- powerdevil/daemon/backends/upower/powerdevilupowerbackend.h (revision 1199128)
++++ powerdevil/daemon/backends/upower/powerdevilupowerbackend.h (revision 1199129)
+@@ -42,10 +42,11 @@
+ Q_OBJECT
+ Q_DISABLE_COPY(PowerDevilUPowerBackend)
+ public:
+- explicit PowerDevilUPowerBackend(QObject* parent, const QVariantList&);
++ explicit PowerDevilUPowerBackend(QObject* parent);
+ virtual ~PowerDevilUPowerBackend();
+
+ virtual void init();
++ virtual bool isAvailable();
+
+ virtual float brightness(BrightnessControlType type = Screen) const;
+
+Index: powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp
+===================================================================
+--- powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp (revision 1199128)
++++ powerdevil/daemon/backends/upower/powerdevilupowerbackend.cpp (revision 1199129)
+@@ -31,10 +31,7 @@
+ #include "xrandrbrightness.h"
+ #include "upowersuspendjob.h"
+
+-K_PLUGIN_FACTORY(PowerDevilUpowerBackendFactory, registerPlugin<PowerDevilUPowerBackend>(); )
+-K_EXPORT_PLUGIN(PowerDevilUpowerBackendFactory("powerdevilupowerbackend"))
+-
+-PowerDevilUPowerBackend::PowerDevilUPowerBackend(QObject* parent, const QVariantList&)
++PowerDevilUPowerBackend::PowerDevilUPowerBackend(QObject* parent)
+ : BackendInterface(parent),
+ m_brightNessControl(new XRandrBrightness()),
+ m_upowerInterface(new OrgFreedesktopUPowerInterface(UPOWER_SERVICE, "/org/freedesktop/UPower", QDBusConnection::systemBus(), parent)),
+@@ -51,6 +48,11 @@
+ delete m_kbdBacklight;
+ }
+
++bool PowerDevilUPowerBackend::isAvailable()
++{
++ return m_upowerInterface->isValid();
++}
++
+ void PowerDevilUPowerBackend::init()
+ {
+ // devices
+Index: powerdevil/daemon/backends/upower/CMakeLists.txt
+===================================================================
+--- powerdevil/daemon/backends/upower/CMakeLists.txt (revision 1199128)
++++ powerdevil/daemon/backends/upower/CMakeLists.txt (revision 1199129)
+@@ -1,5 +1,3 @@
+-find_package(X11)
+-
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_BINARY_DIR} ${X11_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${X11_Xrandr_INCLUDE_PATH})
+
+Index: powerdevil/daemon/backends/hal/powerdevilhalbackend.h
+===================================================================
+--- powerdevil/daemon/backends/hal/powerdevilhalbackend.h (revision 1199128)
++++ powerdevil/daemon/backends/hal/powerdevilhalbackend.h (revision 1199129)
+@@ -42,10 +42,11 @@
+ Q_OBJECT
+ Q_DISABLE_COPY(PowerDevilHALBackend)
+ public:
+- explicit PowerDevilHALBackend(QObject* parent, const QVariantList&);
++ explicit PowerDevilHALBackend(QObject* parent);
+ virtual ~PowerDevilHALBackend();
+
+ virtual void init();
++ virtual bool isAvailable();
+
+ virtual float brightness(BrightnessControlType type = Screen) const;
+
+Index: powerdevil/daemon/backends/hal/powerdevilhalbackend.cpp
+===================================================================
+--- powerdevil/daemon/backends/hal/powerdevilhalbackend.cpp (revision 1199128)
++++ powerdevil/daemon/backends/hal/powerdevilhalbackend.cpp (revision 1199129)
+@@ -32,10 +32,7 @@
+ #include <KPluginFactory>
+ #include <QtCore/QTimer>
+
+-K_PLUGIN_FACTORY(PowerDevilHalBackendFactory, registerPlugin<PowerDevilHALBackend>(); )
+-K_EXPORT_PLUGIN(PowerDevilHalBackendFactory("powerdevilhalbackend"))
+-
+-PowerDevilHALBackend::PowerDevilHALBackend(QObject* parent, const QVariantList&)
++PowerDevilHALBackend::PowerDevilHALBackend(QObject* parent)
+ : BackendInterface(parent),
+ m_brightnessInHardware(true),
+ m_halComputer("org.freedesktop.Hal",
+@@ -64,6 +61,11 @@
+ qDeleteAll(m_buttons);
+ }
+
++bool PowerDevilHALBackend::isAvailable()
++{
++ return m_halPowerManagement.isValid();
++}
++
+ void PowerDevilHALBackend::init()
+ {
+ connect(Solid::DeviceNotifier::instance(), SIGNAL(deviceRemoved(const QString &)),
+Index: powerdevil/daemon/powerdevilcore.cpp
+===================================================================
+--- powerdevil/daemon/powerdevilcore.cpp (revision 1199128)
++++ powerdevil/daemon/powerdevilcore.cpp (revision 1199129)
+@@ -26,6 +26,7 @@
+ #include "powerdevilaction.h"
+ #include "powerdevilactionpool.h"
+ #include "powerdevilbackendinterface.h"
++#include "powerdevilbackendloader.h"
+ #include "powerdevilfdoconnector.h"
+ #include "powerdevilpolicyagent.h"
+ #include "powerdevilprofilegenerator.h"
+@@ -58,27 +59,13 @@
+ , m_criticalBatteryTimer(new QTimer(this))
+ {
+ // Before doing anything, let's set up our backend
+- KService::List offers = KServiceTypeTrader::self()->query("PowerDevilBackend", "(Type == 'Service')");
+- QString error_string;
++ m_backend = PowerDevil::BackendLoader::loadBackend(this);
+
+- foreach (const KService::Ptr &ptr, offers) {
+- m_backend = ptr->createInstance<PowerDevil::BackendInterface>(0, QVariantList(), &error_string);
+-
+- if (!m_backend != 0) {
+- kDebug() << "Error loading '" << ptr->name() << "', KService said: " << error_string;
+- }
+- }
+-
+ if (!m_backend) {
+ // Ouch
+ kError() << "KDE Power Management System init failed!";
+- if (error_string.isEmpty() && offers.isEmpty()) {
+- // No offers were available
+- onBackendError(i18n("No valid Power Management backend plugins were found. "
+- "A new installation might solve this problem."));
+- } else {
+- onBackendError(error_string);
+- }
++ onBackendError(i18n("No valid Power Management backend plugins are available. "
++ "A new installation might solve this problem."));
+ } else {
+ // Async backend init - so that KDED gets a bit of a speed up
+ connect(m_backend, SIGNAL(backendReady()), this, SLOT(onBackendReady()));
+@@ -95,12 +82,12 @@
+
+ void Core::onBackendReady()
+ {
+- kDebug() << "Backend is ready, PowerDevil system initialized";
++ kDebug() << "Backend is ready, KDE Power Management system initialized";
+
+ if (QDBusConnection::systemBus().interface()->isServiceRegistered("org.freedesktop.PowerManagement") ||
+ QDBusConnection::systemBus().interface()->isServiceRegistered("com.novell.powersave") ||
+ QDBusConnection::systemBus().interface()->isServiceRegistered("org.freedesktop.Policy.Power")) {
+- kError() << "PowerDevil not initialized, another power manager has been detected";
++ kError() << "KDE Power Management system not initialized, another power manager has been detected";
+ return;
+ }
+
+Index: powerdevil/daemon/CMakeLists.txt
+===================================================================
+--- powerdevil/daemon/CMakeLists.txt (revision 1199128)
++++ powerdevil/daemon/CMakeLists.txt (revision 1199129)
+@@ -13,11 +13,15 @@
+ actions/bundled/handlebuttonevents.cpp
+ )
+
++# Backends
++include(BackendConfig.cmake)
++
+ # target no.1 - powerdevil core library
+ set(powerdevilcore_SRCS
+ powerdevilaction.cpp
+ powerdevilactionpool.cpp
+ powerdevilbackendinterface.cpp
++ powerdevilbackendloader.cpp
+ powerdevilcore.cpp
+ powerdevilfdoconnector.cpp
+ powerdevilpolicyagent.cpp
+@@ -37,12 +41,13 @@
+ qt4_add_dbus_adaptor(powerdevilcore_SRCS ${KDE4_DBUS_INTERFACES_DIR}/org.freedesktop.PowerManagement.xml powerdevilfdoconnector.h PowerDevil::FdoConnector powermanagementfdoadaptor PowerManagementFdoAdaptor)
+ qt4_add_dbus_adaptor(powerdevilcore_SRCS ${KDE4_DBUS_INTERFACES_DIR}/org.freedesktop.PowerManagement.Inhibit.xml powerdevilfdoconnector.h PowerDevil::FdoConnector powermanagementinhibitadaptor PowerManagementInhibitAdaptor)
+
+-kde4_add_library(powerdevilcore SHARED ${powerdevilcore_SRCS} ${powerdevil_bundled_actions_SRCS})
++kde4_add_library(powerdevilcore SHARED ${powerdevilcore_SRCS} ${powerdevil_bundled_actions_SRCS} ${POWERDEVIL_BACKEND_SRCS})
+
+ target_link_libraries(powerdevilcore
+ ${KDE4_KDECORE_LIBS}
+ ${KDE4_SOLID_LIBS}
+ ${KDE4_KIDLETIME_LIBS}
++ ${POWERDEVIL_BACKEND_LIBS}
+ kworkspace
+ )
+
+@@ -75,5 +80,3 @@
+
+ install(TARGETS powerdevilui ${INSTALL_TARGETS_DEFAULT_ARGS})
+ install(FILES powerdevil.desktop DESTINATION ${SERVICES_INSTALL_DIR}/kded)
+-
+-add_subdirectory(backends)
More information about the arch-commits
mailing list