forked from FOSS/BangleApps
messagesoverlay - Fix leaking memory
parent
c16a9b1103
commit
3ef8ede109
|
@ -76,12 +76,11 @@ let manageEvent = function(ovr, event) {
|
||||||
next(ovr);
|
next(ovr);
|
||||||
|
|
||||||
else {
|
else {
|
||||||
let neweventQueue = [];
|
eventQueue.length = 0; // empty existing queue
|
||||||
eventQueue.forEach(element => {
|
eventQueue.forEach(element => {
|
||||||
if (element.id != event.id)
|
if (element.id != event.id)
|
||||||
neweventQueue.push(element);
|
neweventQueue.push(element);
|
||||||
});
|
});
|
||||||
eventQueue = neweventQueue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -143,7 +142,6 @@ let showMessage = function(ovr, msg) {
|
||||||
LOG("showMessage");
|
LOG("showMessage");
|
||||||
ovr.setBgColor(settings.colBg);
|
ovr.setBgColor(settings.colBg);
|
||||||
|
|
||||||
|
|
||||||
if (typeof msg.CanscrollDown === "undefined")
|
if (typeof msg.CanscrollDown === "undefined")
|
||||||
msg.CanscrollDown = false;
|
msg.CanscrollDown = false;
|
||||||
if (typeof msg.CanscrollUp === "undefined")
|
if (typeof msg.CanscrollUp === "undefined")
|
||||||
|
@ -214,6 +212,7 @@ let showCall = function(ovr, msg) {
|
||||||
if (!settings.quiet) {
|
if (!settings.quiet) {
|
||||||
if (msg.new) {
|
if (msg.new) {
|
||||||
msg.new = false;
|
msg.new = false;
|
||||||
|
if (callBuzzTimer) clearInterval(callBuzzTimer);
|
||||||
callBuzzTimer = setInterval(function() {
|
callBuzzTimer = setInterval(function() {
|
||||||
Bangle.buzz(500);
|
Bangle.buzz(500);
|
||||||
}, 1000);
|
}, 1000);
|
||||||
|
@ -252,7 +251,7 @@ let callBuzzTimer = null;
|
||||||
let stopCallBuzz = function() {
|
let stopCallBuzz = function() {
|
||||||
if (callBuzzTimer) {
|
if (callBuzzTimer) {
|
||||||
clearInterval(callBuzzTimer);
|
clearInterval(callBuzzTimer);
|
||||||
callBuzzTimer = null;
|
callBuzzTimer = undefined;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -357,14 +356,6 @@ let drawMessage = function(ovr, msg) {
|
||||||
Bangle.setLCDOverlay(ovr,ovrx,ovry);
|
Bangle.setLCDOverlay(ovr,ovrx,ovry);
|
||||||
};
|
};
|
||||||
|
|
||||||
let doubleTapUnlock = function(data) {
|
|
||||||
if (data.double)
|
|
||||||
{
|
|
||||||
Bangle.setLocked(false);
|
|
||||||
Bangle.setLCDPower(1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
let getSwipeHandler = function(ovr){
|
let getSwipeHandler = function(ovr){
|
||||||
return (lr, ud) => {
|
return (lr, ud) => {
|
||||||
if (ud == 1) {
|
if (ud == 1) {
|
||||||
|
@ -394,6 +385,7 @@ let restoreHandler = function(event){
|
||||||
};
|
};
|
||||||
|
|
||||||
let backupHandler = function(event){
|
let backupHandler = function(event){
|
||||||
|
if (eventQueue.length > 1 && ovr) return; // do not backup, overlay is already up
|
||||||
backup[event] = Bangle["#on" + event];
|
backup[event] = Bangle["#on" + event];
|
||||||
Bangle.removeAllListeners(event);
|
Bangle.removeAllListeners(event);
|
||||||
};
|
};
|
||||||
|
@ -407,9 +399,14 @@ let cleanup = function(){
|
||||||
restoreHandler("swipe");
|
restoreHandler("swipe");
|
||||||
restoreHandler("drag");
|
restoreHandler("drag");
|
||||||
|
|
||||||
Bangle.removeListener("tap", doubleTapUnlock);
|
if (touchHandler) {
|
||||||
if (touchHandler) Bangle.removeListener("touch", touchHandler);
|
Bangle.removeListener("touch", touchHandler);
|
||||||
if (swipeHandler) Bangle.removeListener("swipe", swipeHandler);
|
touchHandler = undefined;
|
||||||
|
}
|
||||||
|
if (swipeHandler) {
|
||||||
|
Bangle.removeListener("swipe", swipeHandler);
|
||||||
|
swipeHandler = undefined;
|
||||||
|
}
|
||||||
Bangle.setLCDOverlay();
|
Bangle.setLCDOverlay();
|
||||||
ovr = undefined;
|
ovr = undefined;
|
||||||
};
|
};
|
||||||
|
@ -418,18 +415,17 @@ let backup = {};
|
||||||
|
|
||||||
let main = function(ovr, event) {
|
let main = function(ovr, event) {
|
||||||
LOG("Main", event, settings);
|
LOG("Main", event, settings);
|
||||||
|
|
||||||
if (!lockListener) {
|
if (!lockListener) {
|
||||||
lockListener = function (){
|
lockListener = function (){
|
||||||
drawBorder(ovr);
|
drawBorder(ovr);
|
||||||
};
|
};
|
||||||
Bangle.on('lock', lockListener);
|
Bangle.on('lock', lockListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
backupHandler("touch");
|
backupHandler("touch");
|
||||||
backupHandler("swipe");
|
backupHandler("swipe");
|
||||||
backupHandler("drag");
|
backupHandler("drag");
|
||||||
|
|
||||||
Bangle.on('tap', doubleTapUnlock);
|
|
||||||
if (touchHandler) Bangle.removeListener("touch",touchHandler);
|
if (touchHandler) Bangle.removeListener("touch",touchHandler);
|
||||||
if (swipeHandler) Bangle.removeListener("swipe",swipeHandler);
|
if (swipeHandler) Bangle.removeListener("swipe",swipeHandler);
|
||||||
touchHandler = getTouchHandler(ovr);
|
touchHandler = getTouchHandler(ovr);
|
||||||
|
@ -441,7 +437,10 @@ let main = function(ovr, event) {
|
||||||
manageEvent(ovr, event);
|
manageEvent(ovr, event);
|
||||||
Bangle.setLCDPower(1);
|
Bangle.setLCDPower(1);
|
||||||
drawBorder(ovr);
|
drawBorder(ovr);
|
||||||
Bangle.setLCDOverlay(ovr,10,10);
|
if (eventQueue.length>=1)
|
||||||
|
Bangle.setLCDOverlay(ovr,10,10);
|
||||||
|
else
|
||||||
|
Bangle.setLCDOverlay();
|
||||||
} else {
|
} else {
|
||||||
LOG("No event given");
|
LOG("No event given");
|
||||||
cleanup();
|
cleanup();
|
||||||
|
@ -465,9 +464,7 @@ exports.pushMessage = function(event) {
|
||||||
g = ovr;
|
g = ovr;
|
||||||
|
|
||||||
ovr.theme = g.theme;
|
ovr.theme = g.theme;
|
||||||
if(event.t=="remove") return;
|
|
||||||
main(ovr, event);
|
main(ovr, event);
|
||||||
Bangle.setLCDOverlay(ovr, 10, 10);
|
|
||||||
|
|
||||||
g = _g;
|
g = _g;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue