mirror of https://github.com/espruino/BangleApps
messagesoverlay - Add low memory mode
parent
54051d5ab1
commit
4ea368416d
|
@ -13,6 +13,10 @@ Close app by tapping the X and scroll by swiping. The border of the pop up chang
|
|||
## Firmware hint
|
||||
Current stable firmware draws incorrect colors for emojis. Nightly firmware builds correct this.
|
||||
|
||||
## Low memory mode
|
||||
|
||||
If free memory is below 2000 blocks, the overlay automatically only uses 1 bit depth. Default uses roundabout 1300 blocks, while low memory mode uses about 600.
|
||||
|
||||
## Creator
|
||||
|
||||
[halemmerich](https://github.com/halemmerich)
|
||||
|
|
|
@ -14,6 +14,7 @@ const ovrx = 10;
|
|||
const ovry = 10;
|
||||
const ovrw = g.getWidth()-2*ovrx;
|
||||
const ovrh = g.getHeight()-2*ovry;
|
||||
let _g = g;
|
||||
|
||||
let lockListener;
|
||||
let quiet;
|
||||
|
@ -37,6 +38,15 @@ let settings = {
|
|||
let eventQueue = [];
|
||||
let callInProgress = false;
|
||||
|
||||
let show = function(ovr){
|
||||
let img = ovr;
|
||||
if (ovr.getBPP() == 1) {
|
||||
img = ovr.asImage();
|
||||
img.palette = new Uint16Array([_g.theme.fg,_g.theme.bg]);
|
||||
}
|
||||
Bangle.setLCDOverlay(img, ovrx, ovry);
|
||||
};
|
||||
|
||||
let manageEvent = function(ovr, event) {
|
||||
event.new = true;
|
||||
|
||||
|
@ -137,7 +147,7 @@ let drawScreen = function(ovr, title, titleFont, src, iconcolor, icon){
|
|||
|
||||
ovr.setColor("#888");
|
||||
roundedRect(ovr, 5,5,30,30,true);
|
||||
ovr.setColor(iconcolor);
|
||||
ovr.setColor(ovr.getBPP() != 1 ? iconcolor : ovr.theme.bg2);
|
||||
ovr.drawImage(icon,8,8);
|
||||
};
|
||||
|
||||
|
@ -181,7 +191,7 @@ let drawBorder = function(ovr) {
|
|||
ovr.setColor(ovr.theme.fg);
|
||||
ovr.drawRect(0,0,ovr.getWidth()-1,ovr.getHeight()-1);
|
||||
ovr.drawRect(1,1,ovr.getWidth()-2,ovr.getHeight()-2);
|
||||
Bangle.setLCDOverlay(ovr,ovrx,ovry);
|
||||
show(ovr);
|
||||
if (!isQuiet()) Bangle.setLCDPower(1);
|
||||
};
|
||||
|
||||
|
@ -357,7 +367,7 @@ let drawMessage = function(ovr, msg) {
|
|||
drawTriangleDown(ovr);
|
||||
} else
|
||||
msg.CanscrollDown = false;
|
||||
Bangle.setLCDOverlay(ovr,ovrx,ovry);
|
||||
show(ovr);
|
||||
if (!isQuiet()) Bangle.setLCDPower(1);
|
||||
};
|
||||
|
||||
|
@ -453,18 +463,24 @@ let ovr;
|
|||
exports.pushMessage = function(event) {
|
||||
if( event.id=="music") return require_real("messages").pushMessage(event);
|
||||
|
||||
bpp = 4;
|
||||
if (process.memory().free < 2000) bpp = 1;
|
||||
|
||||
if (!ovr) {
|
||||
ovr = Graphics.createArrayBuffer(ovrw, ovrh, 4, {
|
||||
ovr = Graphics.createArrayBuffer(ovrw, ovrh, bpp, {
|
||||
msb: true
|
||||
});
|
||||
} else {
|
||||
ovr.clear();
|
||||
}
|
||||
|
||||
let _g = g;
|
||||
g = ovr;
|
||||
|
||||
ovr.theme = g.theme;
|
||||
if (bpp == 4)
|
||||
ovr.theme = g.theme;
|
||||
else
|
||||
ovr.theme = { fg:0, bg:1, fg2:1, bg2:0, fgH:1, bgH:0 };
|
||||
|
||||
main(ovr, event);
|
||||
|
||||
g = _g;
|
||||
|
|
Loading…
Reference in New Issue