mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-03-11 22:15:35 +00:00
fix: w2g stutters
This commit is contained in:
parent
1cb234a368
commit
9b2df7646b
3 changed files with 17 additions and 5 deletions
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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'} />
|
||||
|
|
|
|||
|
|
@ -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': {
|
||||
|
|
|
|||
Loading…
Reference in a new issue