diff --git a/src/programflow-visualization/frontend/frontend.ts b/src/programflow-visualization/frontend/frontend.ts index 3a73b68..08b5003 100644 --- a/src/programflow-visualization/frontend/frontend.ts +++ b/src/programflow-visualization/frontend/frontend.ts @@ -3,6 +3,8 @@ import { VisualizationPanel } from './visualization_panel'; import { MessagePort } from 'worker_threads'; import * as TraceCache from '../trace_cache'; +let panel: VisualizationPanel | undefined = undefined; + export async function startFrontend( context: ExtensionContext, filePath: string, @@ -13,7 +15,8 @@ export async function startFrontend( trace = await TraceCache.getTrace(context, fileHash); } - const panel = await VisualizationPanel.getVisualizationPanel(context, filePath, fileHash, trace, tracePort); + panel?.dispose(); + panel = await VisualizationPanel.getVisualizationPanel(context, filePath, fileHash, trace, tracePort); if (!panel) { return failure("Frontend couldn't be initialized!"); } diff --git a/src/programflow-visualization/frontend/visualization_panel.ts b/src/programflow-visualization/frontend/visualization_panel.ts index ac075ea..170d48d 100644 --- a/src/programflow-visualization/frontend/visualization_panel.ts +++ b/src/programflow-visualization/frontend/visualization_panel.ts @@ -112,6 +112,10 @@ export class VisualizationPanel { }); } + public dispose() { + this._panel?.dispose(); + } + public static async getVisualizationPanel( context: vscode.ExtensionContext, filePath: string,