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());
}