chore: Properly close usermedia/screen stream for 1v1/group calls.
This commit is contained in:
parent
4a5cf7d55d
commit
df426e763a
|
|
@ -84,10 +84,10 @@ class WrappedMediaStream {
|
||||||
renderer.srcObject = null;
|
renderer.srcObject = null;
|
||||||
if (isLocal()) {
|
if (isLocal()) {
|
||||||
if (isWeb) {
|
if (isWeb) {
|
||||||
await stream?.dispose();
|
await stopMediaStream(stream);
|
||||||
} else {
|
} else {
|
||||||
if (!isGroupCall) {
|
if (!isGroupCall) {
|
||||||
await stream?.dispose();
|
await stopMediaStream(stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -614,7 +614,7 @@ class GroupCall {
|
||||||
calls.forEach((call) {
|
calls.forEach((call) {
|
||||||
call.removeLocalStream(call.localScreenSharingStream!);
|
call.removeLocalStream(call.localScreenSharingStream!);
|
||||||
});
|
});
|
||||||
stopMediaStream(localScreenshareStream!.stream);
|
await stopMediaStream(localScreenshareStream?.stream);
|
||||||
removeScreenshareStream(localScreenshareStream!);
|
removeScreenshareStream(localScreenshareStream!);
|
||||||
localScreenshareStream = null;
|
localScreenshareStream = null;
|
||||||
localDesktopCapturerSourceId = null;
|
localDesktopCapturerSourceId = null;
|
||||||
|
|
@ -1094,8 +1094,8 @@ class GroupCall {
|
||||||
onStreamRemoved.add(stream);
|
onStreamRemoved.add(stream);
|
||||||
|
|
||||||
if (stream.isLocal()) {
|
if (stream.isLocal()) {
|
||||||
stream?.disposeRenderer();
|
stream.disposeRenderer();
|
||||||
stream?.stream?.dispose();
|
stopMediaStream(stream.stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
onGroupCallEvent.add(GroupCallEvent.UserMediaStreamsChanged);
|
onGroupCallEvent.add(GroupCallEvent.UserMediaStreamsChanged);
|
||||||
|
|
@ -1186,7 +1186,10 @@ class GroupCall {
|
||||||
|
|
||||||
onStreamRemoved.add(stream);
|
onStreamRemoved.add(stream);
|
||||||
|
|
||||||
stream.dispose();
|
if (stream.isLocal()) {
|
||||||
|
stream.disposeRenderer();
|
||||||
|
stopMediaStream(stream.stream);
|
||||||
|
}
|
||||||
|
|
||||||
onGroupCallEvent.add(GroupCallEvent.ScreenshareStreamsChanged);
|
onGroupCallEvent.add(GroupCallEvent.ScreenshareStreamsChanged);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
import 'package:random_string/random_string.dart';
|
import 'package:random_string/random_string.dart';
|
||||||
import 'package:webrtc_interface/webrtc_interface.dart';
|
import 'package:webrtc_interface/webrtc_interface.dart';
|
||||||
|
|
||||||
void stopMediaStream(MediaStream? stream) async {
|
Future<void> stopMediaStream(MediaStream? stream) async {
|
||||||
stream?.getTracks().forEach((element) async {
|
stream?.getTracks().forEach((element) async {
|
||||||
await element.stop();
|
await element.stop();
|
||||||
});
|
});
|
||||||
|
await stream?.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
void setTracksEnabled(List<MediaStreamTrack> tracks, bool enabled) {
|
void setTracksEnabled(List<MediaStreamTrack> tracks, bool enabled) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue