Skip to content

Commit

Permalink
fix: waiting bug
Browse files Browse the repository at this point in the history
  • Loading branch information
luwes committed Jul 26, 2022
1 parent c58742d commit d4a3eb8
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 8 deletions.
4 changes: 4 additions & 0 deletions examples/index.html
Expand Up @@ -64,6 +64,10 @@ <h1>Syncing Language Audio</h1>
console.log(e.type);
});

controller.addEventListener('waiting', (e) => {
console.log(e.type);
});

playbtn.onclick = () => {
if (controller.playbackState === 'waiting') {
controller.play()
Expand Down
4 changes: 4 additions & 0 deletions examples/sign-language.html
Expand Up @@ -110,6 +110,10 @@ <h1>Sign Language (ASL)</h1>
console.log(e.type);
});

controller.addEventListener('waiting', (e) => {
console.log(e.type);
});

playbtn.onclick = async () => {
if (controller.playbackState === 'waiting') {
controller.play();
Expand Down
27 changes: 19 additions & 8 deletions src/media-group-controller.ts
Expand Up @@ -97,7 +97,10 @@ export class MediaGroupController extends EventTarget {
if (media !== this.#baseMedia) {
if (!this.#promises.currentTime) {
const diff = Math.abs(this.currentTime - media.currentTime);
if (diff > (toNumberOrUndefined(media.dataset.groupSeekPrecision) ?? 0.5)) {
if (
diff >
(toNumberOrUndefined(media.dataset.groupSeekPrecision) ?? 0.5)
) {
this.currentTime = media.currentTime;
}
}
Expand All @@ -119,15 +122,20 @@ export class MediaGroupController extends EventTarget {
this.#prevPlaybackRate = this.playbackRate;
this.playbackRate = 0;
this.dispatchEvent(new Event('waiting'));

const interval = setInterval(() => {
if (
this.#prevPlaybackRate != null &&
this.#mediaList.every((media) => media.readyState >= 3)
) {
clearInterval(interval);
this.playbackRate = this.#prevPlaybackRate;
this.#prevPlaybackRate = undefined;
}
}, 100);
},
progress: () => {
this.dispatchEvent(new Event('progress'));
if (this.#prevPlaybackRate == null) return;

if (this.#mediaList.every((media) => media.readyState >= 3)) {
this.playbackRate = this.#prevPlaybackRate
this.#prevPlaybackRate = undefined;
}
},
volumechange: ({ currentTarget }) => {
if (currentTarget !== this.#baseMedia) return;
Expand Down Expand Up @@ -298,7 +306,10 @@ export class MediaGroupController extends EventTarget {
return;
}

if (sourcePlaybackRate > 0 && child.playbackRate != sourcePlaybackRate) {
if (
sourcePlaybackRate > 0 &&
child.playbackRate != sourcePlaybackRate
) {
child.playbackRate = sourcePlaybackRate;
}

Expand Down

1 comment on commit d4a3eb8

@vercel
Copy link

@vercel vercel bot commented on d4a3eb8 Jul 26, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

media-group – ./

media-group-git-main-luwes.vercel.app
media-group.vercel.app
media-group-luwes.vercel.app

Please sign in to comment.