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/03/10 05:28:43 UTC

svn commit: r1786290 - in /openmeetings/application: branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ branches/3.2.x/openmeeting...

Author: solomax
Date: Fri Mar 10 05:28:43 2017
New Revision: 1786290

URL: http://svn.apache.org/viewvc?rev=1786290&view=rev
Log:
[OPENMEETINGS-1595] video on/off should work better

Modified:
    openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
    openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/video/baseVideoObject.lzx
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
    openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
    openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java

Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java?rev=1786290&r1=1786289&r2=1786290&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java Fri Mar 10 05:28:43 2017
@@ -477,7 +477,7 @@ public class WhiteBoardService implement
 				log.debug("scope " + scope);
 
 				if (numberOfInitial == 0 && scope != null) {
-					scopeAdapter.sendMessageToCurrentScope("sendSyncCompleteFlag", wSyncLockObject, false);
+					scopeAdapter.sendMessageToCurrentScope("" + roomId, "sendSyncCompleteFlag", wSyncLockObject, false);
 				}
 
 				// Check Image Loaders
@@ -493,7 +493,7 @@ public class WhiteBoardService implement
 				int numberOfImageLoaders = wbListManager.getWhiteBoardObjectSyncListByRoomid(roomId).size();
 
 				if (numberOfImageLoaders == 0 && scope != null) {
-					scopeAdapter.sendMessageToCurrentScope("sendImagesSyncCompleteFlag", new Object[] { "remove" }, true);
+					scopeAdapter.sendMessageToCurrentScope("" + roomId, "sendImagesSyncCompleteFlag", new Object[] { "remove" }, true);
 				}
 			}
 		} catch (Exception err) {

Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1786290&r1=1786289&r2=1786290&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Fri Mar 10 05:28:43 2017
@@ -1489,12 +1489,16 @@ public class ScopeApplicationAdapter ext
 		sendMessageToCurrentScope(remoteMethodName, newMessage, sendSelf, false);
 	}
 
