qtwayland: Clean-up and adapt inputContext() patch 66/29066/2
authorMarius Vlad <marius.vlad@collabora.com>
Wed, 26 Jul 2023 11:23:54 +0000 (14:23 +0300)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tue, 1 Aug 2023 15:13:39 +0000 (15:13 +0000)
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 <marius.vlad@collabora.com>
recipes-qt/qt/qtwayland/0001-client-qwaylandintegration-Do-not-attempt-to-use-the.patch [deleted file]
recipes-qt/qt/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch [deleted file]
recipes-qt/qt/qtwayland/0001-qwaylandintegration-Keep-previous-check-related-to-i.patch [new file with mode: 0644]
recipes-qt/qt/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch [deleted file]
recipes-qt/qt/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch [deleted file]
recipes-qt/qt/qtwayland/0021-Implement-initial-IVI-Shell-support.patch [deleted file]
recipes-qt/qt/qtwayland_agldemo.inc

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 (file)
index 2d578e3..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-From 0c8212273ac0fcd8cd954bd43075901a80ab3476 Mon Sep 17 00:00:00 2001
-From: Marius Vlad <marius.vlad@collabora.com>
-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 <marius.vlad@collabora.com>
----
- 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<QWaylandInputContext *>(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 (file)
index c91e117..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-From 8caaf802a8b42e9bb1d74fc335a571882c75d73e Mon Sep 17 00:00:00 2001
-From: Holger Behrens <holger.behrens@windriver.com>
-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 <holger.behrens@windriver.com>
----
- 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 @@
-             <arg name="visibility" type="int"/>
-         </event>
--        <enum name="warning_code">
--            <description summary="possible warning codes returned by ivi compositor">
--                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.
--            </description>
--            <entry name="invalid_wl_surface" value="1" summary="wl_surface is invalid"/>
--            <entry name="ivi_id_in_use" value="2" summary="ivi_id is in use and can not be shared"/>
--        </enum>
--
--        <event name="warning">
--            <description summary="server-side warning detected">
--                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].
--            </description>
--            <arg name="warning_code" type="int"/>
--            <arg name="warning_text" type="string" allow-null="true"/>
-+        <event name="configure">
-+            <arg name="width" type="int"/>
-+            <arg name="height" type="int"/>
-         </event>
-     </interface>
--- 
-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 (file)
index 0000000..77362da
--- /dev/null
@@ -0,0 +1,33 @@
+From 81213fb5e1bdd19f4f8135bcddcc1efaeb1b42a5 Mon Sep 17 00:00:00 2001
+From: Marius Vlad <marius.vlad@collabora.com>
+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 <marius.vlad@collabora.com>
+---
+ 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<QWaylandInputContext *>(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 (file)
index 591ef71..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-From 31c60aedf415fd06b5c1aa16fdcef1504b67b96d Mon Sep 17 00:00:00 2001
-From: Holger Behrens <holger.behrens@windriver.com>
-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 <holger.behrens@windriver.com>
----
- 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 (file)
index 413459f..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-From b4f032b13338ad6c21024177b031c75063ef7493 Mon Sep 17 00:00:00 2001
-From: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
-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 <manuel.bachmann@open.eurogiciel.org>
----
- 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 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<protocol name="ivi_application">
-+
-+    <copyright>
-+    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.
-+    </copyright>
-+
-+    <interface name="ivi_surface" version="1">
-+        <description summary="application interface to surface in ivi compositor"/>
-+
-+        <request name="destroy" type="destructor">
-+            <description summary="destroy ivi_surface">
-+                This removes link from ivi_id to wl_surface and destroys ivi_surface.
-+            </description>
-+        </request>
-+
-+        <event name="visibility">
-+            <description summary="visibility of surface in ivi compositor has changed">
-+                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.
-+            </description>
-+            <arg name="visibility" type="int"/>
-+        </event>
-+
-+        <enum name="warning_code">
-+            <description summary="possible warning codes returned by ivi compositor">
-+                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.
-+            </description>
-+            <entry name="invalid_wl_surface" value="1" summary="wl_surface is invalid"/>
-+            <entry name="ivi_id_in_use" value="2" summary="ivi_id is in use and can not be shared"/>
-+        </enum>
-+
-+        <event name="warning">
-+            <description summary="server-side warning detected">
-+                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].
-+            </description>
-+            <arg name="warning_code" type="int"/>
-+            <arg name="warning_text" type="string" allow-null="true"/>
-+        </event>
-+
-+    </interface>
-+
-+    <interface name="ivi_application" version="1">
-+        <description summary="create ivi-style surfaces">
-+          This interface is implemented by servers that provide desktop-style user interfaces.
-+          It allows clients to associate a ivi_surface with a basic surface.
-+      </description>
-+
-+        <request name="surface_create">
-+            <description summary="create ivi_surface with numeric ID in ivi compositor">
-+                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.
-+            </description>
-+            <arg name="ivi_id" type="uint"/>
-+            <arg name="surface" type="object" interface="wl_surface"/>
-+            <arg name="id" type="new_id" interface="ivi_surface"/>
-+        </request>
-+
-+    </interface>
-+
-+</protocol>
--- 
-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 (file)
index 8723def..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-From 1ddfa43692cabae0f552351cfbc09377e479471e Mon Sep 17 00:00:00 2001
-From: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
-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 <manuel.bachmann@open.eurogiciel.org>
----
- 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 <QtWaylandClient/private/qwayland-text.h>
- #include <QtWaylandClient/private/qwayland-xdg-shell.h>
-+#include <QtWaylandClient/private/qwayland-ivi-application.h>
- #include <QtCore/QAbstractEventDispatcher>
- #include <QtGui/private/qguiapplication_p.h>
-@@ -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<struct wl_shm *>(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 <QtWaylandClient/private/qwayland-wayland.h>
- #include <QtWaylandClient/private/qwaylandclientexport_p.h>
- #include <QtWaylandClient/private/qwayland-xdg-shell.h>
-+#include <QtWaylandClient/private/qwayland-ivi-application.h>
- 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<QWaylandInputDevice *> inputDevices() const { return mInputDevices; }
-     QWaylandInputDevice *defaultInputDevice() const;
-@@ -173,6 +177,7 @@ private:
-     QWaylandEventThread *mEventThreadObject;
-     QScopedPointer<QtWayland::wl_shell> mShell;
-     QScopedPointer<QWaylandXdgShell> mShellXdg;
-+    QScopedPointer<QWaylandIviShell> mShellIvi;
-     QList<QPlatformScreen *> mScreens;
-     QList<QWaylandInputDevice *> mInputDevices;
-     QList<Listener> 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: <manuel.bachmann@open.eurogiciel.org>
-+** 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 <QtCore/QDebug>
-+
-+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: <manuel.bachmann@open.eurogiciel.org>
-+** 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 <QtCore/QSize>
-+
-+#include <wayland-client.h>
-+
-+#include <QtWaylandClient/private/qwayland-ivi-application.h>
-+#include <QtWaylandClient/private/qwaylandclientexport_p.h>
-+#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 <QtCore/QDebug>
-+
-+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 <QtCore/QSize>
-+
-+#include <wayland-client.h>
-+
-+#include <QtWaylandClient/private/qwayland-ivi-application.h>
-+#include <QtWaylandClient/private/qwaylandclientexport_p.h>
-+#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 <unistd.h>
-+
- #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 <QtCore/QFileInfo>
- #include <QtGui/QWindow>
-@@ -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
-
index 111e2ac..dc5ee3d 100644 (file)
@@ -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 \
     "