From c62a3a24a5ccfaeef9be98d2de79130291d276d1 Mon Sep 17 00:00:00 2001 From: Louis-Joseph Fournier Date: Fri, 1 Jan 2016 10:03:04 +0100 Subject: [PATCH] CircleMeter: redraw regions more optimized - 2 --- qml/CircleMeter.qml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/qml/CircleMeter.qml b/qml/CircleMeter.qml index 5886fd2..2589b20 100644 --- a/qml/CircleMeter.qml +++ b/qml/CircleMeter.qml @@ -81,6 +81,7 @@ Item { if (level <= l2) return [i, l1, l2] l1 = l2 } + return [0,0,0] } /// Ellipse @@ -146,7 +147,7 @@ Item { Canvas { /// region colors id: regions - property int i_drawed: -1 + property variant reg_drawed anchors.fill: parent property variant reg: find_region() z: -4 @@ -155,7 +156,6 @@ Item { ctx.clearRect(0,0,width,height) //var reg = find_region() - i_drawed = reg[0] var a1 = angle(reg[1]) var a2 = angle(reg[2]) ctx.fillStyle = region_color[reg[0]] @@ -165,11 +165,15 @@ Item { arc_part(ctx, r_circle_max, a2, a1) ctx.lineTo(getx(a1, r_circle_min), gety(a1, r_circle_min)) ctx.fill() + reg_drawed = reg + console.log("redraw") } function update_level() { - reg = find_region() - if (reg[0] != i_drawed) requestPaint() + if (!reg_drawed || level > reg_drawed[2] || level < reg_drawed[1]) { + reg = find_region() + requestPaint() + } } }