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