summaryrefslogtreecommitdiffstats
path: root/dom/media/PeerConnection.js
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2018-07-02 17:51:09 +0200
committerwolfbeast <mcwerewolf@gmail.com>2018-07-02 17:51:09 +0200
commit4c9914227ed9e675d65ad16e0bb899e8107a0ee5 (patch)
treed4c542f51b5155eb3f3627c628686cfc0d648a2f /dom/media/PeerConnection.js
parentde01f1e7fce43d5919e6adcd73dfa617a9087520 (diff)
parentaa6329b694a981dccd5b0fd124936c4b54fb94a4 (diff)
downloadUXP-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.js17
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":