diff options
author | Gareth Stockwell <ext-gareth.stockwell@nokia.com> | 2012-02-06 15:40:49 +0000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-08 22:30:49 +0100 |
commit | c1ec175b24bde1523fcbd7e33d0f46f3bbc1def9 (patch) | |
tree | a6f5fd12fa4ec15843f896b7108e0d5e36ee4015 /examples/video/snippets | |
parent | b6f54c8833347ddb13b12cfd682cd12de72664d8 (diff) |
Tidy up frame rate display in video examples
* Use a Column element to position QML and video frame rate counters.
* When using small-screen layouts, hide frame rate counters when dialogs
or menus are displayed.
* Do not display instantaneous frame rate. If changes in this rate
trigger a repaint, then the rate itself is changed. If the repaint
occurs in less time than the QElapsedTimer resolution, the displayed
instantaneous rate is always zero.
* Add a label, so it is clear which is the QML repaint rate, and which
is the video frame rate.
Change-Id: Ie58ab162ab44bd7f1c4b297eed929b9baa73552c
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Diffstat (limited to 'examples/video/snippets')
-rw-r--r-- | examples/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml | 12 | ||||
-rw-r--r-- | examples/video/snippets/performancemonitor/qml/performancemonitor/PerformanceItem.qml | 103 |
2 files changed, 74 insertions, 41 deletions
diff --git a/examples/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml b/examples/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml index f12b67788..b4d43443e 100644 --- a/examples/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml +++ b/examples/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml @@ -55,7 +55,7 @@ Rectangle { border.width: 1 border.color: "yellow" - width: 3.5 * root.textSize + width: 5.5 * root.textSize height: 3.0 * root.textSize color: "black" opacity: 0.5 @@ -74,20 +74,22 @@ Rectangle { samplingInterval: root.enabled ? root.samplingInterval : 0 onAverageFrequencyChanged: { if (root.logging) trace() - instantaneousFrequencyText.text = monitor.instantaneousFrequency.toFixed(2) averageFrequencyText.text = monitor.averageFrequency.toFixed(2) } } Text { - id: instantaneousFrequencyText + id: labelText anchors { - right: parent.right + left: parent.left top: parent.top margins: 10 } color: root.textColor - font.pixelSize: root.textSize + font.pixelSize: 0.6 * root.textSize + text: root.label + width: root.width - 2*anchors.margins + elide: Text.ElideRight } Text { diff --git a/examples/video/snippets/performancemonitor/qml/performancemonitor/PerformanceItem.qml b/examples/video/snippets/performancemonitor/qml/performancemonitor/PerformanceItem.qml index dd38aaeca..5bdfa3e8b 100644 --- a/examples/video/snippets/performancemonitor/qml/performancemonitor/PerformanceItem.qml +++ b/examples/video/snippets/performancemonitor/qml/performancemonitor/PerformanceItem.qml @@ -46,65 +46,96 @@ Rectangle { property bool logging: true property bool displayed: true property bool videoActive - property int samplingInterval: 500 - property color textColor: "yellow" - property int textSize: 28 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 - Loader { - id: videoFrameRateItemLoader - function init() { - source = "../frequencymonitor/FrequencyItem.qml" - item.label = "videoFrameRate" - item.parent = root - item.anchors.left = root.left - item.anchors.top = root.top - item.anchors.margins = root.margins - item.logging = root.logging - item.displayed = root.displayed - videoFrameRateActiveConnections.target = item + Column { + id: column + anchors { + fill: root + margins: 10 } + spacing: 10 + } - Connections { - id: videoFrameRateActiveConnections - ignoreUnknownSignals: true - onActiveChanged: root.videoActive = videoFrameRateActiveConnections.target.active - } + QtObject { + id: d + property Item qmlFrameRateItem: null + property Item videoFrameRateItem: null + } + + Connections { + id: videoFrameRateActiveConnections + ignoreUnknownSignals: true + onActiveChanged: root.videoActive = videoFrameRateActiveConnections.target.active } - Loader { - id: qmlFrameRateItemLoader - function init() { - source = "../frequencymonitor/FrequencyItem.qml" - item.label = "qmlFrameRate" - item.parent = root - item.anchors.left = root.left - item.anchors.bottom = root.bottom - item.anchors.margins = root.margins - item.logging = root.logging - item.displayed = root.displayed + states: [ + State { + name: "hidden" + PropertyChanges { + target: root + opacity: 0 + } + } + ] + + transitions: [ + Transition { + from: "*" + to: "*" + NumberAnimation { + properties: "opacity" + easing.type: Easing.OutQuart + duration: 500 + } } + ] + + state: enabled ? "baseState" : "hidden" + + function createQmlFrameRateItem() { + var component = Qt.createComponent("../frequencymonitor/FrequencyItem.qml") + if (component.status == Component.Ready) + d.qmlFrameRateItem = component.createObject(column, { label: "QML frame rate", + displayed: root.displayed, + logging: root.logging + }) } + function createVideoFrameRateItem() { + var component = Qt.createComponent("../frequencymonitor/FrequencyItem.qml") + if (component.status == Component.Ready) + d.videoFrameRateItem = component.createObject(column, { label: "Video frame rate", + displayed: root.displayed, + logging: root.logging + }) + videoFrameRateActiveConnections.target = d.videoFrameRateItem + } + + function init() { - videoFrameRateItemLoader.init() - qmlFrameRateItemLoader.init() + createQmlFrameRateItem() + createVideoFrameRateItem() } function videoFramePainted() { - videoFrameRateItemLoader.item.notify() + if (d.videoFrameRateItem) + d.videoFrameRateItem.notify() } function qmlFramePainted() { - qmlFrameRateItemLoader.item.notify() + if (d.qmlFrameRateItem) + d.qmlFrameRateItem.notify() } onVideoActiveChanged: { - videoFrameRateItemLoader.item.active = root.videoActive + if (d.videoFrameRateItem) + d.videoFrameRateItem.active = root.videoActive } } |