From 9477753cab059f659c2848b42134c92bea860f53 Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Sun, 23 Jul 2023 10:41:30 +0200 Subject: [PATCH 1/5] messagesoverlay - Remove unused function --- apps/messagesoverlay/lib.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/apps/messagesoverlay/lib.js b/apps/messagesoverlay/lib.js index 9af14bbe4..d25031c69 100644 --- a/apps/messagesoverlay/lib.js +++ b/apps/messagesoverlay/lib.js @@ -232,13 +232,6 @@ let next = function(ovr) { showMessage(ovr, eventQueue[0]); }; -let showMapMessage = function(ovr, msg) { - ovr.clearRect(2,2,ovr.getWidth()-3,ovr.getHeight()-3); - drawMessage(ovr, { - body: "Not implemented!" - }); -}; - let callBuzzTimer = null; let stopCallBuzz = function() { if (callBuzzTimer) { From 8ce2245538dce7c8ac754642129142f0afe5e070 Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Sun, 23 Jul 2023 10:42:21 +0200 Subject: [PATCH 2/5] messagesoverlay - Better low memory handling --- apps/messagesoverlay/lib.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/messagesoverlay/lib.js b/apps/messagesoverlay/lib.js index d25031c69..a90f7b0c1 100644 --- a/apps/messagesoverlay/lib.js +++ b/apps/messagesoverlay/lib.js @@ -1,3 +1,5 @@ +const MIN_FREE_MEM = 1000; +const LOW_MEM = 2000; const ovrx = 10; const ovry = 10; const ovrw = g.getWidth()-2*ovrx; @@ -432,9 +434,14 @@ exports.message = function(type, event) { if(event.handled) return; bpp = 4; - if (process.memory().free < 2000) bpp = 1; + if (process.memory().free < LOW_MEM) bpp = 1; - if (!ovr) { + while (process.memory().free < MIN_FREE_MEM && eventQueue.length > 0){ + let dropped = eventQueue.pop(); + print("Dropped message because of memory constraints", dropped); + } + + if (!ovr || bpp==1) { ovr = Graphics.createArrayBuffer(ovrw, ovrh, bpp, { msb: true }); From c6433e828f627ccff447789fdf36b8ff2a671b16 Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Sun, 23 Jul 2023 11:00:33 +0200 Subject: [PATCH 3/5] messageoverlay - Fix the first overlay buffer beeing kept and reused on unlock --- apps/messagesoverlay/lib.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/messagesoverlay/lib.js b/apps/messagesoverlay/lib.js index a90f7b0c1..203063104 100644 --- a/apps/messagesoverlay/lib.js +++ b/apps/messagesoverlay/lib.js @@ -30,6 +30,7 @@ let callInProgress = false; let show = function(ovr){ let img = ovr; + LOG("show", img.getBPP()); if (ovr.getBPP() == 1) { img = ovr.asImage(); img.palette = new Uint16Array([_g.theme.fg,_g.theme.bg]); @@ -164,8 +165,9 @@ let showMessage = function(ovr, msg) { drawMessage(ovr, msg); }; -let drawBorder = function(ovr) { +let drawBorder = function(img) { LOG("drawBorder", isQuiet()); + if (img) ovr=img; if (Bangle.isLocked()) ovr.setColor(ovr.theme.fgH); else @@ -402,7 +404,7 @@ let main = function(ovr, event) { if (!lockListener) { lockListener = function (){ - drawBorder(ovr); + drawBorder(); }; Bangle.on('lock', lockListener); } From 913c97c0b93e04577fb39224d82b3a8684f5dc9a Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Sun, 23 Jul 2023 11:02:48 +0200 Subject: [PATCH 4/5] messagesoverlay - Bump version --- apps/messagesoverlay/ChangeLog | 2 ++ apps/messagesoverlay/metadata.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/messagesoverlay/ChangeLog b/apps/messagesoverlay/ChangeLog index 8ce792783..47aa51107 100644 --- a/apps/messagesoverlay/ChangeLog +++ b/apps/messagesoverlay/ChangeLog @@ -3,3 +3,5 @@ 0.03: Scroll six lines per swipe, leaving the previous top/bottom row visible. 0.04: Use the event mechanism for getting messages 0.05: Fix the overlay keeping the LCD on +0.06: Better low memory handling + Fix first message beeing displayed again on unlock diff --git a/apps/messagesoverlay/metadata.json b/apps/messagesoverlay/metadata.json index a043fff64..c16a41f5c 100644 --- a/apps/messagesoverlay/metadata.json +++ b/apps/messagesoverlay/metadata.json @@ -1,7 +1,7 @@ { "id": "messagesoverlay", "name": "Messages Overlay", - "version": "0.05", + "version": "0.06", "description": "An overlay based implementation of a messages UI (display notifications from iOS and Gadgetbridge/Android)", "icon": "app.png", "type": "bootloader", From efaeae09036ce25f6483473ec26001fd7a523a3d Mon Sep 17 00:00:00 2001 From: Martin Boonk Date: Sun, 23 Jul 2023 11:23:01 +0200 Subject: [PATCH 5/5] messagesoverlay - Explicitly check if buffer needs recreation --- apps/messagesoverlay/lib.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/messagesoverlay/lib.js b/apps/messagesoverlay/lib.js index 203063104..6767cfbce 100644 --- a/apps/messagesoverlay/lib.js +++ b/apps/messagesoverlay/lib.js @@ -436,14 +436,15 @@ exports.message = function(type, event) { if(event.handled) return; bpp = 4; - if (process.memory().free < LOW_MEM) bpp = 1; + if (process.memory().free < LOW_MEM) + bpp = 1; while (process.memory().free < MIN_FREE_MEM && eventQueue.length > 0){ let dropped = eventQueue.pop(); print("Dropped message because of memory constraints", dropped); } - if (!ovr || bpp==1) { + if (!ovr || ovr.getBPP() != bpp) { ovr = Graphics.createArrayBuffer(ovrw, ovrh, bpp, { msb: true });