From 18ca8139eabc6a713ac10e3685c2434590748121 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 28 Mar 2014 16:14:21 +0100 Subject: [PATCH] QmlProfiler: Guard the overview against recursively changing the range This is insignificant at lower zoom levels but becomes really annoying when closer to the 500ns limit. Task-number: QTCREATORBUG-11879 Change-Id: Ide0069f7c6b135aa31262a4396559fa3ba89f8e3 Reviewed-by: Kai Koehne --- src/plugins/qmlprofiler/qml/Overview.qml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/qmlprofiler/qml/Overview.qml b/src/plugins/qmlprofiler/qml/Overview.qml index 76100ee2a8c..289ecdb2060 100644 --- a/src/plugins/qmlprofiler/qml/Overview.qml +++ b/src/plugins/qmlprofiler/qml/Overview.qml @@ -41,6 +41,7 @@ Canvas { property bool dataReady: false property double startTime : 0 property double endTime : 0 + property bool recursionGuard: false // ***** functions function clear() @@ -50,6 +51,8 @@ Canvas { } function updateRange() { + if (recursionGuard) + return; var newStartTime = Math.round(rangeMover.getLeft() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime(); var newEndTime = Math.round(rangeMover.getRight() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime(); if ((startTime !== newStartTime || endTime !== newEndTime) && newEndTime - newStartTime > 500) { @@ -66,6 +69,7 @@ Canvas { target: zoomControl onRangeChanged: { if (qmlProfilerModelProxy) { + recursionGuard = true; startTime = clamp(zoomControl.startTime(), qmlProfilerModelProxy.traceStartTime(), qmlProfilerModelProxy.traceEndTime()); endTime = clamp(zoomControl.endTime(), startTime, qmlProfilerModelProxy.traceEndTime()); var newRangeX = (startTime - qmlProfilerModelProxy.traceStartTime()) * width / qmlProfilerModelProxy.traceDuration(); @@ -77,6 +81,7 @@ Canvas { if (leftChanged || widthChanged) rangeMover.setRight(newRangeX + newWidth); + recursionGuard = false; } } }