powermanager - Fix widget drawing over other things if widgets hidden

master
Martin Boonk 2023-02-22 22:57:49 +01:00
parent 8b7a63b718
commit b58b0133aa
1 changed files with 19 additions and 8 deletions

View File

@ -70,17 +70,28 @@ currently-running apps */
GU.fillArc(g, w.x + 12, w.y + 12, 5.5, 8, GU.degreesToRadians(135), GU.degreesToRadians(endCpu), GU.degreesToRadians(30)); GU.fillArc(g, w.x + 12, w.y + 12, 5.5, 8, GU.degreesToRadians(135), GU.degreesToRadians(endCpu), GU.degreesToRadians(30));
} }
let sTimeout; let sTimeout;
let s2Timeout;
let systickDiff;
function draw(w) { function draw(w) {
let nextRefresh = Bangle.isLocked() ? ((s.refreshLocked || 60) * 1000 ): ((s.refreshUnlocked || 1) * 1000)
if (s2Timeout) clearTimeout(s2Timeout);
if (sTimeout) clearTimeout(sTimeout); if (sTimeout) clearTimeout(sTimeout);
let systickNow = peek32(0xE000E018);
let t = Date.now(); let t,systickNow;
sTimeout = setTimeout(() => { sTimeout = setTimeout(()=>{
systickNow = peek32(0xE000E018);
t = Date.now();
}, nextRefresh - SYSTICKWAIT - 100);
s2Timeout = setTimeout(() => {
let tLater = Date.now(); let tLater = Date.now();
let systickLater = peek32(0xE000E018); let systickLater = peek32(0xE000E018);
let systickDiff = systickLater - systickNow; systickDiff = systickLater - systickNow;
if (systickDiff < 0) systickDiff += SYSTICKMAX; if (systickDiff < 0) systickDiff += SYSTICKMAX;
doDraw(w, 1 - systickDiff/SYSTICKMAX); }, nextRefresh - 100);
}, SYSTICKWAIT);
doDraw(w, systickDiff ? (1 - systickDiff/SYSTICKMAX) : 0);
if (w.timeoutId !== undefined) { if (w.timeoutId !== undefined) {
clearTimeout(w.timeoutId); clearTimeout(w.timeoutId);
@ -88,7 +99,7 @@ currently-running apps */
w.timeoutId = setTimeout(() => { w.timeoutId = setTimeout(() => {
w.timeoutId = undefined; w.timeoutId = undefined;
w.draw(w); w.draw(w);
}, Bangle.isLocked() ? ((s.refreshLocked || 60) * 1000 ): ((s.refreshUnlocked || 1) * 1000)); }, nextRefresh);
} }
// add your widget // add your widget
@ -98,7 +109,7 @@ currently-running apps */
draw: draw draw: draw
}; };
Bangle.on("lock", ()=>{draw(WIDGETS.powermanager);}); Bangle.on("lock", ()=>{WIDGETS.powermanager.draw(WIDGETS.powermanager);});
// conserve memory // conserve memory
delete settings; delete settings;