[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