From fea2666ed4fbdb8bd4150ee67f263b382bca99b6 Mon Sep 17 00:00:00 2001
From: Felix Gerking <felix.gerking@garz-fricke.com>
Date: Wed, 18 May 2022 16:24:15 +0200
Subject: [PATCH] Add qt-multi-screen-compositor recipe as alternative to
 weston

The qt-multi-screen-compositor is based on examples from QT
to implement a compositor based on QtWaylandCOmpositor.
The implementation is done mostly in qml.

(cherry picked from commit 98725129ad3f0600b910a938ca9d80544ac1eae8)
---
 .../files/qt-multi-screen-compositor@.service | 24 +++++++++
 .../qt-multi-screen-compositor.bb             | 50 +++++++++++++++++++
 2 files changed, 74 insertions(+)
 create mode 100644 recipes-qt/qt-multi-screen-compositor/files/qt-multi-screen-compositor@.service
 create mode 100644 recipes-qt/qt-multi-screen-compositor/qt-multi-screen-compositor.bb

diff --git a/recipes-qt/qt-multi-screen-compositor/files/qt-multi-screen-compositor@.service b/recipes-qt/qt-multi-screen-compositor/files/qt-multi-screen-compositor@.service
new file mode 100644
index 00000000..2650598c
--- /dev/null
+++ b/recipes-qt/qt-multi-screen-compositor/files/qt-multi-screen-compositor@.service
@@ -0,0 +1,24 @@
+[Unit]
+Description=Qt multi-screen Compositor
+RequiresMountsFor=/run
+Conflicts=plymouth-quit.service
+After=systemd-user-sessions.service plymouth-quit-wait.service systemd-logind.service
+
+[Service]
+User=%i
+PAMName=login
+Environment=XDG_RUNTIME_DIR=/var/run/user/0
+Environment=QT_QPA_FONTDIR=/usr/share/fonts/truetype
+Environment=QT_QPA_PLATFORM=wayland
+Environment=QT_QPA_EGLFS_KMS_CONFIG=/etc/kms.conf
+Environment=QT_QPA_EGLFS_INTEGRATION=eglfs_kms
+Environment=QT_QPA_EGLFS_KMS_ATOMIC=1
+Environment=QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=rotate=180
+StandardError=journal
+PermissionsStartOnly=true
+IgnoreSIGPIPE=no
+
+#Type=notify
+#NotifyAccess=all
+Type=simple
+ExecStart=/usr/bin/multi-screen -platform eglfs
diff --git a/recipes-qt/qt-multi-screen-compositor/qt-multi-screen-compositor.bb b/recipes-qt/qt-multi-screen-compositor/qt-multi-screen-compositor.bb
new file mode 100644
index 00000000..cac6e3ee
--- /dev/null
+++ b/recipes-qt/qt-multi-screen-compositor/qt-multi-screen-compositor.bb
@@ -0,0 +1,50 @@
+SUMMARY = "Modified Qt multi-screen compositor example"
+HOMEPAGE = "https://git.seco.com/seco-ne/tools/qt-multi-screen-compositor"
+
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
+
+DEPENDS = "qtbase qtquickcontrols"
+RDEPENDS_${PN} += "qtwayland"
+
+SRCREV = "${AUTOREV}"
+SRC_URI = "git://git@git.seco.com:4444/seco-ne/tools/qt-multi-screen-compositor.git;protocol=ssh;branch=master;nobranch=1 \
+    file://qt-multi-screen-compositor@.service \
+    "
+
+# Create a <tag>-<number of commits since tag>-<hash> Version string
+inherit gitpkgv
+PKGV = "${GITPKGVTAG}"
+
+S = "${WORKDIR}/git"
+
+inherit autotools
+inherit systemd
+
+require recipes-qt/qt5/qt5.inc
+
+FILESEXTRAPATHS_prepend := "${THISDIR}:"
+
+# ${PN}-tools added by qt5.inc, but we do not need it
+PACKAGES_remove = "${PN}-tools"
+
+QMAKE_PROFILES = "${S}/multi-screen.pro"
+
+do_install () {
+    #Application
+    install -d ${D}${bindir}
+    install -m 0755 multi-screen ${D}${bindir}
+
+    if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        #Systemd unit
+        install -d ${D}${systemd_system_unitdir}/
+        install -D -p -m 0644 ${WORKDIR}/qt-multi-screen-compositor@.service ${D}${systemd_system_unitdir}/qt-multi-screen-compositor@.service
+    fi
+}
+
+FILES_${PN} += " \
+    ${systemd_system_unitdir}/qt-multi-screen-compositor@.service \
+    "
+
+SYSTEMD_SERVICE_${PN} = "qt-multi-screen-compositor@%i.service"
+
-- 
GitLab