summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2023-02-03 10:20:31 +0100
committerEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2023-02-14 12:03:41 +0100
commit4a4b8d5ebc81b1d6711d0cdb720eba6e6954baba (patch)
tree5b8d1436fc1935bbadf4dfe4997eda4d68181fd1 /tests
parentd3f6fab55bf111c8f903adf4891cb32e3181a6c0 (diff)
downloadqtwayland-4a4b8d5ebc81b1d6711d0cdb720eba6e6954baba.tar.gz
Move hwlayer-compositor example to manual tests
This was never actually listed as part of the examples, and it demonstrates an experimental feature which was never really in use and hasn't been maintained. So lets move the example to manual tests so that it can easily be revived later if we decide it's needed. Change-Id: I5a70701d34d76b4a8d42cf5945341d1f6e37a28b Reviewed-by: Inho Lee <inho.lee@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/manual/CMakeLists.txt1
-rw-r--r--tests/manual/hwlayer-compositor/.gitignore1
-rw-r--r--tests/manual/hwlayer-compositor/CMakeLists.txt48
-rw-r--r--tests/manual/hwlayer-compositor/hwlayer-compositor.pro14
-rw-r--r--tests/manual/hwlayer-compositor/hwlayer-compositor.qrc5
-rw-r--r--tests/manual/hwlayer-compositor/main.cpp17
-rw-r--r--tests/manual/hwlayer-compositor/main.qml117
7 files changed, 203 insertions, 0 deletions
diff --git a/tests/manual/CMakeLists.txt b/tests/manual/CMakeLists.txt
index 4393d4f1..cb9924c0 100644
--- a/tests/manual/CMakeLists.txt
+++ b/tests/manual/CMakeLists.txt
@@ -11,4 +11,5 @@ endif()
if(TARGET Qt::WaylandCompositor)
#add_subdirectory(wip-cpp-compositor)
add_subdirectory(scaling-compositor)
+ add_subdirectory(hwlayer-compositor)
endif()
diff --git a/tests/manual/hwlayer-compositor/.gitignore b/tests/manual/hwlayer-compositor/.gitignore
new file mode 100644
index 00000000..83a421ca
--- /dev/null
+++ b/tests/manual/hwlayer-compositor/.gitignore
@@ -0,0 +1 @@
+hwlayer-compositor
diff --git a/tests/manual/hwlayer-compositor/CMakeLists.txt b/tests/manual/hwlayer-compositor/CMakeLists.txt
new file mode 100644
index 00000000..729bae99
--- /dev/null
+++ b/tests/manual/hwlayer-compositor/CMakeLists.txt
@@ -0,0 +1,48 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+cmake_minimum_required(VERSION 3.16)
+project(hwlayer-compositor LANGUAGES CXX)
+
+set(CMAKE_AUTOMOC ON)
+
+if(NOT DEFINED INSTALL_EXAMPLESDIR)
+ set(INSTALL_EXAMPLESDIR "examples")
+endif()
+
+set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/wayland/hwlayer-compositor")
+
+find_package(Qt6 REQUIRED COMPONENTS Core Gui Qml)
+
+qt_add_executable(hwlayer-compositor
+ main.cpp
+)
+
+set_target_properties(hwlayer-compositor PROPERTIES
+ WIN32_EXECUTABLE TRUE
+ MACOSX_BUNDLE TRUE
+)
+
+target_link_libraries(hwlayer-compositor PUBLIC
+ Qt::Core
+ Qt::Gui
+ Qt::Qml
+)
+
+# Resources:
+set(hwlayer-compositor_resource_files
+ "main.qml"
+)
+
+qt6_add_resources(hwlayer-compositor "hwlayer-compositor"
+ PREFIX
+ "/"
+ FILES
+ ${hwlayer-compositor_resource_files}
+)
+
+install(TARGETS hwlayer-compositor
+ RUNTIME DESTINATION "${INSTALL_EXAMPLEDIR}"
+ BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
+ LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
+)
diff --git a/tests/manual/hwlayer-compositor/hwlayer-compositor.pro b/tests/manual/hwlayer-compositor/hwlayer-compositor.pro
new file mode 100644
index 00000000..a6eed907
--- /dev/null
+++ b/tests/manual/hwlayer-compositor/hwlayer-compositor.pro
@@ -0,0 +1,14 @@
+QT += gui qml
+
+SOURCES += \
+ main.cpp
+
+OTHER_FILES = \
+ main.qml
+
+RESOURCES += hwlayer-compositor.qrc
+
+target.path = $$[QT_INSTALL_EXAMPLES]/wayland/hwlayer-compositor
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS hwlayer-compositor.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/wayland/hwlayer-compositor
+INSTALLS += target sources
diff --git a/tests/manual/hwlayer-compositor/hwlayer-compositor.qrc b/tests/manual/hwlayer-compositor/hwlayer-compositor.qrc
new file mode 100644
index 00000000..5f6483ac
--- /dev/null
+++ b/tests/manual/hwlayer-compositor/hwlayer-compositor.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ </qresource>
+</RCC>
diff --git a/tests/manual/hwlayer-compositor/main.cpp b/tests/manual/hwlayer-compositor/main.cpp
new file mode 100644
index 00000000..acecb922
--- /dev/null
+++ b/tests/manual/hwlayer-compositor/main.cpp
@@ -0,0 +1,17 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+#include <QtCore/QUrl>
+#include <QtCore/QDebug>
+
+#include <QtGui/QGuiApplication>
+#include <QQmlContext>
+
+#include <QtQml/QQmlApplicationEngine>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+ QQmlApplicationEngine appEngine(QUrl("qrc:///main.qml"));
+ return app.exec();
+}
diff --git a/tests/manual/hwlayer-compositor/main.qml b/tests/manual/hwlayer-compositor/main.qml
new file mode 100644
index 00000000..569f4634
--- /dev/null
+++ b/tests/manual/hwlayer-compositor/main.qml
@@ -0,0 +1,117 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+import QtQuick
+import QtQuick.Window
+import QtQuick.Controls
+import QtWayland.Compositor
+import QtWayland.Compositor.XdgShell
+import QtWayland.Compositor.WlShell
+import QtWayland.Compositor.IviApplication
+
+WaylandCompositor {
+ WaylandOutput {
+ sizeFollowsWindow: true
+ window: Window {
+ color: "tomato"
+ id: win
+ width: 1024
+ height: 768
+ visible: true
+ Rectangle {
+ color: "lightgreen"
+ anchors.centerIn: parent
+ width: parent.width / 3
+ height: parent.width / 3
+ NumberAnimation on rotation {
+ id: rotationAnimation
+ running: false
+ from: 0
+ to: 90
+ loops: Animation.Infinite
+ duration: 1000
+ }
+ }
+ Repeater {
+ model: shellSurfaces
+ ShellSurfaceItem {
+ id: waylandItem
+ onSurfaceDestroyed: shellSurfaces.remove(index)
+ shellSurface: shSurface
+ WaylandHardwareLayer {
+ stackingLevel: level
+ Component.onCompleted: console.log("Added hardware layer with stacking level", stackingLevel);
+ }
+ Component.onCompleted: console.log("Added wayland quick item");
+ Behavior on x {
+ PropertyAnimation {
+ easing.type: Easing.OutBounce
+ duration: 1000
+ }
+ }
+ Timer {
+ interval: 2000; running: animatePosition; repeat: true
+ onTriggered: waylandItem.x = waylandItem.x === 0 ? win.width - waylandItem.width : 0
+ }
+ Behavior on opacity {
+ PropertyAnimation {
+ duration: 1000
+ }
+ }
+ Timer {
+ interval: 2000; running: animateOpacity; repeat: true
+ onTriggered: waylandItem.opacity = waylandItem.opacity === 1 ? 0 : 1
+ }
+ }
+ }
+ Column {
+ anchors.bottom: parent.bottom
+ Repeater {
+ model: shellSurfaces
+ Row {
+ Label {
+ anchors.verticalCenter: parent.verticalCenter
+ leftPadding: 15
+ rightPadding: 15
+ text: "Surface " + index
+ }
+ CheckBox {
+ text: "Animate position"
+ checked: animatePosition
+ onClicked: animatePosition = !animatePosition
+ }
+ CheckBox {
+ text: "Animate Opacity"
+ checked: animateOpacity
+ onClicked: animateOpacity = !animateOpacity
+ }
+ Label {
+ text: "Stacking level"
+ }
+ SpinBox {
+ value: level
+ onValueModified: level = value;
+ }
+ Button {
+ text: "Kill"
+ onClicked: shSurface.surface.client.kill()
+ }
+ }
+ }
+ CheckBox {
+ text: "Rotation"
+ checked: rotationAnimation.running
+ onClicked: rotationAnimation.running = !rotationAnimation.running
+ padding: 30
+ }
+ }
+ }
+ }
+ ListModel { id: shellSurfaces }
+ function addShellSurface(shellSurface) {
+ shellSurfaces.append({shSurface: shellSurface, animatePosition: false, animateOpacity: false, level: 0});
+ }
+ XdgShell { onToplevelCreated: (toplevel, xdgSurface) => addShellSurface(xdgSurface) }
+ IviApplication { onIviSurfaceCreated: (iviSurface) => addShellSurface(iviSurface) }
+ WlShell { onWlShellSurfaceCreated: (shellSurface) => addShellSurface(shellSurface) }
+}