From 5f837fbf0b59536f5ea765da8f347ea67e77a86d Mon Sep 17 00:00:00 2001 From: David Volovskiy Date: Sat, 3 May 2025 15:19:32 -0400 Subject: [PATCH] Locally scoped buf --- apps/daisy/app.js | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/apps/daisy/app.js b/apps/daisy/app.js index 8bbc450a7..d5c8beb5b 100644 --- a/apps/daisy/app.js +++ b/apps/daisy/app.js @@ -296,14 +296,14 @@ function drawGaugeImage(date) { ring_fill = (hh * 60) + mm; ring_max = 1440; break; - case 'Steps': + case 'Steps': ring_fill = getSteps(); ring_max = settings.step_target; break; - case 'Battery': + case 'Battery': ring_fill = E.getBattery(); break; - case 'Sun': + case 'Sun': var dayMin = getMinutesFromDate(date); if (dayMin >= sunEnd && dayMin <= night) ring_fill = 100; else { @@ -311,7 +311,7 @@ function drawGaugeImage(date) { if (ring_fill > 100) { // If we're now past a sunrise of sunset updateSunRiseSunSet(date, location.lat, location.lon, true); ring_fill = 100 * (date - sunStart) / sunFull; - } + } } invertRing = !isDaytime; break; @@ -422,34 +422,38 @@ function polyArray(start, end, max) { var array = [g.getHeight()/2, g.getHeight()/2]; var pt = addPoint(start, max); array.push(pt[0], pt[1]); - + for (let i = start+1; i < end; i++) { if (((i - start)) % 13 < 1) { // Add a point every 8th of the circle pt = addPoint(i, max); array.push(pt[0], pt[1]); } - } + } pt = addPoint(end, max); array.push(pt[0], pt[1]); log_debug("Poly Arr: " + array); return array; } -buf = Graphics.createArrayBuffer(w, h, 2, { msb: true }); function drawRing(start, end, max) { const edge = 4; const thickness = 6; + // Create persistent `buf` inside the function scope + if (!drawRing._buf) { + drawRing._buf = Graphics.createArrayBuffer(w, h, 2, { msb: true }); + } + const buf = drawRing._buf; let img = { width: w, height: h, transparent: 0, bpp: 2, palette: pal1, buffer: buf.buffer }; buf.clear(); buf.setColor(1).fillEllipse(edge,edge,w-edge,h-edge); - buf.setColor(0).fillEllipse(edge+thickness,edge+thickness,w-edge-thickness,h-edge-thickness); + buf.setColor(0).fillEllipse(edge+thickness,edge+thickness,w-edge-thickness,h-edge-thickness); img.palette = pal2; g.drawImage(img, 0, 0); // Draws an unfilled circle buf.clear(); - + buf.setColor(1).fillEllipse(edge,edge,w-edge,h-edge); - buf.setColor(0).fillEllipse(edge+thickness,edge+thickness,w-edge-thickness,h-edge-thickness); + buf.setColor(0).fillEllipse(edge+thickness,edge+thickness,w-edge-thickness,h-edge-thickness); buf.setColor(0).fillPoly(polyArray(start, end, max)); img.palette = pal1; g.drawImage(img, 0, 0); // Draws the filled-in segment @@ -597,7 +601,6 @@ var drawTimeout; function queueDraw() { let now = Date.now(); let delay = settings.ring == 'Seconds' ? sec_update - (now % sec_update) : 60000 - (now % 60000); - print(delay); if (drawTimeout) clearTimeout(drawTimeout); drawTimeout = setTimeout(function() { drawTimeout = undefined;