[arch-commits] Commit in qt5-wayland/trunk (PKGBUILD qtbug-62044.patch)
Antonio Rojas
arojas at archlinux.org
Thu Feb 22 12:53:37 UTC 2018
Date: Thursday, February 22, 2018 @ 12:53:35
Author: arojas
Revision: 317391
Fix crash when attaching a screen (QTBUG#62044)
Added:
qt5-wayland/trunk/qtbug-62044.patch
Modified:
qt5-wayland/trunk/PKGBUILD
-------------------+
PKGBUILD | 9 ++++++---
qtbug-62044.patch | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2018-02-22 10:10:16 UTC (rev 317390)
+++ PKGBUILD 2018-02-22 12:53:35 UTC (rev 317391)
@@ -5,7 +5,7 @@
pkgname=qt5-wayland
_qtver=5.10.1
pkgver=${_qtver/-/}
-pkgrel=1
+pkgrel=2
arch=('x86_64')
url='http://qt-project.org/'
license=('GPL3' 'LGPL3' 'FDL' 'custom')
@@ -14,9 +14,11 @@
groups=('qt' 'qt5')
_pkgfqn="${pkgname/5-/}-everywhere-src-${_qtver}"
source=("http://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz"
- qtwayland-key-compose.patch::"https://github.com/qt/qtwayland/commit/57c4af2b.patch")
+ qtwayland-key-compose.patch::"https://github.com/qt/qtwayland/commit/57c4af2b.patch"
+ qtbug-62044.patch)
sha256sums=('f5a7643a5ebcdc50d02b293191e675f387f67dc360c27bf6f94345372fba6356'
- '401debccda18236869d601883e1ea9c0d0a541ea12656e43ef9e7d53b835dd92')
+ '401debccda18236869d601883e1ea9c0d0a541ea12656e43ef9e7d53b835dd92'
+ '4b0ac091873b7a2b156ed2af4b2e32ecb22bfb99618f1ae76e9b72670933c3dd')
prepare() {
mkdir -p build
@@ -23,6 +25,7 @@
cd $_pkgfqn
patch -p1 -i ../qtwayland-key-compose.patch # Backport key composition support
+ patch -p1 -i ../qtbug-62044.patch # Fix crash when connecting a new screen
}
build() {
Added: qtbug-62044.patch
===================================================================
--- qtbug-62044.patch (rev 0)
+++ qtbug-62044.patch 2018-02-22 12:53:35 UTC (rev 317391)
@@ -0,0 +1,50 @@
+From fd9fec4fc7f43fb939e8e5a946c7858390bbd9d3 Mon Sep 17 00:00:00 2001
+From: Johan Klokkhammer Helsing <johan.helsing at qt.io>
+Date: Thu, 8 Feb 2018 16:53:39 +0100
+Subject: [PATCH] Fix crash when connecting a new screen
+
+In QWaylandWindow::virtualSiblings, don't include screens that have not been
+added yet. I.e. QWaylandScreens for which QPlatformIntegration::screenAdded has
+not yet been called.
+
+There are two reasons why this crash wasn't covered by the
+removePrimaryScreen() test. First of all, the mock output didn't send
+wl_output.done events when updating the mode/geometry. These wayland events are
+what causes QWindowSystemInterface::handleScreenGeometryChange() to be called
+(where virtualSiblings are called).
+
+Furthermore, virtualSiblings is only called when the geometry actually changes,
+so add a new test that changes the screen geometry of the existing screen while
+a new one is being added (i.e. moves it to the right).
+
+Task-number: QTBUG-62044
+Change-Id: I623fbf8799d21c6b9293e7120ded301277639cc6
+Reviewed-by: David Edmundson <davidedmundson at kde.org>
+Reviewed-by: Aleix Pol
+Reviewed-by: Paul Olav Tvete <paul.tvete at qt.io>
+---
+ src/client/qwaylandscreen.cpp | 6 ++++--
+ tests/auto/client/client/tst_client.cpp | 25 +++++++++++++++++++++++++
+ tests/auto/client/shared/mockcompositor.cpp | 8 ++++++++
+ tests/auto/client/shared/mockcompositor.h | 2 ++
+ tests/auto/client/shared/mockoutput.cpp | 27 +++++++++++++++++++++++++--
+ tests/auto/client/shared/mockoutput.h | 1 +
+ 6 files changed, 65 insertions(+), 4 deletions(-)
+
+diff --git a/src/client/qwaylandscreen.cpp b/src/client/qwaylandscreen.cpp
+index fba75557..1c9ce23b 100644
+--- a/src/client/qwaylandscreen.cpp
++++ b/src/client/qwaylandscreen.cpp
+@@ -138,8 +138,10 @@ QList<QPlatformScreen *> QWaylandScreen::virtualSiblings() const
+ QList<QPlatformScreen *> list;
+ const QList<QWaylandScreen*> screens = mWaylandDisplay->screens();
+ list.reserve(screens.count());
+- foreach (QWaylandScreen *screen, screens)
+- list << screen;
++ for (QWaylandScreen *screen : qAsConst(screens)) {
++ if (screen->screen())
++ list << screen;
++ }
+ return list;
+ }
+
More information about the arch-commits
mailing list