[arch-commits] Commit in libkscreen/repos (6 files)

Andrea Scarpino andrea at nymeria.archlinux.org
Tue Sep 10 12:50:09 UTC 2013


    Date: Tuesday, September 10, 2013 @ 14:50:08
  Author: andrea
Revision: 194032

archrelease: copy trunk to extra-i686, extra-x86_64

Added:
  libkscreen/repos/extra-i686/PKGBUILD
    (from rev 194031, libkscreen/trunk/PKGBUILD)
  libkscreen/repos/extra-i686/kdebug-324625.patch
    (from rev 194031, libkscreen/trunk/kdebug-324625.patch)
  libkscreen/repos/extra-x86_64/PKGBUILD
    (from rev 194031, libkscreen/trunk/PKGBUILD)
  libkscreen/repos/extra-x86_64/kdebug-324625.patch
    (from rev 194031, libkscreen/trunk/kdebug-324625.patch)
Deleted:
  libkscreen/repos/extra-i686/PKGBUILD
  libkscreen/repos/extra-x86_64/PKGBUILD

----------------------------------+
 /PKGBUILD                        |   76 +++++++++++++++
 extra-i686/PKGBUILD              |   34 ------
 extra-i686/kdebug-324625.patch   |  184 +++++++++++++++++++++++++++++++++++++
 extra-x86_64/PKGBUILD            |   34 ------
 extra-x86_64/kdebug-324625.patch |  184 +++++++++++++++++++++++++++++++++++++
 5 files changed, 444 insertions(+), 68 deletions(-)

Deleted: extra-i686/PKGBUILD
===================================================================
--- extra-i686/PKGBUILD	2013-09-10 12:49:09 UTC (rev 194031)
+++ extra-i686/PKGBUILD	2013-09-10 12:50:08 UTC (rev 194032)
@@ -1,34 +0,0 @@
-# $Id$
-# Maintainer: Andrea Scarpino <andrea at archlinux.org>
-# Contributor: birdflesh <antkoul at gmail dot com>
-
-pkgname=libkscreen
-pkgver=1.0.1
-pkgrel=1
-pkgdesc="KDE's screen management library"
-arch=('i686' 'x86_64')
-url='https://projects.kde.org/libkscreen'
-license=('GPL')
-depends=('kdelibs' 'qjson')
-makedepends=('cmake' 'automoc4')
-#source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
-source=("http://download.kde.org/stable/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
-md5sums=('52aeaf2d987bffd05b111e89b445bd00')
-
-prepare() {
-  mkdir build
-}
-
-build() {
-  cd build
-  cmake ../$pkgname-$pkgver \
-    -DQT_QMAKE_EXECUTABLE=qmake-qt4 \
-    -DCMAKE_BUILD_TYPE=Release \
-    -DCMAKE_INSTALL_PREFIX=/usr
-  make
-}
-
-package() {
-  cd build
-  make DESTDIR="${pkgdir}" install
-}

Copied: libkscreen/repos/extra-i686/PKGBUILD (from rev 194031, libkscreen/trunk/PKGBUILD)
===================================================================
--- extra-i686/PKGBUILD	                        (rev 0)
+++ extra-i686/PKGBUILD	2013-09-10 12:50:08 UTC (rev 194032)
@@ -0,0 +1,38 @@
+# $Id$
+# Maintainer: Andrea Scarpino <andrea at archlinux.org>
+# Contributor: birdflesh <antkoul at gmail dot com>
+
+pkgname=libkscreen
+pkgver=1.0.1
+pkgrel=2
+pkgdesc="KDE's screen management library"
+arch=('i686' 'x86_64')
+url='https://projects.kde.org/libkscreen'
+license=('GPL')
+depends=('kdelibs' 'qjson')
+makedepends=('cmake' 'automoc4')
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2"
+        'kdebug-324625.patch')
+md5sums=('52aeaf2d987bffd05b111e89b445bd00'
+         '2f670035b94c6d61c4a3d1c4230db4b5')
+
+prepare() {
+  mkdir build
+
+  cd ${pkgname}-${pkgver}
+  patch -p1 -i "${srcdir}"/kdebug-324625.patch
+}
+
+build() {
+  cd build
+  cmake ../$pkgname-$pkgver \
+    -DQT_QMAKE_EXECUTABLE=qmake-qt4 \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DCMAKE_INSTALL_PREFIX=/usr
+  make
+}
+
+package() {
+  cd build
+  make DESTDIR="${pkgdir}" install
+}

