forked from qt-creator/qt-creator
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 <kai.koehne@digia.com>
This commit is contained in:
@@ -41,6 +41,7 @@ Canvas {
|
|||||||
property bool dataReady: false
|
property bool dataReady: false
|
||||||
property double startTime : 0
|
property double startTime : 0
|
||||||
property double endTime : 0
|
property double endTime : 0
|
||||||
|
property bool recursionGuard: false
|
||||||
|
|
||||||
// ***** functions
|
// ***** functions
|
||||||
function clear()
|
function clear()
|
||||||
@@ -50,6 +51,8 @@ Canvas {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function updateRange() {
|
function updateRange() {
|
||||||
|
if (recursionGuard)
|
||||||
|
return;
|
||||||
var newStartTime = Math.round(rangeMover.getLeft() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
|
var newStartTime = Math.round(rangeMover.getLeft() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
|
||||||
var newEndTime = Math.round(rangeMover.getRight() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
|
var newEndTime = Math.round(rangeMover.getRight() * qmlProfilerModelProxy.traceDuration() / width) + qmlProfilerModelProxy.traceStartTime();
|
||||||
if ((startTime !== newStartTime || endTime !== newEndTime) && newEndTime - newStartTime > 500) {
|
if ((startTime !== newStartTime || endTime !== newEndTime) && newEndTime - newStartTime > 500) {
|
||||||
@@ -66,6 +69,7 @@ Canvas {
|
|||||||
target: zoomControl
|
target: zoomControl
|
||||||
onRangeChanged: {
|
onRangeChanged: {
|
||||||
if (qmlProfilerModelProxy) {
|
if (qmlProfilerModelProxy) {
|
||||||
|
recursionGuard = true;
|
||||||
startTime = clamp(zoomControl.startTime(), qmlProfilerModelProxy.traceStartTime(), qmlProfilerModelProxy.traceEndTime());
|
startTime = clamp(zoomControl.startTime(), qmlProfilerModelProxy.traceStartTime(), qmlProfilerModelProxy.traceEndTime());
|
||||||
endTime = clamp(zoomControl.endTime(), startTime, qmlProfilerModelProxy.traceEndTime());
|
endTime = clamp(zoomControl.endTime(), startTime, qmlProfilerModelProxy.traceEndTime());
|
||||||
var newRangeX = (startTime - qmlProfilerModelProxy.traceStartTime()) * width / qmlProfilerModelProxy.traceDuration();
|
var newRangeX = (startTime - qmlProfilerModelProxy.traceStartTime()) * width / qmlProfilerModelProxy.traceDuration();
|
||||||
@@ -77,6 +81,7 @@ Canvas {
|
|||||||
|
|
||||||
if (leftChanged || widthChanged)
|
if (leftChanged || widthChanged)
|
||||||
rangeMover.setRight(newRangeX + newWidth);
|
rangeMover.setRight(newRangeX + newWidth);
|
||||||
|
recursionGuard = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user