This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 446b93a  [OPENMEETINGS-2424] another attempt to perform clean-up
446b93a is described below

commit 446b93a1d74826c9e54626ceaf3c75ee013c3301
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu Sep 10 08:44:02 2020 +0700

    [OPENMEETINGS-2424] another attempt to perform clean-up
---
 .../openmeetings/web/room/raw-video-manager.js     | 42 ++-----------------
 .../org/apache/openmeetings/web/room/raw-video.js  | 49 ++++++++++++++++++++--
 2 files changed, 49 insertions(+), 42 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
index e488e40..6398246 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
@@ -5,30 +5,8 @@ var VideoManager = (function() {
 
        function _onVideoResponse(m) {
                const w = $('#' + VideoUtil.getVid(m.uid))
-                       , v = w.data()
-                       , peer = v && v.getPeer();
-
-               if (peer && false === peer.cleaned && 
peer.peerConnection.signalingState !== 'stable') {
-                       peer.processAnswer(m.sdpAnswer, function (error) {
-                               if (true === peer.cleaned || 
peer.peerConnection.signalingState === 'stable') {
-                                       return;
-                               }
-                               if (error) {
-                                       return OmUtil.error(error);
-                               }
-                               const vidEls = w.find('audio, video')
-                                       , vidEl = vidEls.length === 1 ? 
vidEls[0] : null;
-                               if (vidEl && vidEl.paused) {
-                                       vidEl.play().catch(function (err) {
-                                               if ('NotAllowedError' === 
err.name) {
-                                                       
VideoUtil.askPermission(function () {
-                                                               vidEl.play();
-                                                       });
-                                               }
-                                       });
-                               }
-                       });
-               }
+                       , v = w.data();
+               v.processSdpAnswer(m.sdpAnswer);
        }
        function _onBroadcast(msg) {
                const sd = msg.stream
@@ -82,20 +60,8 @@ var VideoManager = (function() {
                        case 'iceCandidate':
                                {
                                        const w = $('#' + 
VideoUtil.getVid(m.uid))
-                                               , v = w.data()
-                                               , peer = v && v.getPeer();
-
-                                       if (peer && false === peer.cleaned) {
-                                               
peer.addIceCandidate(m.candidate, function (error) {
-                                                       if (true === 
this.cleaned) {
-                                                               return;
-                                                       }
-                                                       if (error) {
-                                                               
OmUtil.error('Error adding candidate: ' + error);
-                                                               return;
-                                                       }
-                                               });
-                                       }
+                                               , v = w.data();
+                                       v.processIceCandidate(m.candidate);
                                }
                                break;
                        case 'newStream':
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
index 5cf51f3..63421df 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
@@ -561,6 +561,44 @@ var Video = (function() {
                        }
                });
        }
+       function _processSdpAnswer(answer) {
+               const state = states.length > 0 ? states[0] : null;
+               if (!state || state.disposed || !state.data.rtcPeer || 
state.data.rtcPeer.cleaned || state.data.rtcPeer.peerConnection.signalingState 
=== 'stable') {
+                       return;
+               }
+               state.data.rtcPeer.processAnswer(answer, function (error) {
+                       if (true === this.cleaned || 
this.peerConnection.signalingState === 'stable') {
+                               return;
+                       }
+                       if (error) {
+                               return OmUtil.error(error);
+                       }
+                       if (state.video && state.video.paused) {
+                               state.video.play().catch(function (err) {
+                                       if ('NotAllowedError' === err.name) {
+                                               
VideoUtil.askPermission(function () {
+                                                       state.video.play();
+                                               });
+                                       }
+                               });
+                       }
+               });
+       }
+       function _processIceCandidate(candidate) {
+               const state = states.length > 0 ? states[0] : null;
+               if (!state || state.disposed || !state.data.rtcPeer || 
state.data.rtcPeer.cleaned || state.data.rtcPeer.peerConnection.signalingState 
=== 'stable') {
+                       return;
+               }
+               state.data.rtcPeer.addIceCandidate(candidate, function (error) {
+                       if (true === this.cleaned) {
+                               return;
+                       }
+                       if (error) {
+                               OmUtil.error('Error adding candidate: ' + 
error);
+                               return;
+                       }
+               });
+       }
 
        self.update = _update;
        self.refresh = _refresh;
@@ -573,9 +611,8 @@ var Video = (function() {
        self.init = _init;
        self.stream = function() { return sd; };
        self.setRights = _setRights;
-       self.getPeer = function() {
-               return states.length > 0 ? states[0].data.rtcPeer : null;
-       };
+       self.processSdpAnswer = _processSdpAnswer;
+       self.processIceCandidate = _processIceCandidate;
        self.onIceCandidate = function(candidate) {
                const opts = Room.getOptions();
                OmUtil.log('Local candidate ' + JSON.stringify(candidate));
@@ -588,7 +625,11 @@ var Video = (function() {
        };
        self.reattachStream = _reattachStream;
        self.video = function() {
-               return states.length > 0 ? states[0].video : null;
+               const state = states.length > 0 ? states[0] : null;
+               if (!state || state.disposed) {
+                       return null;
+               }
+               return state.video;
        };
        self.handleMicStatus = _handleMicStatus;
        return self;

Reply via email to