Skip to content

Commit

Permalink
fix: do deep check when adding sources/targets to synchronizers (#193)
Browse files Browse the repository at this point in the history
  • Loading branch information
swederik committed Mar 21, 2022
1 parent 897573b commit 920d317
Showing 1 changed file with 12 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,10 @@ class Synchronizer {
}

public addSource(viewport: Types.IViewportUID): void {
if (this._sourceViewports.includes(viewport)) {
if (_containsViewport(this._sourceViewports, viewport)) {
return
}

const { renderingEngineUID, viewportUID } = viewport

const canvas = getRenderingEngine(renderingEngineUID)
Expand All @@ -74,7 +75,7 @@ class Synchronizer {
}

public addTarget(viewport: Types.IViewportUID): void {
if (this._targetViewports.includes(viewport)) {
if (_containsViewport(this._targetViewports, viewport)) {
return
}

Expand Down Expand Up @@ -124,11 +125,7 @@ class Synchronizer {
}

public hasSourceViewport(renderingEngineUID: string, viewportUID: string): boolean {
return this._sourceViewports.some(
(vp) =>
vp.renderingEngineUID === renderingEngineUID &&
vp.viewportUID === viewportUID
)
return _containsViewport(this._sourceViewports, { renderingEngineUID, viewportUID})
}

public fireEvent(sourceViewport: Types.IViewportUID, sourceEvent: any): void {
Expand Down Expand Up @@ -238,6 +235,14 @@ function _getViewportIndex(
)
}

function _containsViewport(arr: Array<Types.IViewportUID>, vp: Types.IViewportUID) {
return arr.some(
(ar) =>
ar.renderingEngineUID === vp.renderingEngineUID &&
ar.viewportUID === vp.viewportUID
)
}

function _getViewportCanvas(vp: Types.IViewportUID): HTMLCanvasElement {
const renderingEngine = getRenderingEngine(vp.renderingEngineUID);
if (!renderingEngine) {
Expand Down

0 comments on commit 920d317

Please sign in to comment.