voice: cleanup internals whether end() or destroy() is called

This commit is contained in:
Amish Shah
2019-02-19 13:16:48 +00:00
parent 4009986bc8
commit 6aa792f9ab

View File

@@ -67,6 +67,7 @@ class StreamDispatcher extends Writable {
this.count = 0;
this.on('finish', () => {
this._cleanup();
// Still emitting end for backwards compatibility, probably remove it in the future!
this.emit('end');
this._setSpeaking(0);
@@ -114,12 +115,16 @@ class StreamDispatcher extends Writable {
}
_destroy(err, cb) {
this._cleanup();
super._destroy(err, cb);
}
_cleanup() {
if (this.player.dispatcher === this) this.player.dispatcher = null;
const { streams } = this;
if (streams.broadcast) streams.broadcast.dispatchers.delete(this);
if (streams.opus) streams.opus.destroy();
if (streams.ffmpeg) streams.ffmpeg.destroy();
super._destroy(err, cb);
}
/**