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

Felix Yan fyan at archlinux.org
Tue Aug 18 11:16:32 UTC 2015


    Date: Tuesday, August 18, 2015 @ 13:16:32
  Author: fyan
Revision: 243865

upgpkg: qt5 5.5.0-2

Add two upstream patches for FS#43986

Added:
  qt5/trunk/ae51e360f986698eaf41fdb38f8a878a50f69be1.patch
  qt5/trunk/b0b08cc0e4e38504d6b833702f7477aee4e2a192.patch
Modified:
  qt5/trunk/PKGBUILD

------------------------------------------------+
 PKGBUILD                                       |   14 ++++-
 ae51e360f986698eaf41fdb38f8a878a50f69be1.patch |   56 +++++++++++++++++++++++
 b0b08cc0e4e38504d6b833702f7477aee4e2a192.patch |   45 ++++++++++++++++++
 3 files changed, 112 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2015-08-18 10:44:13 UTC (rev 243864)
+++ PKGBUILD	2015-08-18 11:16:32 UTC (rev 243865)
@@ -30,7 +30,7 @@
          'qt5-x11extras'
          'qt5-xmlpatterns')
 pkgver=5.5.0
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 url='http://www.qt.io/developers'
 license=('GPL3' 'LGPL' 'FDL' 'custom')
