# HG changeset patch # User Lucas Thompson # Date 1490192625 0 # Node ID f957e93dc9790219e3f1173c478d4293858743fd # Parent 7643e60dc1dde7f620a02a93f9855b7e5016513c Keep track of the components layers and only remove those from the timeline when cleaning up. diff -r 7643e60dc1dd -r f957e93dc979 src/app/waveform/waveform.component.ts --- a/src/app/waveform/waveform.component.ts Wed Mar 22 11:22:48 2017 +0000 +++ b/src/app/waveform/waveform.component.ts Wed Mar 22 14:23:45 2017 +0000 @@ -35,6 +35,7 @@ private _audioBuffer: AudioBuffer; private timeline: Timeline; private cursorLayer: any; + private layers: Layer[]; @Input() set audioBuffer(buffer: AudioBuffer) { @@ -62,6 +63,7 @@ constructor(private audioService: AudioPlayerService, private piperService: FeatureExtractionService, public ngZone: NgZone) { + this.layers = []; this._audioBuffer = undefined; this.timeline = undefined; this.cursorLayer = undefined; @@ -255,13 +257,15 @@ const trackLayers = Array.from(track.layers); while (trackLayers.length) { let layer: Layer = trackLayers.pop(); - track.remove(layer); - - const index = timeContextChildren.indexOf(layer.timeContext); - if (index >= 0) { - timeContextChildren.splice(index, 1); + if (this.layers.includes(layer)) { + track.remove(layer); + this.layers.splice(this.layers.indexOf(layer), 1); + const index = timeContextChildren.indexOf(layer.timeContext); + if (index >= 0) { + timeContextChildren.splice(index, 1); + } + layer.destroy(); } - layer.destroy(); } } } @@ -646,6 +650,7 @@ timeContext : new wavesUI.core.LayerTimeContext(timeContext)); } track.add(layer); + this.layers.push(layer); layer.render(); layer.update(); if (this.cursorLayer && track.$layout.contains(this.cursorLayer.$el)) {