From 732a8b6f8388510da09dbc51d6f06525d92db810 Mon Sep 17 00:00:00 2001
From: Xiao Gui <xgui3783@gmail.com>
Date: Thu, 10 Jun 2021 14:26:22 +0200
Subject: [PATCH] bugfix: race cond setting layer vis

---
 .../nehuba/nehubaViewer/nehubaViewer.component.ts    | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts b/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts
index bf63d48d5..4d0b363f9 100644
--- a/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts
+++ b/src/viewerModule/nehuba/nehubaViewer/nehubaViewer.component.ts
@@ -303,13 +303,15 @@ export class NehubaViewerUnit implements OnInit, OnDestroy {
       this.ondestroySubscriptions.push(
         this.layerVis$.pipe(
           switchMap(switchMapWaitFor({ condition: () => !!(this.nehubaViewer?.ngviewer) })),
-          tap(() => {
-            const managedLayers = this.nehubaViewer.ngviewer.layerManager.managedLayers
-            managedLayers.forEach(layer => layer.setVisible(false))
-          }),
           debounceTime(160),
         ).subscribe((layerNames: string[]) => {
-
+          /**
+           * debounce 160ms to set layer invisible etc
+           * on switch from freesurfer -> volumetric viewer, race con results in managed layer not necessarily setting layer visible correctly
+           */
+          const managedLayers = this.nehubaViewer.ngviewer.layerManager.managedLayers
+          managedLayers.forEach(layer => layer.setVisible(false))
+          
           for (const layerName of layerNames) {
             const layer = this.nehubaViewer.ngviewer.layerManager.getLayerByName(layerName)
             if (layer) {
-- 
GitLab