pipewire 1.2.5 and missing-field-initializers
- PipeWire version (
pipewire --version
): 1.2.5 - Distribution and distribution version (
PRETTY_NAME
from/etc/os-release
): openembedded - Desktop Environment: Gnome 47
- Kernel version (
uname -r
): 6.10
Description of Problem:
I see this if building kodi with pipewire 1.2.5 (gcc 14.2.0):
In file included from ../recipe-sysroot/usr/include/spa-0.2/spa/param/audio/format-utils.h:12, from ../git/xbmc/cores/AudioEngine/Sinks/pipewire/AESinkPipewire.cpp:25: ../recipe-sysroot/usr/include/spa-0.2/spa/pod/parser.h: In function 'void spa_pod_parser_init(spa_pod_parser*, const void*, uint32_t)': ../recipe-sysroot/usr/include/spa-0.2/spa/pod/parser.h:36:94: error: missing initializer for member 'spa_pod_parser_state::flags' [-Werror=missing-field-initializers] 36 | #define SPA_POD_PARSER_INIT(buffer,size) ((struct spa_pod_parser){ (buffer), (size), 0, {0} }) | ^ ../recipe-sysroot/usr/include/spa-0.2/spa/pod/parser.h:41:19: note: in expansion of macro 'SPA_POD_PARSER_INIT' 41 | parser = SPA_POD_PARSER_INIT(data, size); | ^~~~~~~~~~~~~~~~~~~ ../recipe-sysroot/usr/include/spa-0.2/spa/pod/parser.h:36:94: error: missing initializer for member 'spa_pod_parser_state::frame' [-Werror=missing-field-initializers] 36 | #define SPA_POD_PARSER_INIT(buffer,size) ((struct spa_pod_parser){ (buffer), (size), 0, {0} }) | ^ ../recipe-sysroot/usr/include/spa-0.2/spa/pod/parser.h:41:19: note: in expansion of macro 'SPA_POD_PARSER_INIT' 41 | parser = SPA_POD_PARSER_INIT(data, size); | ^~~~~~~~~~~~~~~~~~~ In file included from ../recipe-sysroot/usr/include/spa-0.2/spa/param/audio/format-utils.h:13: ../recipe-sysroot/usr/include/spa-0.2/spa/pod/builder.h: In function 'void spa_pod_builder_init(spa_pod_builder, void, uint32_t)': ../recipe-sysroot/usr/include/spa-0.2/spa/pod/builder.h:52:101: error: missing initializer for member 'spa_pod_builder_state::flags' [-Werror=missing-field-initializers] 52 | #define SPA_POD_BUILDER_INIT(buffer,size) ((struct spa_pod_builder){ (buffer), (size), 0, {0}, {0} }) | ^ ../recipe-sysroot/usr/include/spa-0.2/spa/pod/builder.h:79:20: note: in expansion of macro 'SPA_POD_BUILDER_INIT' 79 | *builder = SPA_POD_BUILDER_INIT(data, size); | ^~~~~~~~~~~~~~~~~~~~ ../recipe-sysroot/usr/include/spa-0.2/spa/pod/builder.h:52:101: error: missing initializer for member 'spa_pod_builder_state::frame' [-Werror=missing-field-initializers] 52 | #define SPA_POD_BUILDER_INIT(buffer,size) ((struct spa_pod_builder){ (buffer), (size), 0, {0}, {0} }) | ^ ../recipe-sysroot/usr/include/spa-0.2/spa/pod/builder.h:79:20: note: in expansion of macro 'SPA_POD_BUILDER_INIT' 79 | *builder = SPA_POD_BUILDER_INIT(data, size); | ^~~~~~~~~~~~~~~~~~~~ ../recipe-sysroot/usr/include/spa-0.2/spa/pod/builder.h:52:101: error: missing initializer for member 'spa_callbacks::data' [-Werror=missing-field-initializers] 52 | #define SPA_POD_BUILDER_INIT(buffer,size) ((struct spa_pod_builder){ (buffer), (size), 0, {0}, {0} }) | ^ ../recipe-sysroot/usr/include/spa-0.2/spa/pod/builder.h:79:20: note: in expansion of macro 'SPA_POD_BUILDER_INIT' 79 | *builder = SPA_POD_BUILDER_INIT(data, size); | ^~~~~~~~~~~~~~~~~~~~ ../git/xbmc/cores/AudioEngine/Sinks/pipewire/AESinkPipewire.cpp: In member function 'virtual bool AE::SINK::CAESinkPipewire::Initialize(AEAudioFormat&, std::string&)': ../recipe-sysroot/usr/include/spa-0.2/spa/pod/builder.h:52:101: error: missing initializer for member 'spa_pod_builder_state::flags' [-Werror=missing-field-initializers] 52 | #define SPA_POD_BUILDER_INIT(buffer,size) ((struct spa_pod_builder){ (buffer), (size), 0, {0}, {0} }) | ^ ../git/xbmc/cores/AudioEngine/Sinks/pipewire/AESinkPipewire.cpp:448:18: note: in expansion of macro 'SPA_POD_BUILDER_INIT' 448 | auto builder = SPA_POD_BUILDER_INIT(buffer.data(), buffer.size()); | ^~~~~~~~~~~~~~~~~~~~ ../recipe-sysroot/usr/include/spa-0.2/spa/pod/builder.h:52:101: error: missing initializer for member 'spa_pod_builder_state::frame' [-Werror=missing-field-initializers] 52 | #define SPA_POD_BUILDER_INIT(buffer,size) ((struct spa_pod_builder){ (buffer), (size), 0, {0}, {0} }) | ^ ../git/xbmc/cores/AudioEngine/Sinks/pipewire/AESinkPipewire.cpp:448:18: note: in expansion of macro 'SPA_POD_BUILDER_INIT' 448 | auto builder = SPA_POD_BUILDER_INIT(buffer.data(), buffer.size()); | ^~~~~~~~~~~~~~~~~~~~ ../recipe-sysroot/usr/include/spa-0.2/spa/pod/builder.h:52:101: error: missing initializer for member 'spa_callbacks::data' [-Werror=missing-field-initializers] 52 | #define SPA_POD_BUILDER_INIT(buffer,size) ((struct spa_pod_builder){ (buffer), (size), 0, {0}, {0} }) | ^ ../git/xbmc/cores/AudioEngine/Sinks/pipewire/AESinkPipewire.cpp:448:18: note: in expansion of macro 'SPA_POD_BUILDER_INIT' 448 | auto builder = SPA_POD_BUILDER_INIT(buffer.data(), buffer.size()); | ^~~~~~~~~~~~~~~~~~~~ cc1plus: some warnings being treated as errors
Additional Info (as attachments):
I'm not sure if that's appropriate, but I was able to pass it with:
diff --git a/spa/include/spa/pod/builder.h b/spa/include/spa/pod/builder.h
index 0564d94ea..b0487bf48 100644
--- a/spa/include/spa/pod/builder.h
+++ b/spa/include/spa/pod/builder.h
@@ -49,7 +49,7 @@ struct spa_pod_builder {
struct spa_callbacks callbacks;
};
-#define SPA_POD_BUILDER_INIT(buffer,size) ((struct spa_pod_builder){ (buffer), (size), 0, {0}, {0} })
+#define SPA_POD_BUILDER_INIT(buffer,size) ((struct spa_pod_builder){ (buffer), (size), 0, {}, {} })
static inline void
spa_pod_builder_get_state(struct spa_pod_builder *builder, struct spa_pod_builder_state *state)
diff --git a/spa/include/spa/pod/parser.h b/spa/include/spa/pod/parser.h
index 083f91171..387298927 100644
--- a/spa/include/spa/pod/parser.h
+++ b/spa/include/spa/pod/parser.h
@@ -33,7 +33,7 @@ struct spa_pod_parser {
struct spa_pod_parser_state state;
};
-#define SPA_POD_PARSER_INIT(buffer,size) ((struct spa_pod_parser){ (buffer), (size), 0, {0} })
+#define SPA_POD_PARSER_INIT(buffer,size) ((struct spa_pod_parser){ (buffer), (size), 0, {} })
static inline void spa_pod_parser_init(struct spa_pod_parser *parser,
const void *data, uint32_t size)