From aba765972952355d68e8ced367d4b47f2640a0a3 Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Tue, 30 Apr 2024 23:09:38 +0200 Subject: [PATCH 1/2] widget_utils - Remove the overlay on cleanup --- modules/widget_utils.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/modules/widget_utils.js b/modules/widget_utils.js index 9d20e6803..3e5c7af93 100644 --- a/modules/widget_utils.js +++ b/modules/widget_utils.js @@ -1,4 +1,3 @@ -/// hide any visible widgets exports.hide = function() { exports.cleanup(); if (!global.WIDGETS) return; @@ -31,6 +30,14 @@ exports.show = function() { exports.cleanup = function() { delete exports.autohide; delete Bangle.appRect; + if (exports.origSetLCDOverlay){ + Bangle.setLCDOverlay = exports.origSetLCDOverlay; + Bangle.setLCDOverlay(); + } + if (exports.cleanUpOverlay){ + delete exports.cleanUpOverlay; + } + delete exports.origSetLCDOverlay; if (exports.swipeHandler) { Bangle.removeListener("swipe", exports.swipeHandler); delete exports.swipeHandler; @@ -67,6 +74,14 @@ exports.swipeOn = function(autohide) { /* TODO: maybe when widgets are offscreen we don't even store them in an offscreen buffer? */ + if (!exports.origSetLCDOverlay) { + exports.origSetLCDOverlay = Bangle.setLCDOverlay; + Bangle.setLCDOverlay = function(){ + require("widget_utils").origSetLCDOverlay.apply(Bangle, arguments); + require("widget_utils").cleanUpOverlay = false; + }; + } + // force app rect to be fullscreen Bangle.appRect = { x: 0, y: 0, w: g.getWidth(), h: g.getHeight(), x2: g.getWidth()-1, y2: g.getHeight()-1 }; // setup offscreen graphics for widgets @@ -83,8 +98,12 @@ exports.swipeOn = function(autohide) { function queueDraw() { Bangle.appRect.y = offset+24; Bangle.appRect.h = 1 + Bangle.appRect.y2 - Bangle.appRect.y; - if (offset>-24) Bangle.setLCDOverlay(og, 0, offset); - else Bangle.setLCDOverlay(); + if (offset>-24) { + Bangle.setLCDOverlay(og, 0, offset); + exports.cleanUpOverlay = true; + } else { + Bangle.setLCDOverlay(); + } } for (var w of global.WIDGETS) if (!w._draw) { // already hidden @@ -144,4 +163,4 @@ exports.swipeOn = function(autohide) { }; Bangle.on("swipe", exports.swipeHandler); Bangle.drawWidgets(); -}; +}; \ No newline at end of file From 24488edd9d2fe9b46376e06f919decca4a9fdbb7 Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Thu, 2 May 2024 07:45:43 +0200 Subject: [PATCH 2/2] widget_utils - Correctly remove origSetLCDOverlay and cleanUpOverlay properties --- modules/widget_utils.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/widget_utils.js b/modules/widget_utils.js index 3e5c7af93..70fdedb40 100644 --- a/modules/widget_utils.js +++ b/modules/widget_utils.js @@ -32,12 +32,12 @@ exports.cleanup = function() { delete Bangle.appRect; if (exports.origSetLCDOverlay){ Bangle.setLCDOverlay = exports.origSetLCDOverlay; - Bangle.setLCDOverlay(); - } - if (exports.cleanUpOverlay){ - delete exports.cleanUpOverlay; } delete exports.origSetLCDOverlay; + if (exports.cleanUpOverlay){ + Bangle.setLCDOverlay(); + } + delete exports.cleanUpOverlay; if (exports.swipeHandler) { Bangle.removeListener("swipe", exports.swipeHandler); delete exports.swipeHandler;