gpstrek - Refresh only when needed

master
Martin Boonk 2023-05-27 13:52:49 +02:00
parent 4bcf8baf68
commit cc64cd9648
1 changed files with 17 additions and 13 deletions

View File

@ -253,7 +253,7 @@ let processTaskQueue = function(inTimeouts){
runQueue(inTimeouts); runQueue(inTimeouts);
}; };
let clearTimeoutQueue = function(){ let clearTaskQueue = function(){
taskQueue = []; taskQueue = [];
for (let c of activeTimeouts){ for (let c of activeTimeouts){
clearTimeout(c); clearTimeout(c);
@ -403,13 +403,7 @@ let getMapSlice = function(){
|| forceMapRedraw; || forceMapRedraw;
if (refreshMap) { if (refreshMap) {
clearTimeoutQueue(); clearTaskQueue();
lastMode = isMapOverview;
forceMapRedraw = false;
lastDrawn = Date.now();
lastCourse = course;
lastStart = startingPoint;
lastCurrent = current;
prependTaskQueue(()=>{ prependTaskQueue(()=>{
//clear map view //clear map view
@ -424,6 +418,13 @@ let getMapSlice = function(){
} }
}); });
lastMode = isMapOverview;
forceMapRedraw = false;
lastDrawn = Date.now();
lastCourse = course;
lastStart = startingPoint;
lastCurrent = current;
let drawPath = function(iter, reverse){ let drawPath = function(iter, reverse){
let data = { let data = {
i:reverse?0:-1, i:reverse?0:-1,
@ -496,10 +497,13 @@ let getMapSlice = function(){
addToTaskQueue(drawCurrentPos); addToTaskQueue(drawCurrentPos);
addToTaskQueue(drawInterface); addToTaskQueue(drawInterface);
} } else {
drawInterface();
if (SETTINGS.mapCompass){ if (SETTINGS.mapCompass){
addToTaskQueue(drawMapCompass); drawMapCompass();
} }
}
processTaskQueue(true); processTaskQueue(true);
} }
}; };
@ -757,7 +761,7 @@ mapOverviewScale = SETTINGS.overviewScale;
mapLiveScale = SETTINGS.mapScale; mapLiveScale = SETTINGS.mapScale;
let onAction = function(_,xy){ let onAction = function(_,xy){
clearTimeoutQueue(); clearTaskQueue();
forceMapRedraw = true; forceMapRedraw = true;
if (WIDGETS.gpstrek.getState().route && global.screen == 1){ if (WIDGETS.gpstrek.getState().route && global.screen == 1){
stopDrawing(); stopDrawing();
@ -788,7 +792,7 @@ let onAction = function(_,xy){
}; };
let onSwipe = function(dirLR,dirUD){ let onSwipe = function(dirLR,dirUD){
clearTimeoutQueue(); clearTaskQueue();
forceMapRedraw = true; forceMapRedraw = true;
if (WIDGETS.gpstrek.getState().route && global.screen == 1 && isMapOverview){ if (WIDGETS.gpstrek.getState().route && global.screen == 1 && isMapOverview){
stopDrawing(); stopDrawing();