fix(client): fix smart speed seek race conditions and network buffering stall bugs

This commit is contained in:
Jonathan Baldie 2026-05-01 22:47:42 +01:00
parent 902d2448e1
commit 42a1a82e8a
2 changed files with 24 additions and 0 deletions

View file

@ -57,6 +57,8 @@ export default class LocalAudioPlayer extends EventEmitter {
this.player.addEventListener('error', this.evtError.bind(this))
this.player.addEventListener('loadedmetadata', this.evtLoadedMetadata.bind(this))
this.player.addEventListener('timeupdate', this.evtTimeupdate.bind(this))
this.player.addEventListener('waiting', this.evtWaiting.bind(this))
this.player.addEventListener('playing', this.evtPlaying.bind(this))
var mimeTypes = [
'audio/flac',
@ -213,6 +215,18 @@ export default class LocalAudioPlayer extends EventEmitter {
}
}
evtWaiting() {
if (this.audioContext && this.audioContext.state === 'running') {
this.audioContext.suspend()
}
}
evtPlaying() {
if (this.audioContext && this.audioContext.state === 'suspended') {
this.audioContext.resume()
}
}
destroy() {
this.destroySilenceDetector()
this.destroyHlsInstance()
@ -421,6 +435,11 @@ export default class LocalAudioPlayer extends EventEmitter {
var mappedTime = time
if (this.silenceDetectorNode) {
this.silenceDetectorNode.port.postMessage({ type: 'reset' })
this._silenceStartTime = null
}
this.silenceMap.reset()
this.updateSmartSpeedRegions()
this.playWhenReady = playWhenReady