fix: w2g stutters

This commit is contained in:
ThaUnknown 2025-06-15 17:18:09 +02:00
parent 1cb234a368
commit 9b2df7646b
No known key found for this signature in database
3 changed files with 17 additions and 5 deletions

View file

@ -1,6 +1,6 @@
{
"name": "ui",
"version": "6.3.58",
"version": "6.3.59",
"license": "BUSL-1.1",
"private": true,
"packageManager": "pnpm@9.14.4",

View file

@ -688,11 +688,13 @@
return { destroy: () => ctrl.abort() }
}
$: $w2globby?.playerStateChanged({ paused, time: Math.floor(currentTime) })
$: $w2globby?.on('player', state => {
function updateState (state: { paused: boolean, time: number }) {
currentTime = state.time
paused = state.paused
})
}
$: $w2globby?.playerStateChanged({ paused, time: Math.floor(currentTime) })
$: $w2globby?.on('player', updateState)
</script>
<svelte:document bind:fullscreenElement bind:visibilityState use:holdToFF={'key'} />

View file

@ -115,6 +115,16 @@ export class W2GClient extends EventEmitter<{index: [number], player: [PlayerSta
}
}
_remotePlayerStateChanged (state: PlayerState) {
debug(`_remotePlayerStateChanged: ${this.player.paused} ${state.paused} ${this.player.time} ${state.time}`)
if (!state) return false
// allow for 1s of error
if (Math.abs(this.player.time - state.time) > 2 || this.player.paused !== state.paused) {
this.player = state
return true
}
}
playerStateChanged (state: PlayerState) {
debug(`playerStateChanged: ${JSON.stringify(state)}`)
if (this._playerStateChanged(state)) this._sendToPeers(new Event('player', state))
@ -178,7 +188,7 @@ export class W2GClient extends EventEmitter<{index: [number], player: [PlayerSta
}
case 'player': {
if (data.payload?.time == null) break
if (this._playerStateChanged(data.payload)) this.emit('player', data.payload)
if (this._remotePlayerStateChanged(data.payload)) this.emit('player', data.payload)
break
}
case 'message': {