From: Marius Vlad Date: Wed, 26 Jul 2023 11:23:54 +0000 (+0300) Subject: qtwayland: Clean-up and adapt inputContext() patch X-Git-Tag: 16.91.1~31 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F66%2F29066%2F2;p=AGL%2Fmeta-agl-demo.git qtwayland: Clean-up and adapt inputContext() patch This cleans up all qtwayland patches that haven't been used in quite some time and adapts a slightly recent patch that provided a work-around to enable Qt debugging (using QT_LOGGING_RULES), which a qtwayland update made it so the patch wouldn't apply anymore. Bug-AGL: SPEC-4770 Change-Id: Ie24b4dff51500a9ab85635768045b2ee0c29bd0a Signed-off-by: Marius Vlad --- diff --git a/recipes-qt/qt/qtwayland/0001-client-qwaylandintegration-Do-not-attempt-to-use-the.patch b/recipes-qt/qt/qtwayland/0001-client-qwaylandintegration-Do-not-attempt-to-use-the.patch deleted file mode 100644 index 2d578e3b0..000000000 --- a/recipes-qt/qt/qtwayland/0001-client-qwaylandintegration-Do-not-attempt-to-use-the.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 0c8212273ac0fcd8cd954bd43075901a80ab3476 Mon Sep 17 00:00:00 2001 -From: Marius Vlad -Date: Fri, 29 Jan 2021 12:31:19 +0200 -Subject: [PATCH] client/qwaylandintegration: Do not attempt to use the - inputContext() - -We assume loading the platforminputcompose library no matter what, but -in case that doesn't happen (the library effectively not found), no necessary -checks are made in order to make sure that indeed succeed. - -This patch mitigates that, and with it, it allows to use the QT_LOGGING_RULES, -which is used to trigger the issue. - -Bug-AGL: SPEC-3359 - -Signed-off-by: Marius Vlad ---- - src/client/qwaylandintegration.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp -index f6a80e18..5568485c 100644 ---- a/src/client/qwaylandintegration.cpp -+++ b/src/client/qwaylandintegration.cpp -@@ -503,7 +503,8 @@ void QWaylandIntegration::reconfigureInputContext() - // 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(); -+ if (mDisplay->mUsingInputContextFromCompositor) -+ qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className(); - } - - QWaylandShellIntegration *QWaylandIntegration::createShellIntegration(const QString &integrationName) --- -2.28.0 - diff --git a/recipes-qt/qt/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch b/recipes-qt/qt/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch deleted file mode 100644 index c91e11704..000000000 --- a/recipes-qt/qt/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 8caaf802a8b42e9bb1d74fc335a571882c75d73e Mon Sep 17 00:00:00 2001 -From: Holger Behrens -Date: Tue, 3 Feb 2015 09:52:52 +0100 -Subject: [meta-ivi-demo][PATCH 1/2] protocol: update 3rd party ivi-application - protocol - -Signed-off-by: Holger Behrens ---- - src/3rdparty/protocol/ivi-application.xml | 31 +++---------------------------- - 1 file changed, 3 insertions(+), 28 deletions(-) - -diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml -index 833fd38..b06ae6c 100644 ---- a/src/3rdparty/protocol/ivi-application.xml -+++ b/src/3rdparty/protocol/ivi-application.xml -@@ -42,34 +42,9 @@ - - - -- -- -- These define all possible warning codes returned by ivi compositor on server-side warnings. -- invalid_wl_surface: -- - wl_surface already has a another role. -- - wl_surface is destroyed before the ivi_surface is destroyed. -- ivi_id_in_use: ivi_id is already assigned by another application. -- -- -- -- -- -- -- -- The ivi compositor encountered warning while processing a request by this -- application. The warning is defined by argument warning_code and optional -- warning_text. If the warning is detected, client shall destroy the ivi_surface -- object. -- -- When a warning event is sent, the compositor turns the ivi_surface object inert. -- The ivi_surface will not deliver further events, all requests on it are ignored -- except 'destroy', and the association to the ivi_id is removed. The client -- should destroy the ivi_surface object. If an inert ivi_surface object is used as -- an argument to any other object's request, that request will [produce a fatal -- error / produce a warning / be ignored]. -- -- -- -+ -+ -+ - - - --- -2.2.1 - diff --git a/recipes-qt/qt/qtwayland/0001-qwaylandintegration-Keep-previous-check-related-to-i.patch b/recipes-qt/qt/qtwayland/0001-qwaylandintegration-Keep-previous-check-related-to-i.patch new file mode 100644 index 000000000..77362dac3 --- /dev/null +++ b/recipes-qt/qt/qtwayland/0001-qwaylandintegration-Keep-previous-check-related-to-i.patch @@ -0,0 +1,33 @@ +From 81213fb5e1bdd19f4f8135bcddcc1efaeb1b42a5 Mon Sep 17 00:00:00 2001 +From: Marius Vlad +Date: Wed, 26 Jul 2023 13:57:30 +0300 +Subject: [PATCH] qwaylandintegration: Keep previous check related to + inputContext() + +Avoid touching inputContext() when QT_LOGGING_RULES are enabled. This +check ensures we're still able to debug Qt issues. + +Bug-AGL: SPEC-4770 +Signed-off-by: Marius Vlad +--- + src/client/qwaylandintegration.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp +index c53ccb78..6d3d9559 100644 +--- a/src/client/qwaylandintegration.cpp ++++ b/src/client/qwaylandintegration.cpp +@@ -479,7 +479,9 @@ void QWaylandIntegration::reconfigureInputContext() + } + #endif + +- qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className(); ++ bool mUsingInputContextFromCompositor = qobject_cast(mInputContext.data()); ++ if (mUsingInputContextFromCompositor) ++ qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className(); + } + + QWaylandShellIntegration *QWaylandIntegration::createShellIntegration(const QString &integrationName) +-- +2.35.1 + diff --git a/recipes-qt/qt/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch b/recipes-qt/qt/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch deleted file mode 100644 index 591ef71c5..000000000 --- a/recipes-qt/qt/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 31c60aedf415fd06b5c1aa16fdcef1504b67b96d Mon Sep 17 00:00:00 2001 -From: Holger Behrens -Date: Tue, 3 Feb 2015 09:53:43 +0100 -Subject: [meta-ivi-demo][PATCH 2/2] qwaylandwindow: add support for - IVI-Surface-ID property - -Signed-off-by: Holger Behrens ---- - src/client/qwaylandwindow.cpp | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 45a58f2..781081a 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -100,7 +100,14 @@ QWaylandWindow::QWaylandWindow(QWindow *window) - - if (!(window->flags() & Qt::BypassWindowManagerHint)) { - if (mDisplay->shellIvi()) { -- mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(IVI_SURFACE_ID + getpid(), object()), this); -+ unsigned int id = 0; -+ QVariant value = window->property("IVI-Surface-ID"); -+ if (value.isValid()) { -+ id = value.toUInt(); -+ } else { -+ id = IVI_SURFACE_ID + getpid(); -+ } -+ mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(id, object()), this); - } else if (mDisplay->shellXdg()) { - if (window->type() & Qt::Window) { - mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); --- -2.2.1 - diff --git a/recipes-qt/qt/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch b/recipes-qt/qt/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch deleted file mode 100644 index 413459fb6..000000000 --- a/recipes-qt/qt/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch +++ /dev/null @@ -1,128 +0,0 @@ -From b4f032b13338ad6c21024177b031c75063ef7493 Mon Sep 17 00:00:00 2001 -From: Manuel Bachmann -Date: Sun, 7 Sep 2014 08:19:30 +0200 -Subject: [PATCH 20/21] Add IVI-Shell protocol file version patch v6 - -Source : http://lists.freedesktop.org/archives/wayland-devel/2014-June/015617.html - -This file comes from the last proposed definition of the IVI-Shell protocol, -and will need to be refreshed on protocol update. - -Task-number: QTBUG-XXXXX/part/1of2 - -Signed-off-by: Manuel Bachmann ---- - src/3rdparty/protocol/ivi-application.xml | 101 ++++++++++++++++++++++++++++++ - 1 file changed, 101 insertions(+) - create mode 100644 src/3rdparty/protocol/ivi-application.xml - -diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml -new file mode 100644 -index 0000000..833fd38 ---- /dev/null -+++ b/src/3rdparty/protocol/ivi-application.xml -@@ -0,0 +1,101 @@ -+ -+ -+ -+ -+ Copyright (C) 2013 DENSO CORPORATION -+ Copyright (c) 2013 BMW Car IT GmbH -+ -+ Permission is hereby granted, free of charge, to any person obtaining a copy -+ of this software and associated documentation files (the "Software"), to deal -+ in the Software without restriction, including without limitation the rights -+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -+ copies of the Software, and to permit persons to whom the Software is -+ furnished to do so, subject to the following conditions: -+ -+ The above copyright notice and this permission notice shall be included in -+ all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -+ THE SOFTWARE. -+ -+ -+ -+ -+ -+ -+ -+ This removes link from ivi_id to wl_surface and destroys ivi_surface. -+ -+ -+ -+ -+ -+ The new visibility state is provided in argument visibility. -+ If visibility is 0, the surface has become invisible. -+ If visibility is not 0, the surface has become visible. -+ -+ -+ -+ -+ -+ -+ These define all possible warning codes returned by ivi compositor on server-side warnings. -+ invalid_wl_surface: -+ - wl_surface already has a another role. -+ - wl_surface is destroyed before the ivi_surface is destroyed. -+ ivi_id_in_use: ivi_id is already assigned by another application. -+ -+ -+ -+ -+ -+ -+ -+ The ivi compositor encountered warning while processing a request by this -+ application. The warning is defined by argument warning_code and optional -+ warning_text. If the warning is detected, client shall destroy the ivi_surface -+ object. -+ -+ When a warning event is sent, the compositor turns the ivi_surface object inert. -+ The ivi_surface will not deliver further events, all requests on it are ignored -+ except 'destroy', and the association to the ivi_id is removed. The client -+ should destroy the ivi_surface object. If an inert ivi_surface object is used as -+ an argument to any other object's request, that request will [produce a fatal -+ error / produce a warning / be ignored]. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ This interface is implemented by servers that provide desktop-style user interfaces. -+ It allows clients to associate a ivi_surface with a basic surface. -+ -+ -+ -+ -+ surface_create will create a interface:ivi_surface with numeric ID; ivi_id in -+ ivi compositor. These ivi_ids are defined as unique in the system to identify -+ it inside of ivi compositor. The ivi compositor implements business logic how to -+ set properties of the surface with ivi_id according to status of the system. -+ E.g. a unique ID for Car Navigation application is used for implementing special -+ logic of the application about where it shall be located. -+ if a wl_surface which already has another role is set, the server regards this as -+ error and disconnects the client. -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -1.9.1 - diff --git a/recipes-qt/qt/qtwayland/0021-Implement-initial-IVI-Shell-support.patch b/recipes-qt/qt/qtwayland/0021-Implement-initial-IVI-Shell-support.patch deleted file mode 100644 index 8723def26..000000000 --- a/recipes-qt/qt/qtwayland/0021-Implement-initial-IVI-Shell-support.patch +++ /dev/null @@ -1,539 +0,0 @@ -From 1ddfa43692cabae0f552351cfbc09377e479471e Mon Sep 17 00:00:00 2001 -From: Manuel Bachmann -Date: Mon, 8 Sep 2014 11:38:01 +0200 -Subject: [PATCH 21/21] Implement initial IVI-Shell support - -IVI-Shell provides a shell interface for Weston, which maps the GENIVI API (http://www.genivi.org) for In-Vehicle Infotainment. - -This patch enables detecting the IVI-Shell interface at runtime, and creating compatible surfaces if found. - -Task-number: QTBUG-XXXXX/part/2of2 - -Change-Id: I1f6c11bf56b727a54fb48faab9c076b61d635440 -Signed-off-by: Manuel Bachmann ---- - src/client/client.pro | 5 ++ - src/client/qwaylanddisplay.cpp | 9 ++++ - src/client/qwaylanddisplay_p.h | 5 ++ - src/client/qwaylandivishell.cpp | 69 +++++++++++++++++++++++++ - src/client/qwaylandivishell_p.h | 70 +++++++++++++++++++++++++ - src/client/qwaylandivisurface.cpp | 105 ++++++++++++++++++++++++++++++++++++++ - src/client/qwaylandivisurface_p.h | 90 ++++++++++++++++++++++++++++++++ - src/client/qwaylandwindow.cpp | 8 ++- - 8 files changed, 360 insertions(+), 1 deletion(-) - create mode 100644 src/client/qwaylandivishell.cpp - create mode 100644 src/client/qwaylandivishell_p.h - create mode 100644 src/client/qwaylandivisurface.cpp - create mode 100644 src/client/qwaylandivisurface_p.h - -diff --git a/src/client/client.pro b/src/client/client.pro -index 73e3b7f..adb526d 100644 ---- a/src/client/client.pro -+++ b/src/client/client.pro -@@ -42,6 +42,7 @@ WAYLANDCLIENTSOURCES += \ - ../extensions/windowmanager.xml \ - ../3rdparty/protocol/text.xml \ - ../3rdparty/protocol/xdg-shell.xml \ -+ ../3rdparty/protocol/ivi-application.xml \ - - SOURCES += qwaylandintegration.cpp \ - qwaylandnativeinterface.cpp \ -@@ -61,6 +62,8 @@ SOURCES += qwaylandintegration.cpp \ - qwaylandwlshellsurface.cpp \ - qwaylandxdgshell.cpp \ - qwaylandxdgsurface.cpp \ -+ qwaylandivishell.cpp \ -+ qwaylandivisurface.cpp \ - qwaylandextendedoutput.cpp \ - qwaylandextendedsurface.cpp \ - qwaylandsubsurface.cpp \ -@@ -92,6 +95,8 @@ HEADERS += qwaylandintegration_p.h \ - qwaylandwlshellsurface_p.h \ - qwaylandxdgshell_p.h \ - qwaylandxdgsurface_p.h \ -+ qwaylandivishell_p.h \ -+ qwaylandivisurface_p.h \ - qwaylandextendedoutput_p.h \ - qwaylandextendedsurface_p.h \ - qwaylandsubsurface_p.h \ -diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp -index 2e25672..2a93db7 100644 ---- a/src/client/qwaylanddisplay.cpp -+++ b/src/client/qwaylanddisplay.cpp -@@ -51,6 +51,7 @@ - #include "qwaylanddatadevicemanager_p.h" - #include "qwaylandhardwareintegration_p.h" - #include "qwaylandxdgshell_p.h" -+#include "qwaylandivishell_p.h" - - #include "qwaylandwindowmanagerintegration_p.h" - -@@ -62,6 +63,7 @@ - - #include - #include -+#include - - #include - #include -@@ -207,6 +209,8 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin - mCompositor.init(registry, id); - } else if (interface == QStringLiteral("wl_shm")) { - mShm = static_cast(wl_registry_bind(registry, id, &wl_shm_interface,1)); -+ } else if (interface == QStringLiteral("ivi_application")) { -+ mShellIvi.reset(new QWaylandIviShell(registry,id)); - } else if (interface == QStringLiteral("xdg_shell") - && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) { - mShellXdg.reset(new QWaylandXdgShell(registry,id)); -@@ -279,4 +283,9 @@ QtWayland::xdg_shell *QWaylandDisplay::shellXdg() - return mShellXdg.data(); - } - -+QtWayland::ivi_application *QWaylandDisplay::shellIvi() -+{ -+ return mShellIvi.data(); -+} -+ - QT_END_NAMESPACE -diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h -index f1b35a7..b9c686c 100644 ---- a/src/client/qwaylanddisplay_p.h -+++ b/src/client/qwaylanddisplay_p.h -@@ -52,6 +52,7 @@ - #include - #include - #include -+#include - - struct wl_cursor_image; - -@@ -72,6 +73,7 @@ class QWaylandWindow; - class QWaylandEventThread; - class QWaylandIntegration; - class QWaylandHardwareIntegration; -+class QWaylandIviShell; - class QWaylandXdgShell; - - namespace QtWayland { -@@ -81,6 +83,7 @@ namespace QtWayland { - class qt_surface_extension; - class wl_text_input_manager; - class xdg_shell; -+ class ivi_application; - } - - typedef void (*RegistryListener)(void *data, -@@ -117,6 +120,7 @@ public: - - QtWayland::wl_shell *shell() { return mShell.data(); } - QtWayland::xdg_shell *shellXdg(); -+ QtWayland::ivi_application *shellIvi(); - - QList inputDevices() const { return mInputDevices; } - QWaylandInputDevice *defaultInputDevice() const; -@@ -173,6 +177,7 @@ private: - QWaylandEventThread *mEventThreadObject; - QScopedPointer mShell; - QScopedPointer mShellXdg; -+ QScopedPointer mShellIvi; - QList mScreens; - QList mInputDevices; - QList mRegistryListeners; -diff --git a/src/client/qwaylandivishell.cpp b/src/client/qwaylandivishell.cpp -new file mode 100644 -index 0000000..9d63d0d ---- /dev/null -+++ b/src/client/qwaylandivishell.cpp -@@ -0,0 +1,69 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Eurogiciel, author: -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** 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 Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 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 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandivishell_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandIviShell::QWaylandIviShell(struct ::ivi_application *shell) -+ : QtWayland::ivi_application(shell) -+{ -+} -+ -+QWaylandIviShell::QWaylandIviShell(struct ::wl_registry *registry, uint32_t id) -+ : QtWayland::ivi_application(registry, id) -+{ -+} -+ -+QWaylandIviShell::~QWaylandIviShell() -+{ -+ ivi_application_destroy(object()); -+} -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandivishell_p.h b/src/client/qwaylandivishell_p.h -new file mode 100644 -index 0000000..f9f6983 ---- /dev/null -+++ b/src/client/qwaylandivishell_p.h -@@ -0,0 +1,70 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2014 Eurogiciel, author: -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** 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 Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 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 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDIVISHELL_H -+#define QWAYLANDIVISHELL_H -+ -+#include -+ -+#include -+ -+#include -+#include -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandIviShell : public QtWayland::ivi_application -+{ -+public: -+ QWaylandIviShell(struct ::ivi_application *shell); -+ QWaylandIviShell(struct ::wl_registry *registry, uint32_t id); -+ -+ virtual ~QWaylandIviShell(); -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDIVISHELL_H -diff --git a/src/client/qwaylandivisurface.cpp b/src/client/qwaylandivisurface.cpp -new file mode 100644 -index 0000000..a12309e ---- /dev/null -+++ b/src/client/qwaylandivisurface.cpp -@@ -0,0 +1,105 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** 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 Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 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 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#include "qwaylandivisurface_p.h" -+ -+#include "qwaylanddisplay_p.h" -+#include "qwaylandwindow_p.h" -+#include "qwaylandinputdevice_p.h" -+#include "qwaylanddecoration_p.h" -+#include "qwaylandscreen_p.h" -+ -+#include -+ -+QT_BEGIN_NAMESPACE -+ -+QWaylandIviSurface::QWaylandIviSurface(struct ::ivi_surface *ivi_surface, QWaylandWindow *window) -+ : QtWayland::ivi_surface(ivi_surface) -+ , m_window(window) -+{ -+} -+ -+QWaylandIviSurface::~QWaylandIviSurface() -+{ -+ ivi_surface_destroy(object()); -+} -+ -+void QWaylandIviSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) -+{ -+} -+ -+void QWaylandIviSurface::move(QWaylandInputDevice *inputDevice) -+{ -+} -+ -+void QWaylandIviSurface::setMaximized() -+{ -+} -+ -+void QWaylandIviSurface::setFullscreen() -+{ -+} -+ -+void QWaylandIviSurface::setNormal() -+{ -+} -+ -+void QWaylandIviSurface::setMinimized() -+{ -+} -+ -+void QWaylandIviSurface::setTopLevel() -+{ -+} -+ -+void QWaylandIviSurface::updateTransientParent(QWindow *parent) -+{ -+} -+ -+void QWaylandIviSurface::setTitle(const QString & title) -+{ -+} -+ -+void QWaylandIviSurface::setAppId(const QString & appId) -+{ -+} -+ -+QT_END_NAMESPACE -diff --git a/src/client/qwaylandivisurface_p.h b/src/client/qwaylandivisurface_p.h -new file mode 100644 -index 0000000..c6a7ce6 ---- /dev/null -+++ b/src/client/qwaylandivisurface_p.h -@@ -0,0 +1,90 @@ -+/**************************************************************************** -+** -+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -+** Contact: http://www.qt-project.org/legal -+** -+** This file is part of the config.tests of the Qt Toolkit. -+** -+** $QT_BEGIN_LICENSE:LGPL$ -+** 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 Digia. For licensing terms and -+** conditions see http://qt.digia.com/licensing. For further information -+** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software -+** Foundation and appearing in the file LICENSE.LGPL included in the -+** packaging of this file. Please review the following information to -+** ensure the GNU Lesser General Public License version 2.1 requirements -+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -+** -+** In addition, as a special exception, Digia gives you certain additional -+** rights. These rights are described in the Digia Qt LGPL Exception -+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -+** -+** GNU General Public License Usage -+** Alternatively, this file may be used under the terms of the GNU -+** General Public License version 3.0 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 3.0 requirements will be -+** met: http://www.gnu.org/copyleft/gpl.html. -+** -+** -+** $QT_END_LICENSE$ -+** -+****************************************************************************/ -+ -+#ifndef QWAYLANDIVISURFACE_H -+#define QWAYLANDIVISURFACE_H -+ -+#include -+ -+#include -+ -+#include -+#include -+#include "qwaylandshellsurface_p.h" -+ -+QT_BEGIN_NAMESPACE -+ -+class QWaylandWindow; -+class QWaylandInputDevice; -+class QWindow; -+class QWaylandExtendedSurface; -+ -+class Q_WAYLAND_CLIENT_EXPORT QWaylandIviSurface : public QtWayland::ivi_surface -+ , public QWaylandShellSurface -+{ -+public: -+ QWaylandIviSurface(struct ::ivi_surface *shell_surface, QWaylandWindow *window); -+ virtual ~QWaylandIviSurface(); -+ -+ void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE; -+ void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE; -+ -+ void setTitle(const QString &title) Q_DECL_OVERRIDE; -+ void setAppId(const QString &appId) Q_DECL_OVERRIDE; -+ -+private: -+ void setMaximized() Q_DECL_OVERRIDE; -+ void setFullscreen() Q_DECL_OVERRIDE; -+ void setNormal() Q_DECL_OVERRIDE; -+ void setMinimized() Q_DECL_OVERRIDE; -+ -+ void setTopLevel() Q_DECL_OVERRIDE; -+ void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE; -+ -+private: -+ QWaylandWindow *m_window; -+ -+ friend class QWaylandWindow; -+}; -+ -+QT_END_NAMESPACE -+ -+#endif // QWAYLANDIVISURFACE_H -diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp -index 3fb3a49..45a58f2 100644 ---- a/src/client/qwaylandwindow.cpp -+++ b/src/client/qwaylandwindow.cpp -@@ -39,6 +39,8 @@ - ** - ****************************************************************************/ - -+#include -+ - #include "qwaylandwindow_p.h" - - #include "qwaylandbuffer_p.h" -@@ -48,10 +50,12 @@ - #include "qwaylandshellsurface_p.h" - #include "qwaylandwlshellsurface_p.h" - #include "qwaylandxdgsurface_p.h" -+#include "qwaylandivisurface_p.h" - #include "qwaylandextendedsurface_p.h" - #include "qwaylandsubsurface_p.h" - #include "qwaylanddecoration_p.h" - #include "qwaylandwindowmanagerintegration_p.h" -+#define IVI_SURFACE_ID 8000 - - #include - #include -@@ -95,7 +99,9 @@ QWaylandWindow::QWaylandWindow(QWindow *window) - mWindowId = id++; - - if (!(window->flags() & Qt::BypassWindowManagerHint)) { -- if (mDisplay->shellXdg()) { -+ if (mDisplay->shellIvi()) { -+ mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(IVI_SURFACE_ID + getpid(), object()), this); -+ } else if (mDisplay->shellXdg()) { - if (window->type() & Qt::Window) { - mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this); - } --- -1.9.1 - diff --git a/recipes-qt/qt/qtwayland_agldemo.inc b/recipes-qt/qt/qtwayland_agldemo.inc index 111e2acd9..dc5ee3dc9 100644 --- a/recipes-qt/qt/qtwayland_agldemo.inc +++ b/recipes-qt/qt/qtwayland_agldemo.inc @@ -1,20 +1,6 @@ FILESEXTRAPATHS:append := ":${THISDIR}/qtwayland" -# QT_MODULE_BRANCH = "5.4" - -# TODO: -# These patches for IVI-SHELL are tempolary disabled because of issues. And new -# patches are proposed. -# -# file://0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch \ -# file://0021-Implement-initial-IVI-Shell-support.patch \ -# file://0001-protocol-update-3rd-party-ivi-application-protocol.patch \ -# file://0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch \ -# -# This patch breaks the build with qtwayland 5.15.7 (SPEC-4770) -# file://0001-client-qwaylandintegration-Do-not-attempt-to-use-the.patch \ -# - SRC_URI:append = "\ file://0001-qwaylandwindow-Short-circuit-isExposed.patch \ + file://0001-qwaylandintegration-Keep-previous-check-related-to-i.patch \ "