aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-12-09 06:28:33 +0900
committerOphestra <cat@gensokyo.uk>2025-12-09 06:28:33 +0900
commitcf0e7d8c276aa8a8bff1260635a3007dc79465a1 (patch)
treec57c53870c8cecfa5c99e9306da57a7ec0d75818
parent130add21e56360b008b8954c6284ad4149cfaf68 (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.go9
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
}