[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