mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 10:53:59 +00:00
fix: release weather camera listeners while disabled
This commit is contained in:
1 parent
2f23bbe87f
commit
d6f89e3cfd
5 files changed
+49
-8
No files matched your search
@@ -296,10 +296,6 @@ export function createWeatherLayer({
|
||||
motion?.addEventListener?.('change', onVisibility);
|
||||
documentRef?.addEventListener?.('visibilitychange', onVisibility);
|
||||
registerClock();
|
||||
removeCamera = viewer.camera.moveEnd?.addEventListener(() => {
|
||||
checkHost();
|
||||
if (enabled) notify();
|
||||
});
|
||||
},
|
||||
attachShellServices(services) {
|
||||
imageryHost =
|
||||
@@ -315,10 +311,18 @@ export function createWeatherLayer({
|
||||
},
|
||||
enable() {
|
||||
enabled = true;
|
||||
if (!removeCamera) {
|
||||
removeCamera = viewer.camera.moveEnd?.addEventListener(() => {
|
||||
checkHost();
|
||||
notify();
|
||||
});
|
||||
}
|
||||
registerClock();
|
||||
},
|
||||
disable() {
|
||||
enabled = false;
|
||||
removeCamera?.();
|
||||
removeCamera = null;
|
||||
unregisterClock?.();
|
||||
unregisterClock = null;
|
||||
++generation;
|
||||
|
||||
@@ -2341,3 +2341,18 @@ test('a product replacement accepts supersession but never paints the obsolete f
|
||||
assert.equal(h.layer.getParams().product, 'clouds');
|
||||
h.layer.destroy();
|
||||
});
|
||||
|
||||
test('disabled weather releases its camera listener and re-enabling binds only once', () => {
|
||||
const h = layerHarness();
|
||||
h.layer.disable();
|
||||
assert.equal(h.moveEnd.size, 0, 'disabled layers own no active camera work');
|
||||
h.layer.enable();
|
||||
h.layer.enable();
|
||||
assert.equal(h.moveEnd.size, 1);
|
||||
h.layer.disable();
|
||||
assert.equal(h.moveEnd.size, 0);
|
||||
h.layer.enable();
|
||||
assert.equal(h.moveEnd.size, 1);
|
||||
h.layer.destroy();
|
||||
assert.equal(h.moveEnd.size, 0);
|
||||
});
|
||||
Reference in new issue
Block a user