Fix: Seeking optimiert?

This commit is contained in:
Andre
2026-04-12 08:35:18 +02:00
parent c84b8e16fe
commit 77e74a5994
3 changed files with 30 additions and 7 deletions
+18
View File
@@ -15,6 +15,7 @@ export class MpvController {
private nextRequestId = 1
private pendingRequests = new Map<number, (value: unknown) => void>()
private propertyObservers = new Map<string, Set<(value: unknown) => void>>()
private eventObservers = new Map<string, Set<() => void>>()
constructor(private ipcPath: string) {}
@@ -61,6 +62,15 @@ export class MpvController {
})
}
onEvent(eventName: string, cb: () => void): void {
let observers = this.eventObservers.get(eventName)
if (!observers) {
observers = new Set()
this.eventObservers.set(eventName, observers)
}
observers.add(cb)
}
seek(seconds: number): void {
if (this.socket?.writable) {
this._send({ command: ['seek', seconds, 'relative'] })
@@ -107,6 +117,7 @@ export class MpvController {
this.buf = ''
this.pendingRequests.clear()
this.propertyObservers.clear()
this.eventObservers.clear()
}
private _send(msg: object): void {
@@ -152,6 +163,13 @@ export class MpvController {
for (const observer of observers) observer(msg.data)
}
}
if (typeof msg.event === 'string') {
const observers = this.eventObservers.get(msg.event)
if (observers) {
for (const observer of observers) observer()
}
}
} catch {
/* ignore malformed lines */
}