Add _attachments to Audio and Video Track for Safari support

This commit is contained in:
Dario Blanco
2018-09-20 05:32:28 +02:00
parent c65266a226
commit 1955d1d176
2 changed files with 13 additions and 1 deletions
+8
View File
@@ -39,6 +39,10 @@ export class AudioTrack extends Track {
kind: 'audio';
mediaStreamTrack: MediaStreamTrack;
// Required for Safari if you want to detach without errors
// See: https://github.com/twilio/twilio-video.js/issues/294#issuecomment-389708981
_attachments?: HTMLMediaElement[];
attach(element?: HTMLMediaElement | string): HTMLMediaElement;
detach(element?: HTMLMediaElement | string): HTMLMediaElement[];
}
@@ -433,6 +437,10 @@ export class VideoTrack extends Track {
kind: 'video';
mediaStreamTrack: MediaStreamTrack;
// Required for Safari if you want to detach without errors
// See: https://github.com/twilio/twilio-video.js/issues/294#issuecomment-389708981
_attachments?: HTMLMediaElement[];
attach(element?: HTMLMediaElement | string): HTMLVideoElement;
detach(element?: HTMLMediaElement | string): HTMLMediaElement[];
}
+5 -1
View File
@@ -63,10 +63,14 @@ function trackSubscribed(track: Video.VideoTrack | Video.AudioTrack) {
function trackUnsubscribed(track: Video.VideoTrack | Video.AudioTrack) {
track.detach().forEach(element => element.remove());
// Alternative if Safari crashes when detaching tracks
track._attachments!.forEach((detachedElement) => detachedElement.remove());
}
function insertDomElement(element: any) {
function insertDomElement(element: HTMLMediaElement) {
// Do something with the dom element
document.createElement('div');
element.appendChild(element);
}
initRoom();