Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2020-09-16 17:36:08 +0300
committerGitHub <noreply@github.com>2020-09-16 17:36:08 +0300
commitc91791a2ba5ad6b45f4b623ee71c25f2aaade43b (patch)
tree795963346e195a47bf16b29511bb0c4f9821b443
parentc8de92e1bed507b9b037c86a6c56d2214d413640 (diff)
parentd55dc8e497b7b4ffb65ad4082512d8f9f28e5580 (diff)
Merge pull request #4164 from nextcloud/backport/4076/stable19
[stable19] Ignore "forceMute" message if already muted
-rw-r--r--src/utils/webrtc/simplewebrtc/localmedia.js16
-rw-r--r--src/utils/webrtc/simplewebrtc/simplewebrtc.js6
2 files changed, 17 insertions, 5 deletions
diff --git a/src/utils/webrtc/simplewebrtc/localmedia.js b/src/utils/webrtc/simplewebrtc/localmedia.js
index b49a4d744..35b77a0b3 100644
--- a/src/utils/webrtc/simplewebrtc/localmedia.js
+++ b/src/utils/webrtc/simplewebrtc/localmedia.js
@@ -39,6 +39,9 @@ function LocalMedia(opts) {
this._log = this.logger.log.bind(this.logger, 'LocalMedia:')
this._logerror = this.logger.error.bind(this.logger, 'LocalMedia:')
+ this._audioEnabled = true
+ this._videoEnabled = true
+
this.localStreams = []
this._audioMonitorStreams = []
this.localScreens = []
@@ -120,6 +123,11 @@ LocalMedia.prototype.start = function(mediaConstraints, cb, context) {
self._audioMonitorStreams.push(audioMonitorStream)
stream.getTracks().forEach(function(track) {
+ if ((track.kind === 'audio' && !self._audioEnabled)
+ || (track.kind === 'video' && !self._videoEnabled)) {
+ track.enabled = false
+ }
+
track.addEventListener('ended', function() {
if (isAllTracksEnded(stream)) {
self._removeStream(stream)
@@ -267,11 +275,11 @@ LocalMedia.prototype.unmute = function() {
// Video controls
LocalMedia.prototype.pauseVideo = function() {
- this._videoEnabled(false)
+ this._setVideoEnabled(false)
this.emit('videoOff')
}
LocalMedia.prototype.resumeVideo = function() {
- this._videoEnabled(true)
+ this._setVideoEnabled(true)
this.emit('videoOn')
}
@@ -295,7 +303,9 @@ LocalMedia.prototype._setAudioEnabled = function(bool) {
})
})
}
-LocalMedia.prototype._videoEnabled = function(bool) {
+LocalMedia.prototype._setVideoEnabled = function(bool) {
+ this._videoEnabled = bool
+
this.localStreams.forEach(function(stream) {
stream.getVideoTracks().forEach(function(track) {
track.enabled = !!bool
diff --git a/src/utils/webrtc/simplewebrtc/simplewebrtc.js b/src/utils/webrtc/simplewebrtc/simplewebrtc.js
index bd1aa8bf1..4306111b8 100644
--- a/src/utils/webrtc/simplewebrtc/simplewebrtc.js
+++ b/src/utils/webrtc/simplewebrtc/simplewebrtc.js
@@ -111,8 +111,10 @@ function SimpleWebRTC(opts) {
} else if (message.type === 'control') {
if (message.payload.action === 'forceMute') {
if (message.payload.peerId === self.connection.getSessionId()) {
- self.mute()
- self.emit('forcedMute')
+ if (self.webrtc.isAudioEnabled()) {
+ self.mute()
+ self.emit('forcedMute')
+ }
} else {
self.emit('mute', { id: message.payload.peerId })
}