Copied: libkscreen/repos/extra-i686/kdebug-324625.patch (from rev 194031, libkscreen/trunk/kdebug-324625.patch)
===================================================================
--- extra-i686/kdebug-324625.patch	                        (rev 0)
+++ extra-i686/kdebug-324625.patch	2013-09-10 12:50:08 UTC (rev 194032)
@@ -0,0 +1,184 @@
+From: Dan Vrátil <dvratil at redhat.com>
+Date: Mon, 09 Sep 2013 16:43:56 +0000
+Subject: Refresh modes when currentModeId points to unknown mode
+X-Git-Url: http://quickgit.kde.org/?p=libkscreen.git&a=commitdiff&h=1d9ac012e857036bb8814cc84c9cf10bb57ca40c
+---
+Refresh modes when currentModeId points to unknown mode
+
+Sometimes drivers insert or remove modes, so when currentModeId points to a mode
+that we don't have cached, we must refresh the local cache.
+
+This also fixes a crash that occured when currentModeId would be pointing to a
+mode that we don't have (even after refreshing modes)
+
+REVIEW: 112604
+BUG: 323107
+BUG: 324625
+FIXED-IN: 1.0.2
+---
+
+
+--- a/backends/xrandr/xrandrconfig.cpp
++++ b/backends/xrandr/xrandrconfig.cpp
+@@ -163,31 +163,54 @@
+         }
+ 
+         XRandRMode* currentMode = currentOutput->currentMode();
+-        Q_ASSERT_X(currentMode, "applyKScreenConfig", "currentOutput has returned a null XRandRMode*");
+-
+-        QSize size = currentMode->size();
+-
+-        int x, y;
+-
+-        //TODO: Move this code within libkscreen
+-        y = currentOutput->position().y();
+-        if (currentOutput->isHorizontal()) {
+-            y += size.height();
++
++        // Current output mode can be unlisted - when output size changes to a
++        // resolution that is not listed by xrandr, in some cases the driver will
++        // dynamically create a new mode, so we just need to update the list
++        // of modes and try to get a mode matching currentModeId again.
++        // In some cases however re-reading modes from xrandr won't help - in that
++        // case we fallback to doing nothing
++        if (!currentMode) {
++            XRROutputInfo *outputInfo = XRandR::XRROutput(currentOutput->id());
++            currentOutput->updateModes(outputInfo);
++            XRRFreeOutputInfo(outputInfo);
++            currentMode = currentOutput->currentMode();
++        }
++
++        if (currentMode) {
++            const QSize size = currentMode->size();
++            int x, y;
++
++            //TODO: Move this code within libkscreen
++            y = currentOutput->position().y();
++            if (currentOutput->isHorizontal()) {
++                y += size.height();
++            } else {
++                y += size.width();
++            }
++
++            x = currentOutput->position().x();
++            if (currentOutput->isHorizontal()) {
++                x += size.width();
++            } else {
++                x += size.height();
++            }
++
++            if (x > newSize.width() || y > newSize.height()) {
++                if (!toDisable.contains(output->id())) {
++                    kDebug(dXndr()) << "Output doesn't fit: " << x << "x" << y << newSize;
++                    toDisable.insert(output->id(), output);
++                }
++            }
+         } else {
+-            y += size.width();
+-        }
+-
+-        x = currentOutput->position().x();
+-        if (currentOutput->isHorizontal()) {
+-            x += size.width();
+-        } else {
+-            x += size.height();
+-        }
+-
+-        if (x > newSize.width() || y > newSize.height()) {
+-            if (!toDisable.contains(output->id())) {
+-                kDebug(dXndr()) << "Output doesn't fit: " << x << "x" << y << newSize;
+-                toDisable.insert(output->id(), output);
++            // Don't update the output
++            toChange.remove(currentOutput->id());
++
++            kWarning() << "Output" << currentOutput->id() << ": Failed to get currentMode";
++            kDebug(dXndr()) << "CurrentModeId:" << currentOutput->currentModeId();
++            kDebug(dXndr()) << "Available modes:";
++            Q_FOREACH (XRandRMode *mode, currentOutput->modes()) {
++                kDebug(dXndr()) << "\t" << mode->id() << mode->size() << mode->refreshRate() << mode->name();
+             }
+         }
+     }//Q_FOREACH(KScreen::Output *output, outputs)
+
+--- a/backends/xrandr/xrandrmode.cpp
++++ b/backends/xrandr/xrandrmode.cpp
+@@ -48,10 +48,25 @@
+     return kscreenMode;
+ }
+ 
++int XRandRMode::id() const
++{
++    return m_id;
++}
++
+ QSize XRandRMode::size() const
+ {
+     return m_size;
+ }
+ 
++float XRandRMode::refreshRate() const
++{
++    return m_refreshRate;
++}
++
++QString XRandRMode::name() const
++{
++    return m_name;
++}
++
+ #include "xrandrmode.moc"
+ 
+
+--- a/backends/xrandr/xrandrmode.h
++++ b/backends/xrandr/xrandrmode.h
+@@ -45,7 +45,11 @@
+ 
+     KScreen::Mode* toKScreenMode(KScreen::Output *parent);
+ 
++    int id() const;
+     QSize size() const;
++    float refreshRate() const;
++    QString name() const;
++
+ private:
+     int m_id;
+     QString m_name;
+
+--- a/backends/xrandr/xrandroutput.cpp
++++ b/backends/xrandr/xrandroutput.cpp
+@@ -82,6 +82,11 @@
+ QPoint XRandROutput::position() const
+ {
+     return m_position;
++}
++
++XRandRMode::Map XRandROutput::modes() const
++{
++    return m_modes;
+ }
+ 
+ QString XRandROutput::currentModeId() const
+
+--- a/backends/xrandr/xrandroutput.h
++++ b/backends/xrandr/xrandroutput.h
+@@ -81,6 +81,7 @@
+     bool isPrimary() const;
+     QPoint position() const;
+     QString currentModeId() const;
++    XRandRMode::Map modes() const;
+     XRandRMode* currentMode() const;
+     KScreen::Output::Rotation rotation() const;
+     inline bool isHorizontal() const { return ((m_rotation == KScreen::Output::None) || (m_rotation == KScreen::Output::Inverted)); }
+@@ -88,9 +89,10 @@
+ 
+     KScreen::Output* toKScreenOutput(KScreen::Config *parent) const;
+     void updateKScreenOutput(KScreen::Output *output) const;
++
++    void updateModes(const XRROutputInfo *outputInfo);
+ private:
+     void updateOutput(const XRROutputInfo *outputInfo);
+-    void updateModes(const XRROutputInfo *outputInfo);
+     void fetchType();
+     KScreen::Output::Type typeFromName();
+     QByteArray typeFromProperty() const;
+