@@ -45,13 +45,17 @@
 _pkgfqn="qt-everywhere-opensource-src-${pkgver}"
 source=("http://download.qt-project.org/official_releases/qt/${pkgver%.*}/${pkgver}/single/${_pkgfqn}.tar.xz"
         'assistant.desktop' 'designer.desktop' 'linguist.desktop' 'qdbusviewer.desktop'
-        'keypad-shortcuts.patch')
+        'keypad-shortcuts.patch'
+        'ae51e360f986698eaf41fdb38f8a878a50f69be1.patch'
+        'b0b08cc0e4e38504d6b833702f7477aee4e2a192.patch')
 md5sums=('65d5282f3dee0336da9ed1f77148952f'
          'b2897dd6a2967bccf8f10e397aafee55'
          '76e150b20178d2d43801f7367232e5f7'
          '188da8f4c87316e730ebf1c6217bf5a0'
          '322b419b16c75d4de0ee7ad0a246caa1'
-         '665439088fc7de52a97455c5eaf87889')
+         '665439088fc7de52a97455c5eaf87889'
+         '4587b9a9438a8e86235a1c1b26dce1e8'
+         'cea675fa4b394653e3bc9f80f9edf4b0')
 
 prepare() {
   cd ${_pkgfqn}
@@ -59,6 +63,10 @@
   # https://bugs.archlinux.org/task/44676
   (cd qtbase; patch -p1 -i "$srcdir/keypad-shortcuts.patch")
 
+  # https://bugs.archlinux.org/task/43986
+  (cd qtbase; patch -p1 -i "$srcdir/ae51e360f986698eaf41fdb38f8a878a50f69be1.patch"
+              patch -p1 -i "$srcdir/b0b08cc0e4e38504d6b833702f7477aee4e2a192.patch")
+
   # Build qmake using Arch {C,LD}FLAGS
   # This also sets default {C,CXX,LD}FLAGS for projects built using qmake
   sed -i -e "s|^\(QMAKE_CFLAGS_RELEASE.*\)|\1 ${CFLAGS}|" \

Added: ae51e360f986698eaf41fdb38f8a878a50f69be1.patch
===================================================================
--- ae51e360f986698eaf41fdb38f8a878a50f69be1.patch	                        (rev 0)
+++ ae51e360f986698eaf41fdb38f8a878a50f69be1.patch	2015-08-18 11:16:32 UTC (rev 243865)
@@ -0,0 +1,56 @@
+From ae51e360f986698eaf41fdb38f8a878a50f69be1 Mon Sep 17 00:00:00 2001
+From: Alexander Volkov <a.volkov at rusbitech.ru>
+Date: Fri, 19 Jun 2015 13:34:11 +0300
+Subject: [PATCH] xcb: Ignore disabling of outputs in the middle of the mode
+ switch
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf8
+Content-Transfer-Encoding: 8bit
+
+X server may send RROutputChangeNotify event with null crtc and mode,
+when it switches an output mode. Request RROutputInfo to distinguish
+this case from the case when the output is explicitly disabled.
+
+Change-Id: I4c2356ec71dbcc8013009ea8a6f46dd11f19d6bb
+Task-number: QTBUG-44158
+Task-number: QTBUG-46786
+Task-number: QTBUG-46822
+Reviewed-by: Daniel Vrátil <dvratil at redhat.com>
+Reviewed-by: Gatis Paeglis <gatis.paeglis at digia.com>
+Reviewed-by: Shawn Rutledge <shawn.rutledge at theqtcompany.com>
+---
+ src/plugins/platforms/xcb/qxcbconnection.cpp | 18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
+index 0867615..29e1fd1 100644
+--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
++++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
+@@ -265,11 +265,19 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event)
+         } else if (screen) {
+             // Screen has been disabled -> remove
+             if (output.crtc == XCB_NONE && output.mode == XCB_NONE) {
+-                qCDebug(lcQpaScreen) << "output" << screen->name() << "has been disabled";
+-                m_screens.removeOne(screen);
+-                foreach (QXcbScreen *otherScreen, m_screens)
+-                    otherScreen->removeVirtualSibling((QPlatformScreen *) screen);
+-                QXcbIntegration::instance()->destroyScreen(screen);
++                xcb_randr_get_output_info_cookie_t outputInfoCookie =
++                    xcb_randr_get_output_info(xcb_connection(), output.output, output.config_timestamp);
++                QScopedPointer<xcb_randr_get_output_info_reply_t, QScopedPointerPodDeleter> outputInfo(
++                    xcb_randr_get_output_info_reply(xcb_connection(), outputInfoCookie, NULL));
++                if (outputInfo->crtc == XCB_NONE) {
++                    qCDebug(lcQpaScreen) << "output" << screen->name() << "has been disabled";
++                    m_screens.removeOne(screen);
++                    foreach (QXcbScreen *otherScreen, m_screens)
++                        otherScreen->removeVirtualSibling((QPlatformScreen *) screen);
++                    QXcbIntegration::instance()->destroyScreen(screen);
++                } else {
++                    qCDebug(lcQpaScreen) << "output" << screen->name() << "has been temporarily disabled for the mode switch";
++                }
+             } else {
+                 // Just update existing screen
+                 screen->updateGeometry(output.config_timestamp);
+-- 
+2.3.5
+

Added: b0b08cc0e4e38504d6b833702f7477aee4e2a192.patch
===================================================================
--- b0b08cc0e4e38504d6b833702f7477aee4e2a192.patch	                        (rev 0)
+++ b0b08cc0e4e38504d6b833702f7477aee4e2a192.patch	2015-08-18 11:16:32 UTC (rev 243865)
@@ -0,0 +1,45 @@
+From b0b08cc0e4e38504d6b833702f7477aee4e2a192 Mon Sep 17 00:00:00 2001
+From: Ralf Jung <post at ralfj.de>
+Date: Sun, 5 Jul 2015 12:15:29 +0200
+Subject: [PATCH] When a screen comes back online, the windows need to be told
+ about it
+
+On my system, this fixes the misbehavior of Qt applications when the (only) active screen is
+switched, e.g. from an external screen to the laptop.
+This behavior is caused by the screen() of widgets to be set to NULL when their screen goes away.
+When a new screen comes online, the widgets *should* be told about it, but they are not. The only
+place that "maybeSetScreen" is called is when an existing screen changes its geometry, but not
+when a screen gets enabled without its geometry being affected in any way (e.g. because it was
+just disabled via xrandr, but has been connected all along). This makes sure that "maybeSetScreen"
+is also called when a screen gets enabled.
+
+Task-number: QTBUG-47041
+Change-Id: Ic72d6beaa544bf9a4efdbea0830b1bc0d6ce5362
+Reviewed-by: Dmitry Shachnev <mitya57 at gmail.com>
+Reviewed-by: Shawn Rutledge <shawn.rutledge at theqtcompany.com>
+---
+ src/plugins/platforms/xcb/qxcbconnection.cpp | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
+index 74f48b0..0867615 100644
+--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
++++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
+@@ -252,6 +252,14 @@ void QXcbConnection::updateScreens(const xcb_randr_notify_event_t *event)
+                         otherScreen->addVirtualSibling(screen);
+                 m_screens << screen;
+                 QXcbIntegration::instance()->screenAdded(screen, screen->isPrimary());
++
++                // Windows which had null screens have already had expose events by now.
++                // They need to be told the screen is back, it's OK to render.
++                foreach (QWindow *window, QGuiApplication::topLevelWindows()) {
++                    QXcbWindow *xcbWin = static_cast<QXcbWindow*>(window->handle());
++                    if (xcbWin)
++                        xcbWin->maybeSetScreen(screen);
++                }
+             }
+             // else ignore disabled screens
+         } else if (screen) {
+-- 
+2.3.5
+



More information about the arch-commits mailing list