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 2018/02/09 03:51:06 UTC

[openmeetings] branch master updated: [OPENMEETINGS-1829] netstream is closed on room exit and/or broadcast stop

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 67a14b9  [OPENMEETINGS-1829] netstream is closed on room exit and/or broadcast stop
67a14b9 is described below

commit 67a14b9622efdf4f70ad140ca8c863d45d2c8ef0
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Feb 9 10:50:36 2018 +0700

    [OPENMEETINGS-1829] netstream is closed on room exit and/or broadcast stop
---
 openmeetings-flash/src/main/flex/main.mxml                   |  7 +++++++
 .../src/main/flex/org/apache/openmeetings/OmVideo.as         |  4 ++++
 .../java/org/apache/openmeetings/web/app/Application.java    |  8 +++++++-
 .../org/apache/openmeetings/web/common/menu/OmMenuItem.java  |  3 ++-
 .../java/org/apache/openmeetings/web/room/RoomPanel.java     |  7 +------
 .../main/java/org/apache/openmeetings/web/room/room-base.js  | 12 +++++++++---
 .../java/org/apache/openmeetings/web/room/wb/tool-util.js    |  2 +-
 7 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/openmeetings-flash/src/main/flex/main.mxml b/openmeetings-flash/src/main/flex/main.mxml
index e59fcd2..105fc2a 100644
--- a/openmeetings-flash/src/main/flex/main.mxml
+++ b/openmeetings-flash/src/main/flex/main.mxml
@@ -182,6 +182,7 @@
 						}
 					});
 					ExternalInterface.addCallback("setRights", setRightsCallback);
+					ExternalInterface.addCallback("cleanup", cleanupCallback);
 					video.connect(function ():void {
 						// trust no-one
 						video.getNc().call("check", new Responder(function (check:Object):void {
@@ -246,6 +247,7 @@
 					});
 					ExternalInterface.addCallback("refresh", refreshCallback);
 					ExternalInterface.addCallback("setRights", setRightsCallback);
+					ExternalInterface.addCallback("cleanup", cleanupCallback);
 					copyPasteCtxMenu.clipboardMenu = true;
 				}
 					break;
@@ -430,6 +432,11 @@
 			_updateRemote();
 		}
 
+		private function cleanupCallback():void {
+			debug("cleanupCallback");
+			video.reset();
+		}
+
 		private function refreshCallback(opts:Object):void {
 			video.reset();
 			video.play(params.broadcastId); // TODO audio/video
diff --git a/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as b/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
index 14d8b0d..cd0a0e8 100644
--- a/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
+++ b/openmeetings-flash/src/main/flex/org/apache/openmeetings/OmVideo.as
@@ -268,8 +268,11 @@ public class OmVideo {
 				}
 			}
 			, sendVarsToMessageWithClient: function(obj:Object):void {
+				debug("sendVarsToMessageWithClient :: ", obj);
 				if ("copiedText" === obj[0]) {
 					ExternalInterface.call("Room.showClipboard", obj[1]);
+				} else if ("quit" === obj["message"]) {
+					reset();
 				}
 			}
 		};
@@ -330,6 +333,7 @@ public class OmVideo {
 	}
 
 	public function reset():void {
+		debug("reset:: ns ?== null " + (ns === null));
 		if (ns !== null) {
 			switch (mode) {
 				case PLAY:
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 9af5134..d808031 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -128,6 +128,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
 import org.apache.wicket.util.collections.ConcurrentHashSet;
 import org.apache.wicket.validation.validator.UrlValidator;
+import org.red5.server.api.scope.IScope;
 import org.slf4j.Logger;
 import org.springframework.web.context.WebApplicationContext;
 import org.wicketstuff.dashboard.WidgetRegistry;
@@ -625,8 +626,13 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 				}
 			}
 			if (_c instanceof Client) {
-				getBean(ScopeApplicationAdapter.class).dropSharing(_c, roomId);
+				ScopeApplicationAdapter scApp = getBean(ScopeApplicationAdapter.class);
+				scApp.dropSharing(_c, roomId);
 				Client c = (Client)_c;
+				IScope sc = scApp.getChildScope(String.valueOf(roomId));
+				for (String uid : c.getStreams()) {
+					scApp.sendMessageById("quit", uid, sc);
+				}
 				c.setRoom(null);
 				c.clear();
 				update(c);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/OmMenuItem.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/OmMenuItem.java
index 6cd6dad..d415bbc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/OmMenuItem.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/OmMenuItem.java
@@ -21,8 +21,9 @@ package org.apache.openmeetings.web.common.menu;
 import java.util.List;
 
 import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
+import com.googlecode.wicket.jquery.ui.widget.menu.MenuItem;
 
-public class OmMenuItem extends com.googlecode.wicket.jquery.ui.widget.menu.MenuItem {
+public class OmMenuItem extends MenuItem {
 	private static final long serialVersionUID = 1L;
 	private String desc;
 	private boolean top;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index f25ae26..8a0f212 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -722,13 +722,8 @@ public class RoomPanel extends BasePanel {
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
-		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(RoomPanel.class, "jquery.dialogextend.js"))));
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(interview ? INTERVIEWWB_JS_REFERENCE : WB_JS_REFERENCE)));
 		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(RoomPanel.class, "room.js"))));
-		if (interview) {
-			response.render(JavaScriptHeaderItem.forReference(INTERVIEWWB_JS_REFERENCE));
-		} else {
-			response.render(JavaScriptHeaderItem.forReference(WB_JS_REFERENCE));
-		}
 		if (room.isVisible()) {
 			response.render(OnDomReadyHeaderItem.forScript(roomEnter.getCallbackScript()));
 		}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js
index 4934780..8886af1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room-base.js
@@ -168,7 +168,7 @@ var Video = (function() {
 			vol.addClass('ui-state-error');
 			_handleMicStatus(false);
 		}
-		if (swf[0].setVolume !== undefined) {
+		if (typeof(swf[0].setVolume) === 'function') {
 			swf[0].setVolume(val);
 		}
 	}
@@ -337,7 +337,7 @@ var Video = (function() {
 		}
 		const name = _getName();
 		v.dialog('option', 'title', name).parent().find('.ui-dialog-titlebar').attr('title', name);
-		if (swf[0].update !== undefined) {
+		if (typeof(swf[0].update) === 'function') {
 			c.self ? swf[0].update() : swf[0].update(c);
 		}
 	}
@@ -355,10 +355,15 @@ var Video = (function() {
 		}
 	}
 	function _setRights(_r) {
-		if (swf[0].setRights !== undefined) {
+		if (typeof(swf[0].setRights) === 'function') {
 			swf[0].setRights(_r);
 		}
 	}
+	function _cleanup() {
+		if (typeof(swf[0].cleanup) === 'function') {
+			swf[0].cleanup();
+		}
+	}
 
 	self.update = _update;
 	self.refresh = _refresh;
@@ -368,6 +373,7 @@ var Video = (function() {
 	self.securityMode = _securityMode;
 	self.client = function() { return c; };
 	self.setRights = _setRights;
+	self.cleanup = _cleanup;
 	return self;
 });
 var VideoManager = (function() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-util.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-util.js
index 98364f5..aed7918 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-util.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-util.js
@@ -55,7 +55,7 @@ var ToolUtil = (function() {
 			}
 		}
 		, filter: function(_o, props) {
-			return props.reduce((result, key) => { result[key] = _o[key]; return result; }, {});
+			return props.reduce(function(result, key) { result[key] = _o[key]; return result; }, {});
 		}
 	};
 })();

-- 
To stop receiving notification emails like this one, please contact
solomax@apache.org.