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 06c6f6c  [OPENMEETINGS-1649] test recording seems to be fixed
06c6f6c is described below

commit 06c6f6c8bba8b6b87b793503a25dc5bb24d4c89e
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Sat Nov 10 00:27:46 2018 +0700

    [OPENMEETINGS-1649] test recording seems to be fixed
---
 .../openmeetings/core/remote/KTestStream.java      | 45 ++++++++++++++--------
 .../openmeetings/core/remote/KurentoHandler.java   |  7 +++-
 .../apache/openmeetings/web/room/raw-settings.js   |  4 +-
 3 files changed, 36 insertions(+), 20 deletions(-)

diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java
index b6a9b0a..414e61d 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java
@@ -60,7 +60,7 @@ public class KTestStream implements IKStream {
        private ScheduledFuture<?> recHandle;
        private int recTime;
 
-       public KTestStream(final KurentoHandler h, IWsClient _c, JSONObject 
msg, MediaPipeline pipeline) {
+       public KTestStream(IWsClient _c, JSONObject msg, MediaPipeline 
pipeline) {
                this.pipeline = pipeline;
                this.uid = _c.getUid();
                webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build();
@@ -84,7 +84,7 @@ public class KTestStream implements IKStream {
                        });
                recorder.addStoppedListener(evt -> {
                                WebSocketHelper.sendClient(_c, 
newTestKurentoMsg().put("id", "recStopped"));
-                               release(h);
+                               releaseRecorder();
                        });
                switch (profile) {
                        case WEBM:
@@ -125,7 +125,7 @@ public class KTestStream implements IKStream {
                });
        }
 
-       public void play(final KurentoHandler h, final IWsClient _c, JSONObject 
msg, MediaPipeline pipeline) {
+       public void play(final IWsClient _c, JSONObject msg, MediaPipeline 
pipeline) {
                this.pipeline = pipeline;
                webRtcEndpoint = new WebRtcEndpoint.Builder(pipeline).build();
                player = new PlayerEndpoint.Builder(pipeline, recPath).build();
@@ -134,11 +134,11 @@ public class KTestStream implements IKStream {
                                log.info("Media session started {}", evt);
                                player.addErrorListener(event -> {
                                                log.info("ErrorEvent for player 
with uid '{}': {}", _c.getUid(), event.getDescription());
-                                               sendPlayEnd(h, _c);
+                                               sendPlayEnd(_c);
                                        });
                                player.addEndOfStreamListener(event -> {
                                                log.info("EndOfStreamEvent for 
player with uid '{}'", _c.getUid());
-                                               sendPlayEnd(h, _c);
+                                               sendPlayEnd(_c);
                                        });
                                player.play();
                        });
@@ -173,9 +173,9 @@ public class KTestStream implements IKStream {
                        });
        }
 
-       private void sendPlayEnd(final KurentoHandler h, IWsClient _c) {
+       private void sendPlayEnd(IWsClient _c) {
                WebSocketHelper.sendClient(_c, newTestKurentoMsg().put("id", 
"playStopped"));
-               release(h);
+               releasePlayer();
        }
 
        private static MediaProfileSpecType getProfile(JSONObject msg) {
@@ -195,24 +195,37 @@ public class KTestStream implements IKStream {
                recPath = OmFileHelper.getRecUri(f);
        }
 
-       @Override
-       public void release(KurentoHandler h) {
-               if (webRtcEndpoint != null) {
-                       webRtcEndpoint.release();
-                       webRtcEndpoint = null;
-               }
+       private void releasePipeline() {
                if (pipeline != null) {
                        pipeline.release();
                        pipeline = null;
                }
+       }
+
+       private void releaseRecorder() {
+               releasePipeline();
+               if (recorder != null) {
+                       recorder.release();
+                       recorder = null;
+               }
+       }
+
+       private void releasePlayer() {
+               releasePipeline();
                if (player != null) {
                        player.release();
                        player = null;
                }
-               if (recorder != null) {
-                       recorder.release();
-                       recorder = null;
+       }
+
+       @Override
+       public void release(KurentoHandler h) {
+               if (webRtcEndpoint != null) {
+                       webRtcEndpoint.release();
+                       webRtcEndpoint = null;
                }
+               releasePlayer();
+               releaseRecorder();
                h.testsByUid.remove(uid);
        }
 }
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
index e171e3c..c143aa2 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
@@ -179,7 +179,10 @@ public class KurentoHandler {
                                                );
                                break;
                        case "record":
-                               user = new KTestStream(this, _c, msg, 
createTestPipeline());
+                               if (user != null) {
+                                       user.release(this);
+                               }
+                               user = new KTestStream(_c, msg, 
createTestPipeline());
                                testsByUid.put(_c.getUid(), user);
                                break;
                        case "iceCandidate":
@@ -198,7 +201,7 @@ public class KurentoHandler {
                                break;
                        case "play":
                                if (user != null) {
-                                       user.play(this, _c, msg, 
createTestPipeline());
+                                       user.play(_c, msg, 
createTestPipeline());
                                }
                                break;
                }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
index f08d860..924977d 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-settings.js
@@ -456,11 +456,11 @@ var VideoSettings = (function() {
                                        rtcPeer = new 
kurentoUtils.WebRtcPeer.WebRtcPeerRecvonly(
                                                options
                                                , function(error) {
-                                                       if (error) {
+                                                       if (!this.cleaned && 
error) {
                                                                return 
OmUtil.error(error);
                                                        }
                                                        
rtcPeer.generateOffer(function(error, offerSdp) {
-                                                               if (error) {
+                                                               if 
(!this.cleaned && error) {
                                                                        return 
OmUtil.error('Error generating the offer');
                                                                }
                                                                
OmUtil.sendMessage({

Reply via email to