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


Reply via email to