[OPENMEETINGS-2115] Activities are being cleaned up on Media flow stop
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 71f37d9..a9e10ec 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
@@ -492,8 +492,15 @@
final String uid = stream.getUid();
Client c = cm.getBySid(stream.getSid());
if (c != null) {
+ StreamDesc sd = c.getStream(uid);
c.removeStream(uid);
+ if (StreamType.WEBCAM == sd.getType()) {
+ for (Activity a : sd.getActivities()) {
+ c.remove(a);
+ }
+ }
cm.update(c);
+ WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.rightUpdated, c.getUid()));
}
streamByUid.remove(uid);
}
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
index b0bdcb9..71fa97d 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
@@ -530,8 +530,8 @@
return Client.this;
}
- private JSONArray getActivities() {
- return new JSONArray(new ArrayList<>(sactivities));
+ public List<Activity> getActivities() {
+ return List.copyOf(sactivities);
}
public JSONObject toJson() {
@@ -540,7 +540,7 @@
.put("type", type.name())
.put("width", swidth)
.put("height", sheight)
- .put("activities", getActivities())
+ .put("activities", new JSONArray(sactivities))
.put("cuid", uid));
}