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 1b7c2b2 [OPENMEETINGS-2023] initial working version
1b7c2b2 is described below
commit 1b7c2b2b9691968535a22204d3fc0e471a2fa4aa
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Mon Mar 4 22:50:00 2019 +0700
[OPENMEETINGS-2023] initial working version
---
.../openmeetings/core/remote/StreamProcessor.java | 41 +++++++++++++++++-----
.../apache/openmeetings/web/room/RoomPanel.java | 11 ++++--
2 files changed, 41 insertions(+), 11 deletions(-)
diff --git
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
index abb4bef..6314592 100644
---
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
+++
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
@@ -216,19 +216,44 @@ public class StreamProcessor implements IStreamProcessor {
.put("stream", sd.toJson())
.put(PARAM_ICE,
kHandler.getTurnServers(false)));
} else {
- //constraints were changed
- c.getStreams().stream()
- .filter(sd -> StreamType.WEBCAM ==
sd.getType())
- .findFirst()
- .ifPresent(sd -> {
- sd.setActivities();
- cm.update(c);
- });
+ constraintsChanged(c);
WebSocketHelper.sendRoom(new
TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.rightUpdated, c.getUid()));
}
}
}
+ private void constraintsChanged(Client c) {
+ //constraints were changed
+ c.getStreams().stream()
+ .filter(sd -> StreamType.WEBCAM == sd.getType())
+ .findFirst()
+ .ifPresent(sd -> {
+ sd.setActivities();
+ cm.update(c);
+ });
+ }
+
+ public void rightsUpdated(Client c) {
+ Optional<StreamDesc> osd = c.getScreenStream();
+ if (osd.isPresent() && !hasRightsToShare(c)) {
+ stopSharing(c, osd.get().getUid());
+ }
+ if (isBroadcasting(c)) {
+ constraintsChanged(c);
+ } else {
+ c.getStreams().stream()
+ .filter(sd -> StreamType.WEBCAM == sd.getType())
+ .forEach(sd -> {
+ KStream stream =
streamByUid.get(sd.getUid());
+ if (stream != null) {
+ KRoom room =
kHandler.getRoom(c.getRoomId());
+ room.onStopBroadcast(stream,
this);
+ }
+ });
+ }
+ WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c,
RoomMessage.Type.rightUpdated, c.getUid()));
+ }
+
private void checkStreams(Long roomId) {
if (!kHandler.isConnected()) {
return;
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 e267abd..7c1851e 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
@@ -666,7 +666,7 @@ public class RoomPanel extends BasePanel {
return;
} else {
// we found no-one we can ask, allow right
- broadcast(cm.update(getClient().allow(right)));
+
rightsUpdated(cm.update(getClient().allow(right)));
}
}
// ask
@@ -704,7 +704,7 @@ public class RoomPanel extends BasePanel {
}
public void allowRight(Client client, Right... rights) {
- broadcast(client.allow(rights));
+ rightsUpdated(client.allow(rights));
}
public void denyRight(Client client, Right... rights) {
@@ -717,7 +717,12 @@ public class RoomPanel extends BasePanel {
if (client.hasActivity(Client.Activity.VIDEO) &&
!client.hasRight(Right.video)) {
client.remove(Client.Activity.VIDEO);
}
- broadcast(client);
+ rightsUpdated(client);
+ }
+
+ public void rightsUpdated(Client c) {
+ cm.update(c);
+ streamProcessor.rightsUpdated(c);
}
public void broadcast(Client client) {