You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/10/22 15:54:44 UTC

openmeetings git commit: [OPENMEETINGS-1724] screen sharing app is updated to unpublish stream

Repository: openmeetings
Updated Branches:
  refs/heads/master be71e177a -> 715c25127


[OPENMEETINGS-1724] screen sharing app is updated to unpublish stream


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/715c2512
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/715c2512
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/715c2512

Branch: refs/heads/master
Commit: 715c251272c6a2dda9de6d323b741ccb39074d25
Parents: be71e17
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sun Oct 22 22:54:34 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sun Oct 22 22:54:34 2017 +0700

----------------------------------------------------------------------
 .../openmeetings/screenshare/CaptureScreen.java     |  4 ++++
 .../org/apache/openmeetings/screenshare/Core.java   | 16 ++++++++++------
 .../openmeetings/screenshare/IScreenShare.java      |  1 +
 3 files changed, 15 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/715c2512/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java
index a8cd2c7..0a56289 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java
@@ -207,6 +207,10 @@ public class CaptureScreen extends Thread {
 		core.sendCursorStatus();
 	}
 
+	public boolean isStarted() throws SchedulerException {
+		return active && _scheduler != null && _scheduler.isStarted() && !_scheduler.isShutdown();
+	}
+
 	public void setSendCursor(boolean sendCursor) {
 		try {
 			Scheduler s = getScheduler();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/715c2512/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
index 88c6ba8..3358092 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
@@ -535,18 +535,22 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler {
 				}
 			} else if ("createStream".equals(method)) {
 				if (startRecording || startSharing) {
+					CaptureScreen capture = getCapture();
 					if (o != null && o instanceof Number) {
-						getCapture().setStreamId((Number)o);
+						if (capture.getStreamId() != null) {
+							instance.unpublish(capture.getStreamId());
+						}
+						capture.setStreamId((Number)o);
 					}
 					final String broadcastId = UUID.randomUUID().toString();
-					log.debug("createPublishStream result stream id: {}; name: {}", getCapture().getStreamId(), broadcastId);
-					instance.publish(getCapture().getStreamId(), broadcastId, "live", this);
+					log.debug("createPublishStream result stream id: {}; name: {}", capture.getStreamId(), broadcastId);
+					instance.publish(capture.getStreamId(), broadcastId, "live", this);
 
 					log.debug("setup capture thread spinnerWidth = {}; spinnerHeight = {};", dim.getSpinnerWidth(), dim.getSpinnerHeight());
 
-					if (!getCapture().isAlive()) {
-						getCapture().setSendCursor(startSharing);
-						getCapture().start();
+					if (!capture.isStarted()) {
+						capture.setSendCursor(startSharing);
+						capture.start();
 					}
 				}
 			} else if ("screenSharerAction".equals(method)) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/715c2512/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenShare.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenShare.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenShare.java
index 760d5e9..2dedc04 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenShare.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/IScreenShare.java
@@ -35,5 +35,6 @@ public interface IScreenShare extends ClientExceptionHandler {
 	void disconnect();
 	void createStream(IPendingServiceCallback callback);
 	void publish(Number streamId, String name, String mode, INetStreamEventHandler handler);
+	void unpublish(Number streamId);
 	void publishStreamData(Number streamId, IMessage message);
 }