diff --git a/0001-Bump-version.patch b/0001-Bump-version.patch new file mode 100644 index 0000000..07c5437 --- /dev/null +++ b/0001-Bump-version.patch @@ -0,0 +1,23 @@ +From 30cb2a87fcc6265232cb5a3ffce9836da6e531d6 Mon Sep 17 00:00:00 2001 +From: Jani Heikkinen +Date: Tue, 27 Oct 2020 07:48:51 +0200 +Subject: [PATCH 01/19] Bump version + +Change-Id: I6b2c26a9fea447f1de1d768a72aba72055a13cb7 +--- + .qmake.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/.qmake.conf b/.qmake.conf +index f63b6641..bb8d0645 100644 +--- a/.qmake.conf ++++ b/.qmake.conf +@@ -4,4 +4,4 @@ DEFINES += QT_NO_FOREACH + DEFINES += QT_NO_JAVA_STYLE_ITERATORS + DEFINES += QT_NO_LINKED_LIST + +-MODULE_VERSION = 5.15.2 ++MODULE_VERSION = 5.15.3 +-- +2.31.1 + diff --git a/0002-Replace-remaining-LGPLv3-headers-in-QtWaylandComposi.patch b/0002-Replace-remaining-LGPLv3-headers-in-QtWaylandComposi.patch new file mode 100644 index 0000000..9b83166 --- /dev/null +++ b/0002-Replace-remaining-LGPLv3-headers-in-QtWaylandComposi.patch @@ -0,0 +1,972 @@ +From f9d5fc2e94c2116130456f4b4f8bd2f3a0c88d20 Mon Sep 17 00:00:00 2001 +From: Kai Koehne +Date: Tue, 27 Oct 2020 16:12:30 +0100 +Subject: [PATCH 02/19] Replace remaining LGPLv3 headers in QtWaylandCompositor + with GPLv3 + +Use same header as for the rest of the module. + +This was forgotten in commit bb1b46a4862e0a5 + +Change-Id: I7e61b43f0387a9affa9488566cb5aaca51b3bc0b +Reviewed-by: Paul Olav Tvete +Reviewed-by: Pier Luigi Fiorini +Reviewed-by: Lars Knoll +(cherry picked from commit 2bf41c736719654d0d6b15eec280a4667ebc28c5) +Reviewed-by: Qt Cherry-pick Bot +--- + .../extensions/qwaylandidleinhibitv1.cpp | 27 +++++++------------ + .../extensions/qwaylandidleinhibitv1.h | 27 +++++++------------ + .../extensions/qwaylandidleinhibitv1_p.h | 27 +++++++------------ + .../extensions/qwaylandquickxdgoutputv1.cpp | 27 +++++++------------ + .../extensions/qwaylandquickxdgoutputv1.h | 27 +++++++------------ + .../extensions/qwaylandviewporter.cpp | 27 +++++++------------ + .../extensions/qwaylandviewporter.h | 27 +++++++------------ + .../extensions/qwaylandviewporter_p.h | 27 +++++++------------ + .../extensions/qwaylandxdgdecorationv1.cpp | 27 +++++++------------ + .../extensions/qwaylandxdgdecorationv1.h | 27 +++++++------------ + .../extensions/qwaylandxdgdecorationv1_p.h | 27 +++++++------------ + .../extensions/qwaylandxdgoutputv1.cpp | 27 +++++++------------ + .../extensions/qwaylandxdgoutputv1.h | 27 +++++++------------ + .../extensions/qwaylandxdgoutputv1_p.h | 27 +++++++------------ + .../extensions/qwaylandxdgshell.cpp | 27 +++++++------------ + src/compositor/extensions/qwaylandxdgshell.h | 27 +++++++------------ + .../extensions/qwaylandxdgshell_p.h | 27 +++++++------------ + .../qwaylandxdgshellintegration.cpp | 27 +++++++------------ + .../qwaylandxdgshellintegration_p.h | 27 +++++++------------ + 19 files changed, 190 insertions(+), 323 deletions(-) + +diff --git a/src/compositor/extensions/qwaylandidleinhibitv1.cpp b/src/compositor/extensions/qwaylandidleinhibitv1.cpp +index d034c47f..3d7e4d13 100644 +--- a/src/compositor/extensions/qwaylandidleinhibitv1.cpp ++++ b/src/compositor/extensions/qwaylandidleinhibitv1.cpp +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2019 Pier Luigi Fiorini +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandidleinhibitv1.h b/src/compositor/extensions/qwaylandidleinhibitv1.h +index 53c09d08..390ef9df 100644 +--- a/src/compositor/extensions/qwaylandidleinhibitv1.h ++++ b/src/compositor/extensions/qwaylandidleinhibitv1.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2019 Pier Luigi Fiorini +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandidleinhibitv1_p.h b/src/compositor/extensions/qwaylandidleinhibitv1_p.h +index 38055180..a87fa871 100644 +--- a/src/compositor/extensions/qwaylandidleinhibitv1_p.h ++++ b/src/compositor/extensions/qwaylandidleinhibitv1_p.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2019 Pier Luigi Fiorini +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandquickxdgoutputv1.cpp b/src/compositor/extensions/qwaylandquickxdgoutputv1.cpp +index eb6717a7..b61cc490 100644 +--- a/src/compositor/extensions/qwaylandquickxdgoutputv1.cpp ++++ b/src/compositor/extensions/qwaylandquickxdgoutputv1.cpp +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2019 Pier Luigi Fiorini +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandquickxdgoutputv1.h b/src/compositor/extensions/qwaylandquickxdgoutputv1.h +index c8b16ab8..d6701cc8 100644 +--- a/src/compositor/extensions/qwaylandquickxdgoutputv1.h ++++ b/src/compositor/extensions/qwaylandquickxdgoutputv1.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2019 Pier Luigi Fiorini +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandviewporter.cpp b/src/compositor/extensions/qwaylandviewporter.cpp +index 3856c135..b98274b1 100644 +--- a/src/compositor/extensions/qwaylandviewporter.cpp ++++ b/src/compositor/extensions/qwaylandviewporter.cpp +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandviewporter.h b/src/compositor/extensions/qwaylandviewporter.h +index 811c7414..fb640a49 100644 +--- a/src/compositor/extensions/qwaylandviewporter.h ++++ b/src/compositor/extensions/qwaylandviewporter.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandviewporter_p.h b/src/compositor/extensions/qwaylandviewporter_p.h +index d22da699..bf9e197a 100644 +--- a/src/compositor/extensions/qwaylandviewporter_p.h ++++ b/src/compositor/extensions/qwaylandviewporter_p.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgdecorationv1.cpp b/src/compositor/extensions/qwaylandxdgdecorationv1.cpp +index a58601cd..9fb2c955 100644 +--- a/src/compositor/extensions/qwaylandxdgdecorationv1.cpp ++++ b/src/compositor/extensions/qwaylandxdgdecorationv1.cpp +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgdecorationv1.h b/src/compositor/extensions/qwaylandxdgdecorationv1.h +index 4390716e..7b39091f 100644 +--- a/src/compositor/extensions/qwaylandxdgdecorationv1.h ++++ b/src/compositor/extensions/qwaylandxdgdecorationv1.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgdecorationv1_p.h b/src/compositor/extensions/qwaylandxdgdecorationv1_p.h +index fdd555ab..cd9c38c2 100644 +--- a/src/compositor/extensions/qwaylandxdgdecorationv1_p.h ++++ b/src/compositor/extensions/qwaylandxdgdecorationv1_p.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgoutputv1.cpp b/src/compositor/extensions/qwaylandxdgoutputv1.cpp +index 817cb2e4..a78a9f62 100644 +--- a/src/compositor/extensions/qwaylandxdgoutputv1.cpp ++++ b/src/compositor/extensions/qwaylandxdgoutputv1.cpp +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2019 Pier Luigi Fiorini +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgoutputv1.h b/src/compositor/extensions/qwaylandxdgoutputv1.h +index 957ac3be..e86fb405 100644 +--- a/src/compositor/extensions/qwaylandxdgoutputv1.h ++++ b/src/compositor/extensions/qwaylandxdgoutputv1.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2019 Pier Luigi Fiorini +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgoutputv1_p.h b/src/compositor/extensions/qwaylandxdgoutputv1_p.h +index 2e8a6fff..ab08f5d4 100644 +--- a/src/compositor/extensions/qwaylandxdgoutputv1_p.h ++++ b/src/compositor/extensions/qwaylandxdgoutputv1_p.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2019 Pier Luigi Fiorini +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgshell.cpp b/src/compositor/extensions/qwaylandxdgshell.cpp +index 6b7e8600..e1888529 100644 +--- a/src/compositor/extensions/qwaylandxdgshell.cpp ++++ b/src/compositor/extensions/qwaylandxdgshell.cpp +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgshell.h b/src/compositor/extensions/qwaylandxdgshell.h +index 0535f8e4..ae3be8d0 100644 +--- a/src/compositor/extensions/qwaylandxdgshell.h ++++ b/src/compositor/extensions/qwaylandxdgshell.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgshell_p.h b/src/compositor/extensions/qwaylandxdgshell_p.h +index de48f481..0a0972ac 100644 +--- a/src/compositor/extensions/qwaylandxdgshell_p.h ++++ b/src/compositor/extensions/qwaylandxdgshell_p.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgshellintegration.cpp b/src/compositor/extensions/qwaylandxdgshellintegration.cpp +index 0aa16054..a30eb228 100644 +--- a/src/compositor/extensions/qwaylandxdgshellintegration.cpp ++++ b/src/compositor/extensions/qwaylandxdgshellintegration.cpp +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +diff --git a/src/compositor/extensions/qwaylandxdgshellintegration_p.h b/src/compositor/extensions/qwaylandxdgshellintegration_p.h +index cd6bad57..16bb3354 100644 +--- a/src/compositor/extensions/qwaylandxdgshellintegration_p.h ++++ b/src/compositor/extensions/qwaylandxdgshellintegration_p.h +@@ -1,34 +1,27 @@ + /**************************************************************************** + ** + ** Copyright (C) 2018 The Qt Company Ltd. +-** Contact: http://www.qt.io/licensing/ ++** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the QtWaylandCompositor module of the Qt Toolkit. + ** +-** $QT_BEGIN_LICENSE:LGPL3$ ++** $QT_BEGIN_LICENSE:GPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms +-** and conditions see http://www.qt.io/terms-conditions. For further +-** information use the contact form at http://www.qt.io/contact-us. +-** +-** GNU Lesser General Public License Usage +-** Alternatively, this file may be used under the terms of the GNU Lesser +-** General Public License version 3 as published by the Free Software +-** Foundation and appearing in the file LICENSE.LGPLv3 included in the +-** packaging of this file. Please review the following information to +-** ensure the GNU Lesser General Public License version 3 requirements +-** will be met: https://www.gnu.org/licenses/lgpl.html. ++** and conditions see https://www.qt.io/terms-conditions. For further ++** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU +-** General Public License version 2.0 or later as published by the Free +-** Software Foundation and appearing in the file LICENSE.GPL included in +-** the packaging of this file. Please review the following information to +-** ensure the GNU General Public License version 2.0 requirements will be +-** met: http://www.gnu.org/licenses/gpl-2.0.html. ++** General Public License version 3 or (at your option) any later version ++** approved by the KDE Free Qt Foundation. The licenses are as published by ++** the Free Software Foundation and appearing in the file LICENSE.GPL3 ++** included in the packaging of this file. Please review the following ++** information to ensure the GNU General Public License requirements will ++** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** +-- +2.31.1 + diff --git a/0003-Doc-List-correct-license-information-for-the-module.patch b/0003-Doc-List-correct-license-information-for-the-module.patch new file mode 100644 index 0000000..9ce1aad --- /dev/null +++ b/0003-Doc-List-correct-license-information-for-the-module.patch @@ -0,0 +1,39 @@ +From cc652bdd4ec7692a68db8afef2a709b74581c2cd Mon Sep 17 00:00:00 2001 +From: Paul Wicking +Date: Tue, 27 Oct 2020 14:56:32 +0100 +Subject: [PATCH 03/19] Doc: List correct license information for the module + +Fixes: QTBUG-87959 +Change-Id: I1c5cd15e0dd6f81e87690e54cd4e526ce668a8aa +Reviewed-by: Tino Pyssysalo +Reviewed-by: Kai Koehne +(cherry picked from commit 7cadb86e5b151459bd06f46a90f28bd157078df7) +Reviewed-by: Qt Cherry-pick Bot +--- + .../doc/src/qtwaylandcompositor-overview.qdoc | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/src/compositor/doc/src/qtwaylandcompositor-overview.qdoc b/src/compositor/doc/src/qtwaylandcompositor-overview.qdoc +index dc95dc5b..fcdd13f7 100644 +--- a/src/compositor/doc/src/qtwaylandcompositor-overview.qdoc ++++ b/src/compositor/doc/src/qtwaylandcompositor-overview.qdoc +@@ -111,9 +111,13 @@ + + Qt Wayland Compositor and the Qt Wayland integration plugin + are available under commercial licenses from \l{The Qt Company}. +- In addition, they are available under the +- \l{GNU Lesser General Public License, version 3}, or +- the \l{GNU General Public License, version 2}. ++ ++ In addition, Qt Wayland Compositor is available under the ++ \l{GNU General Public License, version 3}, while ++ the Qt Wayland integration plugin is available under the ++ \l{GNU General Public License, version 3} or the ++ \l{GNU General Public License, version 2}. ++ + See \l{Qt Licensing} for further details. + + Qt Wayland Compositor and the Qt Wayland integration plugin +-- +2.31.1 + diff --git a/0004-Add-changes-file-for-Qt-5.15.2.patch b/0004-Add-changes-file-for-Qt-5.15.2.patch new file mode 100644 index 0000000..b25d8e7 --- /dev/null +++ b/0004-Add-changes-file-for-Qt-5.15.2.patch @@ -0,0 +1,77 @@ +From 88c8df4eab81316bc055c8be82b0febc70330dbe Mon Sep 17 00:00:00 2001 +From: Antti Kokko +Date: Tue, 27 Oct 2020 10:02:11 +0200 +Subject: [PATCH 04/19] Add changes file for Qt 5.15.2 + ++ 7d7ac7f0a4bd6a7956448ddb0ba44c12755dca2e Client: Send subsurface expose event when toplevel is configured ++ 18ab3edaf2a4cdd1e9df6e166cf51a69a9785ecd Client: Initialize mScale on creation instead of on show ++ b1564c87e3fd1271575122c6b932c5e9324f07a7 Client: Fix scroll direction with touchpads +- bd48b6b341482720652dd02866690f937e25619d Add changes file for Qt 5.15.1 ++ 96cfbda63a249385eef02e7996098079569a13b8 Fix brcm-egl wayland integration ++ 6a7c6eedbaf00b1f2102247810987b6d9246f34e Bump version ++ 9c8e59a7a6b0cfaa7caf899bdb577270c83b9a12 Build with -no-opengl ++ 1344ca6b5a8fbc1b28727feea6d856af8bf3bc93 fix libdrm related configure test failure ++ 65922085c3ba302b9049e62c1e132236b726adf9 Implement MockRegion ++ 407c240bf52f0c5d23cd87be48ced51a58562f19 Scanner: Generate code that cleans up m_resource ++ 45a3a3208a4243d9b0a6500e3dcd0fcfed2dfcea Scanner: Generate code that destroys inert resources ++ 707b23cf11586304912b3ea87099cf46a0aac912 Implement CoreProtocol::compositor_create_region ++ 2a77384a4f2485364cefeb825eea63daf13dd3b1 Fix race condition on frame callback ++ 51f0466e01df52eb07e589006744f405dfd40bdd Client: Advertise all supported mime types ++ f637fcdbbabeb060cdd223d8bc6662d5cace6b90 Address WlCompositor::compositor_create_region in tests ++ cc779e0ed47ec4759dc3c23953dd02cfacc6885c Issue set_opaque_region on opaque surfaces ++ 8824452f5b259ab1f295f1237789b2693ae8f232 Add changes file for Qt 5.12.10 + +Change-Id: I9158c0bb827a54421b205abc6c637e6cdfc5cebd +Reviewed-by: Volker Hilsheimer +Reviewed-by: Eskil Abrahamsen Blomfeldt +(cherry picked from commit 3cc17177b1b03053276eb6236fda137c588261a7) +Reviewed-by: Qt Cherry-pick Bot +--- + dist/changes-5.15.2 | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + create mode 100644 dist/changes-5.15.2 + +diff --git a/dist/changes-5.15.2 b/dist/changes-5.15.2 +new file mode 100644 +index 00000000..e12ac096 +--- /dev/null ++++ b/dist/changes-5.15.2 +@@ -0,0 +1,35 @@ ++Qt 5.15.2 is a bug-fix release. It maintains both forward and backward ++compatibility (source and binary) with Qt 5.15.1. ++ ++For more details, refer to the online documentation included in this ++distribution. The documentation is also available online: ++ ++ https://doc.qt.io/qt-5.15/index.html ++ ++The Qt version 5.15 series is binary compatible with the 5.14.x series. ++Applications compiled for 5.14 will continue to run with 5.15. ++ ++Some of the changes listed in this file include issue tracking numbers ++corresponding to tasks in the Qt Bug Tracker: ++ ++ https://bugreports.qt.io/ ++ ++Each of these identifiers can be entered in the bug tracker to obtain more ++information about a particular change. ++ ++**************************************************************************** ++* Compositor * ++**************************************************************************** ++ ++ - [QTBUG-83263] Fixed a race condition on frame callback. ++ - [QTBUG-86109] Fix brcm-egl wayland integration. ++ ++**************************************************************************** ++* QPA plugin * ++**************************************************************************** ++ ++ - [QTBUG-87657] Clipboard selection now advertises all supported mime types. ++ - [QTBUG-86291] Fixed the build with -no-opengl. ++ - [QTBUG-85767] Touchpad scrolling is no longer inverted. ++ - [QTBUG-86176] We now send subsurface expose events when a different ++ toplevel (such as a dialog) is configured. +-- +2.31.1 + diff --git a/0005-Scanner-Avoid-accessing-dangling-pointers-in-destroy.patch b/0005-Scanner-Avoid-accessing-dangling-pointers-in-destroy.patch new file mode 100644 index 0000000..bff8962 --- /dev/null +++ b/0005-Scanner-Avoid-accessing-dangling-pointers-in-destroy.patch @@ -0,0 +1,38 @@ +From e5c272423d1bba2825086b82fd97499237a6fa4b Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii +Date: Fri, 30 Oct 2020 16:55:30 +0200 +Subject: [PATCH 05/19] Scanner: Avoid accessing dangling pointers in + destroy_func() + +Usually, the object associated with the resource gets destroyed in the +destroy_resource() function. + +Therefore, we need to double-check that the object is still alive before +trying to reset its m_resource. + +Change-Id: I26408228f58919db17eb29584a1cbd4a9427d25c +Reviewed-by: Eskil Abrahamsen Blomfeldt +(cherry picked from commit 735164b5c2a2637a8d53a8803a2401e4ef477ff0) +Reviewed-by: Qt Cherry-pick Bot +--- + src/qtwaylandscanner/qtwaylandscanner.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/qtwaylandscanner/qtwaylandscanner.cpp b/src/qtwaylandscanner/qtwaylandscanner.cpp +index 1d635f06..e2f87bbd 100644 +--- a/src/qtwaylandscanner/qtwaylandscanner.cpp ++++ b/src/qtwaylandscanner/qtwaylandscanner.cpp +@@ -814,7 +814,9 @@ bool Scanner::process() + printf(" if (Q_LIKELY(that)) {\n"); + printf(" that->m_resource_map.remove(resource->client(), resource);\n"); + printf(" that->%s_destroy_resource(resource);\n", interfaceNameStripped); +- printf(" if (that->m_resource == resource)\n"); ++ printf("\n"); ++ printf(" that = resource->%s_object;\n", interfaceNameStripped); ++ printf(" if (that && that->m_resource == resource)\n"); + printf(" that->m_resource = nullptr;\n"); + printf(" }\n"); + printf(" delete resource;\n"); +-- +2.31.1 + diff --git a/0006-Make-setting-QT_SCALE_FACTOR-work-on-Wayland.patch b/0006-Make-setting-QT_SCALE_FACTOR-work-on-Wayland.patch new file mode 100644 index 0000000..a990760 --- /dev/null +++ b/0006-Make-setting-QT_SCALE_FACTOR-work-on-Wayland.patch @@ -0,0 +1,38 @@ +From a825fb5f714fd79d16cc3ebbdd327e7961b07d0a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= +Date: Mon, 16 Nov 2020 19:37:33 +0100 +Subject: [PATCH 06/19] Make setting QT_SCALE_FACTOR work on Wayland + +Follow-up to 8cb1b07aea12d50b4fecc45c903705dfd368022a, +fixes one additional case (Use of minimum/maximum size). + +Fixes: QTBUG-87762 +Change-Id: I73e0df2529b0cadf25ad50ea7459cdbb92caf424 +Reviewed-by: Eskil Abrahamsen Blomfeldt +(cherry picked from commit 6ed363e3665f17d935f8636d9c958154c898f5c5) +Reviewed-by: Qt Cherry-pick Bot +--- + src/client/qwaylandwindow.cpp | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index bc031ed5..eb053406 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -332,9 +332,11 @@ void QWaylandWindow::setWindowIcon(const QIcon &icon) + + void QWaylandWindow::setGeometry_helper(const QRect &rect) + { ++ QSize minimum = windowMinimumSize(); ++ QSize maximum = windowMaximumSize(); + QPlatformWindow::setGeometry(QRect(rect.x(), rect.y(), +- qBound(window()->minimumWidth(), rect.width(), window()->maximumWidth()), +- qBound(window()->minimumHeight(), rect.height(), window()->maximumHeight()))); ++ qBound(minimum.width(), rect.width(), maximum.width()), ++ qBound(minimum.height(), rect.height(), maximum.height()))); + + if (mSubSurfaceWindow) { + QMargins m = QPlatformWindow::parent()->frameMargins(); +-- +2.31.1 + diff --git a/0007-Do-not-try-to-eglMakeCurrent-for-unintended-case.patch b/0007-Do-not-try-to-eglMakeCurrent-for-unintended-case.patch new file mode 100644 index 0000000..551bfab --- /dev/null +++ b/0007-Do-not-try-to-eglMakeCurrent-for-unintended-case.patch @@ -0,0 +1,62 @@ +From 2c0a03e9aea13831d05ac03996949f888afd5085 Mon Sep 17 00:00:00 2001 +From: Jaehak Lee +Date: Sun, 8 Nov 2020 11:40:06 +0900 +Subject: [PATCH 07/19] Do not try to eglMakeCurrent for unintended case + +The QSGThreadedRenderLoop::hide can be called at twice, +when the QWindowPrivate::setVisible(false) is called. + +The eglSurface is EGL_NO_SURFACE when the second QSGThreadedRenderLoop::hide is +called. And if EGL_KHR_surfaceless_context is supported, the eglMakeCurrent +don't return the false. + +But this case is not intended. So, add the defence code for above case. + +Fixes: QTBUG-88277 +Change-Id: Ia9e5990303e98f0eedc48531e5af62ff9961f419 +Reviewed-by: Laszlo Agocs +Reviewed-by: Eskil Abrahamsen Blomfeldt +--- + .../client/wayland-egl/qwaylandglcontext.cpp | 6 ++++++ + .../client/wayland-egl/qwaylandglcontext.h | 1 + + 2 files changed, 7 insertions(+) + +diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +index ccebf43d..681f82f4 100644 +--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp ++++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +@@ -336,6 +336,8 @@ QWaylandGLContext::QWaylandGLContext(EGLDisplay eglDisplay, QWaylandDisplay *dis + << "It may also cause the event loop to freeze in some situations"; + } + ++ m_supportSurfaceLessContext = q_hasEglExtension(m_eglDisplay, "EGL_KHR_surfaceless_context"); ++ + updateGLFormat(); + } + +@@ -439,6 +441,10 @@ bool QWaylandGLContext::makeCurrent(QPlatformSurface *surface) + eglSurface = window->eglSurface(); + } + ++ if (eglSurface == EGL_NO_SURFACE && m_supportSurfaceLessContext) { ++ return false; ++ } ++ + if (!eglMakeCurrent(m_eglDisplay, eglSurface, eglSurface, m_context)) { + qWarning("QWaylandGLContext::makeCurrent: eglError: %x, this: %p \n", eglGetError(), this); + window->setCanResize(true); +diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.h b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.h +index 46c7bb76..93edaec0 100644 +--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.h ++++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.h +@@ -93,6 +93,7 @@ private: + DecorationsBlitter *m_blitter = nullptr; + uint m_api; + bool m_supportNonBlockingSwap = true; ++ bool m_supportSurfaceLessContext = false; + }; + + } +-- +2.31.1 + diff --git a/0008-Make-setting-QT_SCALE_FACTOR-work-on-Wayland.patch b/0008-Make-setting-QT_SCALE_FACTOR-work-on-Wayland.patch new file mode 100644 index 0000000..6ce485a --- /dev/null +++ b/0008-Make-setting-QT_SCALE_FACTOR-work-on-Wayland.patch @@ -0,0 +1,112 @@ +From 10005185e06857ce119c50fe710f9eedde06ec5e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= +Date: Fri, 13 Nov 2020 11:21:50 +0100 +Subject: [PATCH 08/19] Make setting QT_SCALE_FACTOR work on Wayland + +QWindow geometry accessors return geometry in device +independent pixels. Normally this coordinate system +is equivalent to the Wayland native coordinate system, +but this is not the case when QT_SCALE_FACTOR is set. + +Replace QWindow geometry calls with the helpers from +QPlatformWindow which return geometry in the native +coordinate system: + +QWindow::geometry() -> QPlatformWindow::windowGeometry() +QWindow::frameGeometry() -> QPlatformWindow::windowFrameGeometry() + +Task-number: QTBUG-87762 +Fixes: QTBUG-88064 +(cherry-picked from commit 8cb1b07aea12d50b4fecc45c903705dfd368022a) +Change-Id: I6e2029bc6210f12441ae7c9d8b678271e9922dde +Reviewed-by: Eskil Abrahamsen Blomfeldt +--- + src/client/qwaylandwindow.cpp | 7 ++++--- + .../shellintegration/wl-shell/qwaylandwlshellsurface.cpp | 2 +- + .../shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp | 2 +- + .../shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp | 2 +- + .../shellintegration/xdg-shell/qwaylandxdgshell.cpp | 2 +- + 5 files changed, 8 insertions(+), 7 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index eb053406..9b343702 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -194,10 +194,11 @@ void QWaylandWindow::initWindow() + if (QScreen *s = window()->screen()) + setOrientationMask(s->orientationUpdateMask()); + setWindowFlags(window()->flags()); +- if (window()->geometry().isEmpty()) ++ QRect geometry = windowGeometry(); ++ if (geometry.isEmpty()) + setGeometry_helper(QRect(QPoint(), QSize(500,500))); + else +- setGeometry_helper(window()->geometry()); ++ setGeometry_helper(geometry); + setMask(window()->mask()); + if (mShellSurface) + mShellSurface->requestWindowStates(window()->windowStates()); +@@ -431,7 +432,7 @@ void QWaylandWindow::setVisible(bool visible) + initWindow(); + mDisplay->flushRequests(); + +- setGeometry(window()->geometry()); ++ setGeometry(windowGeometry()); + // Don't flush the events here, or else the newly visible window may start drawing, but since + // there was no frame before it will be stuck at the waitForFrameSync() in + // QWaylandShmBackingStore::beginPaint(). +diff --git a/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp b/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp +index 245fec19..8f41118d 100644 +--- a/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp ++++ b/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp +@@ -134,7 +134,7 @@ void QWaylandWlShellSurface::applyConfigure() + { + if ((m_pending.states & (Qt::WindowMaximized|Qt::WindowFullScreen)) + && !(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen))) { +- m_normalSize = m_window->window()->frameGeometry().size(); ++ m_normalSize = m_window->windowFrameGeometry().size(); + } + + if (m_pending.states != m_applied.states) +diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp +index 770fad7e..73aba1ee 100644 +--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp ++++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp +@@ -157,7 +157,7 @@ void QWaylandXdgSurfaceV5::applyConfigure() + if (m_pending.isResizing) + m_normalSize = m_pending.size; + else if (!(m_acked.states & (Qt::WindowMaximized|Qt::WindowFullScreen))) +- m_normalSize = m_window->window()->frameGeometry().size(); ++ m_normalSize = m_window->windowFrameGeometry().size(); + + if ((m_pending.states & Qt::WindowActive) && !(m_acked.states & Qt::WindowActive)) + m_window->display()->handleWindowActivated(m_window); +diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp +index c137b308..8c371661 100644 +--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp ++++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp +@@ -72,7 +72,7 @@ QWaylandXdgSurfaceV6::Toplevel::~Toplevel() + void QWaylandXdgSurfaceV6::Toplevel::applyConfigure() + { + if (!(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen))) +- m_normalSize = m_xdgSurface->m_window->window()->frameGeometry().size(); ++ m_normalSize = m_xdgSurface->m_window->windowFrameGeometry().size(); + + if ((m_pending.states & Qt::WindowActive) && !(m_applied.states & Qt::WindowActive)) + m_xdgSurface->m_window->display()->handleWindowActivated(m_xdgSurface->m_window); +diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +index b6d23ac1..1c762944 100644 +--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp ++++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +@@ -83,7 +83,7 @@ QWaylandXdgSurface::Toplevel::~Toplevel() + void QWaylandXdgSurface::Toplevel::applyConfigure() + { + if (!(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen))) +- m_normalSize = m_xdgSurface->m_window->window()->frameGeometry().size(); ++ m_normalSize = m_xdgSurface->m_window->windowFrameGeometry().size(); + + if ((m_pending.states & Qt::WindowActive) && !(m_applied.states & Qt::WindowActive)) + m_xdgSurface->m_window->display()->handleWindowActivated(m_xdgSurface->m_window); +-- +2.31.1 + diff --git a/0009-Ensure-that-grabbing-is-performed-in-correct-context.patch b/0009-Ensure-that-grabbing-is-performed-in-correct-context.patch new file mode 100644 index 0000000..48ddf9d --- /dev/null +++ b/0009-Ensure-that-grabbing-is-performed-in-correct-context.patch @@ -0,0 +1,35 @@ +From dba4bc4f1d6dfee9fe9433c55b15653d703bed4f Mon Sep 17 00:00:00 2001 +From: Andreas Cord-Landwehr +Date: Wed, 2 Dec 2020 20:55:52 +0100 +Subject: [PATCH 09/19] Ensure that grabbing is performed in correct context + +For multi-display rendering on EGL, it is mandatory that the grabbing of +the surface happens in the same EGL context as the surface belongs to. +By adding the grabbing to the rendering stage of the image, this +relation is forced. + +Task-number: QTBUG-87597 +Change-Id: I50f40df1215aa771d714065e942c5a738ba6269f +Reviewed-by: Eskil Abrahamsen Blomfeldt +(cherry picked from commit ab3a1a07f3d1e0d5a9e9d97b6b3b587180e2f4c8) +Reviewed-by: Qt Cherry-pick Bot +--- + src/compositor/compositor_api/qwaylandquickcompositor.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/compositor/compositor_api/qwaylandquickcompositor.cpp b/src/compositor/compositor_api/qwaylandquickcompositor.cpp +index 49f0860e..db1cf00f 100644 +--- a/src/compositor/compositor_api/qwaylandquickcompositor.cpp ++++ b/src/compositor/compositor_api/qwaylandquickcompositor.cpp +@@ -161,7 +161,7 @@ void QWaylandQuickCompositor::grabSurface(QWaylandSurfaceGrabber *grabber, const + GrabState *state = new GrabState; + state->grabber = grabber; + state->buffer = buffer; +- static_cast(output->window())->scheduleRenderJob(state, QQuickWindow::NoStage); ++ static_cast(output->window())->scheduleRenderJob(state, QQuickWindow::AfterRenderingStage); + #else + emit grabber->failed(QWaylandSurfaceGrabber::UnknownBufferType); + #endif +-- +2.31.1 + diff --git a/0010-Fix-leaked-subsurface-wayland-items.patch b/0010-Fix-leaked-subsurface-wayland-items.patch new file mode 100644 index 0000000..51dd8e3 --- /dev/null +++ b/0010-Fix-leaked-subsurface-wayland-items.patch @@ -0,0 +1,36 @@ +From a8d35b3c18bdb05a0da3ed50a554a7b7bd4ebed3 Mon Sep 17 00:00:00 2001 +From: Eskil Abrahamsen Blomfeldt +Date: Mon, 30 Nov 2020 13:13:18 +0100 +Subject: [PATCH 10/19] Fix leaked subsurface wayland items + +Whenever a subsurface was added we would create a QWaylandQuickItem, +but this was never deleted. It is one-to-one with the surface, so it +should be deleted at the same time. + +[ChangeLog][QtWaylandCompositor] Fixed a memory leak when creating +subsurfaces. + +Task-number: QTBUG-88782 +Change-Id: If4b3f15200ce3bd123ff73847d3593d174a39229 +Reviewed-by: Paul Olav Tvete +(cherry picked from commit 38fc568b30bf916165324c2cd2db127d2a9aa68c) +Reviewed-by: Qt Cherry-pick Bot +--- + src/compositor/compositor_api/qwaylandquickitem.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/compositor/compositor_api/qwaylandquickitem.cpp b/src/compositor/compositor_api/qwaylandquickitem.cpp +index 15f0195c..2218f43a 100644 +--- a/src/compositor/compositor_api/qwaylandquickitem.cpp ++++ b/src/compositor/compositor_api/qwaylandquickitem.cpp +@@ -737,6 +737,7 @@ void QWaylandQuickItem::handleSubsurfaceAdded(QWaylandSurface *childSurface) + childItem->setVisible(true); + childItem->setParentItem(this); + connect(childSurface, &QWaylandSurface::subsurfacePositionChanged, childItem, &QWaylandQuickItem::handleSubsurfacePosition); ++ connect(childSurface, &QWaylandSurface::destroyed, childItem, &QObject::deleteLater); + } else { + bool success = QMetaObject::invokeMethod(d->subsurfaceHandler, "handleSubsurfaceAdded", Q_ARG(QWaylandSurface *, childSurface)); + if (!success) +-- +2.31.1 + diff --git a/0011-Use-qWarning-and-_exit-instead-of-qFatal-for-wayland.patch b/0011-Use-qWarning-and-_exit-instead-of-qFatal-for-wayland.patch new file mode 100644 index 0000000..6f882a5 --- /dev/null +++ b/0011-Use-qWarning-and-_exit-instead-of-qFatal-for-wayland.patch @@ -0,0 +1,38 @@ +From 9ee2ea141adc7765f6c212e63839ef23a4494b30 Mon Sep 17 00:00:00 2001 +From: Weng Xuetian +Date: Tue, 9 Mar 2021 10:43:59 -0800 +Subject: [PATCH 11/19] Use qWarning and _exit() instead of qFatal for wayland + error + +This type of error is likely to happen upon system logout. qFatal would +trigger sigabrt and leave unnecessary coredump on the system. Using +qWarning here would make it consistent with xcb's io error. + +Pick-to: 5.15 6.0 6.1 +Change-Id: I571ba007bf2453486b81837cccdbefa5f181b63d +Reviewed-by: David Edmundson +--- + src/client/qwaylanddisplay.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp +index fe094f6f..f10c1f79 100644 +--- a/src/client/qwaylanddisplay.cpp ++++ b/src/client/qwaylanddisplay.cpp +@@ -206,10 +206,11 @@ void QWaylandDisplay::checkError() const + int ecode = wl_display_get_error(mDisplay); + if ((ecode == EPIPE || ecode == ECONNRESET)) { + // special case this to provide a nicer error +- qFatal("The Wayland connection broke. Did the Wayland compositor die?"); ++ qWarning("The Wayland connection broke. Did the Wayland compositor die?"); + } else { +- qFatal("The Wayland connection experienced a fatal error: %s", strerror(ecode)); ++ qWarning("The Wayland connection experienced a fatal error: %s", strerror(ecode)); + } ++ _exit(1); + } + + void QWaylandDisplay::flushRequests() +-- +2.31.1 + diff --git a/0012-Fix-memory-leak-in-QWaylandGLContext.patch b/0012-Fix-memory-leak-in-QWaylandGLContext.patch new file mode 100644 index 0000000..8128735 --- /dev/null +++ b/0012-Fix-memory-leak-in-QWaylandGLContext.patch @@ -0,0 +1,38 @@ +From 9df11e79b46c77d8c83f765b2a8e85b639fd55a2 Mon Sep 17 00:00:00 2001 +From: Eskil Abrahamsen Blomfeldt +Date: Tue, 5 Jan 2021 09:08:50 +0100 +Subject: [PATCH 12/19] Fix memory leak in QWaylandGLContext + +We were leaking an EGL context with every GL context created, +which lead to rapid OOM errors in stress tests. + +[ChangeLog][Qt Wayland Client] Fixed a memory leak when creating +QOpenGLContexts on Wayland and using the wayland-egl backend. + +Fixes: QTBUG-85608 +Pick-to: 5.15 +Pick-to: 6.0 +Change-Id: I8426b5df36ec7ab9e66ce15f9e02edad3aca60b9 +Reviewed-by: David Edmundson +--- + .../client/wayland-egl/qwaylandglcontext.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +index 681f82f4..befadedc 100644 +--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp ++++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +@@ -406,7 +406,9 @@ void QWaylandGLContext::updateGLFormat() + QWaylandGLContext::~QWaylandGLContext() + { + delete m_blitter; +- eglDestroyContext(m_eglDisplay, m_context); ++ m_blitter = nullptr; ++ if (m_decorationsContext != EGL_NO_CONTEXT) ++ eglDestroyContext(eglDisplay(), m_decorationsContext); + } + + bool QWaylandGLContext::makeCurrent(QPlatformSurface *surface) +-- +2.31.1 + diff --git a/0013-Client-Send-set_window_geometry-only-once-configured.patch b/0013-Client-Send-set_window_geometry-only-once-configured.patch new file mode 100644 index 0000000..8a80de3 --- /dev/null +++ b/0013-Client-Send-set_window_geometry-only-once-configured.patch @@ -0,0 +1,41 @@ +From 7db4f83c39d2a0c709bc0b9c0de3946d3b4ebfd5 Mon Sep 17 00:00:00 2001 +From: David Edmundson +Date: Mon, 16 Nov 2020 14:57:36 +0000 +Subject: [PATCH 13/19] Client: Send set_window_geometry only once configured + +The geometry only makes sense when a buffer exists, our currently send +value is somewhat meaningless, but till now harmless. + +A specification clarification implies that it is an error if the +calculated effective window geometry is null, rather than just checking +the sent value. This is the case if set_window_geometry is sent before a +buffer is attached. + +On our first configure call we enter resizeFromApplyConfigure which will +hit this path and send the initial state. + +Pick-to: 5.15 +Pick-to: 6.1 +Pick-to: 6.0 +Change-Id: Ib57ebe8b64210eae86e79dfdd6b5cb8a986b020b +Reviewed-by: Eskil Abrahamsen Blomfeldt +--- + src/client/qwaylandwindow.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 9b343702..e875af3a 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -365,7 +365,7 @@ void QWaylandWindow::setGeometry(const QRect &rect) + if (isExposed() && !mInResizeFromApplyConfigure && exposeGeometry != mLastExposeGeometry) + sendExposeEvent(exposeGeometry); + +- if (mShellSurface) ++ if (mShellSurface && isExposed()) + mShellSurface->setWindowGeometry(windowContentGeometry()); + + if (isOpaque() && mMask.isEmpty()) +-- +2.31.1 + diff --git a/0014-Translate-opaque-area-with-frame-margins.patch b/0014-Translate-opaque-area-with-frame-margins.patch new file mode 100644 index 0000000..be4c990 --- /dev/null +++ b/0014-Translate-opaque-area-with-frame-margins.patch @@ -0,0 +1,40 @@ +From a3e3ac1c86a956b25b1dc24f14518b6e6c96bcfc Mon Sep 17 00:00:00 2001 +From: Jan Grulich +Date: Wed, 10 Feb 2021 17:11:27 +0100 +Subject: [PATCH 14/19] Translate opaque area with frame margins + +The opaque area doesn't take window decorations into account, which may +result into possible graphical artefacts. + +Pick-to: 5.15 6.0 6.1 +Change-Id: I1606e8256e7e204dad927931eb1221b576e227fd +Reviewed-by: David Edmundson +--- + src/client/qwaylandwindow.cpp | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index e875af3a..2af39977 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -1234,12 +1234,14 @@ bool QWaylandWindow::isOpaque() const + + void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea) + { +- if (opaqueArea == mOpaqueArea || !mSurface) ++ const QRegion translatedOpaqueArea = opaqueArea.translated(frameMargins().left(), frameMargins().top()); ++ ++ if (translatedOpaqueArea == mOpaqueArea || !mSurface) + return; + +- mOpaqueArea = opaqueArea; ++ mOpaqueArea = translatedOpaqueArea; + +- struct ::wl_region *region = mDisplay->createRegion(opaqueArea); ++ struct ::wl_region *region = mDisplay->createRegion(translatedOpaqueArea); + mSurface->set_opaque_region(region); + wl_region_destroy(region); + } +-- +2.31.1 + diff --git a/0015-Client-Send-exposeEvent-to-parent-on-subsurface-posi.patch b/0015-Client-Send-exposeEvent-to-parent-on-subsurface-posi.patch new file mode 100644 index 0000000..1842c3f --- /dev/null +++ b/0015-Client-Send-exposeEvent-to-parent-on-subsurface-posi.patch @@ -0,0 +1,97 @@ +From 2073ff99e62d4f99ed3f1f45559c5b68a61c5f66 Mon Sep 17 00:00:00 2001 +From: David Edmundson +Date: Mon, 14 Sep 2020 17:08:39 +0100 +Subject: [PATCH 15/19] Client: Send exposeEvent to parent on subsurface + position changes + +When a subsurface is moved, we need the parent window to commit to apply +that move. Ideally we want this in sync with any potential rendering on +the parent window. + +Currently the code calls requestUpdate() which acts more like a frame +callback; it will only do something if the main QWindow considers itself +dirty. + +We want to force a repaint, which is semantically more similar to an +ExposeEvent. + +Fixes: QTBUG-86177 +Pick-to: 5.15 +Change-Id: I30bdfa357beee860ce2b00a256eaea6d040dd55c +Reviewed-by: Eskil Abrahamsen Blomfeldt +--- + src/client/qwaylandwindow.cpp | 7 ++++- + tests/auto/client/surface/tst_surface.cpp | 33 +++++++++++++++++++---- + 2 files changed, 34 insertions(+), 6 deletions(-) + +diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp +index 2af39977..e96d8fe9 100644 +--- a/src/client/qwaylandwindow.cpp ++++ b/src/client/qwaylandwindow.cpp +@@ -342,7 +342,12 @@ void QWaylandWindow::setGeometry_helper(const QRect &rect) + if (mSubSurfaceWindow) { + QMargins m = QPlatformWindow::parent()->frameMargins(); + mSubSurfaceWindow->set_position(rect.x() + m.left(), rect.y() + m.top()); +- mSubSurfaceWindow->parent()->window()->requestUpdate(); ++ ++ QWaylandWindow *parentWindow = mSubSurfaceWindow->parent(); ++ if (parentWindow && parentWindow->isExposed()) { ++ QRect parentExposeGeometry(QPoint(), parentWindow->geometry().size()); ++ parentWindow->sendExposeEvent(parentExposeGeometry); ++ } + } + } + +diff --git a/tests/auto/client/surface/tst_surface.cpp b/tests/auto/client/surface/tst_surface.cpp +index b8a65f15..95e4e609 100644 +--- a/tests/auto/client/surface/tst_surface.cpp ++++ b/tests/auto/client/surface/tst_surface.cpp +@@ -167,17 +167,40 @@ void tst_surface::negotiateShmFormat() + void tst_surface::createSubsurface() + { + QRasterWindow window; +- window.resize(64, 64); +- window.show(); +- QCOMPOSITOR_TRY_VERIFY(xdgToplevel()); +- exec([=] { xdgToplevel()->sendCompleteConfigure(); }); +- QCOMPOSITOR_TRY_VERIFY(xdgSurface()->m_committedConfigureSerial); ++ window.setObjectName("main"); ++ window.resize(200, 200); + + QRasterWindow subWindow; ++ subWindow.setObjectName("subwindow"); + subWindow.setParent(&window); + subWindow.resize(64, 64); ++ ++ window.show(); + subWindow.show(); ++ + QCOMPOSITOR_TRY_VERIFY(subSurface()); ++ QCOMPOSITOR_TRY_VERIFY(xdgToplevel()); ++ exec([=] { xdgToplevel()->sendCompleteConfigure(); }); ++ QCOMPOSITOR_TRY_VERIFY(xdgSurface()->m_committedConfigureSerial); ++ ++ const Surface *mainSurface = exec([=] {return surface(0);}); ++ const Surface *childSurface = exec([=] {return surface(1);}); ++ QSignalSpy mainSurfaceCommitSpy(mainSurface, &Surface::commit); ++ QSignalSpy childSurfaceCommitSpy(childSurface, &Surface::commit); ++ ++ // Move subsurface. The parent should redraw and commit ++ subWindow.setGeometry(100, 100, 64, 64); ++ // the toplevel should commit to indicate the subsurface moved ++ QCOMPOSITOR_TRY_COMPARE(mainSurfaceCommitSpy.count(), 1); ++ mainSurfaceCommitSpy.clear(); ++ childSurfaceCommitSpy.clear(); ++ ++ // Move and resize the subSurface. The parent should redraw and commit ++ // The child should also redraw ++ subWindow.setGeometry(50, 50, 80, 80); ++ QCOMPOSITOR_TRY_COMPARE(mainSurfaceCommitSpy.count(), 1); ++ QCOMPOSITOR_TRY_COMPARE(childSurfaceCommitSpy.count(), 1); ++ + } + + // Used to cause a crash in libwayland (QTBUG-79674) +-- +2.31.1 + diff --git a/0016-Get-correct-decoration-margins-region.patch b/0016-Get-correct-decoration-margins-region.patch new file mode 100644 index 0000000..c06af39 --- /dev/null +++ b/0016-Get-correct-decoration-margins-region.patch @@ -0,0 +1,39 @@ +From 6810b0f66a34056bfe0da7299d7a768e700e58f5 Mon Sep 17 00:00:00 2001 +From: Jan Grulich +Date: Thu, 11 Feb 2021 15:12:32 +0100 +Subject: [PATCH 16/19] Get correct decoration margins region + +Size we use to calculate margins region already contains size including +margins. This resulted into bigger region and not properly damaging +region we need to update. + +Pick-to: 5.15 6.0 6.1 +Change-Id: Id1b7f4cd2a7b894b82db09c5af2b2d1f1f43fa2a +Reviewed-by: David Edmundson +--- + src/client/qwaylandabstractdecoration.cpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/client/qwaylandabstractdecoration.cpp b/src/client/qwaylandabstractdecoration.cpp +index 87dd6cea..b6ee43c9 100644 +--- a/src/client/qwaylandabstractdecoration.cpp ++++ b/src/client/qwaylandabstractdecoration.cpp +@@ -108,11 +108,11 @@ void QWaylandAbstractDecoration::setWaylandWindow(QWaylandWindow *window) + static QRegion marginsRegion(const QSize &size, const QMargins &margins) + { + QRegion r; +- const int widthWithMargins = margins.left() + size.width() + margins.right(); +- r += QRect(0, 0, widthWithMargins, margins.top()); // top +- r += QRect(0, size.height()+margins.top(), widthWithMargins, margins.bottom()); //bottom ++ ++ r += QRect(0, 0, size.width(), margins.top()); // top ++ r += QRect(0, size.height()-margins.bottom(), size.width(), margins.bottom()); //bottom + r += QRect(0, margins.top(), margins.left(), size.height()); //left +- r += QRect(size.width()+margins.left(), margins.top(), margins.right(), size.height()); // right ++ r += QRect(size.width()-margins.left(), margins.top(), margins.right(), size.height()-margins.top()); // right + return r; + } + +-- +2.31.1 + diff --git a/0017-xdgshell-Tell-the-compositor-the-screen-we-re-expect.patch b/0017-xdgshell-Tell-the-compositor-the-screen-we-re-expect.patch new file mode 100644 index 0000000..d35c413 --- /dev/null +++ b/0017-xdgshell-Tell-the-compositor-the-screen-we-re-expect.patch @@ -0,0 +1,41 @@ +From cea69b8adec1e61adc1fa04cbf46b77c0d72c75e Mon Sep 17 00:00:00 2001 +From: Aleix Pol +Date: Mon, 23 Nov 2020 20:07:02 +0100 +Subject: [PATCH 17/19] xdgshell: Tell the compositor the screen we're + expecting to fill + +The xdgshell protocol allows us to tell the output to fill. This makes +it possible to use fullscreen confidently on systems with multiple +screens knowing that our windows won't be overlapping one another by +calling setScreen accordingly before QWindow::showFullScreen. + +Pick-to: 6.1 6.0 5.15 +Change-Id: I757854c3698639472f3a25ef298ddcca031e1ed5 +Reviewed-by: David Edmundson +--- + .../shellintegration/xdg-shell/qwaylandxdgshell.cpp | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +index 1c762944..3a1569f7 100644 +--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp ++++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp +@@ -178,9 +178,12 @@ void QWaylandXdgSurface::Toplevel::requestWindowStates(Qt::WindowStates states) + } + + if (changedStates & Qt::WindowFullScreen) { +- if (states & Qt::WindowFullScreen) +- set_fullscreen(nullptr); +- else ++ if (states & Qt::WindowFullScreen) { ++ auto screen = m_xdgSurface->window()->waylandScreen(); ++ if (screen) { ++ set_fullscreen(screen->output()); ++ } ++ } else + unset_fullscreen(); + } + +-- +2.31.1 + diff --git a/0018-Fix-compilation.patch b/0018-Fix-compilation.patch new file mode 100644 index 0000000..b77e726 --- /dev/null +++ b/0018-Fix-compilation.patch @@ -0,0 +1,26 @@ +From 2f84a874da064069461284db1da36dc818949ec1 Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid +Date: Sat, 10 Apr 2021 12:10:16 +0200 +Subject: [PATCH 18/19] Fix compilation + +9df11e79b46c77d8c83f765b2a8e85b639fd55a2 can't be backported 1:1 +--- + .../client/wayland-egl/qwaylandglcontext.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +index befadedc..95d1049c 100644 +--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp ++++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp +@@ -408,7 +408,7 @@ QWaylandGLContext::~QWaylandGLContext() + delete m_blitter; + m_blitter = nullptr; + if (m_decorationsContext != EGL_NO_CONTEXT) +- eglDestroyContext(eglDisplay(), m_decorationsContext); ++ eglDestroyContext(m_eglDisplay, m_decorationsContext); + } + + bool QWaylandGLContext::makeCurrent(QPlatformSurface *surface) +-- +2.31.1 + diff --git a/0019-client-Allow-QWaylandInputContext-to-accept-composed.patch b/0019-client-Allow-QWaylandInputContext-to-accept-composed.patch new file mode 100644 index 0000000..ead9c42 --- /dev/null +++ b/0019-client-Allow-QWaylandInputContext-to-accept-composed.patch @@ -0,0 +1,257 @@ +From 91c48320633e493b4cd519e5d73b836a878b2b77 Mon Sep 17 00:00:00 2001 +From: Aleix Pol +Date: Wed, 10 Mar 2021 01:09:13 +0100 +Subject: [PATCH 19/19] client: Allow QWaylandInputContext to accept composed + key combinations + +At the moment, we are forcing user to choose to either compose or use +the text-input channel. This patch brings some of the QComposeInputContext +functionality in order to let applications understand dead key +combinations like they are supposed to. + +Having it in QWaylandInputContext rather than in QWaylandInputDevice +should solve the problems 3aedd01271dc4f4a13103d632df224971ab2b6df had +with 57c4af2b18c0fb1d266b245a107fa6cb876b9d9e, because we are doing it +in the input context rather than before. This way, if the user is +overriding the input method (e.g. by setting QT_IM_MODULE), all the key +strokes will still be properly forwarded to the module to use. + +This in turn allows us to solve https://bugs.kde.org/show_bug.cgi?id=411729 +and https://bugs.kde.org/show_bug.cgi?id=405388 since we don't need to +choose anymore between physical and virual keyboards anymore. + +Pick-to: 5.15 +Change-Id: I8601f5d7ae21edf4b3a1191fa75877286e505588 +Reviewed-by: David Edmundson +--- + src/client/qwaylanddisplay_p.h | 3 - + src/client/qwaylandinputcontext.cpp | 95 ++++++++++++++++++++++++++++- + src/client/qwaylandinputcontext_p.h | 21 +++++++ + src/client/qwaylandinputdevice.cpp | 2 +- + src/client/qwaylandintegration.cpp | 8 +-- + 5 files changed, 119 insertions(+), 10 deletions(-) + +diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h +index 188e9131..3b092bc8 100644 +--- a/src/client/qwaylanddisplay_p.h ++++ b/src/client/qwaylanddisplay_p.h +@@ -175,8 +175,6 @@ public: + QWaylandHardwareIntegration *hardwareIntegration() const { return mHardwareIntegration.data(); } + QWaylandXdgOutputManagerV1 *xdgOutputManager() const { return mXdgOutputManager.data(); } + +- bool usingInputContextFromCompositor() const { return mUsingInputContextFromCompositor; } +- + struct RegistryGlobal { + uint32_t id; + QString interface; +@@ -282,7 +280,6 @@ private: + QReadWriteLock m_frameQueueLock; + + bool mClientSideInputContextRequested = !QPlatformInputContextFactory::requested().isNull(); +- bool mUsingInputContextFromCompositor = false; + + void registry_global(uint32_t id, const QString &interface, uint32_t version) override; + void registry_global_remove(uint32_t id) override; +diff --git a/src/client/qwaylandinputcontext.cpp b/src/client/qwaylandinputcontext.cpp +index e9afe05e..ef5aa375 100644 +--- a/src/client/qwaylandinputcontext.cpp ++++ b/src/client/qwaylandinputcontext.cpp +@@ -406,6 +406,8 @@ bool QWaylandInputContext::isValid() const + void QWaylandInputContext::reset() + { + qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO; ++ if (m_composeState) ++ xkb_compose_state_reset(m_composeState); + + QPlatformInputContext::reset(); + +@@ -526,9 +528,14 @@ Qt::LayoutDirection QWaylandInputContext::inputDirection() const + return textInput()->inputDirection(); + } + +-void QWaylandInputContext::setFocusObject(QObject *) ++void QWaylandInputContext::setFocusObject(QObject *object) + { + qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO; ++#if QT_CONFIG(xkbcommon) ++ m_focusObject = object; ++#else ++ Q_UNUSED(object); ++#endif + + if (!textInput()) + return; +@@ -561,6 +568,92 @@ QWaylandTextInput *QWaylandInputContext::textInput() const + return mDisplay->defaultInputDevice()->textInput(); + } + ++#if QT_CONFIG(xkbcommon) ++ ++void QWaylandInputContext::ensureInitialized() ++{ ++ if (m_initialized) ++ return; ++ ++ if (!m_XkbContext) { ++ qCWarning(qLcQpaInputMethods) << "error: xkb context has not been set on" << metaObject()->className(); ++ return; ++ } ++ ++ m_initialized = true; ++ const char *locale = setlocale(LC_CTYPE, ""); ++ if (!locale) ++ locale = setlocale(LC_CTYPE, nullptr); ++ qCDebug(qLcQpaInputMethods) << "detected locale (LC_CTYPE):" << locale; ++ ++ m_composeTable = xkb_compose_table_new_from_locale(m_XkbContext, locale, XKB_COMPOSE_COMPILE_NO_FLAGS); ++ if (m_composeTable) ++ m_composeState = xkb_compose_state_new(m_composeTable, XKB_COMPOSE_STATE_NO_FLAGS); ++ ++ if (!m_composeTable) { ++ qCWarning(qLcQpaInputMethods, "failed to create compose table"); ++ return; ++ } ++ if (!m_composeState) { ++ qCWarning(qLcQpaInputMethods, "failed to create compose state"); ++ return; ++ } ++} ++ ++bool QWaylandInputContext::filterEvent(const QEvent *event) ++{ ++ auto keyEvent = static_cast(event); ++ if (keyEvent->type() != QEvent::KeyPress) ++ return false; ++ ++ if (!inputMethodAccepted()) ++ return false; ++ ++ // lazy initialization - we don't want to do this on an app startup ++ ensureInitialized(); ++ ++ if (!m_composeTable || !m_composeState) ++ return false; ++ ++ xkb_compose_state_feed(m_composeState, keyEvent->nativeVirtualKey()); ++ ++ switch (xkb_compose_state_get_status(m_composeState)) { ++ case XKB_COMPOSE_COMPOSING: ++ return true; ++ case XKB_COMPOSE_CANCELLED: ++ reset(); ++ return false; ++ case XKB_COMPOSE_COMPOSED: ++ { ++ const int size = xkb_compose_state_get_utf8(m_composeState, nullptr, 0); ++ QVarLengthArray buffer(size + 1); ++ xkb_compose_state_get_utf8(m_composeState, buffer.data(), buffer.size()); ++ QString composedText = QString::fromUtf8(buffer.constData()); ++ ++ QInputMethodEvent event; ++ event.setCommitString(composedText); ++ ++ if (!m_focusObject && qApp) ++ m_focusObject = qApp->focusObject(); ++ ++ if (m_focusObject) ++ QCoreApplication::sendEvent(m_focusObject, &event); ++ else ++ qCWarning(qLcQpaInputMethods, "no focus object"); ++ ++ reset(); ++ return true; ++ } ++ case XKB_COMPOSE_NOTHING: ++ return false; ++ default: ++ Q_UNREACHABLE(); ++ return false; ++ } ++} ++ ++#endif ++ + } + + QT_END_NAMESPACE +diff --git a/src/client/qwaylandinputcontext_p.h b/src/client/qwaylandinputcontext_p.h +index 10132dfe..50db6344 100644 +--- a/src/client/qwaylandinputcontext_p.h ++++ b/src/client/qwaylandinputcontext_p.h +@@ -61,6 +61,10 @@ + + #include + #include ++#include ++#if QT_CONFIG(xkbcommon) ++#include ++#endif + + struct wl_callback; + struct wl_callback_listener; +@@ -155,11 +159,28 @@ public: + + void setFocusObject(QObject *object) override; + ++#if QT_CONFIG(xkbcommon) ++ bool filterEvent(const QEvent *event) override; ++ ++ // This invokable is called from QXkbCommon::setXkbContext(). ++ Q_INVOKABLE void setXkbContext(struct xkb_context *context) { m_XkbContext = context; } ++#endif ++ + private: + QWaylandTextInput *textInput() const; + + QWaylandDisplay *mDisplay = nullptr; + QPointer mCurrentWindow; ++ ++#if QT_CONFIG(xkbcommon) ++ void ensureInitialized(); ++ ++ bool m_initialized = false; ++ QObject *m_focusObject = nullptr; ++ xkb_compose_table *m_composeTable = nullptr; ++ xkb_compose_state *m_composeState = nullptr; ++ struct xkb_context *m_XkbContext = nullptr; ++#endif + }; + + } +diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp +index ed4a0eb4..ae045f4f 100644 +--- a/src/client/qwaylandinputdevice.cpp ++++ b/src/client/qwaylandinputdevice.cpp +@@ -1201,7 +1201,7 @@ void QWaylandInputDevice::Keyboard::handleKey(ulong timestamp, QEvent::Type type + QPlatformInputContext *inputContext = QGuiApplicationPrivate::platformIntegration()->inputContext(); + bool filtered = false; + +- if (inputContext && !mParent->mQDisplay->usingInputContextFromCompositor()) { ++ if (inputContext) { + QKeyEvent event(type, key, modifiers, nativeScanCode, nativeVirtualKey, + nativeModifiers, text, autorepeat, count); + event.setTimestamp(timestamp); +diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp +index 7ad8e05e..c53ccb78 100644 +--- a/src/client/qwaylandintegration.cpp ++++ b/src/client/qwaylandintegration.cpp +@@ -474,13 +474,11 @@ void QWaylandIntegration::reconfigureInputContext() + + #if QT_CONFIG(xkbcommon) + QXkbCommon::setXkbContext(mInputContext.data(), mDisplay->xkbContext()); ++ if (QWaylandInputContext* waylandInput = qobject_cast(mInputContext.get())) { ++ waylandInput->setXkbContext(mDisplay->xkbContext()); ++ } + #endif + +- // Even if compositor-side input context handling has been requested, we fallback to +- // client-side handling if compositor does not provide the text-input extension. This +- // is why we need to check here which input context actually is being used. +- mDisplay->mUsingInputContextFromCompositor = qobject_cast(mInputContext.data()); +- + qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className(); + } + +-- +2.31.1 + diff --git a/qt5-qtwayland.spec b/qt5-qtwayland.spec index eade45e..bce119a 100644 --- a/qt5-qtwayland.spec +++ b/qt5-qtwayland.spec @@ -3,21 +3,47 @@ Summary: Qt5 - Wayland platform support and QtCompositor module Name: qt5-%{qt_module} Version: 5.15.2 -Release: 5%{?dist} +Release: 6%{?dist} License: LGPLv3 Url: http://www.qt.io %global majmin %(echo %{version} | cut -d. -f1-2) Source0: https://download.qt.io/official_releases/qt/%{majmin}/%{version}/submodules/%{qt_module}-everywhere-src-%{version}.tar.xz -# Upstream patches -Patch0: qtwayland-scanner-avoid-accessing-dangling-pointers-in-destroy-func.patch -Patch1: qtwayland-fix-issue-with-repeated-window-size-changes.patch -Patch2: qtwayland-get-correct-margins-decoration-region.patch -Patch3: qtwayland-send-exposeevent-to-parent-on-subsurface-position.patch -Patch4: qtwayland-send-set-window-geometry-only-once-configured.patch -Patch5: qtwayland-tell-compositor-screen-we-are-expecting-to-fill.patch -Patch6: qtwayland-translate-opaque-area-for-decorations.patch +## Upstream patches +## repo: https://invent.kde.org/qt/qt/qtwayland +## branch: kde/5.15 +## git format-patch v5.15.2 +## These are already included in stock 5.15.2 tarball, referenced here for completeness +#Patch1: 0001-Bump-version.patch +#Patch2: 0002-Replace-remaining-LGPLv3-headers-in-QtWaylandComposi.patch +#Patch3: 0003-Doc-List-correct-license-information-for-the-module.patch +#Patch4: 0004-Add-changes-file-for-Qt-5.15.2.patch +Patch5: 0005-Scanner-Avoid-accessing-dangling-pointers-in-destroy.patch +Patch6: 0006-Make-setting-QT_SCALE_FACTOR-work-on-Wayland.patch +Patch7: 0007-Do-not-try-to-eglMakeCurrent-for-unintended-case.patch +Patch8: 0008-Make-setting-QT_SCALE_FACTOR-work-on-Wayland.patch +Patch9: 0009-Ensure-that-grabbing-is-performed-in-correct-context.patch +Patch10: 0010-Fix-leaked-subsurface-wayland-items.patch +Patch11: 0011-Use-qWarning-and-_exit-instead-of-qFatal-for-wayland.patch +Patch12: 0012-Fix-memory-leak-in-QWaylandGLContext.patch +Patch13: 0013-Client-Send-set_window_geometry-only-once-configured.patch +Patch14: 0014-Translate-opaque-area-with-frame-margins.patch +Patch15: 0015-Client-Send-exposeEvent-to-parent-on-subsurface-posi.patch +Patch16: 0016-Get-correct-decoration-margins-region.patch +Patch17: 0017-xdgshell-Tell-the-compositor-the-screen-we-re-expect.patch +Patch18: 0018-Fix-compilation.patch +Patch19: 0019-client-Allow-QWaylandInputContext-to-accept-composed.patch + +## prior patches, commented-out ones are apparent dupes from above, keep them around +## temporarily in case I botched anything -- rdieter +#Patch50: qtwayland-scanner-avoid-accessing-dangling-pointers-in-destroy-func.patch +Patch51: qtwayland-fix-issue-with-repeated-window-size-changes.patch +#Patch52: qtwayland-get-correct-margins-decoration-region.patch +#Patch53: qtwayland-send-exposeevent-to-parent-on-subsurface-position.patch +#Patch54: qtwayland-send-set-window-geometry-only-once-configured.patch +#Patch55: qtwayland-tell-compositor-screen-we-are-expecting-to-fill.patch +#Patch56: qtwayland-translate-opaque-area-for-decorations.patch # Upstreamable patches @@ -128,6 +154,9 @@ popd %changelog +* Tue Apr 27 2021 Rex Dieter - 5.15.2-6 +- Pull in latest fixes from https://invent.kde.org/qt/qt/qtwayland + * Tue Apr 06 2021 Jan Grulich - 5.15.2-5 - Backport changes from Qt 5.15.3