void *data and void *object
In PW and SPA interfaces, I see two major uses of void pointers:
- In events/hooks/callbacks, to pass callback userdata, generally labeled
void *data
, - In methods, as a reference to the instance that the method is applied on, generally labeled
void *object
.
For methods that install events/hooks/callbacks, such as add_listener(...)
, both a void *object
(first argument) and a void *data
(last argument) can be present.
Those naming conventions seem to be mixed up in some places. For clarity it would be better to apply them uniformly.
I identified the following cases (no guarantee that the list is complete):
- Methods that have an argument
void *data
that should better bevoid *object
:-
spa/include/spa/support/thread.h: in
spa_thread_utils_methods
-
spa/include/spa/support/thread.h: in
- Events that have an argument
void *object
that should better bevoid *data
:-
src/pipewire/extensions/session-manager/interfaces.h: in
pw_session_events
,pw_endpoint_events
,pw_endpoint_stream_events
andpw_endpoint_link_events
-
src/pipewire/extensions/metadata.h: in
pw_metadata_events
-
src/pipewire/extensions/client-node.h: in
pw_client_node_events
-
src/pipewire/extensions/profiler.h: in
pw_profiler_events
-
src/pipewire/device.h: in
pw_device_events
-
src/pipewire/client.h: in
pw_client_events
-
src/pipewire/core.h: in
pw_core_events
andpw_registry_events
-
src/pipewire/node.h: in
pw_node_events
-
src/pipewire/module.h: in
pw_module_events
-
src/pipewire/port.h: in
pw_port_events
-
src/pipewire/factory.h: in
pw_factory_events
-
src/pipewire/extensions/session-manager/interfaces.h: in