From 446c8119c361cef4d0242478d2ef95d9f266cd4f Mon Sep 17 00:00:00 2001 From: Scott Bell Date: Thu, 15 Aug 2024 16:07:13 -0500 Subject: [PATCH] gui still leaking data --- src/plugins/comps/CompsManager.js | 14 ++++++++++++++ src/plugins/comps/CompsTelemetryProvider.js | 5 ++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/plugins/comps/CompsManager.js b/src/plugins/comps/CompsManager.js index 271ca2fa70..16e5ad216d 100644 --- a/src/plugins/comps/CompsManager.js +++ b/src/plugins/comps/CompsManager.js @@ -88,6 +88,20 @@ export default class CompsManager extends EventEmitter { this.#telemetryLoadedPromises = []; } + startListeningToUnderlyingTelemetry() { + Object.keys(this.#telemetryCollections).forEach((keyString) => { + if (!this.#telemetryCollections[keyString].loaded) { + this.#telemetryCollections[keyString].load(); + } + }); + } + + stopListeningToUnderlyingTelemetry() { + Object.keys(this.#telemetryCollections).forEach((keyString) => { + this.#telemetryCollections[keyString].destroy(); + }); + } + getTelemetryObjects() { return this.#telemetryObjects; } diff --git a/src/plugins/comps/CompsTelemetryProvider.js b/src/plugins/comps/CompsTelemetryProvider.js index 927bdc5904..6ede9e0109 100644 --- a/src/plugins/comps/CompsTelemetryProvider.js +++ b/src/plugins/comps/CompsTelemetryProvider.js @@ -105,9 +105,12 @@ export default class CompsTelemetryProvider { specificCompsManager.on('underlyingTelemetryUpdated', (newTelemetry) => { this.#computeOnNewTelemetry(specificCompsManager, newTelemetry, callbackID); }); + specificCompsManager.startListeningToUnderlyingTelemetry(); return () => { - specificCompsManager.off('calculationUpdated', callback); + specificCompsManager.off('underlyingTelemetryUpdated', callback); delete this.#subscriptionCallbacks[callbackID]; + // if this is the last subscription, tell the comp manager to stop listening + specificCompsManager.stopListeningToUnderlyingTelemetry(); }; }