fix: Changes to address hang/crash on jump to instance (#4679)

This commit is contained in:
Bill Wallace 2025-02-25 11:51:44 -05:00 committed by GitHub
parent afd528b8d7
commit e480e841bb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 3 deletions

View File

@ -20,6 +20,7 @@ import { getViewportDataOverlaySettingsMenu } from '../components/ViewportDataOv
import { getViewportPresentations } from '../utils/presentations/getViewportPresentations'; import { getViewportPresentations } from '../utils/presentations/getViewportPresentations';
import { useSynchronizersStore } from '../stores/useSynchronizersStore'; import { useSynchronizersStore } from '../stores/useSynchronizersStore';
import ActiveViewportBehavior from '../utils/ActiveViewportBehavior'; import ActiveViewportBehavior from '../utils/ActiveViewportBehavior';
import { WITH_NAVIGATION } from '../services/ViewportService/CornerstoneViewportService';
const STACK = 'stack'; const STACK = 'stack';
@ -505,12 +506,16 @@ function _jumpToMeasurement(measurement, targetElementRef, viewportId, servicesM
const viewport = enabledElement.viewport as csTypes.IStackViewport | csTypes.IVolumeViewport; const viewport = enabledElement.viewport as csTypes.IStackViewport | csTypes.IVolumeViewport;
const { metadata } = measurement; const { metadata } = measurement;
if (!viewport.isReferenceViewable(metadata, { withNavigation: true, withOrientation: true })) { if (!viewport.isReferenceViewable(metadata, WITH_NAVIGATION)) {
console.log("Reference isn't viewable, postponing until updated"); console.log("Reference isn't viewable, postponing until updated");
return; return;
} }
viewport.setViewReference(metadata); try {
viewport.setViewReference(metadata);
} catch (e) {
console.warn('Unable to apply', metadata, e);
}
cs3DTools.annotation.selection.setAnnotationSelected(measurement.uid); cs3DTools.annotation.selection.setAnnotationSelected(measurement.uid);
// Jump to measurement consumed, remove. // Jump to measurement consumed, remove.

View File

@ -38,6 +38,8 @@ const EVENTS = {
VIEWPORT_VOLUMES_CHANGED: 'event::cornerstoneViewportService:viewportVolumesChanged', VIEWPORT_VOLUMES_CHANGED: 'event::cornerstoneViewportService:viewportVolumesChanged',
}; };
export const WITH_NAVIGATION = { withNavigation: true, withOrientation: true };
/** /**
* Handles cornerstone viewport logic including enabling, disabling, and * Handles cornerstone viewport logic including enabling, disabling, and
* updating the viewport. * updating the viewport.
@ -1141,7 +1143,11 @@ class CornerstoneViewportService extends PubSubService implements IViewportServi
): void { ): void {
const viewRef = positionPresentation?.viewReference; const viewRef = positionPresentation?.viewReference;
if (viewRef) { if (viewRef) {
viewport.setViewReference(viewRef); if (viewport.isReferenceViewable(viewRef, WITH_NAVIGATION)) {
viewport.setViewReference(viewRef);
} else {
console.warn('Unable to apply reference viewable', viewRef);
}
} }
const viewPresentation = positionPresentation?.viewPresentation; const viewPresentation = positionPresentation?.viewPresentation;