From 8cdd659239654aa2c18e392d5cde3c31da069b98 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Sun, 7 Dec 2025 17:07:30 +0900 Subject: [PATCH] internal/pipewire: seq access method for consume This improves readability as the offset is not immediately obvious. Signed-off-by: Ophestra --- internal/pipewire/client_test.go | 3 ++- internal/pipewire/core.go | 2 +- internal/pipewire/core_test.go | 3 ++- internal/pipewire/pipewire.go | 4 ++++ internal/pipewire/pipewire_test.go | 5 +++-- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/internal/pipewire/client_test.go b/internal/pipewire/client_test.go index 9b0879c..dbae43a 100644 --- a/internal/pipewire/client_test.go +++ b/internal/pipewire/client_test.go @@ -112,7 +112,8 @@ func TestClientInfo(t *testing.T) { {Key: "settings.check-rate", Value: "false"}, {Key: pipewire.PW_KEY_CORE_VERSION, Value: "1.4.7"}, {Key: pipewire.PW_KEY_ACCESS, Value: "unrestricted"}, - }}, nil}, + }, + }, nil}, }.run(t) } diff --git a/internal/pipewire/core.go b/internal/pipewire/core.go index 18d664e..a6d4725 100644 --- a/internal/pipewire/core.go +++ b/internal/pipewire/core.go @@ -634,7 +634,7 @@ func (core *Core) consume(opcode byte, files []int, unmarshal func(v any)) error case PW_CORE_EVENT_DONE: var done CoreDone unmarshal(&done) - if done.ID == roundtripSyncID && done.Sequence == CoreSyncSequenceOffset+core.ctx.sequence-1 { + if done.ID == roundtripSyncID && done.Sequence == CoreSyncSequenceOffset+core.ctx.currentSeq() { if core.done { return ErrUnexpectedDone } diff --git a/internal/pipewire/core_test.go b/internal/pipewire/core_test.go index 1df4347..a6b6729 100644 --- a/internal/pipewire/core_test.go +++ b/internal/pipewire/core_test.go @@ -209,7 +209,8 @@ func TestCoreBoundProps(t *testing.T) { {Key: pipewire.PW_KEY_SEC_PID, Value: "1443"}, {Key: pipewire.PW_KEY_SEC_UID, Value: "1000"}, {Key: pipewire.PW_KEY_SEC_GID, Value: "100"}, - {Key: pipewire.PW_KEY_SEC_SOCKET, Value: "pipewire-0-manager"}}, + {Key: pipewire.PW_KEY_SEC_SOCKET, Value: "pipewire-0-manager"}, + }, }, nil}, /* recvmsg 1 */ diff --git a/internal/pipewire/pipewire.go b/internal/pipewire/pipewire.go index 59ce7c5..db56683 100644 --- a/internal/pipewire/pipewire.go +++ b/internal/pipewire/pipewire.go @@ -628,6 +628,10 @@ func (ctx *Context) roundtrip() (err error) { } } +// currentSeq returns the current sequence number. +// This must only be called from eventProxy.consume. +func (ctx *Context) currentSeq() Int { return ctx.sequence - 1 } + // currentRemoteSeq returns the current remote sequence number. // This must only be called from eventProxy.consume. func (ctx *Context) currentRemoteSeq() Int { return ctx.remoteSequence - 1 } diff --git a/internal/pipewire/pipewire_test.go b/internal/pipewire/pipewire_test.go index fbe1571..535bac0 100644 --- a/internal/pipewire/pipewire_test.go +++ b/internal/pipewire/pipewire_test.go @@ -78,7 +78,7 @@ func TestContext(t *testing.T) { } wantCoreInfo0 := pipewire.CoreInfo{ - ID: 0, + ID: pipewire.PW_ID_CORE, Cookie: -2069267610, UserName: "alice", HostName: "nixos", @@ -116,7 +116,8 @@ func TestContext(t *testing.T) { {Key: "settings.check-quantum", Value: "false"}, {Key: "settings.check-rate", Value: "false"}, {Key: pipewire.PW_KEY_OBJECT_ID, Value: "0"}, - {Key: pipewire.PW_KEY_OBJECT_SERIAL, Value: "0"}}, + {Key: pipewire.PW_KEY_OBJECT_SERIAL, Value: "0"}, + }, } wantClient0 := pipewire.Client{