fix(cine): Resolve Cine Player Faults on DisplaySet Update (#4909)

This commit is contained in:
Pedro Köhler authored and GitHub committed 2025-04-04 13:33:36 -04:00
1 parent 0eb9ff235c
commit 746f2524eb
8 files changed
+49 -23

No files matched your search

+17 -2
View File
@@ -581,7 +581,6 @@ function commandsModule({
});
viewport.render();
},
toggleViewportColorbar: ({ viewportId, displaySetInstanceUIDs, options = {} }) => {
const hasColorbar = colorbarService.hasColorbar(viewportId);
if (hasColorbar) {
@@ -590,7 +589,6 @@ function commandsModule({
}
colorbarService.addColorbar(viewportId, displaySetInstanceUIDs, options);
},
setWindowLevel(props) {
const { toolGroupId } = props;
const { viewportId } = _getActiveViewportEnabledElement();
@@ -1536,6 +1534,22 @@ function commandsModule({
measurementService.remove(activeAnnotationUID);
});
},
setDisplaySetsForViewports: ({ viewportsToUpdate }) => {
const { cineService, viewportGridService } = servicesManager.services;
// Stopping the cine of modified viewports before changing the viewports to
// avoid inconsistent state and lost references
viewportsToUpdate.forEach(viewport => {
const state = cineService.getState();
const currentCineState = state.cines?.[viewport.viewportId];
cineService.setCine({
id: viewport.viewportId,
frameRate: currentCineState?.frameRate ?? state.default?.frameRate ?? 24,
isPlaying: false,
});
});
viewportGridService.setDisplaySetsForViewports(viewportsToUpdate);
},
undo: () => {
DefaultHistoryMemo.undo();
},
@@ -1987,6 +2001,7 @@ function commandsModule({
deleteActiveAnnotation: {
commandFn: actions.deleteActiveAnnotation,
},
setDisplaySetsForViewports: actions.setDisplaySetsForViewports,
undo: actions.undo,
redo: actions.redo,
interpolateLabelmap: actions.interpolateLabelmap,