diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-12-09 06:28:33 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-12-09 06:28:33 +0900 |
| commit | cf0e7d8c276aa8a8bff1260635a3007dc79465a1 (patch) | |
| tree | c57c53870c8cecfa5c99e9306da57a7ec0d75818 | |
| parent | 130add21e56360b008b8954c6284ad4149cfaf68 (diff) | |
internal/pipewire: reset per-roundtrip state once per call
This was left in consume when relocating per-roundtrip code out of the per-receive consume method.
Signed-off-by: Ophestra <cat@gensokyo.uk>
| -rw-r--r-- | internal/pipewire/pipewire.go | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/internal/pipewire/pipewire.go b/internal/pipewire/pipewire.go index 6270429e..ed6b0e91 100644 --- a/internal/pipewire/pipewire.go +++ b/internal/pipewire/pipewire.go @@ -63,7 +63,7 @@ type Context struct { generation Long // Pending file descriptors to be sent with the next message. pendingFiles []int - // File count kept track of in [Header]. + // File count already kept track of in [Header]. headerFiles int // Files from the server. This is discarded on every Roundtrip so eventProxy // implementations must make sure to close them to avoid leaking fds. @@ -585,6 +585,9 @@ func (ctx *Context) roundtrip() (err error) { if err = ctx.sendmsg(ctx.buf, ctx.pendingFiles...); err != nil { return } + ctx.buf = ctx.buf[:0] + ctx.pendingFiles = ctx.pendingFiles[:0] + ctx.headerFiles = 0 defer func() { var danglingFiles DanglingFilesError @@ -661,10 +664,6 @@ func (ctx *Context) consume(receiveRemaining []byte) (remaining []byte, err erro return }() - ctx.buf = ctx.buf[:0] - ctx.pendingFiles = ctx.pendingFiles[:0] - ctx.headerFiles = 0 - if remaining, err = ctx.recvmsg(receiveRemaining); err != nil { return } |
