diff options
Diffstat (limited to 'examples/multimedia/video/qmlvideo/performancemonitor/PerformanceItem.qml')
-rw-r--r-- | examples/multimedia/video/qmlvideo/performancemonitor/PerformanceItem.qml | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/examples/multimedia/video/qmlvideo/performancemonitor/PerformanceItem.qml b/examples/multimedia/video/qmlvideo/performancemonitor/PerformanceItem.qml new file mode 100644 index 000000000..5b501b104 --- /dev/null +++ b/examples/multimedia/video/qmlvideo/performancemonitor/PerformanceItem.qml @@ -0,0 +1,100 @@ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick + +Rectangle { + id: root + property bool logging: true + property bool displayed: true + property bool videoActive + property int margins: 5 + property bool enabled: true + + color: "transparent" + + // This should ensure that the monitor is on top of all other content + z: 999 + + Column { + id: column + anchors { + fill: root + margins: 10 + } + spacing: 10 + } + + QtObject { + id: d + property Item qmlFrameRateItem: null + property Item videoFrameRateItem: null + } + + Connections { + id: videoFrameRateActiveConnections + ignoreUnknownSignals: true + function onActiveChanged() { root.videoActive = videoFrameRateActiveConnections.target.active } + } + + states: [ + State { + name: "hidden" + PropertyChanges { + root.opacity: 0 + } + } + ] + + transitions: [ + Transition { + from: "*" + to: "*" + NumberAnimation { + properties: "opacity" + easing.type: Easing.OutQuart + duration: 500 + } + } + ] + + state: enabled ? "baseState" : "hidden" + + function createQmlFrameRateItem() { + let component = Qt.createComponent("frequencymonitor", "FrequencyItem") + if (component.status === Component.Ready) + d.qmlFrameRateItem = component.createObject(column, { label: qsTr("QML frame rate"), + displayed: root.displayed, + logging: root.logging + }); + } + + function createVideoFrameRateItem() { + let component = Qt.createComponent("frequencymonitor", "FrequencyItem") + if (component.status === Component.Ready) + d.videoFrameRateItem = component.createObject(column, { label: qsTr("Video frame rate"), + displayed: root.displayed, + logging: root.logging + }); + videoFrameRateActiveConnections.target = d.videoFrameRateItem + } + + + function init() { + createQmlFrameRateItem() + createVideoFrameRateItem() + } + + function videoFramePainted() { + d.videoFrameRateItem?.notify() + } + + function qmlFramePainted() { + d.qmlFrameRateItem?.notify() + } + + onVideoActiveChanged: { + if (d.videoFrameRateItem) + d.videoFrameRateItem.active = root.videoActive + } +} |