diff --git a/CHANGES.md b/CHANGES.md index 92800e310..837bccc2c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,6 +4,8 @@ wavesurfer.js changelog 4.0.0 (21.06.2020) ------------------ +- Fixes for event handling with certain plugins (regions, microphone). + The crash would have involved '_disabledEventEmissions' - Fixed mediaelement-webaudio playback under Safari (#1964) - Fixed the `destroy` method of the `MediaElementWebAudio` backend. Instead of destroying only the media element, the audio nodes are disconnected and the diff --git a/src/util/observer.js b/src/util/observer.js index e285cee93..444fd8bf3 100644 --- a/src/util/observer.js +++ b/src/util/observer.js @@ -115,6 +115,15 @@ export default class Observer { this._disabledEventEmissions = eventNames; } + /** + * plugins borrow part of this class without calling the constructor, + * so we have to be careful about _disabledEventEmissions + */ + + _isDisabledEventEmission(event) { + return this._disabledEventEmissions && this._disabledEventEmissions.includes(event); + } + /** * Manually fire an event * @@ -122,7 +131,7 @@ export default class Observer { * @param {...any} args The arguments with which to call the listeners */ fireEvent(event, ...args) { - if (!this.handlers || this._disabledEventEmissions.includes(event)) { + if (!this.handlers || this._isDisabledEventEmission(event)) { return; }