aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pipewire
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-11-27 01:52:13 +0900
committerOphestra <cat@gensokyo.uk>2025-11-27 01:52:13 +0900
commit563b5e66fc0dfe0abc4a4b8c96f0f89ef71c3422 (patch)
treefc6d1bca6f9fcd9f3b0e4ded5a852c7e9fc9f3c8 /internal/pipewire
parent2edcfe1e68078c467d12a04aff2fc1e45cb6dff2 (diff)
internal/pipewire: simplify spa_dict appends
This change uses the (somewhat) newly exposed MarshalAppend which improves readability. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pipewire')
-rw-r--r--internal/pipewire/pod.go26
1 files changed, 11 insertions, 15 deletions
diff --git a/internal/pipewire/pod.go b/internal/pipewire/pod.go
index 9205049d..97ba4d07 100644
--- a/internal/pipewire/pod.go
+++ b/internal/pipewire/pod.go
@@ -441,30 +441,26 @@ type SPADict struct {
Items []SPADictItem
}
+// MarshalPOD satisfies [PODMarshaler] as [SPADict] violates the POD type system.
func (d *SPADict) MarshalPOD() ([]byte, error) {
- return appendInner(nil, func(data []byte) ([]byte, error) {
- data = binary.NativeEndian.AppendUint32(data, SPA_TYPE_Struct)
- if extraData, err := Marshal(d.NItems); err != nil {
- return data, err
- } else {
- data = append(data, extraData...)
+ return appendInner(nil, func(dataPrefix []byte) (data []byte, err error) {
+ data = binary.NativeEndian.AppendUint32(dataPrefix, SPA_TYPE_Struct)
+ if data, err = MarshalAppend(data, d.NItems); err != nil {
+ return
}
for i := range d.Items {
- if extraData, err := Marshal(d.Items[i].Key); err != nil {
- return data, err
- } else {
- data = append(data, extraData...)
+ if data, err = MarshalAppend(data, d.Items[i].Key); err != nil {
+ return
}
- if extraData, err := Marshal(d.Items[i].Value); err != nil {
- return data, err
- } else {
- data = append(data, extraData...)
+ if data, err = MarshalAppend(data, d.Items[i].Value); err != nil {
+ return
}
}
- return data, nil
+ return
})
}
+// UnmarshalPOD satisfies [PODUnmarshaler] as [SPADict] violates the POD type system.
func (d *SPADict) UnmarshalPOD(data []byte) (Word, error) {
var wireSize Word
if err := unmarshalCheckTypeBounds(&data, SPA_TYPE_Struct, &wireSize); err != nil {