diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2023-02-03 10:20:31 +0100 |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2023-02-14 12:03:41 +0100 |
commit | 4a4b8d5ebc81b1d6711d0cdb720eba6e6954baba (patch) | |
tree | 5b8d1436fc1935bbadf4dfe4997eda4d68181fd1 /tests | |
parent | d3f6fab55bf111c8f903adf4891cb32e3181a6c0 (diff) | |
download | qtwayland-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.txt | 1 | ||||
-rw-r--r-- | tests/manual/hwlayer-compositor/.gitignore | 1 | ||||
-rw-r--r-- | tests/manual/hwlayer-compositor/CMakeLists.txt | 48 | ||||
-rw-r--r-- | tests/manual/hwlayer-compositor/hwlayer-compositor.pro | 14 | ||||
-rw-r--r-- | tests/manual/hwlayer-compositor/hwlayer-compositor.qrc | 5 | ||||
-rw-r--r-- | tests/manual/hwlayer-compositor/main.cpp | 17 | ||||
-rw-r--r-- | tests/manual/hwlayer-compositor/main.qml | 117 |
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) } +} |