From 9adfa2872270520da901bcdb50957183321901cf Mon Sep 17 00:00:00 2001 From: Paul Konstantin Gerke Date: Sun, 17 Sep 2023 00:11:36 +0200 Subject: [PATCH] Add cleanup watchdog for fast-skipping of video --- web/pixi_interface.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/web/pixi_interface.py b/web/pixi_interface.py index 0f39ca9..5b8281e 100644 --- a/web/pixi_interface.py +++ b/web/pixi_interface.py @@ -125,11 +125,13 @@ def _instvid__start_clicked(self): self.pixi.stage.removeChild(self._instvid__play_container) self._instvid__video = PIXI.Texture.js_from(VIDEO_URL) - self._instvid__video_sprite = do_new( + video_sprite = self._instvid__video_sprite = do_new( PIXI.Sprite, self._instvid__video, {} ) + video_source = video_sprite.texture.baseTexture.resource.source + self._instvid__video_sprite.width = 800 self._instvid__video_sprite.height = 800 / 16 * 9 self._instvid__video_sprite.anchor = pixipt(0.5, 0.5) @@ -137,7 +139,17 @@ def _instvid__start_clicked(self): self.pixi.stage.addChild(self._instvid__video_sprite) - self._instvid__video_sprite.texture.baseTexture.resource.source.addEventListener( + # When playback start is delayed a _lot_ we might still need to clean things + # up because someone clicked "skip" before playback even started + + def watchdog_cleanup(): + if self._instvid__video_sprite is None: + window.clearInterval(interval_id) + video_source.pause() + + interval_id = window.setInterval(watchdog_cleanup, 100) + + video_source.addEventListener( "ended", self._instvid__cleanup ) self.pixi.stage.addChild(self._instvid__skip_container)