|
@@ -287,18 +287,57 @@ RTC.prototype.createRemoteTrack = function (event) {
|
287
|
287
|
|
288
|
288
|
/**
|
289
|
289
|
* Removes all JitsiRemoteTracks associated with given MUC nickname (resource
|
290
|
|
- * part of the JID).
|
291
|
|
- * @param resource the resource part of the MUC JID
|
292
|
|
- * @returns {JitsiRemoteTrack|null}
|
|
290
|
+ * part of the JID). Returns array of removed tracks.
|
|
291
|
+ *
|
|
292
|
+ * @param {string} resource - The resource part of the MUC JID.
|
|
293
|
+ * @returns {JitsiRemoteTrack[]}
|
293
|
294
|
*/
|
294
|
295
|
RTC.prototype.removeRemoteTracks = function (resource) {
|
295
|
|
- var remoteTracks = this.remoteTracks[resource];
|
|
296
|
+ var remoteTracksForResource = this.remoteTracks[resource];
|
|
297
|
+ var removedTracks = [];
|
|
298
|
+
|
|
299
|
+ if (remoteTracksForResource) {
|
|
300
|
+ for (var key in remoteTracksForResource) {
|
|
301
|
+ if (remoteTracksForResource.hasOwnProperty(key) &&
|
|
302
|
+ remoteTracksForResource[key]) {
|
|
303
|
+ var removedTrack = this.removeRemoteTrack(
|
|
304
|
+ resource, remoteTracksForResource[key]);
|
|
305
|
+
|
|
306
|
+ if (removedTrack) {
|
|
307
|
+ removedTracks.push(removedTrack);
|
|
308
|
+ }
|
|
309
|
+ }
|
|
310
|
+ }
|
296
|
311
|
|
297
|
|
- if(remoteTracks) {
|
298
|
|
- remoteTracks['audio'] && remoteTracks['audio'].dispose();
|
299
|
|
- remoteTracks['video'] && remoteTracks['video'].dispose();
|
300
|
312
|
delete this.remoteTracks[resource];
|
301
|
313
|
}
|
|
314
|
+
|
|
315
|
+ return removedTracks;
|
|
316
|
+};
|
|
317
|
+
|
|
318
|
+/**
|
|
319
|
+ * Removes specified JitsiRemoteTrack associated with given MUC nickname
|
|
320
|
+ * (resource part of the JID). Returns removed track if any.
|
|
321
|
+ *
|
|
322
|
+ * @param {string} resource - The resource part of the MUC JID.
|
|
323
|
+ * @param {JitsiRemoteTrack} track - Track to remove.
|
|
324
|
+ * @returns {JitsiRemoteTrack|undefined}
|
|
325
|
+ */
|
|
326
|
+RTC.prototype.removeRemoteTrack = function (resource, track) {
|
|
327
|
+ var remoteTracksForResource = this.remoteTracks[resource];
|
|
328
|
+
|
|
329
|
+ if (remoteTracksForResource) {
|
|
330
|
+ for (var key in remoteTracksForResource) {
|
|
331
|
+ if (remoteTracksForResource.hasOwnProperty(key) &&
|
|
332
|
+ remoteTracksForResource[key] &&
|
|
333
|
+ remoteTracksForResource[key] === track) {
|
|
334
|
+ remoteTracksForResource[key].dispose();
|
|
335
|
+ delete remoteTracksForResource[key];
|
|
336
|
+ return track;
|
|
337
|
+ }
|
|
338
|
+
|
|
339
|
+ }
|
|
340
|
+ }
|
302
|
341
|
};
|
303
|
342
|
|
304
|
343
|
RTC.getPCConstraints = function () {
|