Deleted: extra-x86_64/PKGBUILD
===================================================================
--- extra-x86_64/PKGBUILD	2013-09-10 12:49:09 UTC (rev 194031)
+++ extra-x86_64/PKGBUILD	2013-09-10 12:50:08 UTC (rev 194032)
@@ -1,34 +0,0 @@
-# $Id$
-# Maintainer: Andrea Scarpino <andrea at archlinux.org>
-# Contributor: birdflesh <antkoul at gmail dot com>
-
-pkgname=libkscreen
-pkgver=1.0.1
-pkgrel=1
-pkgdesc="KDE's screen management library"
-arch=('i686' 'x86_64')
-url='https://projects.kde.org/libkscreen'
-license=('GPL')
-depends=('kdelibs' 'qjson')
-makedepends=('cmake' 'automoc4')
-#source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2")
-source=("http://download.kde.org/stable/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
-md5sums=('52aeaf2d987bffd05b111e89b445bd00')
-
-prepare() {
-  mkdir build
-}
-
-build() {
-  cd build
-  cmake ../$pkgname-$pkgver \
-    -DQT_QMAKE_EXECUTABLE=qmake-qt4 \
-    -DCMAKE_BUILD_TYPE=Release \
-    -DCMAKE_INSTALL_PREFIX=/usr
-  make
-}
-
-package() {
-  cd build
-  make DESTDIR="${pkgdir}" install
-}

Copied: libkscreen/repos/extra-x86_64/PKGBUILD (from rev 194031, libkscreen/trunk/PKGBUILD)
===================================================================
--- extra-x86_64/PKGBUILD	                        (rev 0)
+++ extra-x86_64/PKGBUILD	2013-09-10 12:50:08 UTC (rev 194032)
@@ -0,0 +1,38 @@
+# $Id$
+# Maintainer: Andrea Scarpino <andrea at archlinux.org>
+# Contributor: birdflesh <antkoul at gmail dot com>
+
+pkgname=libkscreen
+pkgver=1.0.1
+pkgrel=2
+pkgdesc="KDE's screen management library"
+arch=('i686' 'x86_64')
+url='https://projects.kde.org/libkscreen'
+license=('GPL')
+depends=('kdelibs' 'qjson')
+makedepends=('cmake' 'automoc4')
+source=("http://download.kde.org/stable/${pkgname}/${pkgver}/src/${pkgname}-${pkgver}.tar.bz2"
+        'kdebug-324625.patch')
+md5sums=('52aeaf2d987bffd05b111e89b445bd00'
+         '2f670035b94c6d61c4a3d1c4230db4b5')
+
+prepare() {
+  mkdir build
+
+  cd ${pkgname}-${pkgver}
+  patch -p1 -i "${srcdir}"/kdebug-324625.patch
+}
+
+build() {
+  cd build
+  cmake ../$pkgname-$pkgver \
+    -DQT_QMAKE_EXECUTABLE=qmake-qt4 \
+    -DCMAKE_BUILD_TYPE=Release \
+    -DCMAKE_INSTALL_PREFIX=/usr
+  make
+}
+
+package() {
+  cd build
+  make DESTDIR="${pkgdir}" install
+}

Copied: libkscreen/repos/extra-x86_64/kdebug-324625.patch (from rev 194031, libkscreen/trunk/kdebug-324625.patch)
===================================================================
--- extra-x86_64/kdebug-324625.patch	                        (rev 0)
+++ extra-x86_64/kdebug-324625.patch	2013-09-10 12:50:08 UTC (rev 194032)
@@ -0,0 +1,184 @@
+From: Dan Vrátil <dvratil at redhat.com>
+Date: Mon, 09 Sep 2013 16:43:56 +0000
+Subject: Refresh modes when currentModeId points to unknown mode
+X-Git-Url: http://quickgit.kde.org/?p=libkscreen.git&a=commitdiff&h=1d9ac012e857036bb8814cc84c9cf10bb57ca40c
+---
+Refresh modes when currentModeId points to unknown mode
+
+Sometimes drivers insert or remove modes, so when currentModeId points to a mode
+that we don't have cached, we must refresh the local cache.
+
+This also fixes a crash that occured when currentModeId would be pointing to a
+mode that we don't have (even after refreshing modes)
+
+REVIEW: 112604
+BUG: 323107
+BUG: 324625
+FIXED-IN: 1.0.2
+---
+
+
+--- a/backends/xrandr/xrandrconfig.cpp
++++ b/backends/xrandr/xrandrconfig.cpp
+@@ -163,31 +163,54 @@
+         }
+ 
+         XRandRMode* currentMode = currentOutput->currentMode();
+-        Q_ASSERT_X(currentMode, "applyKScreenConfig", "currentOutput has returned a null XRandRMode*");
+-
+-        QSize size = currentMode->size();
+-
+-        int x, y;
+-
+-        //TODO: Move this code within libkscreen
+-        y = currentOutput->position().y();
+-        if (currentOutput->isHorizontal()) {
+-            y += size.height();
++
++        // Current output mode can be unlisted - when output size changes to a
++        // resolution that is not listed by xrandr, in some cases the driver will
++        // dynamically create a new mode, so we just need to update the list
++        // of modes and try to get a mode matching currentModeId again.
++        // In some cases however re-reading modes from xrandr won't help - in that
++        // case we fallback to doing nothing
++        if (!currentMode) {
++            XRROutputInfo *outputInfo = XRandR::XRROutput(currentOutput->id());
++            currentOutput->updateModes(outputInfo);
++            XRRFreeOutputInfo(outputInfo);
++            currentMode = currentOutput->currentMode();
++        }
++
++        if (currentMode) {
++            const QSize size = currentMode->size();
++            int x, y;
++
++            //TODO: Move this code within libkscreen
++            y = currentOutput->position().y();
++            if (currentOutput->isHorizontal()) {
++                y += size.height();
++            } else {
++                y += size.width();
++            }
++
++            x = currentOutput->position().x();
++            if (currentOutput->isHorizontal()) {
++                x += size.width();
++            } else {
++                x += size.height();
++            }
++
++            if (x > newSize.width() || y > newSize.height()) {
++                if (!toDisable.contains(output->id())) {
++                    kDebug(dXndr()) << "Output doesn't fit: " << x << "x" << y << newSize;
++                    toDisable.insert(output->id(), output);
++                }
++            }
+         } else {
+-            y += size.width();
+-        }
+-
+-        x = currentOutput->position().x();
+-        if (currentOutput->isHorizontal()) {
+-            x += size.width();
+-        } else {
+-            x += size.height();
+-        }
+-
+-        if (x > newSize.width() || y > newSize.height()) {
+-            if (!toDisable.contains(output->id())) {
+-                kDebug(dXndr()) << "Output doesn't fit: " << x << "x" << y << newSize;
+-                toDisable.insert(output->id(), output);
++            // Don't update the output
++            toChange.remove(currentOutput->id());
++
++            kWarning() << "Output" << currentOutput->id() << ": Failed to get currentMode";
++            kDebug(dXndr()) << "CurrentModeId:" << currentOutput->currentModeId();
++            kDebug(dXndr()) << "Available modes:";
++            Q_FOREACH (XRandRMode *mode, currentOutput->modes()) {
++                kDebug(dXndr()) << "\t" << mode->id() << mode->size() << mode->refreshRate() << mode->name();
+             }
+         }
+     }//Q_FOREACH(KScreen::Output *output, outputs)
+
+--- a/backends/xrandr/xrandrmode.cpp
++++ b/backends/xrandr/xrandrmode.cpp
+@@ -48,10 +48,25 @@
+     return kscreenMode;
+ }
+ 
++int XRandRMode::id() const
++{
++    return m_id;
++}
++
+ QSize XRandRMode::size() const
+ {
+     return m_size;
+ }
+ 
++float XRandRMode::refreshRate() const
++{
++    return m_refreshRate;
++}
++
++QString XRandRMode::name() const
++{
++    return m_name;
++}
++
+ #include "xrandrmode.moc"
+ 
+
+--- a/backends/xrandr/xrandrmode.h
++++ b/backends/xrandr/xrandrmode.h
+@@ -45,7 +45,11 @@
+ 
+     KScreen::Mode* toKScreenMode(KScreen::Output *parent);
+ 
++    int id() const;
+     QSize size() const;
++    float refreshRate() const;
++    QString name() const;
++
+ private:
+     int m_id;
+     QString m_name;
+
+--- a/backends/xrandr/xrandroutput.cpp
++++ b/backends/xrandr/xrandroutput.cpp
+@@ -82,6 +82,11 @@
+ QPoint XRandROutput::position() const
+ {
+     return m_position;
++}
++
++XRandRMode::Map XRandROutput::modes() const
++{
++    return m_modes;
+ }
+ 
+ QString XRandROutput::currentModeId() const
+
+--- a/backends/xrandr/xrandroutput.h
++++ b/backends/xrandr/xrandroutput.h
+@@ -81,6 +81,7 @@
+     bool isPrimary() const;
+     QPoint position() const;
+     QString currentModeId() const;
++    XRandRMode::Map modes() const;
+     XRandRMode* currentMode() const;
+     KScreen::Output::Rotation rotation() const;
+     inline bool isHorizontal() const { return ((m_rotation == KScreen::Output::None) || (m_rotation == KScreen::Output::Inverted)); }
+@@ -88,9 +89,10 @@
+ 
+     KScreen::Output* toKScreenOutput(KScreen::Config *parent) const;
+     void updateKScreenOutput(KScreen::Output *output) const;
++
++    void updateModes(const XRROutputInfo *outputInfo);
+ private:
+     void updateOutput(const XRROutputInfo *outputInfo);
+-    void updateModes(const XRROutputInfo *outputInfo);
+     void fetchType();
+     KScreen::Output::Type typeFromName();
+     QByteArray typeFromProperty() const;
+




More information about the arch-commits mailing list