[arch-commits] Commit in kdebase-workspace/trunk (3 files)

Andrea Scarpino andrea at archlinux.org
Wed Oct 31 10:14:47 UTC 2012


    Date: Wednesday, October 31, 2012 @ 06:14:47
  Author: andrea
Revision: 170054

fix logind support on resume; fix mesa 9 compatibility

Added:
  kdebase-workspace/trunk/fix-mesa9.patch
  kdebase-workspace/trunk/logind-support2.patch
Modified:
  kdebase-workspace/trunk/PKGBUILD

-----------------------+
 PKGBUILD              |   13 +++--
 fix-mesa9.patch       |   60 +++++++++++++++++++++++
 logind-support2.patch |  124 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 194 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2012-10-31 10:13:04 UTC (rev 170053)
+++ PKGBUILD	2012-10-31 10:14:47 UTC (rev 170054)
@@ -5,7 +5,7 @@
 pkgname=kdebase-workspace
 _pkgname=kde-workspace
 pkgver=4.9.2
-pkgrel=5
+pkgrel=6
 pkgdesc="Provides the interface and basic tools for the KDE workspace"
 arch=('i686' 'x86_64')
 url='https://projects.kde.org/projects/kde/kde-workspace'
@@ -26,7 +26,9 @@
 source=("http://download.kde.org/stable/${pkgver}/src/${_pkgname}-${pkgver}.tar.xz"
         'kdm' 'kde.pam' 'kde-np.pam' 'kscreensaver.pam' 'kdm.service' 'kdm.logrotate'
         'etc-scripts.patch' 'terminate-server.patch' 'kdm-xinitrd.patch'
-        'logind-support.patch')
+        'logind-support.patch'
+        'logind-support2.patch'
+        'fix-mesa9.patch')
 sha1sums=('091bec159d85db2a9a6d6b1b43a53183c23de488'
           '5db3a245201bd4a50e65aa2ef583cf5490e4f646'
           '660eae40a707d2711d8d7f32a93214865506b795'
@@ -37,7 +39,9 @@
           'c079ebd157c836ba996190f0d2bcea1a7828d02c'
           'ac7bc292c865bc1ab8c02e6341aa7aeaf1a3eeee'
           'd509dac592bd8b310df27991b208c95b6d907514'
-          'ccde71c42e19feaf40d3bd76e7396a0cb6df012f')
+          'ccde71c42e19feaf40d3bd76e7396a0cb6df012f'
+          '8f27ebd4bcc2f833a73d453837f4522b2be0aa1f'
+          'c57583555bf8acd213295316512b92b6dc07703e')
 
 build() {
 	cd ${_pkgname}-${pkgver}
@@ -51,6 +55,9 @@
 	patch -p0 -i "${srcdir}"/terminate-server.patch
     # KDEBUG#307412 (fixed upstream)
     patch -p1 -i "${srcdir}"/logind-support.patch
+    patch -p1 -i "${srcdir}"/logind-support2.patch
+    # KDEBUG#308385 (fixed upstream)
+    patch -p1 -i "${srcdir}"/fix-mesa9.patch
 
     cd ../
 

Added: fix-mesa9.patch
===================================================================
--- fix-mesa9.patch	                        (rev 0)
+++ fix-mesa9.patch	2012-10-31 10:14:47 UTC (rev 170054)
@@ -0,0 +1,60 @@
+commit 6cf057777555a5d0c834de3a0165a62916cf3b40
+Author: Fredrik Höglund <fredrik at kde.org>
+Date:   Tue Oct 30 18:20:00 2012 +0100
+
+    kwin/glx: Avoid MSAA configs in initBufferConfigs()
+    
+    It appears that we're accidentally choosing an MSAA config with the
+    Intel driver in Mesa 9.0. So change the algorithm to take the values
+    of GLX_SAMPLES and GLX_SAMPLE_BUFFERS into account.
+    
+    Found by Kenneth Graunke.
+
+diff --git a/kwin/scene_opengl_glx.cpp b/kwin/scene_opengl_glx.cpp
+index 1fe2f18..cf7933b 100644
+--- a/kwin/scene_opengl_glx.cpp
++++ b/kwin/scene_opengl_glx.cpp
+@@ -270,12 +270,15 @@ bool SceneOpenGL::initBufferConfigs()
+     fbcbuffer_nondb = NULL;
+ 
+     for (int i = 0; i < 2; i++) {
+-        int back, stencil, depth, caveat, alpha;
++        int back, stencil, depth, caveat, msaa_buffers, msaa_samples, alpha;
+         back = i > 0 ? INT_MAX : 1;
+         stencil = INT_MAX;
+         depth = INT_MAX;
+         caveat = INT_MAX;
++        msaa_buffers = INT_MAX;
++        msaa_samples = INT_MAX;
+         alpha = 0;
++
+         for (int j = 0; j < cnt; j++) {
+             XVisualInfo *vi;
+             int visual_depth;
+@@ -322,10 +325,26 @@ bool SceneOpenGL::initBufferConfigs()
+                                  GLX_CONFIG_CAVEAT, &caveat_value);
+             if (caveat_value > caveat)
+                 continue;
++
++            int msaa_buffers_value;
++            glXGetFBConfigAttrib(display(), fbconfigs[j], GLX_SAMPLE_BUFFERS,
++                                 &msaa_buffers_value);
++            if (msaa_buffers_value > msaa_buffers)
++                continue;
++
++            int msaa_samples_value;
++            glXGetFBConfigAttrib(display(), fbconfigs[j], GLX_SAMPLES,
++                                 &msaa_samples_value);
++            if (msaa_samples_value > msaa_samples)
++                continue;
++
+             back = back_value;
+             stencil = stencil_value;
+             depth = depth_value;
+             caveat = caveat_value;
++            msaa_buffers = msaa_buffers_value;
++            msaa_samples = msaa_samples_value;
++
+             if (i > 0)
+                 fbcbuffer_nondb = fbconfigs[ j ];
+             else

Added: logind-support2.patch
===================================================================
--- logind-support2.patch	                        (rev 0)
+++ logind-support2.patch	2012-10-31 10:14:47 UTC (rev 170054)
@@ -0,0 +1,124 @@
+commit 80e9e6e48ff5b84962f3a8543ee06bcd4f122623
+Author: Lukáš Tinkl <lukas at kde.org>
+Date:   Tue Oct 30 11:32:52 2012 +0100
+
+    move systemd inhibition initialization to a slot
+    
+    and call it on resume. It looks like the filedescriptor
+    goes away when you suspend so we need to recreate it.
+    
+    BUG: 307412
+
+diff --git a/powerdevil/daemon/powerdevilcore.cpp b/powerdevil/daemon/powerdevilcore.cpp
+index df79667..7f24cbb 100644
+--- a/powerdevil/daemon/powerdevilcore.cpp
++++ b/powerdevil/daemon/powerdevilcore.cpp
+@@ -127,8 +127,6 @@ void Core::onBackendReady()
+             this, SLOT(onAcAdapterStateChanged(PowerDevil::BackendInterface::AcAdapterState)));
+     connect(m_backend, SIGNAL(batteryRemainingTimeChanged(qulonglong)),
+             this, SLOT(onBatteryRemainingTimeChanged(qulonglong)));
+-    connect(m_backend, SIGNAL(resumeFromSuspend()),
+-            this, SLOT(onResumeFromSuspend()));
+     connect(KIdleTime::instance(), SIGNAL(timeoutReached(int,int)),
+             this, SLOT(onKIdleTimeoutReached(int,int)));
+     connect(KIdleTime::instance(), SIGNAL(resumingFromIdle()),
+@@ -139,6 +137,9 @@ void Core::onBackendReady()
+     // Set up the policy agent
+     PowerDevil::PolicyAgent::instance()->init();
+ 
++    connect(m_backend, SIGNAL(resumeFromSuspend()),
++            this, SLOT(onResumeFromSuspend()));
++
+     // Initialize the action pool, which will also load the needed startup actions.
+     PowerDevil::ActionPool::instance()->init(this);
+ 
+@@ -601,6 +602,7 @@ void Core::onResumeFromSuspend()
+                                              "/ScreenSaver",
+                                              QDBusConnection::sessionBus());
+     iface.SimulateUserActivity();
++    PowerDevil::PolicyAgent::instance()->setupSystemdInhibition();
+ 
+     emit resumingFromSuspend();
+ }
+diff --git a/powerdevil/daemon/powerdevilpolicyagent.cpp b/powerdevil/daemon/powerdevilpolicyagent.cpp
+index 70588db..0777846 100644
+--- a/powerdevil/daemon/powerdevilpolicyagent.cpp
++++ b/powerdevil/daemon/powerdevilpolicyagent.cpp
+@@ -88,6 +88,7 @@ PolicyAgent *PolicyAgent::instance()
+ PolicyAgent::PolicyAgent(QObject* parent)
+     : QObject(parent)
+     , m_sdAvailable(false)
++    , m_systemdInhibitFd(-1)
+     , m_ckAvailable(false)
+     , m_sessionIsBeingInterrupted(false)
+     , m_lastCookie(0)
+@@ -223,23 +224,7 @@ void PolicyAgent::onSessionHandlerRegistered(const QString & serviceName)
+ 
+         onActiveSessionChanged(m_activeSessionPath);
+ 
+-        // inhibit systemd handling of power/sleep/lid buttons
+-        // http://www.freedesktop.org/wiki/Software/systemd/inhibit
+-        kDebug() << "fd passing available:" << bool(managerIface.connection().connectionCapabilities() & QDBusConnection::UnixFileDescriptorPassing);
+-
+-        QVariantList args;
+-        args << "handle-power-key:handle-suspend-key:handle-hibernate-key:handle-lid-switch"; // what
+-        args << "PowerDevil"; // who
+-        args << "KDE handles power events"; // why
+-        args << "block"; // mode
+-        QDBusPendingReply<QDBusUnixFileDescriptor> desc = managerIface.asyncCallWithArgumentList("Inhibit", args);
+-        desc.waitForFinished();
+-        if (desc.isValid()) {
+-            m_systemdInhibitFd = desc.value();
+-            kDebug() << "systemd powersave events handling inhibited, descriptor:" << m_systemdInhibitFd.fileDescriptor();
+-        }
+-        else
+-            kWarning() << "failed to inhibit systemd powersave handling";
++        setupSystemdInhibition();
+ 
+         kDebug() << "systemd support initialized";
+     } else if (serviceName == CONSOLEKIT_SERVICE) {
+@@ -552,6 +537,31 @@ void PolicyAgent::releaseAllInhibitions()
+     }
+ }
+ 
++void PolicyAgent::setupSystemdInhibition()
++{
++    if (m_systemdInhibitFd.fileDescriptor() != -1)
++        return;
++
++    // inhibit systemd handling of power/sleep/lid buttons
++    // http://www.freedesktop.org/wiki/Software/systemd/inhibit
++    QDBusInterface managerIface(SYSTEMD_LOGIN1_SERVICE, SYSTEMD_LOGIN1_PATH, SYSTEMD_LOGIN1_MANAGER_IFACE, QDBusConnection::systemBus());
++    kDebug() << "fd passing available:" << bool(managerIface.connection().connectionCapabilities() & QDBusConnection::UnixFileDescriptorPassing);
++
++    QVariantList args;
++    args << "handle-power-key:handle-suspend-key:handle-hibernate-key:handle-lid-switch"; // what
++    args << "PowerDevil"; // who
++    args << "KDE handles power events"; // why
++    args << "block"; // mode
++    QDBusPendingReply<QDBusUnixFileDescriptor> desc = managerIface.asyncCallWithArgumentList("Inhibit", args);
++    desc.waitForFinished();
++    if (desc.isValid()) {
++        m_systemdInhibitFd = desc.value();
++        kDebug() << "systemd powersave events handling inhibited, descriptor:" << m_systemdInhibitFd.fileDescriptor();
++    }
++    else
++        kWarning() << "failed to inhibit systemd powersave handling";
++}
++
+ }
+ 
+ #include "powerdevilpolicyagent.moc"
+diff --git a/powerdevil/daemon/powerdevilpolicyagent.h b/powerdevil/daemon/powerdevilpolicyagent.h
+index a046497..f1e8c03 100644
+--- a/powerdevil/daemon/powerdevilpolicyagent.h
++++ b/powerdevil/daemon/powerdevilpolicyagent.h
+@@ -74,6 +74,8 @@ public:
+ 
+     RequiredPolicies unavailablePolicies();
+ 
++    void setupSystemdInhibition();
++
+ public Q_SLOTS:
+     // Exported slots
+     uint AddInhibition(uint types, const QString &appName, const QString &reason);




More information about the arch-commits mailing list