From 358e0785cf286411fad09623ac3e2fb7301267c8 Mon Sep 17 00:00:00 2001 From: n30nex Date: Sun, 27 Sep 2026 02:33:13 -0400 Subject: [PATCH] Synchronize dense-scene fallback even when packet animation is idle --- web/src/gpuEffects.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/web/src/gpuEffects.ts b/web/src/gpuEffects.ts index 5901c4c..3857299 100644 --- a/web/src/gpuEffects.ts +++ b/web/src/gpuEffects.ts @@ -157,8 +157,11 @@ export function mapEffects(map: LibreMap) { map.on('render',measure);map.on('moveend',retry); const layer: CustomLayerInterface={id:'live-packet-effects',type:'custom',renderingMode:'2d',onAdd(_map,gl){activeGL=gl as WebGL2RenderingContext;batch.initialize(activeGL);},render(){batch.draw();},onRemove(){batch.dispose();}}; const wanted=()=>displayPreferences().quality!=='economy'&&!budgetFallback - && !(displayPreferences().quality==='auto'&&Number(map.getContainer().dataset.eligibleRoutes)>2000); - const attach=()=>{if(wanted()&&map.isStyleLoaded?.() && !map.getLayer(layer.id)) map.addLayer(layer);}; + && !(displayPreferences().quality==='auto'&&Math.max(Number(map.getContainer().dataset.eligibleRoutes)||0,Number(map.getContainer().dataset.renderedRouteSegments)||0)>2000); + const attach=()=>{ + if(!wanted()){batch.setEnabled(false);if(map.getLayer?.(layer.id))map.removeLayer(layer.id);return;} + if(map.isStyleLoaded?.() && !map.getLayer(layer.id))map.addLayer(layer); + }; const lost=()=>batch.dispose(); const restored=()=>{if(activeGL&&wanted())batch.initialize(activeGL);attach();map.triggerRepaint();}; map.on('load',attach); map.on('idle',attach); map.on('styledata',attach); map.on('webglcontextlost',lost); map.on('webglcontextrestored',restored); attach();