diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/pre-join/pre-join.component.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/pre-join/pre-join.component.ts index 6e73c162..667adc46 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/pre-join/pre-join.component.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/pre-join/pre-join.component.ts @@ -79,7 +79,6 @@ export class PreJoinComponent implements OnInit, OnDestroy { if (this.screenShareStateSubscription) { this.screenShareStateSubscription.unsubscribe(); } - this.deviceSrv.clear(); } async onCameraSelected(event: any) { diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/videoconference/videoconference.component.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/videoconference/videoconference.component.ts index 4b1994aa..60386dd6 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/components/videoconference/videoconference.component.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/components/videoconference/videoconference.component.ts @@ -359,6 +359,8 @@ export class VideoconferenceComponent implements OnInit, OnDestroy, AfterViewIni ngOnDestroy(): void { if (this.prejoinSub) this.prejoinSub.unsubscribe(); if (this.participantNameSub) this.participantNameSub.unsubscribe(); + this.deviceSrv.clear(); + this.openviduService.clear(); } /** diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts index f6c78d8a..42746dfd 100644 --- a/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/services/openvidu/openvidu.service.ts @@ -60,6 +60,16 @@ export class OpenViduService { } } + /** + * @internal + */ + clear() { + this.videoSource = undefined; + this.audioSource = undefined; + this.stopTracks(this.participantService.getMyCameraPublisher()?.stream?.getMediaStream()); + this.stopTracks(this.participantService.getMyScreenPublisher()?.stream?.getMediaStream()); + } + /** * * Returns the local Session. See {@link https://docs.openvidu.io/en/stable/api/openvidu-browser/classes/Session.html Session} object. @@ -130,10 +140,6 @@ export class OpenViduService { disconnect() { this.disconnectSession(this.webcamSession); this.disconnectSession(this.screenSession); - this.videoSource = undefined; - this.audioSource = undefined; - // this.stopTracks(this.participantService.getMyCameraPublisher()?.stream?.getMediaStream()); - // this.stopTracks(this.participantService.getMyScreenPublisher()?.stream?.getMediaStream()); } /** @@ -567,11 +573,11 @@ export class OpenViduService { } } - // private stopTracks(mediaStream: MediaStream) { - // if (mediaStream) { - // mediaStream?.getAudioTracks().forEach((track) => track.stop()); - // mediaStream?.getVideoTracks().forEach((track) => track.stop()); - // // this.webcamMediaStream?.getAudioTracks().forEach((track) => track.stop()); - // } - // } + private stopTracks(mediaStream: MediaStream) { + if (mediaStream) { + mediaStream?.getAudioTracks().forEach((track) => track.stop()); + mediaStream?.getVideoTracks().forEach((track) => track.stop()); + // this.webcamMediaStream?.getAudioTracks().forEach((track) => track.stop()); + } + } }