+	public void sendMessageToCurrentScope(String scopeName, String remoteMethodName, Object newMessage, boolean sendSelf) {
+		sendMessageToCurrentScope(scopeName, remoteMethodName, newMessage, sendSelf, false);
+	}
+
 	public void sendToScope(final Long roomId, String method, Object obj) {
 		new MessageSender(getRoomScope("" + roomId), method, obj, this) {
 			@Override
 			public boolean filter(IConnection conn) {
 				Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
-				return rcl.isScreenClient()
+				return rcl == null || rcl.isScreenClient()
 						|| rcl.getRoomId() == null || !rcl.getRoomId().equals(roomId) || userDao.get(rcl.getUserId()) == null;
 			}
 		}.start();
@@ -1530,7 +1534,16 @@ public class ScopeApplicationAdapter ext
 	 * @param sendScreen send to the current client as well
 	 */
 	public void sendMessageToCurrentScope(final String remoteMethodName, final Object newMessage, final boolean sendSelf, final boolean sendScreen) {
-		new MessageSender(remoteMethodName, newMessage, this) {
+		IConnection conn = Red5.getConnectionLocal();
+		if (conn == null) {
+			log.warn(String.format("[sendMessageToCurrentScope] -> 'Unable to send message using NULL connection' %s, %s", remoteMethodName, newMessage));
+			return;
+		}
+		sendMessageToCurrentScope(conn.getScope().getName(), remoteMethodName, newMessage, sendSelf, sendScreen);
+	}
+
+	public void sendMessageToCurrentScope(final String scopeName, final String remoteMethodName, final Object newMessage, final boolean sendSelf, final boolean sendScreen) {
+		new MessageSender(getRoomScope(scopeName), remoteMethodName, newMessage, this) {
 			@Override
 			public boolean filter(IConnection conn) {
 				IClient client = conn.getClient();

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx?rev=1786290&r1=1786289&r2=1786290&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/commonVideoViewContentSWF10.lzx Fri Mar 10 05:28:43 2017
@@ -770,6 +770,7 @@
 		if ('n' != settings) {
 			var videoWindow = getVideoObjectByPublicSID(canvas.publicSID);
 			if (videoWindow != null && videoEnabled(settings) && videoEnabled(videoWindow.clientVars.avsettings)) {
+				// audio on/off with video enabled
 				var videoview = videoWindow._chatvideoinner._videostream;
 				if (settings == 'av' && videoWindow.clientVars.avsettings == 'v') {
 					videoview.muteMicro(false);

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/video/baseVideoObject.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/video/baseVideoObject.lzx?rev=1786290&r1=1786289&r2=1786290&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/video/baseVideoObject.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/video/baseVideoObject.lzx Fri Mar 10 05:28:43 2017
@@ -203,7 +203,7 @@
 		<method name="updateAVSettingsSymbol" args="rcl">
 		<![CDATA[
 			//FIXME: Set a Symbol whereve this Client is Audio(only)/Video(only), both or Profile Picture
-			if ($debug) Debug.warn("updateAVSettingsSymbol TODO ",rcl);
+			if ($debug) Debug.warn("updateAVSettingsSymbol TODO ", rcl, this);
 			switch (rcl.avsettings) {
 				case "av":
 					this.setDefaultVideoSize(rcl.VWidth, rcl.VHeight);
@@ -213,6 +213,7 @@
 					if(!canvas.isInterview && this.minimized) {
 						this.reminimize();
 					}
+					this.deleteVideoConfProfilePic();
 					break;
 				case "a":
 					this.setAttribute("visible", true);
@@ -231,6 +232,7 @@
 					if(!canvas.isInterview && this.minimized) {
 						this.reminimize();
 					}
+					this.deleteVideoConfProfilePic();
 					break;
 				case "n":
 					if ($debug) Debug.write("Do not Publish A/V");

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1786290&r1=1786289&r2=1786290&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java Fri Mar 10 05:28:43 2017
@@ -259,6 +259,14 @@ public class Application extends Authent
 		}
 	}
 
+	private static boolean hasVideo(org.apache.openmeetings.db.entity.room.Client rcl) {
+		return rcl != null && rcl.getAvsettings().contains("v");
+	}
+
+	private static boolean hasVideo(Client c) {
+		return c != null && c.hasActivity(Activity.broadcastV);
+	}
+
 	@Override
 	public org.apache.openmeetings.db.entity.room.Client updateClient(org.apache.openmeetings.db.entity.room.Client rcl, boolean forceSize) {
 		if (rcl == null) {
@@ -306,7 +314,7 @@ public class Application extends Authent
 				if (client.hasActivity(Activity.broadcastV)) {
 					sb.append('v');
 				}
-				if (!rcl.getIsBroadcasting()) {
+				if (!rcl.getIsBroadcasting() || hasVideo(rcl) != hasVideo(client)) {
 					rcl.setIsBroadcasting(true);
 					rcl.setBroadCastID(ScopeApplicationAdapter.nextBroadCastId());
 				}

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java?rev=1786290&r1=1786289&r2=1786290&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java Fri Mar 10 05:28:43 2017
@@ -477,7 +477,7 @@ public class WhiteBoardService implement
 				log.debug("scope " + scope);
 
 				if (numberOfInitial == 0 && scope != null) {
-					scopeAdapter.sendMessageToCurrentScope("sendSyncCompleteFlag", wSyncLockObject, false);
+					scopeAdapter.sendMessageToCurrentScope("" + roomId, "sendSyncCompleteFlag", wSyncLockObject, false);
 				}
 
 				// Check Image Loaders
@@ -493,7 +493,7 @@ public class WhiteBoardService implement
 				int numberOfImageLoaders = wbListManager.getWhiteBoardObjectSyncListByRoomid(roomId).size();
 
 				if (numberOfImageLoaders == 0 && scope != null) {
-					scopeAdapter.sendMessageToCurrentScope("sendImagesSyncCompleteFlag", new Object[] { "remove" }, true);
+					scopeAdapter.sendMessageToCurrentScope("" + roomId, "sendImagesSyncCompleteFlag", new Object[] { "remove" }, true);
 				}
 			}
 		} catch (Exception err) {

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1786290&r1=1786289&r2=1786290&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Fri Mar 10 05:28:43 2017
@@ -1489,12 +1489,16 @@ public class ScopeApplicationAdapter ext
 		sendMessageToCurrentScope(remoteMethodName, newMessage, sendSelf, false);
 	}
 
+	public void sendMessageToCurrentScope(String scopeName, String remoteMethodName, Object newMessage, boolean sendSelf) {
+		sendMessageToCurrentScope(scopeName, remoteMethodName, newMessage, sendSelf, false);
+	}
+
 	public void sendToScope(final Long roomId, String method, Object obj) {
 		new MessageSender(getRoomScope("" + roomId), method, obj, this) {
 			@Override
 			public boolean filter(IConnection conn) {
 				Client rcl = sessionManager.getClientByStreamId(conn.getClient().getId(), null);
-				return rcl.isScreenClient()
+				return rcl == null || rcl.isScreenClient()
 						|| rcl.getRoomId() == null || !rcl.getRoomId().equals(roomId) || userDao.get(rcl.getUserId()) == null;
 			}
 		}.start();
@@ -1530,7 +1534,16 @@ public class ScopeApplicationAdapter ext
 	 * @param sendScreen send to the current client as well
 	 */
 	public void sendMessageToCurrentScope(final String remoteMethodName, final Object newMessage, final boolean sendSelf, final boolean sendScreen) {
-		new MessageSender(remoteMethodName, newMessage, this) {
+		IConnection conn = Red5.getConnectionLocal();
+		if (conn == null) {
+			log.warn(String.format("[sendMessageToCurrentScope] -> 'Unable to send message using NULL connection' %s, %s", remoteMethodName, newMessage));
+			return;
+		}
+		sendMessageToCurrentScope(conn.getScope().getName(), remoteMethodName, newMessage, sendSelf, sendScreen);
+	}
+
+	public void sendMessageToCurrentScope(final String scopeName, final String remoteMethodName, final Object newMessage, final boolean sendSelf, final boolean sendScreen) {
+		new MessageSender(getRoomScope(scopeName), remoteMethodName, newMessage, this) {
 			@Override
 			public boolean filter(IConnection conn) {
 				IClient client = conn.getClient();

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1786290&r1=1786289&r2=1786290&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java Fri Mar 10 05:28:43 2017
@@ -259,6 +259,14 @@ public class Application extends Authent
 		}
 	}
 
+	private static boolean hasVideo(org.apache.openmeetings.db.entity.room.Client rcl) {
+		return rcl != null && rcl.getAvsettings().contains("v");
+	}
+
+	private static boolean hasVideo(Client c) {
+		return c != null && c.hasActivity(Activity.broadcastV);
+	}
+
 	@Override
 	public org.apache.openmeetings.db.entity.room.Client updateClient(org.apache.openmeetings.db.entity.room.Client rcl, boolean forceSize) {
 		if (rcl == null) {
@@ -306,7 +314,7 @@ public class Application extends Authent
 				if (client.hasActivity(Activity.broadcastV)) {
 					sb.append('v');
 				}
-				if (!rcl.getIsBroadcasting()) {
+				if (!rcl.getIsBroadcasting() || hasVideo(rcl) != hasVideo(client)) {
 					rcl.setIsBroadcasting(true);
 					rcl.setBroadCastID(ScopeApplicationAdapter.nextBroadCastId());
 				}