diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-07-02 17:51:09 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-07-02 17:51:09 +0200 |
commit | 4c9914227ed9e675d65ad16e0bb899e8107a0ee5 (patch) | |
tree | d4c542f51b5155eb3f3627c628686cfc0d648a2f /dom/media/PeerConnection.js | |
parent | de01f1e7fce43d5919e6adcd73dfa617a9087520 (diff) | |
parent | aa6329b694a981dccd5b0fd124936c4b54fb94a4 (diff) | |
download | UXP-4c9914227ed9e675d65ad16e0bb899e8107a0ee5.tar UXP-4c9914227ed9e675d65ad16e0bb899e8107a0ee5.tar.gz UXP-4c9914227ed9e675d65ad16e0bb899e8107a0ee5.tar.lz UXP-4c9914227ed9e675d65ad16e0bb899e8107a0ee5.tar.xz UXP-4c9914227ed9e675d65ad16e0bb899e8107a0ee5.zip |
Merge branch 'ported-upstream'
Diffstat (limited to 'dom/media/PeerConnection.js')
-rw-r--r-- | dom/media/PeerConnection.js | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/dom/media/PeerConnection.js b/dom/media/PeerConnection.js index 0c3021799..0569b15ae 100644 --- a/dom/media/PeerConnection.js +++ b/dom/media/PeerConnection.js @@ -516,6 +516,18 @@ RTCPeerConnection.prototype = { }; }, + // This implements the fairly common "Queue a task" logic + async _queueTaskWithClosedCheck(func) { + return new Promise(resolve => { + Services.tm.mainThread.dispatch({ run() { + if (!this._closed) { + func(); + resolve(); + } + }}, Ci.nsIThread.DISPATCH_NORMAL); + }); + }, + /** * An RTCConfiguration may look like this: * @@ -1445,7 +1457,10 @@ PeerConnectionObserver.prototype = { break; case "IceConnectionState": - this.handleIceConnectionStateChange(this._dompc._pc.iceConnectionState); + let connState = this._dompc._pc.iceConnectionState; + this._dompc._queueTaskWithClosedCheck(() => { + this.handleIceConnectionStateChange(connState); + }); break; case "IceGatheringState": |