diff --git a/src/examples/export-sink.c b/src/examples/export-sink.c index 8a56ed7d8..1bcd47a6e 100644 --- a/src/examples/export-sink.c +++ b/src/examples/export-sink.c @@ -30,7 +30,6 @@ #include #include -#include #include #include @@ -77,7 +76,7 @@ struct data { struct pw_type *t; struct pw_remote *remote; - struct pw_callback_info remote_callbacks; + struct pw_listener remote_listener; struct pw_node *node; struct pw_port *port; @@ -463,8 +462,8 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo } } -static const struct pw_remote_callbacks remote_callbacks = { - PW_VERSION_REMOTE_CALLBACKS, +static const struct pw_remote_events remote_events = { + PW_VERSION_REMOTE_EVENTS, .state_changed = on_state_changed, }; @@ -498,7 +497,7 @@ int main(int argc, char *argv[]) return -1; } - pw_remote_add_callbacks(data.remote, &data.remote_callbacks, &remote_callbacks, &data); + pw_remote_add_listener(data.remote, &data.remote_listener, &remote_events, &data); pw_remote_connect(data.remote); diff --git a/src/examples/export-v4l2.c b/src/examples/export-v4l2.c index 1084a35c2..6625bb13c 100644 --- a/src/examples/export-v4l2.c +++ b/src/examples/export-v4l2.c @@ -30,7 +30,6 @@ #include #include -#include #include #include @@ -67,7 +66,7 @@ struct data { struct pw_type *t; struct pw_remote *remote; - struct pw_callback_info remote_callbacks; + struct pw_listener remote_listener; struct pw_node *node; }; @@ -107,8 +106,8 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo } } -static const struct pw_remote_callbacks remote_callbacks = { - PW_VERSION_REMOTE_CALLBACKS, +static const struct pw_remote_events remote_events = { + PW_VERSION_REMOTE_EVENTS, .state_changed = on_state_changed, }; @@ -130,7 +129,7 @@ int main(int argc, char *argv[]) spa_debug_set_type_map(data.t->map); - pw_remote_add_callbacks(data.remote, &data.remote_callbacks, &remote_callbacks, &data); + pw_remote_add_listener(data.remote, &data.remote_listener, &remote_events, &data); pw_remote_connect(data.remote); diff --git a/src/examples/local-v4l2.c b/src/examples/local-v4l2.c index d0e9cff66..ac94c3822 100644 --- a/src/examples/local-v4l2.c +++ b/src/examples/local-v4l2.c @@ -30,7 +30,6 @@ #include #include -#include #include #include diff --git a/src/examples/video-play.c b/src/examples/video-play.c index bf4762043..844b6de9b 100644 --- a/src/examples/video-play.c +++ b/src/examples/video-play.c @@ -30,7 +30,6 @@ #include #include -#include struct type { uint32_t format; @@ -74,10 +73,10 @@ struct data { struct pw_core *core; struct pw_type *t; struct pw_remote *remote; - struct pw_callback_info remote_callbacks; + struct pw_listener remote_listener; struct pw_stream *stream; - struct pw_callback_info stream_callbacks; + struct pw_listener stream_listener; struct spa_video_info_raw format; int32_t stride; @@ -288,8 +287,8 @@ on_stream_format_changed(void *_data, struct spa_format *format) pw_stream_finish_format(stream, SPA_RESULT_OK, params, 2); } -static const struct pw_stream_callbacks stream_callbacks = { - PW_VERSION_STREAM_CALLBACKS, +static const struct pw_stream_events stream_events = { + PW_VERSION_STREAM_EVENTS, .state_changed = on_stream_state_changed, .format_changed = on_stream_format_changed, .new_buffer = on_stream_new_buffer, @@ -358,10 +357,10 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo printf("supported formats:\n"); spa_debug_format(formats[0]); - pw_stream_add_callbacks(data->stream, - &data->stream_callbacks, - &stream_callbacks, - data); + pw_stream_add_listener(data->stream, + &data->stream_listener, + &stream_events, + data); pw_stream_connect(data->stream, PW_DIRECTION_INPUT, @@ -375,8 +374,8 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo } } -static const struct pw_remote_callbacks remote_callbacks = { - PW_VERSION_REMOTE_CALLBACKS, +static const struct pw_remote_events remote_events = { + PW_VERSION_REMOTE_EVENTS, .state_changed = on_state_changed, }; @@ -408,7 +407,7 @@ int main(int argc, char *argv[]) return -1; } - pw_remote_add_callbacks(data.remote, &data.remote_callbacks, &remote_callbacks, &data); + pw_remote_add_listener(data.remote, &data.remote_listener, &remote_events, &data); pw_remote_connect(data.remote); diff --git a/src/examples/video-src.c b/src/examples/video-src.c index ce71bc9dc..b7bdee4b4 100644 --- a/src/examples/video-src.c +++ b/src/examples/video-src.c @@ -30,7 +30,6 @@ #include #include -#include struct type { uint32_t format; @@ -67,10 +66,10 @@ struct data { struct pw_core *core; struct pw_type *t; struct pw_remote *remote; - struct pw_callback_info remote_callbacks; + struct pw_listener remote_listener; struct pw_stream *stream; - struct pw_callback_info stream_callbacks; + struct pw_listener stream_listener; struct spa_video_info_raw format; int32_t stride; @@ -213,8 +212,8 @@ on_stream_format_changed(void *_data, struct spa_format *format) pw_stream_finish_format(stream, SPA_RESULT_OK, params, 2); } -static const struct pw_stream_callbacks stream_callbacks = { - PW_VERSION_STREAM_CALLBACKS, +static const struct pw_stream_events stream_events = { + PW_VERSION_STREAM_EVENTS, .state_changed = on_stream_state_changed, .format_changed = on_stream_format_changed, }; @@ -254,10 +253,10 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo 25, 1)); formats[0] = SPA_POD_BUILDER_DEREF(&b, f[0].ref, struct spa_format); - pw_stream_add_callbacks(data->stream, - &data->stream_callbacks, - &stream_callbacks, - data); + pw_stream_add_listener(data->stream, + &data->stream_listener, + &stream_events, + data); pw_stream_connect(data->stream, PW_DIRECTION_OUTPUT, @@ -271,8 +270,8 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo } } -static const struct pw_remote_callbacks remote_callbacks = { - PW_VERSION_REMOTE_CALLBACKS, +static const struct pw_remote_events remote_events = { + PW_VERSION_REMOTE_EVENTS, .state_changed = on_state_changed, }; @@ -292,7 +291,7 @@ int main(int argc, char *argv[]) data.timer = pw_loop_add_timer(data.loop, on_timeout, &data); - pw_remote_add_callbacks(data.remote, &data.remote_callbacks, &remote_callbacks, &data); + pw_remote_add_listener(data.remote, &data.remote_listener, &remote_events, &data); pw_remote_connect(data.remote); diff --git a/src/extensions/client-node.h b/src/extensions/client-node.h index 13a15186d..18c13c781 100644 --- a/src/extensions/client-node.h +++ b/src/extensions/client-node.h @@ -32,7 +32,7 @@ extern "C" { #include -struct pw_client_node_proxy { struct pw_proxy proxy; }; +struct pw_client_node_proxy; #define PW_TYPE_INTERFACE__ClientNode PW_TYPE_INTERFACE_BASE "ClientNode" @@ -46,16 +46,16 @@ struct pw_client_node_buffer { struct spa_buffer *buffer; /**< buffer describing metadata and buffer memory */ }; -#define PW_CLIENT_NODE_METHOD_DONE 0 -#define PW_CLIENT_NODE_METHOD_UPDATE 1 -#define PW_CLIENT_NODE_METHOD_PORT_UPDATE 2 -#define PW_CLIENT_NODE_METHOD_EVENT 3 -#define PW_CLIENT_NODE_METHOD_DESTROY 4 -#define PW_CLIENT_NODE_METHOD_NUM 5 +#define PW_CLIENT_NODE_PROXY_METHOD_DONE 0 +#define PW_CLIENT_NODE_PROXY_METHOD_UPDATE 1 +#define PW_CLIENT_NODE_PROXY_METHOD_PORT_UPDATE 2 +#define PW_CLIENT_NODE_PROXY_METHOD_EVENT 3 +#define PW_CLIENT_NODE_PROXY_METHOD_DESTROY 4 +#define PW_CLIENT_NODE_PROXY_METHOD_NUM 5 /** \ref pw_client_node methods */ -struct pw_client_node_methods { -#define PW_VERSION_CLIENT_NODE_METHODS 0 +struct pw_client_node_proxy_methods { +#define PW_VERSION_CLIENT_NODE_PROXY_METHODS 0 uint32_t version; /** Complete an async operation */ @@ -122,7 +122,7 @@ struct pw_client_node_methods { static inline void pw_client_node_proxy_done(struct pw_client_node_proxy *p, int seq, int res) { - pw_proxy_do(&p->proxy, struct pw_client_node_methods, done, seq, res); + pw_proxy_do((struct pw_proxy*)p, struct pw_client_node_proxy_methods, done, seq, res); } static inline void @@ -132,7 +132,7 @@ pw_client_node_proxy_update(struct pw_client_node_proxy *p, uint32_t max_output_ports, const struct spa_props *props) { - pw_proxy_do(&p->proxy, struct pw_client_node_methods, update, change_mask, + pw_proxy_do((struct pw_proxy*)p, struct pw_client_node_proxy_methods, update, change_mask, max_input_ports, max_output_ports, props); @@ -150,7 +150,7 @@ pw_client_node_proxy_port_update(struct pw_client_node_proxy *p, const struct spa_param **params, const struct spa_port_info *info) { - pw_proxy_do(&p->proxy, struct pw_client_node_methods, port_update, direction, + pw_proxy_do((struct pw_proxy*)p, struct pw_client_node_proxy_methods, port_update, direction, port_id, change_mask, n_possible_formats, @@ -164,32 +164,32 @@ pw_client_node_proxy_port_update(struct pw_client_node_proxy *p, static inline void pw_client_node_proxy_event(struct pw_client_node_proxy *p, struct spa_event *event) { - pw_proxy_do(&p->proxy, struct pw_client_node_methods, event, event); + pw_proxy_do((struct pw_proxy*)p, struct pw_client_node_proxy_methods, event, event); } static inline void pw_client_node_proxy_destroy(struct pw_client_node_proxy *p) { - pw_proxy_do_na(&p->proxy, struct pw_client_node_methods, destroy); + pw_proxy_do_na((struct pw_proxy*)p, struct pw_client_node_proxy_methods, destroy); } -#define PW_CLIENT_NODE_EVENT_TRANSPORT 0 -#define PW_CLIENT_NODE_EVENT_SET_PROPS 1 -#define PW_CLIENT_NODE_EVENT_EVENT 2 -#define PW_CLIENT_NODE_EVENT_ADD_PORT 3 -#define PW_CLIENT_NODE_EVENT_REMOVE_PORT 4 -#define PW_CLIENT_NODE_EVENT_SET_FORMAT 5 -#define PW_CLIENT_NODE_EVENT_SET_PARAM 6 -#define PW_CLIENT_NODE_EVENT_ADD_MEM 7 -#define PW_CLIENT_NODE_EVENT_USE_BUFFERS 8 -#define PW_CLIENT_NODE_EVENT_NODE_COMMAND 9 -#define PW_CLIENT_NODE_EVENT_PORT_COMMAND 10 -#define PW_CLIENT_NODE_EVENT_NUM 11 +#define PW_CLIENT_NODE_PROXY_EVENT_TRANSPORT 0 +#define PW_CLIENT_NODE_PROXY_EVENT_SET_PROPS 1 +#define PW_CLIENT_NODE_PROXY_EVENT_EVENT 2 +#define PW_CLIENT_NODE_PROXY_EVENT_ADD_PORT 3 +#define PW_CLIENT_NODE_PROXY_EVENT_REMOVE_PORT 4 +#define PW_CLIENT_NODE_PROXY_EVENT_SET_FORMAT 5 +#define PW_CLIENT_NODE_PROXY_EVENT_SET_PARAM 6 +#define PW_CLIENT_NODE_PROXY_EVENT_ADD_MEM 7 +#define PW_CLIENT_NODE_PROXY_EVENT_USE_BUFFERS 8 +#define PW_CLIENT_NODE_PROXY_EVENT_NODE_COMMAND 9 +#define PW_CLIENT_NODE_PROXY_EVENT_PORT_COMMAND 10 +#define PW_CLIENT_NODE_PROXY_EVENT_NUM 11 /** \ref pw_client_node events */ -struct pw_client_node_events { -#define PW_VERSION_CLIENT_NODE_EVENTS 0 +struct pw_client_node_proxy_events { +#define PW_VERSION_CLIENT_NODE_PROXY_EVENTS 0 uint32_t version; /** * Notify of a new transport area @@ -339,24 +339,24 @@ struct pw_client_node_events { static inline void pw_client_node_proxy_add_listener(struct pw_client_node_proxy *p, - struct pw_callback_info *info, - const struct pw_client_node_events *events, + struct pw_listener *listener, + const struct pw_client_node_proxy_events *events, void *data) { - pw_proxy_add_listener((struct pw_proxy*)p, info, events, data); + pw_proxy_add_proxy_listener((struct pw_proxy*)p, listener, events, data); } -#define pw_client_node_resource_transport(r,...) pw_resource_notify(r,struct pw_client_node_events,transport,__VA_ARGS__) -#define pw_client_node_resource_set_props(r,...) pw_resource_notify(r,struct pw_client_node_events,props,__VA_ARGS__) -#define pw_client_node_resource_event(r,...) pw_resource_notify(r,struct pw_client_node_events,event,__VA_ARGS__) -#define pw_client_node_resource_add_port(r,...) pw_resource_notify(r,struct pw_client_node_events,add_port,__VA_ARGS__) -#define pw_client_node_resource_remove_port(r,...) pw_resource_notify(r,struct pw_client_node_events,remove_port,__VA_ARGS__) -#define pw_client_node_resource_set_format(r,...) pw_resource_notify(r,struct pw_client_node_events,set_format,__VA_ARGS__) -#define pw_client_node_resource_set_param(r,...) pw_resource_notify(r,struct pw_client_node_events,set_param,__VA_ARGS__) -#define pw_client_node_resource_add_mem(r,...) pw_resource_notify(r,struct pw_client_node_events,add_mem,__VA_ARGS__) -#define pw_client_node_resource_use_buffers(r,...) pw_resource_notify(r,struct pw_client_node_events,use_buffers,__VA_ARGS__) -#define pw_client_node_resource_node_command(r,...) pw_resource_notify(r,struct pw_client_node_events,node_command,__VA_ARGS__) -#define pw_client_node_resource_port_command(r,...) pw_resource_notify(r,struct pw_client_node_events,port_command,__VA_ARGS__) +#define pw_client_node_resource_transport(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,transport,__VA_ARGS__) +#define pw_client_node_resource_set_props(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,props,__VA_ARGS__) +#define pw_client_node_resource_event(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,event,__VA_ARGS__) +#define pw_client_node_resource_add_port(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,add_port,__VA_ARGS__) +#define pw_client_node_resource_remove_port(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,remove_port,__VA_ARGS__) +#define pw_client_node_resource_set_format(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,set_format,__VA_ARGS__) +#define pw_client_node_resource_set_param(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,set_param,__VA_ARGS__) +#define pw_client_node_resource_add_mem(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,add_mem,__VA_ARGS__) +#define pw_client_node_resource_use_buffers(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,use_buffers,__VA_ARGS__) +#define pw_client_node_resource_node_command(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,node_command,__VA_ARGS__) +#define pw_client_node_resource_port_command(r,...) pw_resource_notify(r,struct pw_client_node_proxy_events,port_command,__VA_ARGS__) #ifdef __cplusplus } /* extern "C" */ diff --git a/src/gst/gstpipewiredeviceprovider.c b/src/gst/gstpipewiredeviceprovider.c index 7ec8bcff5..11fb6b472 100644 --- a/src/gst/gstpipewiredeviceprovider.c +++ b/src/gst/gstpipewiredeviceprovider.c @@ -327,13 +327,13 @@ struct node_data { struct pw_node_proxy *node; uint32_t id; uint32_t parent_id; - struct pw_callback_info node_listener; + struct pw_listener node_listener; }; struct registry_data { GstPipeWireDeviceProvider *self; struct pw_registry_proxy *registry; - struct pw_callback_info registry_listener; + struct pw_listener registry_listener; }; static void node_event_info(void *data, struct pw_node_info *info) @@ -351,8 +351,8 @@ static void node_event_info(void *data, struct pw_node_info *info) } } -static const struct pw_node_events node_events = { - PW_VERSION_NODE_EVENTS, +static const struct pw_node_proxy_events node_events = { + PW_VERSION_NODE_PROXY_EVENTS, .info = node_event_info }; @@ -399,16 +399,16 @@ static void registry_event_global_remove(void *data, uint32_t id) } } -static const struct pw_registry_events registry_events = { - PW_VERSION_REGISTRY_EVENTS, +static const struct pw_registry_proxy_events registry_events = { + PW_VERSION_REGISTRY_PROXY_EVENTS, .global = registry_event_global, .global_remove = registry_event_global_remove, }; -static const struct pw_remote_callbacks remote_callbacks = { - PW_VERSION_REMOTE_CALLBACKS, - .state_changed = on_state_changed, - .sync_reply = on_sync_reply, +static const struct pw_remote_events remote_events = { + PW_VERSION_REMOTE_EVENTS, + .state_changed = on_state_changed, + .sync_reply = on_sync_reply, }; static GList * @@ -421,7 +421,7 @@ gst_pipewire_device_provider_probe (GstDeviceProvider * provider) struct pw_remote *r = NULL; struct pw_registry_proxy *reg = NULL; struct registry_data *data; - struct pw_callback_info callbacks; + struct pw_listener listener; GST_DEBUG_OBJECT (self, "starting probe"); @@ -436,7 +436,7 @@ gst_pipewire_device_provider_probe (GstDeviceProvider * provider) if (!(r = pw_remote_new (c, NULL))) goto failed; - pw_remote_add_callbacks(r, &callbacks, &remote_callbacks, self); + pw_remote_add_listener(r, &listener, &remote_events, self); pw_remote_connect (r); @@ -528,7 +528,7 @@ gst_pipewire_device_provider_start (GstDeviceProvider * provider) goto failed_remote; } - pw_remote_add_callbacks (self->remote, &self->remote_callbacks, &remote_callbacks, self); + pw_remote_add_listener (self->remote, &self->remote_listener, &remote_events, self); pw_remote_connect (self->remote); for (;;) { diff --git a/src/gst/gstpipewiredeviceprovider.h b/src/gst/gstpipewiredeviceprovider.h index 338fb46d0..a66ff1b83 100644 --- a/src/gst/gstpipewiredeviceprovider.h +++ b/src/gst/gstpipewiredeviceprovider.h @@ -86,14 +86,16 @@ struct _GstPipeWireDeviceProvider { struct pw_core *core; struct pw_type *type; + struct pw_remote *remote; + struct pw_listener remote_listener; + struct pw_core_proxy *core_proxy; struct pw_registry_proxy *registry; gboolean end; gboolean list_only; GList **devices; - struct pw_callback_info remote_callbacks; }; struct _GstPipeWireDeviceProviderClass { diff --git a/src/gst/gstpipewiresink.c b/src/gst/gstpipewiresink.c index 492a26aee..eb6b1f2c0 100644 --- a/src/gst/gstpipewiresink.c +++ b/src/gst/gstpipewiresink.c @@ -734,8 +734,8 @@ copy_properties (GQuark field_id, return TRUE; } -static const struct pw_stream_callbacks stream_callbacks = { - PW_VERSION_STREAM_CALLBACKS, +static const struct pw_stream_events stream_events = { + PW_VERSION_STREAM_EVENTS, .state_changed = on_state_changed, .format_changed = on_format_changed, .add_buffer = on_add_buffer, @@ -763,10 +763,10 @@ gst_pipewire_sink_start (GstBaseSink * basesink) pwsink->stream = pw_stream_new (pwsink->remote, pwsink->client_name, props); pwsink->pool->stream = pwsink->stream; - pw_stream_add_callbacks(pwsink->stream, - &pwsink->stream_callbacks, - &stream_callbacks, - pwsink); + pw_stream_add_listener(pwsink->stream, + &pwsink->stream_listener, + &stream_events, + pwsink); pw_thread_loop_unlock (pwsink->main_loop); @@ -812,8 +812,8 @@ on_remote_state_changed (void *data, enum pw_remote_state old, enum pw_remote_st pw_thread_loop_signal (pwsink->main_loop, FALSE); } -static const struct pw_remote_callbacks remote_callbacks = { - PW_VERSION_REMOTE_CALLBACKS, +static const struct pw_remote_events remote_events = { + PW_VERSION_REMOTE_EVENTS, .state_changed = on_remote_state_changed, }; @@ -828,9 +828,9 @@ gst_pipewire_sink_open (GstPipeWireSink * pwsink) pw_thread_loop_lock (pwsink->main_loop); pwsink->remote = pw_remote_new (pwsink->core, NULL); - pw_remote_add_callbacks (pwsink->remote, - &pwsink->remote_callbacks, - &remote_callbacks, pwsink); + pw_remote_add_listener (pwsink->remote, + &pwsink->remote_listener, + &remote_events, pwsink); pw_remote_connect (pwsink->remote); diff --git a/src/gst/gstpipewiresink.h b/src/gst/gstpipewiresink.h index 5d7041768..712115cde 100644 --- a/src/gst/gstpipewiresink.h +++ b/src/gst/gstpipewiresink.h @@ -83,10 +83,10 @@ struct _GstPipeWireSink { struct pw_core *core; struct pw_type *type; struct pw_remote *remote; - struct pw_callback_info remote_callbacks; + struct pw_listener remote_listener; struct pw_stream *stream; - struct pw_callback_info stream_callbacks; + struct pw_listener stream_listener; GstAllocator *allocator; GstStructure *properties; diff --git a/src/gst/gstpipewiresrc.c b/src/gst/gstpipewiresrc.c index 6e61b580f..784179d19 100644 --- a/src/gst/gstpipewiresrc.c +++ b/src/gst/gstpipewiresrc.c @@ -1008,13 +1008,13 @@ copy_properties (GQuark field_id, return TRUE; } -static const struct pw_remote_callbacks remote_callbacks = { - PW_VERSION_REMOTE_CALLBACKS, +static const struct pw_remote_events remote_events = { + PW_VERSION_REMOTE_EVENTS, .state_changed = on_remote_state_changed, }; -static const struct pw_stream_callbacks stream_callbacks = { - PW_VERSION_STREAM_CALLBACKS, +static const struct pw_stream_events stream_events = { + PW_VERSION_STREAM_EVENTS, .state_changed = on_state_changed, .format_changed = on_format_changed, .add_buffer = on_add_buffer, @@ -1035,9 +1035,9 @@ gst_pipewire_src_open (GstPipeWireSrc * pwsrc) if ((pwsrc->remote = pw_remote_new (pwsrc->core, NULL)) == NULL) goto no_remote; - pw_remote_add_callbacks (pwsrc->remote, - &pwsrc->remote_callbacks, - &remote_callbacks, pwsrc); + pw_remote_add_listener (pwsrc->remote, + &pwsrc->remote_listener, + &remote_events, pwsrc); pw_remote_connect (pwsrc->remote); @@ -1065,10 +1065,10 @@ gst_pipewire_src_open (GstPipeWireSrc * pwsrc) goto no_stream; - pw_stream_add_callbacks(pwsrc->stream, - &pwsrc->stream_callbacks, - &stream_callbacks, - pwsrc); + pw_stream_add_listener(pwsrc->stream, + &pwsrc->stream_listener, + &stream_events, + pwsrc); pwsrc->clock = gst_pipewire_clock_new (pwsrc->stream); diff --git a/src/gst/gstpipewiresrc.h b/src/gst/gstpipewiresrc.h index a2eb667bb..b46b71d1a 100644 --- a/src/gst/gstpipewiresrc.h +++ b/src/gst/gstpipewiresrc.h @@ -70,10 +70,10 @@ struct _GstPipeWireSrc { struct pw_core *core; struct pw_type *type; struct pw_remote *remote; - struct pw_callback_info remote_callbacks; + struct pw_listener remote_listener; struct pw_stream *stream; - struct pw_callback_info stream_callbacks; + struct pw_listener stream_listener; GstAllocator *fd_allocator; GstStructure *properties; diff --git a/src/modules/module-autolink.c b/src/modules/module-autolink.c index a0103456d..82a6bed8f 100644 --- a/src/modules/module-autolink.c +++ b/src/modules/module-autolink.c @@ -33,7 +33,7 @@ struct impl { struct pw_module *module; struct pw_properties *properties; - struct pw_callback_info core_callbacks; + struct pw_listener core_listener; struct spa_list node_list; }; @@ -43,10 +43,10 @@ struct node_info { struct impl *impl; struct pw_node *node; - struct pw_callback_info node_callbacks; + struct pw_listener node_listener; struct pw_link *link; - struct pw_callback_info link_callbacks; + struct pw_listener link_listener; }; static struct node_info *find_node_info(struct impl *impl, struct pw_node *node) @@ -63,8 +63,8 @@ static struct node_info *find_node_info(struct impl *impl, struct pw_node *node) static void node_info_free(struct node_info *info) { spa_list_remove(&info->l); - pw_callback_remove(&info->node_callbacks); - pw_callback_remove(&info->link_callbacks); + pw_listener_remove(&info->node_listener); + pw_listener_remove(&info->link_listener); free(info); } @@ -130,12 +130,12 @@ link_destroy(void *data) struct impl *impl = info->impl; pw_log_debug("module %p: link %p destroyed", impl, link); - pw_callback_remove(&info->link_callbacks); - spa_list_init(&info->link_callbacks.link); + pw_listener_remove(&info->link_listener); + spa_list_init(&info->link_listener.link); } -static const struct pw_link_callbacks link_callbacks = { - PW_VERSION_LINK_CALLBACKS, +static const struct pw_link_events link_events = { + PW_VERSION_LINK_EVENTS, .destroy = link_destroy, .port_unlinked = link_port_unlinked, .state_changed = link_state_changed, @@ -185,7 +185,7 @@ static void try_link_port(struct pw_node *node, struct pw_port *port, struct nod info->link = link; - pw_link_add_callbacks(link, &info->link_callbacks, &link_callbacks, info); + pw_link_add_listener(link, &info->link_listener, &link_events, info); pw_link_activate(link); return; @@ -230,8 +230,8 @@ node_state_changed(void *data, enum pw_node_state old, enum pw_node_state state, on_node_created(info->node, info); } -static const struct pw_node_callbacks node_callbacks = { - PW_VERSION_NODE_CALLBACKS, +static const struct pw_node_events node_events = { + PW_VERSION_NODE_EVENTS, .port_added = node_port_added, .port_removed = node_port_removed, .state_changed = node_state_changed, @@ -252,8 +252,8 @@ core_global_added(void *data, struct pw_global *global) spa_list_insert(impl->node_list.prev, &ninfo->l); - pw_node_add_callbacks(node, &ninfo->node_callbacks, &node_callbacks, ninfo); - spa_list_init(&ninfo->link_callbacks.link); + pw_node_add_listener(node, &ninfo->node_listener, &node_events, ninfo); + spa_list_init(&ninfo->link_listener.link); pw_log_debug("module %p: node %p added", impl, node); @@ -279,8 +279,8 @@ core_global_removed(void *data, struct pw_global *global) } -const struct pw_core_callbacks core_callbacks = { - PW_VERSION_CORE_CALLBACKS, +const struct pw_core_events core_events = { + PW_VERSION_CORE_EVENTS, .global_added = core_global_added, .global_removed = core_global_removed, }; @@ -308,7 +308,7 @@ static bool module_init(struct pw_module *module, struct pw_properties *properti spa_list_init(&impl->node_list); - pw_core_add_callbacks(core, &impl->core_callbacks, &core_callbacks, impl); + pw_core_add_listener(core, &impl->core_listener, &core_events, impl); return impl; } @@ -318,14 +318,7 @@ static void module_destroy(struct impl *impl) { pw_log_debug("module %p: destroy", impl); - pw_global_destroy(impl->global); - - pw_signal_remove(&impl->global_added); - pw_signal_remove(&impl->global_removed); - pw_signal_remove(&impl->port_added); - pw_signal_remove(&impl->port_removed); - pw_signal_remove(&impl->port_unlinked); - pw_signal_remove(&impl->link_state_changed); + pw_listener_remove(&impl->core_listener); free(impl); } #endif diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c index c73718cf7..5094288a6 100644 --- a/src/modules/module-client-node/client-node.c +++ b/src/modules/module-client-node/client-node.c @@ -121,8 +121,8 @@ struct impl { struct pw_transport *transport; - struct pw_callback_info node_callbacks; - struct pw_callback_info resource_callbacks; + struct pw_listener node_listener; + struct pw_listener resource_listener; int fds[2]; int other_fds[2]; @@ -904,8 +904,8 @@ static void client_node_destroy(void *data) pw_client_node_destroy(&impl->this); } -static struct pw_client_node_methods client_node_methods = { - PW_VERSION_CLIENT_NODE_METHODS, +static struct pw_client_node_proxy_methods client_node_methods = { + PW_VERSION_CLIENT_NODE_PROXY_METHODS, .done = client_node_done, .update = client_node_update, .port_update = client_node_port_update, @@ -1071,7 +1071,6 @@ static void client_node_resource_destroy(void *data) struct proxy *proxy = &impl->proxy; pw_log_debug("client-node %p: destroy", impl); - pw_signal_emit(&this->destroy_signal, this); impl->proxy.resource = this->resource = NULL; @@ -1091,7 +1090,7 @@ static void node_free(void *data) if (impl->transport) pw_transport_destroy(impl->transport); - pw_callback_remove(&impl->node_callbacks); + pw_listener_remove(&impl->node_listener); if (impl->fds[0] != -1) close(impl->fds[0]); @@ -1100,14 +1099,14 @@ static void node_free(void *data) free(impl); } -static const struct pw_node_callbacks node_callbacks = { - PW_VERSION_NODE_CALLBACKS, +static const struct pw_node_events node_events = { + PW_VERSION_NODE_EVENTS, .free = node_free, .initialized = node_initialized, }; -static const struct pw_resource_callbacks resource_callbacks = { - PW_VERSION_RESOURCE_CALLBACKS, +static const struct pw_resource_events resource_events = { + PW_VERSION_RESOURCE_EVENTS, .destroy = client_node_resource_destroy, }; @@ -1140,8 +1139,6 @@ struct pw_client_node *pw_client_node_new(struct pw_resource *resource, impl->fds[0] = impl->fds[1] = -1; pw_log_debug("client-node %p: new", impl); - pw_signal_init(&this->destroy_signal); - proxy_init(&impl->proxy, NULL, core->support, core->n_support); impl->proxy.impl = impl; @@ -1157,17 +1154,17 @@ struct pw_client_node *pw_client_node_new(struct pw_resource *resource, if (this->node == NULL) goto error_no_node; - pw_resource_add_callbacks(this->resource, - &impl->resource_callbacks, - &resource_callbacks, - impl); + pw_resource_add_listener(this->resource, + &impl->resource_listener, + &resource_events, + impl); pw_resource_set_implementation(this->resource, &client_node_methods, impl); impl->proxy.resource = this->resource; - pw_node_add_callbacks(this->node, &impl->node_callbacks, &node_callbacks, impl); + pw_node_add_listener(this->node, &impl->node_listener, &node_events, impl); return this; diff --git a/src/modules/module-client-node/client-node.h b/src/modules/module-client-node/client-node.h index 6cfc0ca66..ee372456e 100644 --- a/src/modules/module-client-node/client-node.h +++ b/src/modules/module-client-node/client-node.h @@ -35,8 +35,6 @@ struct pw_client_node { struct pw_node *node; struct pw_resource *resource; - - PW_SIGNAL(destroy_signal, (struct pw_listener *listener, struct pw_client_node *node)); }; struct pw_client_node * diff --git a/src/modules/module-client-node/protocol-native.c b/src/modules/module-client-node/protocol-native.c index eb7f89769..b1225d99f 100644 --- a/src/modules/module-client-node/protocol-native.c +++ b/src/modules/module-client-node/protocol-native.c @@ -37,7 +37,7 @@ client_node_marshal_done(void *object, int seq, int res) struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_METHOD_DONE); + b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_PROXY_METHOD_DONE); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, seq, @@ -57,7 +57,7 @@ client_node_marshal_update(void *object, struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_METHOD_UPDATE); + b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_PROXY_METHOD_UPDATE); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, change_mask, @@ -83,7 +83,7 @@ client_node_marshal_port_update(void *object, struct spa_pod_frame f[2]; int i; - b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_METHOD_PORT_UPDATE); + b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_PROXY_METHOD_PORT_UPDATE); spa_pod_builder_add(b, SPA_POD_TYPE_STRUCT, &f[0], @@ -120,7 +120,7 @@ static void client_node_marshal_event_method(void *object, struct spa_event *eve struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_METHOD_EVENT); + b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_PROXY_METHOD_EVENT); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_POD, event); @@ -133,7 +133,7 @@ static void client_node_marshal_destroy(void *object) struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_METHOD_DESTROY); + b = pw_protocol_native_begin_proxy(proxy, PW_CLIENT_NODE_PROXY_METHOD_DESTROY); spa_pod_builder_struct(b, &f, 0); @@ -153,7 +153,7 @@ static bool client_node_demarshal_set_props(void *object, void *data, size_t siz -SPA_POD_TYPE_OBJECT, &props, 0)) return false; - pw_proxy_notify(proxy, struct pw_client_node_events, set_props, seq, props); + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, set_props, seq, props); return true; } @@ -167,7 +167,7 @@ static bool client_node_demarshal_event_event(void *object, void *data, size_t s !spa_pod_iter_get(&it, SPA_POD_TYPE_OBJECT, &event, 0)) return false; - pw_proxy_notify(proxy, struct pw_client_node_events, event, event); + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, event, event); return true; } @@ -183,7 +183,7 @@ static bool client_node_demarshal_add_port(void *object, void *data, size_t size SPA_POD_TYPE_INT, &direction, SPA_POD_TYPE_INT, &port_id, 0)) return false; - pw_proxy_notify(proxy, struct pw_client_node_events, add_port, seq, direction, port_id); + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, add_port, seq, direction, port_id); return true; } @@ -199,7 +199,7 @@ static bool client_node_demarshal_remove_port(void *object, void *data, size_t s SPA_POD_TYPE_INT, &direction, SPA_POD_TYPE_INT, &port_id, 0)) return false; - pw_proxy_notify(proxy, struct pw_client_node_events, remove_port, seq, direction, port_id); + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, remove_port, seq, direction, port_id); return true; } @@ -219,7 +219,7 @@ static bool client_node_demarshal_set_format(void *object, void *data, size_t si -SPA_POD_TYPE_OBJECT, &format, 0)) return false; - pw_proxy_notify(proxy, struct pw_client_node_events, set_format, seq, direction, port_id, + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, set_format, seq, direction, port_id, flags, format); return true; } @@ -239,7 +239,7 @@ static bool client_node_demarshal_set_param(void *object, void *data, size_t siz -SPA_POD_TYPE_OBJECT, ¶m, 0)) return false; - pw_proxy_notify(proxy, struct pw_client_node_events, set_param, seq, direction, port_id, param); + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, set_param, seq, direction, port_id, param); return true; } @@ -263,7 +263,7 @@ static bool client_node_demarshal_add_mem(void *object, void *data, size_t size) memfd = pw_protocol_native_get_proxy_fd(proxy, memfd_idx); - pw_proxy_notify(proxy, struct pw_client_node_events, add_mem, direction, + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, add_mem, direction, port_id, mem_id, type, @@ -325,7 +325,7 @@ static bool client_node_demarshal_use_buffers(void *object, void *data, size_t s d->data = SPA_UINT32_TO_PTR(data_id); } } - pw_proxy_notify(proxy, struct pw_client_node_events, use_buffers, seq, + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, use_buffers, seq, direction, port_id, n_buffers, buffers); @@ -343,7 +343,7 @@ static bool client_node_demarshal_node_command(void *object, void *data, size_t !spa_pod_iter_get(&it, SPA_POD_TYPE_INT, &seq, SPA_POD_TYPE_OBJECT, &command, 0)) return false; - pw_proxy_notify(proxy, struct pw_client_node_events, node_command, seq, command); + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, node_command, seq, command); return true; } @@ -361,7 +361,7 @@ static bool client_node_demarshal_port_command(void *object, void *data, size_t SPA_POD_TYPE_OBJECT, &command, 0)) return false; - pw_proxy_notify(proxy, struct pw_client_node_events, port_command, direction, + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, port_command, direction, port_id, command); return true; @@ -390,7 +390,7 @@ static bool client_node_demarshal_transport(void *object, void *data, size_t siz if (readfd == -1 || writefd == -1 || memfd_idx == -1) return false; - pw_proxy_notify(proxy, struct pw_client_node_events, transport, node_id, + pw_proxy_notify(proxy, struct pw_client_node_proxy_events, transport, node_id, readfd, writefd, memfd, offset, sz); return true; @@ -403,7 +403,7 @@ client_node_marshal_set_props(void *object, uint32_t seq, const struct spa_props struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_SET_PROPS); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_SET_PROPS); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, seq, @@ -418,7 +418,7 @@ static void client_node_marshal_event_event(void *object, const struct spa_event struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_EVENT); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_EVENT); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_POD, event); @@ -433,7 +433,7 @@ client_node_marshal_add_port(void *object, struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_ADD_PORT); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_ADD_PORT); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, seq, @@ -450,7 +450,7 @@ client_node_marshal_remove_port(void *object, struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_REMOVE_PORT); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_REMOVE_PORT); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, seq, @@ -471,7 +471,7 @@ client_node_marshal_set_format(void *object, struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_SET_FORMAT); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_SET_FORMAT); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, seq, @@ -494,7 +494,7 @@ client_node_marshal_set_param(void *object, struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_SET_PARAM); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_SET_PARAM); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, seq, @@ -517,7 +517,7 @@ client_node_marshal_add_mem(void *object, struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_ADD_MEM); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_ADD_MEM); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, direction, @@ -543,7 +543,7 @@ client_node_marshal_use_buffers(void *object, struct spa_pod_frame f; uint32_t i, j; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_USE_BUFFERS); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_USE_BUFFERS); spa_pod_builder_add(b, SPA_POD_TYPE_STRUCT, &f, @@ -588,7 +588,7 @@ client_node_marshal_node_command(void *object, uint32_t seq, const struct spa_co struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_NODE_COMMAND); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_NODE_COMMAND); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, seq, SPA_POD_TYPE_POD, command); @@ -605,7 +605,7 @@ client_node_marshal_port_command(void *object, struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_PORT_COMMAND); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_PORT_COMMAND); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, direction, @@ -622,7 +622,7 @@ static void client_node_marshal_transport(void *object, uint32_t node_id, int re struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_EVENT_TRANSPORT); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_NODE_PROXY_EVENT_TRANSPORT); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, node_id, @@ -647,7 +647,7 @@ static bool client_node_demarshal_done(void *object, void *data, size_t size) SPA_POD_TYPE_INT, &res, 0)) return false; - pw_resource_do(resource, struct pw_client_node_methods, done, seq, res); + pw_resource_do(resource, struct pw_client_node_proxy_methods, done, seq, res); return true; } @@ -665,7 +665,7 @@ static bool client_node_demarshal_update(void *object, void *data, size_t size) SPA_POD_TYPE_INT, &max_output_ports, -SPA_POD_TYPE_OBJECT, &props, 0)) return false; - pw_resource_do(resource, struct pw_client_node_methods, update, change_mask, + pw_resource_do(resource, struct pw_client_node_proxy_methods, update, change_mask, max_input_ports, max_output_ports, props); @@ -717,7 +717,7 @@ static bool client_node_demarshal_port_update(void *object, void *data, size_t s return false; } - pw_resource_do(resource, struct pw_client_node_methods, port_update, direction, + pw_resource_do(resource, struct pw_client_node_proxy_methods, port_update, direction, port_id, change_mask, n_possible_formats, @@ -738,7 +738,7 @@ static bool client_node_demarshal_event_method(void *object, void *data, size_t !spa_pod_iter_get(&it, SPA_POD_TYPE_OBJECT, &event, 0)) return false; - pw_resource_do(resource, struct pw_client_node_methods, event, event); + pw_resource_do(resource, struct pw_client_node_proxy_methods, event, event); return true; } @@ -750,12 +750,12 @@ static bool client_node_demarshal_destroy(void *object, void *data, size_t size) if (!spa_pod_iter_struct(&it, data, size)) return false; - pw_resource_do_na(resource, struct pw_client_node_methods, destroy); + pw_resource_do_na(resource, struct pw_client_node_proxy_methods, destroy); return true; } -static const struct pw_client_node_methods pw_protocol_native_client_node_method_marshal = { - PW_VERSION_CLIENT_NODE_METHODS, +static const struct pw_client_node_proxy_methods pw_protocol_native_client_node_method_marshal = { + PW_VERSION_CLIENT_NODE_PROXY_METHODS, &client_node_marshal_done, &client_node_marshal_update, &client_node_marshal_port_update, @@ -771,8 +771,8 @@ static const struct pw_protocol_native_demarshal pw_protocol_native_client_node_ { &client_node_demarshal_destroy, 0 }, }; -static const struct pw_client_node_events pw_protocol_native_client_node_event_marshal = { - PW_VERSION_CLIENT_NODE_EVENTS, +static const struct pw_client_node_proxy_events pw_protocol_native_client_node_event_marshal = { + PW_VERSION_CLIENT_NODE_PROXY_EVENTS, &client_node_marshal_transport, &client_node_marshal_set_props, &client_node_marshal_event_event, @@ -803,10 +803,10 @@ static const struct pw_protocol_native_demarshal pw_protocol_native_client_node_ const struct pw_protocol_marshal pw_protocol_native_client_node_marshal = { PW_TYPE_INTERFACE__ClientNode, PW_VERSION_CLIENT_NODE, - PW_CLIENT_NODE_METHOD_NUM, + PW_CLIENT_NODE_PROXY_METHOD_NUM, &pw_protocol_native_client_node_method_marshal, &pw_protocol_native_client_node_method_demarshal, - PW_CLIENT_NODE_EVENT_NUM, + PW_CLIENT_NODE_PROXY_EVENT_NUM, &pw_protocol_native_client_node_event_marshal, pw_protocol_native_client_node_event_demarshal, }; diff --git a/src/modules/module-flatpak.c b/src/modules/module-flatpak.c index adc8537d9..d2f00ce15 100644 --- a/src/modules/module-flatpak.c +++ b/src/modules/module-flatpak.c @@ -42,7 +42,7 @@ struct impl { DBusConnection *bus; - struct pw_callback_info core_callbacks; + struct pw_listener core_listener; struct spa_list client_list; @@ -54,10 +54,10 @@ struct client_info { struct spa_list link; struct pw_client *client; bool is_sandboxed; - const struct pw_core_methods *old_methods; - struct pw_core_methods core_methods; + const struct pw_core_proxy_methods *old_methods; + struct pw_core_proxy_methods core_methods; struct spa_list async_pending; - struct pw_callback_info client_callback; + struct pw_listener client_listener; }; struct async_pending { @@ -138,7 +138,7 @@ static void client_info_free(struct client_info *cinfo) spa_list_for_each_safe(p, tmp, &cinfo->async_pending, link) free_pending(p); - pw_callback_remove(&cinfo->client_callback); + pw_listener_remove(&cinfo->client_listener); spa_list_remove(&cinfo->link); free(cinfo); } @@ -447,8 +447,8 @@ static void client_resource_impl(void *data, struct pw_resource *resource) } } -const struct pw_client_callbacks client_callbacks = { - PW_VERSION_CLIENT_CALLBACKS, +const struct pw_client_events client_events = { + PW_VERSION_CLIENT_EVENTS, .resource_impl = client_resource_impl, }; @@ -467,7 +467,7 @@ core_global_added(void *data, struct pw_global *global) cinfo->is_sandboxed = client_is_sandboxed(client); spa_list_init(&cinfo->async_pending); - pw_client_add_callbacks(client, &cinfo->client_callback, &client_callbacks, cinfo); + pw_client_add_listener(client, &cinfo->client_listener, &client_events, cinfo); spa_list_insert(impl->client_list.prev, &cinfo->link); @@ -491,8 +491,8 @@ core_global_removed(void *data, struct pw_global *global) } } -const struct pw_core_callbacks core_callbacks = { - PW_VERSION_CORE_CALLBACKS, +const struct pw_core_events core_events = { + PW_VERSION_CORE_EVENTS, .global_added = core_global_added, .global_removed = core_global_removed, }; @@ -699,7 +699,7 @@ static struct impl *module_new(struct pw_core *core, struct pw_properties *prope spa_list_init(&impl->client_list); - pw_core_add_callbacks(core, &impl->core_callbacks, &core_callbacks, impl); + pw_core_add_listener(core, &impl->core_listener, &core_events, impl); core->permission_func = do_permission; core->permission_data = impl; diff --git a/src/modules/module-jack.c b/src/modules/module-jack.c index 6cf7aab19..d6ef33f12 100644 --- a/src/modules/module-jack.c +++ b/src/modules/module-jack.c @@ -96,9 +96,9 @@ struct client { struct impl *impl; struct spa_list link; struct pw_client *client; + struct pw_listener client_listener; int fd; struct spa_source *source; - struct pw_callback_info client_callbacks; }; static int process_messages(struct client *client); @@ -429,8 +429,8 @@ connection_data(struct spa_loop_utils *utils, process_messages(client); } -static const struct pw_client_callbacks client_callbacks = { - PW_VERSION_CLIENT_CALLBACKS, +static const struct pw_client_events client_events = { + PW_VERSION_CLIENT_EVENTS, .destroy = client_destroy, .busy_changed = client_busy_changed, }; @@ -467,7 +467,7 @@ static struct client *client_new(struct impl *impl, int fd) spa_list_insert(impl->client_list.prev, &this->link); - pw_client_add_callbacks(client, &this->client_callbacks, &client_callbacks, this); + pw_client_add_listener(client, &this->client_listener, &client_events, this); pw_log_error("module-jack %p: added new client", impl); diff --git a/src/modules/module-protocol-native.c b/src/modules/module-protocol-native.c index 6b30b6069..338bd34b7 100644 --- a/src/modules/module-protocol-native.c +++ b/src/modules/module-protocol-native.c @@ -65,11 +65,12 @@ struct connection { int fd; struct spa_source *source; + struct pw_protocol_native_connection *connection; + struct pw_listener conn_listener; bool disconnecting; bool flush_signaled; - struct pw_listener need_flush; struct spa_source *flush_event; }; @@ -88,10 +89,10 @@ struct listener { struct client_data { struct pw_client *client; + struct pw_listener client_listener; int fd; struct spa_source *source; struct pw_protocol_native_connection *connection; - struct pw_callback_info client_callbacks; }; static void @@ -221,8 +222,8 @@ static void client_free(void *data) close(this->fd); } -static const struct pw_client_callbacks client_callbacks = { - PW_VERSION_CLIENT_CALLBACKS, +static const struct pw_client_events client_events = { + PW_VERSION_CLIENT_EVENTS, .free = client_free, .busy_changed = client_busy_changed, }; @@ -264,7 +265,7 @@ static struct pw_client *client_new(struct listener *l, int fd) client->protocol = protocol; spa_list_insert(l->this.client_list.prev, &client->protocol_link); - pw_client_add_callbacks(client, &this->client_callbacks, &client_callbacks, client); + pw_client_add_listener(client, &this->client_listener, &client_events, client); pw_global_bind(protocol->core->global, client, PW_PERM_RWX, PW_VERSION_CORE, 0); @@ -526,9 +527,9 @@ static void do_flush_event(struct spa_loop_utils *utils, struct spa_source *sour impl->this.disconnect(&impl->this); } -static void on_need_flush(struct pw_listener *listener, struct pw_protocol_native_connection *connection) +static void on_need_flush(void *data) { - struct connection *impl = SPA_CONTAINER_OF(listener, struct connection, need_flush); + struct connection *impl = data; struct pw_remote *remote = impl->this.remote; if (!impl->flush_signaled) { @@ -537,6 +538,11 @@ static void on_need_flush(struct pw_listener *listener, struct pw_protocol_nativ } } +static const struct pw_protocol_native_connection_events conn_events = { + PW_VERSION_PROTOCOL_NATIVE_CONNECTION_EVENTS, + .need_flush = on_need_flush, +}; + static int impl_connect_fd(struct pw_protocol_connection *conn, int fd) { struct connection *impl = SPA_CONTAINER_OF(conn, struct connection, this); @@ -546,7 +552,10 @@ static int impl_connect_fd(struct pw_protocol_connection *conn, int fd) if (impl->connection == NULL) goto error_close; - pw_signal_add(&impl->connection->need_flush, &impl->need_flush, on_need_flush); + pw_protocol_native_connection_add_listener(impl->connection, + &impl->conn_listener, + &conn_events, + impl); impl->fd = fd; impl->source = pw_loop_add_io(remote->core->main_loop, @@ -788,10 +797,6 @@ static void pw_protocol_native_destroy(struct impl *impl) pw_log_debug("protocol-native %p: destroy", impl); - pw_signal_remove(&impl->before_iterate); - - pw_global_destroy(impl->global); - spa_list_for_each_safe(object, tmp, &impl->object_list, link) object_destroy(object); diff --git a/src/modules/module-protocol-native/connection.c b/src/modules/module-protocol-native/connection.c index ad7d62e41..b296d5f6b 100644 --- a/src/modules/module-protocol-native/connection.c +++ b/src/modules/module-protocol-native/connection.c @@ -203,8 +203,7 @@ struct pw_protocol_native_connection *pw_protocol_native_connection_new(int fd) pw_log_debug("connection %p: new", this); this->fd = fd; - pw_signal_init(&this->need_flush); - pw_signal_init(&this->destroy_signal); + pw_listener_list_init(&this->listener_list); impl->out.buffer_data = malloc(MAX_BUFFER_SIZE); impl->out.buffer_maxsize = MAX_BUFFER_SIZE; @@ -236,7 +235,7 @@ void pw_protocol_native_connection_destroy(struct pw_protocol_native_connection pw_log_debug("connection %p: destroy", conn); - pw_signal_emit(&conn->destroy_signal, conn); + pw_listener_list_emit_na(&conn->listener_list, struct pw_protocol_native_connection_events, destroy); free(impl->out.buffer_data); free(impl->in.buffer_data); @@ -431,8 +430,7 @@ pw_protocol_native_connection_end(struct pw_protocol_native_connection *conn, printf(">>>>>>>>> out:\n"); spa_debug_pod((struct spa_pod *)p); } - - pw_signal_emit(&conn->need_flush, conn); + pw_listener_list_emit_na(&conn->listener_list, struct pw_protocol_native_connection_events, need_flush); } /** Flush the connection object diff --git a/src/modules/module-protocol-native/connection.h b/src/modules/module-protocol-native/connection.h index 7960fd42b..9c244c65b 100644 --- a/src/modules/module-protocol-native/connection.h +++ b/src/modules/module-protocol-native/connection.h @@ -25,7 +25,14 @@ extern "C" { #endif #include -#include +#include + +struct pw_protocol_native_connection_events { +#define PW_VERSION_PROTOCOL_NATIVE_CONNECTION_EVENTS 0 + void (*destroy) (void *data); + + void (*need_flush) (void *data); +}; /** \class pw_protocol_native_connection * @@ -37,14 +44,18 @@ extern "C" { struct pw_protocol_native_connection { int fd; /**< the socket */ - /** Emited when data has been written that needs to be flushed */ - PW_SIGNAL(need_flush, (struct pw_listener *listener, - struct pw_protocol_native_connection *conn)); - /** Emited when the connection is destroyed */ - PW_SIGNAL(destroy_signal, (struct pw_listener *listener, - struct pw_protocol_native_connection *conn)); + struct pw_listener_list listener_list; }; +static inline void +pw_protocol_native_connection_add_listener(struct pw_protocol_native_connection *conn, + struct pw_listener *listener, + const struct pw_protocol_native_connection_events *events, + void *data) +{ + pw_listener_list_add(&conn->listener_list, listener, events, data); +} + struct pw_protocol_native_connection * pw_protocol_native_connection_new(int fd); diff --git a/src/modules/module-protocol-native/protocol-native.c b/src/modules/module-protocol-native/protocol-native.c index 4b5fe26db..1a6b3e075 100644 --- a/src/modules/module-protocol-native/protocol-native.c +++ b/src/modules/module-protocol-native/protocol-native.c @@ -38,7 +38,7 @@ static void core_marshal_client_update(void *object, const struct spa_dict *prop struct spa_pod_frame f; int i, n_items; - b = pw_protocol_native_begin_proxy(proxy, PW_CORE_METHOD_CLIENT_UPDATE); + b = pw_protocol_native_begin_proxy(proxy, PW_CORE_PROXY_METHOD_CLIENT_UPDATE); n_items = props ? props->n_items : 0; @@ -60,7 +60,7 @@ static void core_marshal_sync(void *object, uint32_t seq) struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_proxy(proxy, PW_CORE_METHOD_SYNC); + b = pw_protocol_native_begin_proxy(proxy, PW_CORE_PROXY_METHOD_SYNC); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, seq); @@ -73,7 +73,7 @@ static void core_marshal_get_registry(void *object, uint32_t version, uint32_t n struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_proxy(proxy, PW_CORE_METHOD_GET_REGISTRY); + b = pw_protocol_native_begin_proxy(proxy, PW_CORE_PROXY_METHOD_GET_REGISTRY); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, version, @@ -93,7 +93,7 @@ core_marshal_create_node(void *object, struct spa_pod_frame f; uint32_t i, n_items; - b = pw_protocol_native_begin_proxy(proxy, PW_CORE_METHOD_CREATE_NODE); + b = pw_protocol_native_begin_proxy(proxy, PW_CORE_PROXY_METHOD_CREATE_NODE); n_items = props ? props->n_items : 0; @@ -132,7 +132,7 @@ core_marshal_create_link(void *object, struct spa_pod_frame f; uint32_t i, n_items; - b = pw_protocol_native_begin_proxy(proxy, PW_CORE_METHOD_CREATE_LINK); + b = pw_protocol_native_begin_proxy(proxy, PW_CORE_PROXY_METHOD_CREATE_LINK); n_items = props ? props->n_items : 0; @@ -165,7 +165,7 @@ core_marshal_update_types_client(void *object, uint32_t first_id, uint32_t n_typ struct spa_pod_frame f; uint32_t i; - b = pw_protocol_native_begin_proxy(proxy, PW_CORE_METHOD_UPDATE_TYPES); + b = pw_protocol_native_begin_proxy(proxy, PW_CORE_PROXY_METHOD_UPDATE_TYPES); spa_pod_builder_add(b, SPA_POD_TYPE_STRUCT, &f, @@ -205,7 +205,7 @@ static bool core_demarshal_info(void *object, void *data, size_t size) SPA_POD_TYPE_STRING, &props.items[i].value, 0)) return false; } - pw_proxy_notify(proxy, struct pw_core_events, info, &info); + pw_proxy_notify(proxy, struct pw_core_proxy_events, info, &info); return true; } @@ -219,7 +219,7 @@ static bool core_demarshal_done(void *object, void *data, size_t size) !spa_pod_iter_get(&it, SPA_POD_TYPE_INT, &seq, 0)) return false; - pw_proxy_notify(proxy, struct pw_core_events, done, seq); + pw_proxy_notify(proxy, struct pw_core_proxy_events, done, seq); return true; } @@ -236,7 +236,7 @@ static bool core_demarshal_error(void *object, void *data, size_t size) SPA_POD_TYPE_INT, &res, SPA_POD_TYPE_STRING, &error, 0)) return false; - pw_proxy_notify(proxy, struct pw_core_events, error, id, res, error); + pw_proxy_notify(proxy, struct pw_core_proxy_events, error, id, res, error); return true; } @@ -250,7 +250,7 @@ static bool core_demarshal_remove_id(void *object, void *data, size_t size) !spa_pod_iter_get(&it, SPA_POD_TYPE_INT, &id, 0)) return false; - pw_proxy_notify(proxy, struct pw_core_events, remove_id, id); + pw_proxy_notify(proxy, struct pw_core_proxy_events, remove_id, id); return true; } @@ -271,7 +271,7 @@ static bool core_demarshal_update_types_client(void *object, void *data, size_t if (!spa_pod_iter_get(&it, SPA_POD_TYPE_STRING, &types[i], 0)) return false; } - pw_proxy_notify(proxy, struct pw_core_events, update_types, first_id, n_types, types); + pw_proxy_notify(proxy, struct pw_core_proxy_events, update_types, first_id, n_types, types); return true; } @@ -282,7 +282,7 @@ static void core_marshal_info(void *object, struct pw_core_info *info) struct spa_pod_frame f; uint32_t i, n_items; - b = pw_protocol_native_begin_resource(resource, PW_CORE_EVENT_INFO); + b = pw_protocol_native_begin_resource(resource, PW_CORE_PROXY_EVENT_INFO); n_items = info->props ? info->props->n_items : 0; @@ -311,7 +311,7 @@ static void core_marshal_done(void *object, uint32_t seq) struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CORE_EVENT_DONE); + b = pw_protocol_native_begin_resource(resource, PW_CORE_PROXY_EVENT_DONE); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, seq); @@ -326,7 +326,7 @@ static void core_marshal_error(void *object, uint32_t id, int res, const char *e struct spa_pod_frame f; va_list ap; - b = pw_protocol_native_begin_resource(resource, PW_CORE_EVENT_ERROR); + b = pw_protocol_native_begin_resource(resource, PW_CORE_PROXY_EVENT_ERROR); va_start(ap, error); vsnprintf(buffer, sizeof(buffer), error, ap); @@ -346,7 +346,7 @@ static void core_marshal_remove_id(void *object, uint32_t id) struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_CORE_EVENT_REMOVE_ID); + b = pw_protocol_native_begin_resource(resource, PW_CORE_PROXY_EVENT_REMOVE_ID); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, id); @@ -361,7 +361,7 @@ core_marshal_update_types_server(void *object, uint32_t first_id, uint32_t n_typ struct spa_pod_frame f; uint32_t i; - b = pw_protocol_native_begin_resource(resource, PW_CORE_EVENT_UPDATE_TYPES); + b = pw_protocol_native_begin_resource(resource, PW_CORE_PROXY_EVENT_UPDATE_TYPES); spa_pod_builder_add(b, SPA_POD_TYPE_STRUCT, &f, @@ -393,7 +393,7 @@ static bool core_demarshal_client_update(void *object, void *data, size_t size) SPA_POD_TYPE_STRING, &props.items[i].value, 0)) return false; } - pw_resource_do(resource, struct pw_core_methods, client_update, &props); + pw_resource_do(resource, struct pw_core_proxy_methods, client_update, &props); return true; } @@ -407,7 +407,7 @@ static bool core_demarshal_sync(void *object, void *data, size_t size) !spa_pod_iter_get(&it, SPA_POD_TYPE_INT, &seq, 0)) return false; - pw_resource_do(resource, struct pw_core_methods, sync, seq); + pw_resource_do(resource, struct pw_core_proxy_methods, sync, seq); return true; } @@ -424,7 +424,7 @@ static bool core_demarshal_get_registry(void *object, void *data, size_t size) return false; - pw_resource_do(resource, struct pw_core_methods, get_registry, version, new_id); + pw_resource_do(resource, struct pw_core_proxy_methods, get_registry, version, new_id); return true; } @@ -456,7 +456,7 @@ static bool core_demarshal_create_node(void *object, void *data, size_t size) SPA_POD_TYPE_INT, &new_id, 0)) return false; - pw_resource_do(resource, struct pw_core_methods, create_node, factory_name, name, + pw_resource_do(resource, struct pw_core_proxy_methods, create_node, factory_name, name, type, version, &props, new_id); return true; @@ -491,7 +491,7 @@ static bool core_demarshal_create_link(void *object, void *data, size_t size) if (!spa_pod_iter_get(&it, SPA_POD_TYPE_INT, &new_id, 0)) return false; - pw_resource_do(resource, struct pw_core_methods, create_link, output_node_id, + pw_resource_do(resource, struct pw_core_proxy_methods, create_link, output_node_id, output_port_id, input_node_id, input_port_id, @@ -518,7 +518,7 @@ static bool core_demarshal_update_types_server(void *object, void *data, size_t if (!spa_pod_iter_get(&it, SPA_POD_TYPE_STRING, &types[i], 0)) return false; } - pw_resource_do(resource, struct pw_core_methods, update_types, first_id, n_types, types); + pw_resource_do(resource, struct pw_core_proxy_methods, update_types, first_id, n_types, types); return true; } @@ -529,7 +529,7 @@ static void registry_marshal_global(void *object, uint32_t id, uint32_t parent_i struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_REGISTRY_EVENT_GLOBAL); + b = pw_protocol_native_begin_resource(resource, PW_REGISTRY_PROXY_EVENT_GLOBAL); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, id, @@ -547,7 +547,7 @@ static void registry_marshal_global_remove(void *object, uint32_t id) struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_REGISTRY_EVENT_GLOBAL_REMOVE); + b = pw_protocol_native_begin_resource(resource, PW_REGISTRY_PROXY_EVENT_GLOBAL_REMOVE); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, id); @@ -568,7 +568,7 @@ static bool registry_demarshal_bind(void *object, void *data, size_t size) SPA_POD_TYPE_INT, &new_id, 0)) return false; - pw_resource_do(resource, struct pw_registry_methods, bind, id, type, version, new_id); + pw_resource_do(resource, struct pw_registry_proxy_methods, bind, id, type, version, new_id); return true; } @@ -579,7 +579,7 @@ static void module_marshal_info(void *object, struct pw_module_info *info) struct spa_pod_frame f; uint32_t i, n_items; - b = pw_protocol_native_begin_resource(resource, PW_MODULE_EVENT_INFO); + b = pw_protocol_native_begin_resource(resource, PW_MODULE_PROXY_EVENT_INFO); n_items = info->props ? info->props->n_items : 0; @@ -624,7 +624,7 @@ static bool module_demarshal_info(void *object, void *data, size_t size) SPA_POD_TYPE_STRING, &props.items[i].value, 0)) return false; } - pw_proxy_notify(proxy, struct pw_module_events, info, &info); + pw_proxy_notify(proxy, struct pw_module_proxy_events, info, &info); return true; } @@ -635,7 +635,7 @@ static void node_marshal_info(void *object, struct pw_node_info *info) struct spa_pod_frame f; uint32_t i, n_items; - b = pw_protocol_native_begin_resource(resource, PW_NODE_EVENT_INFO); + b = pw_protocol_native_begin_resource(resource, PW_NODE_PROXY_EVENT_INFO); spa_pod_builder_add(b, SPA_POD_TYPE_STRUCT, &f, @@ -719,7 +719,7 @@ static bool node_demarshal_info(void *object, void *data, size_t size) SPA_POD_TYPE_STRING, &props.items[i].value, 0)) return false; } - pw_proxy_notify(proxy, struct pw_node_events, info, &info); + pw_proxy_notify(proxy, struct pw_node_proxy_events, info, &info); return true; } @@ -730,7 +730,7 @@ static void client_marshal_info(void *object, struct pw_client_info *info) struct spa_pod_frame f; uint32_t i, n_items; - b = pw_protocol_native_begin_resource(resource, PW_CLIENT_EVENT_INFO); + b = pw_protocol_native_begin_resource(resource, PW_CLIENT_PROXY_EVENT_INFO); n_items = info->props ? info->props->n_items : 0; @@ -771,7 +771,7 @@ static bool client_demarshal_info(void *object, void *data, size_t size) SPA_POD_TYPE_STRING, &props.items[i].value, 0)) return false; } - pw_proxy_notify(proxy, struct pw_client_events, info, &info); + pw_proxy_notify(proxy, struct pw_client_proxy_events, info, &info); return true; } @@ -781,7 +781,7 @@ static void link_marshal_info(void *object, struct pw_link_info *info) struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_resource(resource, PW_LINK_EVENT_INFO); + b = pw_protocol_native_begin_resource(resource, PW_LINK_PROXY_EVENT_INFO); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_LONG, info->change_mask, @@ -810,7 +810,7 @@ static bool link_demarshal_info(void *object, void *data, size_t size) -SPA_POD_TYPE_OBJECT, &info.format, 0)) return false; - pw_proxy_notify(proxy, struct pw_link_events, info, &info); + pw_proxy_notify(proxy, struct pw_link_proxy_events, info, &info); return true; } @@ -829,7 +829,7 @@ static bool registry_demarshal_global(void *object, void *data, size_t size) SPA_POD_TYPE_INT, &version, 0)) return false; - pw_proxy_notify(proxy, struct pw_registry_events, global, id, parent_id, permissions, type, version); + pw_proxy_notify(proxy, struct pw_registry_proxy_events, global, id, parent_id, permissions, type, version); return true; } @@ -843,7 +843,7 @@ static bool registry_demarshal_global_remove(void *object, void *data, size_t si !spa_pod_iter_get(&it, SPA_POD_TYPE_INT, &id, 0)) return false; - pw_proxy_notify(proxy, struct pw_registry_events, global_remove, id); + pw_proxy_notify(proxy, struct pw_registry_proxy_events, global_remove, id); return true; } @@ -854,7 +854,7 @@ static void registry_marshal_bind(void *object, uint32_t id, struct spa_pod_builder *b; struct spa_pod_frame f; - b = pw_protocol_native_begin_proxy(proxy, PW_REGISTRY_METHOD_BIND); + b = pw_protocol_native_begin_proxy(proxy, PW_REGISTRY_PROXY_METHOD_BIND); spa_pod_builder_struct(b, &f, SPA_POD_TYPE_INT, id, @@ -865,8 +865,8 @@ static void registry_marshal_bind(void *object, uint32_t id, pw_protocol_native_end_proxy(proxy, b); } -static const struct pw_core_methods pw_protocol_native_core_method_marshal = { - PW_VERSION_CORE_METHODS, +static const struct pw_core_proxy_methods pw_protocol_native_core_method_marshal = { + PW_VERSION_CORE_PROXY_METHODS, &core_marshal_update_types_client, &core_marshal_sync, &core_marshal_get_registry, @@ -875,7 +875,7 @@ static const struct pw_core_methods pw_protocol_native_core_method_marshal = { &core_marshal_create_link }; -static const struct pw_protocol_native_demarshal pw_protocol_native_core_method_demarshal[PW_CORE_METHOD_NUM] = { +static const struct pw_protocol_native_demarshal pw_protocol_native_core_method_demarshal[PW_CORE_PROXY_METHOD_NUM] = { { &core_demarshal_update_types_server, 0, }, { &core_demarshal_sync, 0, }, { &core_demarshal_get_registry, 0, }, @@ -884,8 +884,8 @@ static const struct pw_protocol_native_demarshal pw_protocol_native_core_method_ { &core_demarshal_create_link, PW_PROTOCOL_NATIVE_REMAP, } }; -static const struct pw_core_events pw_protocol_native_core_event_marshal = { - PW_VERSION_CORE_EVENTS, +static const struct pw_core_proxy_events pw_protocol_native_core_event_marshal = { + PW_VERSION_CORE_PROXY_EVENTS, &core_marshal_update_types_server, &core_marshal_done, &core_marshal_error, @@ -893,7 +893,7 @@ static const struct pw_core_events pw_protocol_native_core_event_marshal = { &core_marshal_info }; -static const struct pw_protocol_native_demarshal pw_protocol_native_core_event_demarshal[PW_CORE_EVENT_NUM] = { +static const struct pw_protocol_native_demarshal pw_protocol_native_core_event_demarshal[PW_CORE_PROXY_EVENT_NUM] = { { &core_demarshal_update_types_client, 0, }, { &core_demarshal_done, 0, }, { &core_demarshal_error, 0, }, @@ -904,16 +904,16 @@ static const struct pw_protocol_native_demarshal pw_protocol_native_core_event_d static const struct pw_protocol_marshal pw_protocol_native_core_marshal = { PW_TYPE_INTERFACE__Core, PW_VERSION_CORE, - PW_CORE_METHOD_NUM, + PW_CORE_PROXY_METHOD_NUM, &pw_protocol_native_core_method_marshal, pw_protocol_native_core_method_demarshal, - PW_CORE_EVENT_NUM, + PW_CORE_PROXY_EVENT_NUM, &pw_protocol_native_core_event_marshal, pw_protocol_native_core_event_demarshal }; -static const struct pw_registry_methods pw_protocol_native_registry_method_marshal = { - PW_VERSION_REGISTRY_METHODS, +static const struct pw_registry_proxy_methods pw_protocol_native_registry_method_marshal = { + PW_VERSION_REGISTRY_PROXY_METHODS, ®istry_marshal_bind }; @@ -921,8 +921,8 @@ static const struct pw_protocol_native_demarshal pw_protocol_native_registry_met { ®istry_demarshal_bind, PW_PROTOCOL_NATIVE_REMAP, } }; -static const struct pw_registry_events pw_protocol_native_registry_event_marshal = { - PW_VERSION_REGISTRY_EVENTS, +static const struct pw_registry_proxy_events pw_protocol_native_registry_event_marshal = { + PW_VERSION_REGISTRY_PROXY_EVENTS, ®istry_marshal_global, ®istry_marshal_global_remove, }; @@ -935,16 +935,16 @@ static const struct pw_protocol_native_demarshal pw_protocol_native_registry_eve const struct pw_protocol_marshal pw_protocol_native_registry_marshal = { PW_TYPE_INTERFACE__Registry, PW_VERSION_REGISTRY, - PW_REGISTRY_METHOD_NUM, + PW_REGISTRY_PROXY_METHOD_NUM, &pw_protocol_native_registry_method_marshal, pw_protocol_native_registry_method_demarshal, - PW_REGISTRY_EVENT_NUM, + PW_REGISTRY_PROXY_EVENT_NUM, &pw_protocol_native_registry_event_marshal, pw_protocol_native_registry_event_demarshal, }; -static const struct pw_module_events pw_protocol_native_module_event_marshal = { - PW_VERSION_MODULE_EVENTS, +static const struct pw_module_proxy_events pw_protocol_native_module_event_marshal = { + PW_VERSION_MODULE_PROXY_EVENTS, &module_marshal_info, }; @@ -956,13 +956,13 @@ const struct pw_protocol_marshal pw_protocol_native_module_marshal = { PW_TYPE_INTERFACE__Module, PW_VERSION_MODULE, 0, NULL, NULL, - PW_MODULE_EVENT_NUM, + PW_MODULE_PROXY_EVENT_NUM, &pw_protocol_native_module_event_marshal, pw_protocol_native_module_event_demarshal, }; -static const struct pw_node_events pw_protocol_native_node_event_marshal = { - PW_VERSION_NODE_EVENTS, +static const struct pw_node_proxy_events pw_protocol_native_node_event_marshal = { + PW_VERSION_NODE_PROXY_EVENTS, &node_marshal_info, }; @@ -974,13 +974,13 @@ static const struct pw_protocol_marshal pw_protocol_native_node_marshal = { PW_TYPE_INTERFACE__Node, PW_VERSION_NODE, 0, NULL, NULL, - PW_NODE_EVENT_NUM, + PW_NODE_PROXY_EVENT_NUM, &pw_protocol_native_node_event_marshal, pw_protocol_native_node_event_demarshal, }; -static const struct pw_client_events pw_protocol_native_client_event_marshal = { - PW_VERSION_CLIENT_EVENTS, +static const struct pw_client_proxy_events pw_protocol_native_client_event_marshal = { + PW_VERSION_CLIENT_PROXY_EVENTS, &client_marshal_info, }; @@ -992,13 +992,13 @@ static const struct pw_protocol_marshal pw_protocol_native_client_marshal = { PW_TYPE_INTERFACE__Client, PW_VERSION_CLIENT, 0, NULL, NULL, - PW_CLIENT_EVENT_NUM, + PW_CLIENT_PROXY_EVENT_NUM, &pw_protocol_native_client_event_marshal, pw_protocol_native_client_event_demarshal, }; -static const struct pw_link_events pw_protocol_native_link_event_marshal = { - PW_VERSION_LINK_EVENTS, +static const struct pw_link_proxy_events pw_protocol_native_link_event_marshal = { + PW_VERSION_LINK_PROXY_EVENTS, &link_marshal_info, }; @@ -1010,7 +1010,7 @@ static const struct pw_protocol_marshal pw_protocol_native_link_marshal = { PW_TYPE_INTERFACE__Link, PW_VERSION_LINK, 0, NULL, NULL, - PW_LINK_EVENT_NUM, + PW_LINK_PROXY_EVENT_NUM, &pw_protocol_native_link_event_marshal, pw_protocol_native_link_event_demarshal, }; diff --git a/src/modules/module-suspend-on-idle.c b/src/modules/module-suspend-on-idle.c index 3624be8ff..809459a16 100644 --- a/src/modules/module-suspend-on-idle.c +++ b/src/modules/module-suspend-on-idle.c @@ -31,7 +31,7 @@ struct impl { struct pw_type *t; struct pw_properties *properties; - struct pw_callback_info core_callbacks; + struct pw_listener core_listener; struct spa_list node_list; }; @@ -40,7 +40,7 @@ struct node_info { struct spa_list link; struct impl *impl; struct pw_node *node; - struct pw_callback_info node_callbacks; + struct pw_listener node_listener; struct spa_source *idle_timeout; }; @@ -67,7 +67,7 @@ static void node_info_free(struct node_info *info) { spa_list_remove(&info->link); remove_idle_timeout(info); - pw_callback_remove(&info->node_callbacks); + pw_listener_remove(&info->node_listener); free(info); } @@ -107,8 +107,8 @@ node_state_changed(void *data, enum pw_node_state old, enum pw_node_state state, } } -static const struct pw_node_callbacks node_callbacks = { - PW_VERSION_NODE_CALLBACKS, +static const struct pw_node_events node_events = { + PW_VERSION_NODE_EVENTS, .state_request = node_state_request, .state_changed = node_state_changed, }; @@ -127,7 +127,7 @@ core_global_added(void *data, struct pw_global *global) info->node = node; spa_list_insert(impl->node_list.prev, &info->link); - pw_node_add_callbacks(node, &info->node_callbacks, &node_callbacks, info); + pw_node_add_listener(node, &info->node_listener, &node_events, info); pw_log_debug("module %p: node %p added", impl, node); } @@ -149,8 +149,8 @@ core_global_removed(void *data, struct pw_global *global) } } -const struct pw_core_callbacks core_callbacks = { - PW_VERSION_CORE_CALLBACKS, +const struct pw_core_events core_events = { + PW_VERSION_CORE_EVENTS, .global_added = core_global_added, .global_removed = core_global_removed, }; @@ -177,7 +177,7 @@ static bool module_init(struct pw_module *module, struct pw_properties *properti spa_list_init(&impl->node_list); - pw_core_add_callbacks(impl->core, &impl->core_callbacks, &core_callbacks, impl); + pw_core_add_listener(impl->core, &impl->core_listener, &core_events, impl); return impl; } diff --git a/src/modules/spa/spa-monitor.c b/src/modules/spa/spa-monitor.c index 588d64b21..408663470 100644 --- a/src/modules/spa/spa-monitor.c +++ b/src/modules/spa/spa-monitor.c @@ -276,7 +276,6 @@ struct pw_spa_monitor *pw_spa_monitor_load(struct pw_core *core, impl->hnd = hnd; this = &impl->this; - pw_signal_init(&this->destroy_signal); this->monitor = iface; this->lib = filename; this->factory_name = strdup(factory_name); @@ -321,7 +320,6 @@ void pw_spa_monitor_destroy(struct pw_spa_monitor *monitor) struct monitor_item *mitem, *tmp; pw_log_debug("spa-monitor %p: dispose", impl); - pw_signal_emit(&monitor->destroy_signal, monitor); spa_list_for_each_safe(mitem, tmp, &impl->item_list, link) destroy_item(mitem); diff --git a/src/modules/spa/spa-monitor.h b/src/modules/spa/spa-monitor.h index bab4b686e..a79941838 100644 --- a/src/modules/spa/spa-monitor.h +++ b/src/modules/spa/spa-monitor.h @@ -35,8 +35,6 @@ struct pw_spa_monitor { char *factory_name; char *system_name; struct spa_handle *handle; - - PW_SIGNAL(destroy_signal, (struct pw_listener *listener, struct pw_spa_monitor *monitor)); }; struct pw_spa_monitor * diff --git a/src/modules/spa/spa-node.c b/src/modules/spa/spa-node.c index 0b0aba87f..ca8bcf53f 100644 --- a/src/modules/spa/spa-node.c +++ b/src/modules/spa/spa-node.c @@ -43,7 +43,7 @@ struct impl { char *lib; char *factory_name; - struct pw_callback_info node_callbacks; + struct pw_listener node_listener; }; struct port { @@ -337,7 +337,7 @@ static void on_node_done(struct spa_node *node, int seq, int res, void *user_dat } pw_log_debug("spa-node %p: async complete event %d %d", this, seq, res); - pw_callback_emit(&this->callback_list, struct pw_node_callbacks, async_complete, seq, res); + pw_listener_list_emit(&this->listener_list, struct pw_node_events, async_complete, seq, res); } static void on_node_event(struct spa_node *node, struct spa_event *event, void *user_data) @@ -345,21 +345,21 @@ static void on_node_event(struct spa_node *node, struct spa_event *event, void * struct impl *impl = user_data; struct pw_node *this = impl->this; - pw_callback_emit(&this->callback_list, struct pw_node_callbacks, event, event); + pw_listener_list_emit(&this->listener_list, struct pw_node_events, event, event); } static void on_node_need_input(struct spa_node *node, void *user_data) { struct impl *impl = user_data; struct pw_node *this = impl->this; - pw_callback_emit_na(&this->callback_list, struct pw_node_callbacks, need_input); + pw_listener_list_emit_na(&this->listener_list, struct pw_node_events, need_input); } static void on_node_have_output(struct spa_node *node, void *user_data) { struct impl *impl = user_data; struct pw_node *this = impl->this; - pw_callback_emit_na(&this->callback_list, struct pw_node_callbacks, have_output); + pw_listener_list_emit_na(&this->listener_list, struct pw_node_events, have_output); } static void @@ -390,8 +390,8 @@ static const struct spa_node_callbacks spa_node_callbacks = { .reuse_buffer = on_node_reuse_buffer, }; -static const struct pw_node_callbacks node_callbacks = { - PW_VERSION_NODE_CALLBACKS, +static const struct pw_node_events node_events = { + PW_VERSION_NODE_EVENTS, .destroy = pw_spa_node_destroy, }; @@ -434,7 +434,7 @@ pw_spa_node_new(struct pw_core *core, impl->node = node; impl->async_init = async; - pw_node_add_callbacks(this, &impl->node_callbacks, &node_callbacks, impl); + pw_node_add_listener(this, &impl->node_listener, &node_events, impl); pw_node_set_implementation(this, &node_impl, impl); diff --git a/src/pipewire/client.c b/src/pipewire/client.c index 8bb9fcaab..7f476a072 100644 --- a/src/pipewire/client.c +++ b/src/pipewire/client.c @@ -32,7 +32,7 @@ struct impl { }; struct resource_data { - struct pw_callback_info resource_callbacks; + struct pw_listener resource_listener; }; /** \endcond */ @@ -43,8 +43,8 @@ static void client_unbind_func(void *data) spa_list_remove(&resource->link); } -static const struct pw_resource_callbacks resource_callbacks = { - PW_VERSION_RESOURCE_CALLBACKS, +static const struct pw_resource_events resource_events = { + PW_VERSION_RESOURCE_EVENTS, .destroy = client_unbind_func, }; @@ -62,7 +62,7 @@ client_bind_func(struct pw_global *global, goto no_mem; data = pw_resource_get_user_data(resource); - pw_resource_add_callbacks(resource, &data->resource_callbacks, &resource_callbacks, resource); + pw_resource_add_listener(resource, &data->resource_listener, &resource_events, resource); pw_log_debug("client %p: bound to %d", this, resource->id); @@ -115,7 +115,7 @@ struct pw_client *pw_client_new(struct pw_core *core, this->user_data = SPA_MEMBER(impl, sizeof(struct impl), void); spa_list_init(&this->resource_list); - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); pw_map_init(&this->objects, 0, 32); pw_map_init(&this->types, 0, 32); @@ -152,7 +152,7 @@ void pw_client_destroy(struct pw_client *client) struct impl *impl = SPA_CONTAINER_OF(client, struct impl, this); pw_log_debug("client %p: destroy", client); - pw_callback_emit_na(&client->callback_list, struct pw_client_callbacks, destroy); + pw_listener_list_emit_na(&client->listener_list, struct pw_client_events, destroy); spa_list_remove(&client->link); pw_global_destroy(client->global); @@ -162,7 +162,7 @@ void pw_client_destroy(struct pw_client *client) pw_map_for_each(&client->objects, destroy_resource, client); - pw_callback_emit_na(&client->callback_list, struct pw_client_callbacks, free); + pw_listener_list_emit_na(&client->listener_list, struct pw_client_events, free); pw_log_debug("client %p: free", impl); pw_map_clear(&client->objects); @@ -174,12 +174,12 @@ void pw_client_destroy(struct pw_client *client) free(impl); } -void pw_client_add_callbacks(struct pw_client *client, - struct pw_callback_info *info, - const struct pw_client_callbacks *callbacks, - void *data) +void pw_client_add_listener(struct pw_client *client, + struct pw_listener *listener, + const struct pw_client_events *events, + void *data) { - pw_callback_add(&client->callback_list, info, callbacks, data); + pw_listener_list_add(&client->listener_list, listener, events, data); } const struct pw_client_info *pw_client_get_info(struct pw_client *client) @@ -216,7 +216,7 @@ void pw_client_update_properties(struct pw_client *client, const struct spa_dict client->info.change_mask |= 1 << 0; client->info.props = client->properties ? &client->properties->dict : NULL; - pw_callback_emit(&client->callback_list, struct pw_client_callbacks, info_changed, &client->info); + pw_listener_list_emit(&client->listener_list, struct pw_client_events, info_changed, &client->info); spa_list_for_each(resource, &client->resource_list, link) pw_client_resource_info(resource, &client->info); @@ -228,6 +228,6 @@ void pw_client_set_busy(struct pw_client *client, bool busy) { if (client->busy != busy) { client->busy = busy; - pw_callback_emit(&client->callback_list, struct pw_client_callbacks, busy_changed, busy); + pw_listener_list_emit(&client->listener_list, struct pw_client_events, busy_changed, busy); } } diff --git a/src/pipewire/client.h b/src/pipewire/client.h index a8c6114d6..229201581 100644 --- a/src/pipewire/client.h +++ b/src/pipewire/client.h @@ -45,8 +45,7 @@ struct pw_client; #include #include #include -#include -#include +#include #include #define PW_TYPE__Client PW_TYPE_OBJECT_BASE "Client" @@ -82,8 +81,8 @@ struct pw_client; * See also \ref page_resource */ -struct pw_client_callbacks { -#define PW_VERSION_CLIENT_CALLBACKS 0 +struct pw_client_events { +#define PW_VERSION_CLIENT_EVENTS 0 uint32_t version; void (*destroy) (void *data); @@ -112,10 +111,10 @@ void pw_client_destroy(struct pw_client *client); void *pw_client_get_user_data(struct pw_client *client); -void pw_client_add_callbacks(struct pw_client *client, - struct pw_callback_info *info, - const struct pw_client_callbacks *callbacks, - void *data); +void pw_client_add_listener(struct pw_client *client, + struct pw_listener *listener, + const struct pw_client_events *events, + void *data); const struct pw_client_info *pw_client_get_info(struct pw_client *client); diff --git a/src/pipewire/core.c b/src/pipewire/core.c index a67a0c209..8c3ef0dc8 100644 --- a/src/pipewire/core.c +++ b/src/pipewire/core.c @@ -24,7 +24,7 @@ #include #include -#include +#include #include #include #include @@ -37,7 +37,7 @@ struct global_impl { }; struct resource_data { - struct pw_callback_info resource_callbacks; + struct pw_listener resource_listener; }; /** \endcond */ @@ -107,8 +107,8 @@ static void registry_bind(void *object, uint32_t id, return; } -static const struct pw_registry_methods registry_methods = { - PW_VERSION_REGISTRY_METHODS, +static const struct pw_registry_proxy_methods registry_methods = { + PW_VERSION_REGISTRY_PROXY_METHODS, .bind = registry_bind }; @@ -118,8 +118,8 @@ static void destroy_registry_resource(void *object) spa_list_remove(&resource->link); } -static const struct pw_resource_callbacks resource_callbacks = { - PW_VERSION_RESOURCE_CALLBACKS, +static const struct pw_resource_events resource_events = { + PW_VERSION_RESOURCE_EVENTS, .destroy = destroy_registry_resource }; @@ -155,10 +155,10 @@ static void core_get_registry(void *object, uint32_t version, uint32_t new_id) goto no_mem; data = pw_resource_get_user_data(registry_resource); - pw_resource_add_callbacks(registry_resource, - &data->resource_callbacks, - &resource_callbacks, - registry_resource); + pw_resource_add_listener(registry_resource, + &data->resource_listener, + &resource_events, + registry_resource); pw_resource_set_implementation(registry_resource, ®istry_methods, @@ -274,14 +274,14 @@ static void core_update_types(void *object, uint32_t first_id, uint32_t n_types, } } -static const struct pw_core_methods core_methods = { - PW_VERSION_CORE_METHODS, - &core_update_types, - &core_sync, - &core_get_registry, - &core_client_update, - &core_create_node, - &core_create_link +static const struct pw_core_proxy_methods core_methods = { + PW_VERSION_CORE_PROXY_METHODS, + .update_types = core_update_types, + .sync = core_sync, + .get_registry = core_get_registry, + .client_update = core_client_update, + .create_node = core_create_node, + .create_link = core_create_link }; static void core_unbind_func(void *data) @@ -291,8 +291,8 @@ static void core_unbind_func(void *data) spa_list_remove(&resource->link); } -static const struct pw_resource_callbacks core_resource_callbacks = { - PW_VERSION_RESOURCE_CALLBACKS, +static const struct pw_resource_events core_resource_events = { + PW_VERSION_RESOURCE_EVENTS, .destroy = core_unbind_func, }; @@ -312,7 +312,7 @@ core_bind_func(struct pw_global *global, goto no_mem; data = pw_resource_get_user_data(resource); - pw_resource_add_callbacks(resource, &data->resource_callbacks, &core_resource_callbacks, resource); + pw_resource_add_listener(resource, &data->resource_listener, &core_resource_events, resource); pw_resource_set_implementation(resource, &core_methods, resource); @@ -381,7 +381,7 @@ struct pw_core *pw_core_new(struct pw_loop *main_loop, struct pw_properties *pro spa_list_init(&this->node_list); spa_list_init(&this->node_factory_list); spa_list_init(&this->link_list); - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); this->info.change_mask = 0; this->info.user_name = pw_get_user_name(); @@ -420,7 +420,7 @@ struct pw_core *pw_core_new(struct pw_loop *main_loop, struct pw_properties *pro void pw_core_destroy(struct pw_core *core) { pw_log_debug("core %p: destroy", core); - pw_callback_emit(&core->callback_list, struct pw_core_callbacks, destroy, core); + pw_listener_list_emit(&core->listener_list, struct pw_core_events, destroy, core); pw_data_loop_destroy(core->data_loop_impl); @@ -482,7 +482,7 @@ pw_core_add_global(struct pw_core *core, spa_list_insert(core->global_list.prev, &this->link); - pw_callback_emit(&core->callback_list, struct pw_core_callbacks, global_added, this); + pw_listener_list_emit(&core->listener_list, struct pw_core_events, global_added, this); pw_log_debug("global %p: new %u %s, owner %p", this, this->id, spa_type_map_get_type(core->type.map, this->type), owner); @@ -581,18 +581,18 @@ void pw_global_destroy(struct pw_global *global) pw_map_remove(&core->globals, global->id); spa_list_remove(&global->link); - pw_callback_emit(&core->callback_list, struct pw_core_callbacks, global_removed, global); + pw_listener_list_emit(&core->listener_list, struct pw_core_events, global_removed, global); pw_log_debug("global %p: free", global); free(global); } -void pw_core_add_callbacks(struct pw_core *core, - struct pw_callback_info *info, - const struct pw_core_callbacks *callbacks, - void *data) +void pw_core_add_listener(struct pw_core *core, + struct pw_listener *listener, + const struct pw_core_events *events, + void *data) { - pw_callback_add(&core->callback_list, info, callbacks, data); + pw_listener_list_add(&core->listener_list, listener, events, data); } struct pw_type *pw_core_get_type(struct pw_core *core) @@ -643,7 +643,7 @@ void pw_core_update_properties(struct pw_core *core, const struct spa_dict *dict core->info.change_mask = PW_CORE_CHANGE_MASK_PROPS; core->info.props = core->properties ? &core->properties->dict : NULL; - pw_callback_emit(&core->callback_list, struct pw_core_callbacks, info_changed, &core->info); + pw_listener_list_emit(&core->listener_list, struct pw_core_events, info_changed, &core->info); spa_list_for_each(resource, &core->resource_list, link) { pw_core_resource_info(resource, &core->info); diff --git a/src/pipewire/core.h b/src/pipewire/core.h index 31e70a66c..345c8b643 100644 --- a/src/pipewire/core.h +++ b/src/pipewire/core.h @@ -41,11 +41,10 @@ struct pw_global; struct pw_core; #include -#include +#include #include #include #include -#include #include #include @@ -140,8 +139,8 @@ typedef uint32_t (*pw_permission_func_t) (struct pw_global *global, */ struct pw_global; -struct pw_core_callbacks { -#define PW_VERSION_CORE_CALLBACKS 0 +struct pw_core_events { +#define PW_VERSION_CORE_EVENTS 0 uint32_t version; void (*destroy) (void *data, struct pw_core *core); @@ -158,10 +157,10 @@ pw_core_new(struct pw_loop *main_loop, struct pw_properties *props); void pw_core_destroy(struct pw_core *core); -void pw_core_add_callbacks(struct pw_core *core, - struct pw_callback_info *info, - const struct pw_core_callbacks *callbacks, - void *data); +void pw_core_add_listener(struct pw_core *core, + struct pw_listener *listener, + const struct pw_core_events *events, + void *data); struct pw_type *pw_core_get_type(struct pw_core *core); diff --git a/src/pipewire/data-loop.c b/src/pipewire/data-loop.c index a8bf3c3f4..dfa7d2269 100644 --- a/src/pipewire/data-loop.c +++ b/src/pipewire/data-loop.c @@ -115,7 +115,7 @@ struct pw_data_loop *pw_data_loop_new(void) if (this->loop == NULL) goto no_loop; - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); this->event = pw_loop_add_event(this->loop, do_stop, this); @@ -134,7 +134,7 @@ void pw_data_loop_destroy(struct pw_data_loop *loop) { pw_log_debug("data-loop %p: destroy", loop); - pw_callback_emit_na(&loop->callback_list, struct pw_data_loop_callbacks, destroy); + pw_listener_list_emit_na(&loop->listener_list, struct pw_data_loop_events, destroy); pw_data_loop_stop(loop); @@ -143,12 +143,12 @@ void pw_data_loop_destroy(struct pw_data_loop *loop) free(loop); } -void pw_data_loop_add_callbacks(struct pw_data_loop *loop, - struct pw_callback_info *info, - const struct pw_data_loop_callbacks *callbacks, - void *data) +void pw_data_loop_add_listener(struct pw_data_loop *loop, + struct pw_listener *listener, + const struct pw_data_loop_events *events, + void *data) { - pw_callback_add(&loop->callback_list, info, callbacks, data); + pw_listener_list_add(&loop->listener_list, listener, events, data); } struct pw_loop * diff --git a/src/pipewire/data-loop.h b/src/pipewire/data-loop.h index b98cc4346..2e8954525 100644 --- a/src/pipewire/data-loop.h +++ b/src/pipewire/data-loop.h @@ -31,10 +31,10 @@ extern "C" { struct pw_data_loop; #include -#include +#include -struct pw_data_loop_callbacks { -#define PW_VERSION_DATA_LOOP_CALLBACKS 0 +struct pw_data_loop_events { +#define PW_VERSION_DATA_LOOP_EVENTS 0 uint32_t version; void (*destroy) (void *data); @@ -43,10 +43,10 @@ struct pw_data_loop_callbacks { struct pw_data_loop * pw_data_loop_new(void); -void pw_data_loop_add_callbacks(struct pw_data_loop *loop, - struct pw_callback_info *info, - const struct pw_data_loop_callbacks *callbacks, - void *data); +void pw_data_loop_add_listener(struct pw_data_loop *loop, + struct pw_listener *listener, + const struct pw_data_loop_events *events, + void *data); struct pw_loop * pw_data_loop_get_loop(struct pw_data_loop *loop); diff --git a/src/pipewire/interfaces.h b/src/pipewire/interfaces.h index a9e107e66..3f65d1225 100644 --- a/src/pipewire/interfaces.h +++ b/src/pipewire/interfaces.h @@ -68,26 +68,26 @@ struct pw_link_proxy; #define PW_TYPE_INTERFACE__Client PW_TYPE_INTERFACE_BASE "Client" #define PW_TYPE_INTERFACE__Link PW_TYPE_INTERFACE_BASE "Link" -#define PW_VERSION_CORE 0 +#define PW_VERSION_CORE 0 -#define PW_CORE_METHOD_UPDATE_TYPES 0 -#define PW_CORE_METHOD_SYNC 1 -#define PW_CORE_METHOD_GET_REGISTRY 2 -#define PW_CORE_METHOD_CLIENT_UPDATE 3 -#define PW_CORE_METHOD_CREATE_NODE 4 -#define PW_CORE_METHOD_CREATE_LINK 5 -#define PW_CORE_METHOD_NUM 6 +#define PW_CORE_PROXY_METHOD_UPDATE_TYPES 0 +#define PW_CORE_PROXY_METHOD_SYNC 1 +#define PW_CORE_PROXY_METHOD_GET_REGISTRY 2 +#define PW_CORE_PROXY_METHOD_CLIENT_UPDATE 3 +#define PW_CORE_PROXY_METHOD_CREATE_NODE 4 +#define PW_CORE_PROXY_METHOD_CREATE_LINK 5 +#define PW_CORE_PROXY_METHOD_NUM 6 /** - * \struct pw_core_methods + * \struct pw_core_proxy_methods * \brief Core methods * * The core global object. This is a singleton object used for * creating new objects in the PipeWire server. It is also used * for internal features. */ -struct pw_core_methods { -#define PW_VERSION_CORE_METHODS 0 +struct pw_core_proxy_methods { +#define PW_VERSION_CORE_PROXY_METHODS 0 uint32_t version; /** * Update the type map @@ -169,27 +169,27 @@ struct pw_core_methods { static inline void pw_core_proxy_update_types(struct pw_core_proxy *core, uint32_t first_id, uint32_t n_types, const char **types) { - pw_proxy_do((struct pw_proxy*)core, struct pw_core_methods, update_types, first_id, n_types, types); + pw_proxy_do((struct pw_proxy*)core, struct pw_core_proxy_methods, update_types, first_id, n_types, types); } static inline void pw_core_proxy_sync(struct pw_core_proxy *core, uint32_t seq) { - pw_proxy_do((struct pw_proxy*)core, struct pw_core_methods, sync, seq); + pw_proxy_do((struct pw_proxy*)core, struct pw_core_proxy_methods, sync, seq); } static inline struct pw_registry_proxy * pw_core_proxy_get_registry(struct pw_core_proxy *core, uint32_t type, uint32_t version, size_t user_data_size) { struct pw_proxy *p = pw_proxy_new((struct pw_proxy*)core, type, user_data_size); - pw_proxy_do((struct pw_proxy*)core, struct pw_core_methods, get_registry, version, pw_proxy_get_id(p)); + pw_proxy_do((struct pw_proxy*)core, struct pw_core_proxy_methods, get_registry, version, pw_proxy_get_id(p)); return (struct pw_registry_proxy *) p; } static inline void pw_core_proxy_client_update(struct pw_core_proxy *core, const struct spa_dict *props) { - pw_proxy_do((struct pw_proxy*)core, struct pw_core_methods, client_update, props); + pw_proxy_do((struct pw_proxy*)core, struct pw_core_proxy_methods, client_update, props); } static inline void * @@ -202,7 +202,7 @@ pw_core_proxy_create_node(struct pw_core_proxy *core, size_t user_data_size) { struct pw_proxy *p = pw_proxy_new((struct pw_proxy*)core, type, user_data_size); - pw_proxy_do((struct pw_proxy*)core, struct pw_core_methods, create_node, factory_name, + pw_proxy_do((struct pw_proxy*)core, struct pw_core_proxy_methods, create_node, factory_name, name, type, version, props, pw_proxy_get_id(p)); return p; } @@ -219,25 +219,25 @@ pw_core_proxy_create_link(struct pw_core_proxy *core, size_t user_data_size) { struct pw_proxy *p = pw_proxy_new((struct pw_proxy*)core, type, user_data_size); - pw_proxy_do((struct pw_proxy*)core, struct pw_core_methods, create_link, output_node_id, output_port_id, + pw_proxy_do((struct pw_proxy*)core, struct pw_core_proxy_methods, create_link, output_node_id, output_port_id, input_node_id, input_port_id, filter, prop, pw_proxy_get_id(p)); return (struct pw_link_proxy*) p; } -#define PW_CORE_EVENT_UPDATE_TYPES 0 -#define PW_CORE_EVENT_DONE 1 -#define PW_CORE_EVENT_ERROR 2 -#define PW_CORE_EVENT_REMOVE_ID 3 -#define PW_CORE_EVENT_INFO 4 -#define PW_CORE_EVENT_NUM 5 +#define PW_CORE_PROXY_EVENT_UPDATE_TYPES 0 +#define PW_CORE_PROXY_EVENT_DONE 1 +#define PW_CORE_PROXY_EVENT_ERROR 2 +#define PW_CORE_PROXY_EVENT_REMOVE_ID 3 +#define PW_CORE_PROXY_EVENT_INFO 4 +#define PW_CORE_PROXY_EVENT_NUM 5 -/** \struct pw_core_events +/** \struct pw_core_proxy_events * \brief Core events * \ingroup pw_core_interface The pw_core interface */ -struct pw_core_events { -#define PW_VERSION_CORE_EVENTS 0 +struct pw_core_proxy_events { +#define PW_VERSION_CORE_PROXY_EVENTS 0 uint32_t version; /** * Update the type map @@ -294,30 +294,29 @@ struct pw_core_events { static inline void pw_core_proxy_add_listener(struct pw_core_proxy *core, - struct pw_callback_info *info, - const struct pw_core_events *events, + struct pw_listener *listener, + const struct pw_core_proxy_events *events, void *data) { - pw_proxy_add_listener((struct pw_proxy*)core, info, events, data); + pw_proxy_add_proxy_listener((struct pw_proxy*)core, listener, events, data); } -#define pw_core_resource_update_types(r,...) pw_resource_notify(r,struct pw_core_events,update_types,__VA_ARGS__) -#define pw_core_resource_done(r,...) pw_resource_notify(r,struct pw_core_events,done,__VA_ARGS__) -#define pw_core_resource_error(r,...) pw_resource_notify(r,struct pw_core_events,error,__VA_ARGS__) -#define pw_core_resource_remove_id(r,...) pw_resource_notify(r,struct pw_core_events,remove_id,__VA_ARGS__) -#define pw_core_resource_info(r,...) pw_resource_notify(r,struct pw_core_events,info,__VA_ARGS__) +#define pw_core_resource_update_types(r,...) pw_resource_notify(r,struct pw_core_proxy_events,update_types,__VA_ARGS__) +#define pw_core_resource_done(r,...) pw_resource_notify(r,struct pw_core_proxy_events,done,__VA_ARGS__) +#define pw_core_resource_error(r,...) pw_resource_notify(r,struct pw_core_proxy_events,error,__VA_ARGS__) +#define pw_core_resource_remove_id(r,...) pw_resource_notify(r,struct pw_core_proxy_events,remove_id,__VA_ARGS__) +#define pw_core_resource_info(r,...) pw_resource_notify(r,struct pw_core_proxy_events,info,__VA_ARGS__) +#define PW_VERSION_REGISTRY 0 -#define PW_VERSION_REGISTRY 0 - -#define PW_REGISTRY_METHOD_BIND 0 -#define PW_REGISTRY_METHOD_NUM 1 +#define PW_REGISTRY_PROXY_METHOD_BIND 0 +#define PW_REGISTRY_PROXY_METHOD_NUM 1 /** Registry methods */ -struct pw_registry_methods { -#define PW_VERSION_REGISTRY_METHODS 0 +struct pw_registry_proxy_methods { +#define PW_VERSION_REGISTRY_PROXY_METHODS 0 uint32_t version; /** * Bind to a global object @@ -342,17 +341,17 @@ pw_registry_proxy_bind(struct pw_registry_proxy *registry, { struct pw_proxy *reg = (struct pw_proxy*)registry; struct pw_proxy *p = pw_proxy_new(reg, type, user_data_size); - pw_proxy_do(reg, struct pw_registry_methods, bind, id, type, version, pw_proxy_get_id(p)); + pw_proxy_do(reg, struct pw_registry_proxy_methods, bind, id, type, version, pw_proxy_get_id(p)); return p; } -#define PW_REGISTRY_EVENT_GLOBAL 0 -#define PW_REGISTRY_EVENT_GLOBAL_REMOVE 1 -#define PW_REGISTRY_EVENT_NUM 2 +#define PW_REGISTRY_PROXY_EVENT_GLOBAL 0 +#define PW_REGISTRY_PROXY_EVENT_GLOBAL_REMOVE 1 +#define PW_REGISTRY_PROXY_EVENT_NUM 2 /** Registry events */ -struct pw_registry_events { -#define PW_VERSION_REGISTRY_EVENTS 0 +struct pw_registry_proxy_events { +#define PW_VERSION_REGISTRY_PROXY_EVENTS 0 uint32_t version; /** * Notify of a new global object @@ -382,25 +381,25 @@ struct pw_registry_events { static inline void pw_registry_proxy_add_listener(struct pw_registry_proxy *registry, - struct pw_callback_info *info, - const struct pw_registry_events *events, + struct pw_listener *listener, + const struct pw_registry_proxy_events *events, void *data) { - pw_proxy_add_listener((struct pw_proxy*)registry, info, events, data); + pw_proxy_add_proxy_listener((struct pw_proxy*)registry, listener, events, data); } -#define pw_registry_resource_global(r,...) pw_resource_notify(r,struct pw_registry_events,global,__VA_ARGS__) -#define pw_registry_resource_global_remove(r,...) pw_resource_notify(r,struct pw_registry_events,global_remove,__VA_ARGS__) +#define pw_registry_resource_global(r,...) pw_resource_notify(r,struct pw_registry_proxy_events,global,__VA_ARGS__) +#define pw_registry_resource_global_remove(r,...) pw_resource_notify(r,struct pw_registry_proxy_events,global_remove,__VA_ARGS__) -#define PW_VERSION_MODULE 0 +#define PW_VERSION_MODULE 0 -#define PW_MODULE_EVENT_INFO 0 -#define PW_MODULE_EVENT_NUM 1 +#define PW_MODULE_PROXY_EVENT_INFO 0 +#define PW_MODULE_PROXY_EVENT_NUM 1 /** Module events */ -struct pw_module_events { -#define PW_VERSION_MODULE_EVENTS 0 +struct pw_module_proxy_events { +#define PW_VERSION_MODULE_PROXY_EVENTS 0 uint32_t version; /** * Notify module info @@ -412,23 +411,23 @@ struct pw_module_events { static inline void pw_module_proxy_add_listener(struct pw_module_proxy *module, - struct pw_callback_info *info, - const struct pw_module_events *events, + struct pw_listener *listener, + const struct pw_module_proxy_events *events, void *data) { - pw_proxy_add_listener((struct pw_proxy*)module, info, events, data); + pw_proxy_add_proxy_listener((struct pw_proxy*)module, listener, events, data); } -#define pw_module_resource_info(r,...) pw_resource_notify(r,struct pw_module_events,info,__VA_ARGS__) +#define pw_module_resource_info(r,...) pw_resource_notify(r,struct pw_module_proxy_events,info,__VA_ARGS__) #define PW_VERSION_NODE 0 -#define PW_NODE_EVENT_INFO 0 -#define PW_NODE_EVENT_NUM 1 +#define PW_NODE_PROXY_EVENT_INFO 0 +#define PW_NODE_PROXY_EVENT_NUM 1 /** Node events */ -struct pw_node_events { -#define PW_VERSION_NODE_EVENTS 0 +struct pw_node_proxy_events { +#define PW_VERSION_NODE_PROXY_EVENTS 0 uint32_t version; /** * Notify node info @@ -440,23 +439,23 @@ struct pw_node_events { static inline void pw_node_proxy_add_listener(struct pw_node_proxy *node, - struct pw_callback_info *info, - const struct pw_node_events *events, + struct pw_listener *listener, + const struct pw_node_proxy_events *events, void *data) { - pw_proxy_add_listener((struct pw_proxy*)node, info, events, data); + pw_proxy_add_proxy_listener((struct pw_proxy*)node, listener, events, data); } -#define pw_node_resource_info(r,...) pw_resource_notify(r,struct pw_node_events,info,__VA_ARGS__) +#define pw_node_resource_info(r,...) pw_resource_notify(r,struct pw_node_proxy_events,info,__VA_ARGS__) -#define PW_VERSION_CLIENT 0 +#define PW_VERSION_CLIENT 0 -#define PW_CLIENT_EVENT_INFO 0 -#define PW_CLIENT_EVENT_NUM 1 +#define PW_CLIENT_PROXY_EVENT_INFO 0 +#define PW_CLIENT_PROXY_EVENT_NUM 1 /** Client events */ -struct pw_client_events { -#define PW_VERSION_CLIENT_EVENTS 0 +struct pw_client_proxy_events { +#define PW_VERSION_CLIENT_PROXY_EVENTS 0 uint32_t version; /** * Notify client info @@ -469,24 +468,24 @@ struct pw_client_events { /** Client */ static inline void pw_client_proxy_add_listener(struct pw_client_proxy *client, - struct pw_callback_info *info, - const struct pw_client_events *events, + struct pw_listener *listener, + const struct pw_client_proxy_events *events, void *data) { - pw_proxy_add_listener((struct pw_proxy*)client, info, events, data); + pw_proxy_add_proxy_listener((struct pw_proxy*)client, listener, events, data); } -#define pw_client_resource_info(r,...) pw_resource_notify(r,struct pw_client_events,info,__VA_ARGS__) +#define pw_client_resource_info(r,...) pw_resource_notify(r,struct pw_client_proxy_events,info,__VA_ARGS__) #define PW_VERSION_LINK 0 -#define PW_LINK_EVENT_INFO 0 -#define PW_LINK_EVENT_NUM 1 +#define PW_LINK_PROXY_EVENT_INFO 0 +#define PW_LINK_PROXY_EVENT_NUM 1 /** Link events */ -struct pw_link_events { -#define PW_VERSION_LINK_EVENTS 0 +struct pw_link_proxy_events { +#define PW_VERSION_LINK_PROXY_EVENTS 0 uint32_t version; /** * Notify link info @@ -499,14 +498,14 @@ struct pw_link_events { /** Link */ static inline void pw_link_proxy_add_listener(struct pw_link_proxy *link, - struct pw_callback_info *info, - const struct pw_link_events *events, + struct pw_listener *listener, + const struct pw_link_proxy_events *events, void *data) { - pw_proxy_add_listener((struct pw_proxy*)link, info, events, data); + pw_proxy_add_proxy_listener((struct pw_proxy*)link, listener, events, data); } -#define pw_link_resource_info(r,...) pw_resource_notify(r,struct pw_link_events,info,__VA_ARGS__) +#define pw_link_resource_info(r,...) pw_resource_notify(r,struct pw_link_proxy_events,info,__VA_ARGS__) #ifdef __cplusplus } /* extern "C" */ diff --git a/src/pipewire/link.c b/src/pipewire/link.c index ad9ccbd54..af571d23f 100644 --- a/src/pipewire/link.c +++ b/src/pipewire/link.c @@ -27,7 +27,6 @@ #include #include -#include "callback.h" #include "pipewire.h" #include "private.h" #include "interfaces.h" @@ -47,10 +46,10 @@ struct impl { struct spa_format *format_filter; struct pw_properties *properties; - struct pw_callback_info input_port_callbacks; - struct pw_callback_info input_node_callbacks; - struct pw_callback_info output_port_callbacks; - struct pw_callback_info output_node_callbacks; + struct pw_listener input_port_listener; + struct pw_listener input_node_listener; + struct pw_listener output_port_listener; + struct pw_listener output_node_listener; void *buffer_owner; struct pw_memblock buffer_mem; @@ -59,7 +58,7 @@ struct impl { }; struct resource_data { - struct pw_callback_info resource_callbacks; + struct pw_listener resource_listener; }; /** \endcond */ @@ -77,7 +76,7 @@ static void pw_link_update_state(struct pw_link *link, enum pw_link_state state, free(link->error); link->error = error; - pw_callback_emit(&link->callback_list, struct pw_link_callbacks, state_changed, old, state, error); + pw_listener_list_emit(&link->listener_list, struct pw_link_events, state_changed, old, state, error); } } @@ -777,8 +776,8 @@ static void input_remove(struct pw_link *this, struct pw_port *port) struct impl *impl = (struct impl *) this; pw_log_debug("link %p: remove input port %p", this, port); - pw_callback_remove(&impl->input_port_callbacks); - pw_callback_remove(&impl->input_node_callbacks); + pw_listener_remove(&impl->input_port_listener); + pw_listener_remove(&impl->input_node_listener); pw_loop_invoke(port->node->data_loop, do_remove_input, 1, 0, NULL, true, this); @@ -800,8 +799,8 @@ static void output_remove(struct pw_link *this, struct pw_port *port) struct impl *impl = (struct impl *) this; pw_log_debug("link %p: remove output port %p", this, port); - pw_callback_remove(&impl->output_port_callbacks); - pw_callback_remove(&impl->output_node_callbacks); + pw_listener_remove(&impl->output_port_listener); + pw_listener_remove(&impl->output_node_listener); pw_loop_invoke(port->node->data_loop, do_remove_output, 1, 0, NULL, true, this); @@ -832,7 +831,7 @@ static void on_port_destroy(struct pw_link *this, struct pw_port *port) impl->buffer_owner = NULL; } - pw_callback_emit(&this->callback_list, struct pw_link_callbacks, port_unlinked, port); + pw_listener_list_emit(&this->listener_list, struct pw_link_events, port_unlinked, port); pw_link_update_state(this, PW_LINK_STATE_UNLINKED, NULL); pw_link_destroy(this); @@ -942,8 +941,8 @@ static void link_unbind_func(void *data) spa_list_remove(&resource->link); } -static const struct pw_resource_callbacks resource_callbacks = { - PW_VERSION_RESOURCE_CALLBACKS, +static const struct pw_resource_events resource_events = { + PW_VERSION_RESOURCE_EVENTS, .destroy = link_unbind_func, }; @@ -961,7 +960,7 @@ link_bind_func(struct pw_global *global, goto no_mem; data = pw_resource_get_user_data(resource); - pw_resource_add_callbacks(resource, &data->resource_callbacks, &resource_callbacks, resource); + pw_resource_add_listener(resource, &data->resource_listener, &resource_events, resource); pw_log_debug("link %p: bound to %d", this, resource->id); @@ -996,23 +995,23 @@ do_add_link(struct spa_loop *loop, return SPA_RESULT_OK; } -static const struct pw_port_callbacks input_port_callbacks = { - PW_VERSION_PORT_CALLBACKS, +static const struct pw_port_events input_port_events = { + PW_VERSION_PORT_EVENTS, .destroy = input_port_destroy, }; -static const struct pw_port_callbacks output_port_callbacks = { - PW_VERSION_PORT_CALLBACKS, +static const struct pw_port_events output_port_events = { + PW_VERSION_PORT_EVENTS, .destroy = output_port_destroy, }; -static const struct pw_node_callbacks input_node_callbacks = { - PW_VERSION_NODE_CALLBACKS, +static const struct pw_node_events input_node_events = { + PW_VERSION_NODE_EVENTS, .async_complete = input_node_async_complete, }; -static const struct pw_node_callbacks output_node_callbacks = { - PW_VERSION_NODE_CALLBACKS, +static const struct pw_node_events output_node_events = { + PW_VERSION_NODE_EVENTS, .async_complete = output_node_async_complete, }; @@ -1054,14 +1053,14 @@ struct pw_link *pw_link_new(struct pw_core *core, output_node = output->node; spa_list_init(&this->resource_list); - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); impl->format_filter = format_filter; - pw_port_add_callbacks(input, &impl->input_port_callbacks, &input_port_callbacks, impl); - pw_node_add_callbacks(input_node, &impl->input_node_callbacks, &input_node_callbacks, impl); - pw_port_add_callbacks(output, &impl->output_port_callbacks, &output_port_callbacks, impl); - pw_node_add_callbacks(output_node, &impl->output_node_callbacks, &output_node_callbacks, impl); + pw_port_add_listener(input, &impl->input_port_listener, &input_port_events, impl); + pw_node_add_listener(input_node, &impl->input_node_listener, &input_node_events, impl); + pw_port_add_listener(output, &impl->output_port_listener, &output_port_events, impl); + pw_node_add_listener(output_node, &impl->output_node_listener, &output_node_events, impl); pw_log_debug("link %p: constructed %p:%d -> %p:%d", impl, output_node, output->port_id, input_node, input->port_id); @@ -1124,7 +1123,7 @@ void pw_link_destroy(struct pw_link *link) struct pw_resource *resource, *tmp; pw_log_debug("link %p: destroy", impl); - pw_callback_emit_na(&link->callback_list, struct pw_link_callbacks, destroy); + pw_listener_list_emit_na(&link->listener_list, struct pw_link_events, destroy); pw_link_deactivate(link); @@ -1153,12 +1152,12 @@ void pw_link_destroy(struct pw_link *link) free(impl); } -void pw_link_add_callbacks(struct pw_link *link, - struct pw_callback_info *info, - const struct pw_link_callbacks *callbacks, - void *data) +void pw_link_add_listener(struct pw_link *link, + struct pw_listener *listener, + const struct pw_link_events *events, + void *data) { - pw_callback_add(&link->callback_list, info, callbacks, data); + pw_listener_list_add(&link->listener_list, listener, events, data); } struct pw_link *pw_link_find(struct pw_port *output_port, struct pw_port *input_port) diff --git a/src/pipewire/link.h b/src/pipewire/link.h index a68b77db2..5fbe8f8ae 100644 --- a/src/pipewire/link.h +++ b/src/pipewire/link.h @@ -54,8 +54,8 @@ struct pw_link; * the nodes. */ -struct pw_link_callbacks { -#define PW_VERSION_LINK_CALLBACKS 0 +struct pw_link_events { +#define PW_VERSION_LINK_EVENTS 0 uint32_t version; void (*destroy) (void *data); @@ -82,10 +82,10 @@ pw_link_new(struct pw_core *core, /**< the core object */ /** Destroy a link \memberof pw_link */ void pw_link_destroy(struct pw_link *link); -void pw_link_add_callbacks(struct pw_link *link, - struct pw_callback_info *info, - const struct pw_link_callbacks *callbacks, - void *data); +void pw_link_add_listener(struct pw_link *link, + struct pw_listener *listener, + const struct pw_link_events *events, + void *data); /** Find the link between 2 ports \memberof pw_link */ struct pw_link * pw_link_find(struct pw_port *output, struct pw_port *input); diff --git a/src/pipewire/callback.h b/src/pipewire/listener.h similarity index 55% rename from src/pipewire/callback.h rename to src/pipewire/listener.h index 510b769b7..0a45ceac1 100644 --- a/src/pipewire/callback.h +++ b/src/pipewire/listener.h @@ -17,8 +17,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __PIPEWIRE_CALLBACK_H__ -#define __PIPEWIRE_CALLBACK_H__ +#ifndef __PIPEWIRE_LISTENER_H__ +#define __PIPEWIRE_LISTENER_H__ #ifdef __cplusplus extern "C" { @@ -26,52 +26,52 @@ extern "C" { #include -struct pw_callback_list { +struct pw_listener_list { struct spa_list list; }; -struct pw_callback_info { +struct pw_listener { struct spa_list link; - const void *callbacks; + const void *events; void *data; }; -static inline void pw_callback_init(struct pw_callback_list *list) +static inline void pw_listener_list_init(struct pw_listener_list *list) { spa_list_init(&list->list); } -/** Add a callback \memberof pw_callback */ -static inline void pw_callback_add(struct pw_callback_list *list, - struct pw_callback_info *info, - const void *callbacks, void *data) +/** Add a listener \memberof pw_listener */ +static inline void pw_listener_list_add(struct pw_listener_list *list, + struct pw_listener *listener, + const void *events, void *data) { - info->callbacks = callbacks; - info->data = data; - spa_list_insert(list->list.prev, &info->link); + listener->events = events; + listener->data = data; + spa_list_insert(list->list.prev, &listener->link); } -/** Remove a signal listener \memberof pw_callback */ -static inline void pw_callback_remove(struct pw_callback_info *info) +/** Remove a listener \memberof pw_listener */ +static inline void pw_listener_remove(struct pw_listener *listener) { - spa_list_remove(&info->link); + spa_list_remove(&listener->link); } -#define pw_callback_emit(l,type,method,...) ({ \ - struct pw_callback_list *list = l; \ - struct pw_callback_info *ci, *t; \ +#define pw_listener_list_emit(l,type,method,...) ({ \ + struct pw_listener_list *list = l; \ + struct pw_listener *ci, *t; \ spa_list_for_each_safe(ci, t, &list->list, link) { \ - const type *cb = ci->callbacks; \ + const type *cb = ci->events; \ if (cb->method) \ cb->method(ci->data, __VA_ARGS__); \ } \ }); -#define pw_callback_emit_na(l,type,method) ({ \ - struct pw_callback_list *list = l; \ - struct pw_callback_info *ci, *t; \ +#define pw_listener_list_emit_na(l,type,method) ({ \ + struct pw_listener_list *list = l; \ + struct pw_listener *ci, *t; \ spa_list_for_each_safe(ci, t, &list->list, link) { \ - const type *cb = ci->callbacks; \ + const type *cb = ci->events; \ if (cb->method) \ cb->method(ci->data); \ } \ @@ -81,4 +81,4 @@ static inline void pw_callback_remove(struct pw_callback_info *info) } #endif -#endif /* __PIPEWIRE_CALLBACK_H__ */ +#endif /* __PIPEWIRE_LISTENER_H__ */ diff --git a/src/pipewire/loop.h b/src/pipewire/loop.h index e41a7fddb..bb9c3c94c 100644 --- a/src/pipewire/loop.h +++ b/src/pipewire/loop.h @@ -26,7 +26,6 @@ extern "C" { #include -#include /** \class pw_loop * diff --git a/src/pipewire/main-loop.c b/src/pipewire/main-loop.c index 3ae43c9cf..1f84df7cf 100644 --- a/src/pipewire/main-loop.c +++ b/src/pipewire/main-loop.c @@ -40,7 +40,7 @@ struct pw_main_loop *pw_main_loop_new(void) if (this->loop == NULL) goto no_loop; - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); return this; @@ -57,19 +57,19 @@ struct pw_main_loop *pw_main_loop_new(void) void pw_main_loop_destroy(struct pw_main_loop *loop) { pw_log_debug("main-loop %p: destroy", loop); - pw_callback_emit_na(&loop->callback_list, struct pw_main_loop_callbacks, destroy); + pw_listener_list_emit_na(&loop->listener_list, struct pw_main_loop_events, destroy); pw_loop_destroy(loop->loop); free(loop); } -void pw_main_loop_add_callbacks(struct pw_main_loop *loop, - struct pw_callback_info *info, - const struct pw_main_loop_callbacks *callbacks, - void *data) +void pw_main_loop_add_listener(struct pw_main_loop *loop, + struct pw_listener *listener, + const struct pw_main_loop_events *events, + void *data) { - pw_callback_add(&loop->callback_list, info, callbacks, data); + pw_listener_list_add(&loop->listener_list, listener, events, data); } struct pw_loop * pw_main_loop_get_loop(struct pw_main_loop *loop) diff --git a/src/pipewire/main-loop.h b/src/pipewire/main-loop.h index 59fd1065f..06484e7cc 100644 --- a/src/pipewire/main-loop.h +++ b/src/pipewire/main-loop.h @@ -34,10 +34,10 @@ extern "C" { struct pw_main_loop; #include -#include +#include -struct pw_main_loop_callbacks { -#define PW_VERSION_MAIN_LOOP_CALLBACKS 0 +struct pw_main_loop_events { +#define PW_VERSION_MAIN_LOOP_EVENTS 0 uint32_t version; void (*destroy) (void *data); @@ -46,10 +46,10 @@ struct pw_main_loop_callbacks { struct pw_main_loop * pw_main_loop_new(void); -void pw_main_loop_add_callbacks(struct pw_main_loop *loop, - struct pw_callback_info *info, - const struct pw_main_loop_callbacks *callbacks, - void *data); +void pw_main_loop_add_listener(struct pw_main_loop *loop, + struct pw_listener *listener, + const struct pw_main_loop_events *events, + void *data); struct pw_loop * pw_main_loop_get_loop(struct pw_main_loop *loop); diff --git a/src/pipewire/meson.build b/src/pipewire/meson.build index 782bc1f86..239649b0b 100644 --- a/src/pipewire/meson.build +++ b/src/pipewire/meson.build @@ -7,6 +7,7 @@ pipewire_headers = [ 'interfaces.h', 'introspect.h', 'link.h', + 'listener.h', 'log.h', 'loop.h', 'main-loop.h', @@ -23,7 +24,6 @@ pipewire_headers = [ 'remote.h', 'resource.h', 'rtkit.h', - 'sig.h', 'stream.h', 'thread-loop.h', 'transport.h', diff --git a/src/pipewire/module.c b/src/pipewire/module.c index 3672e33f8..f3ac1e9a7 100644 --- a/src/pipewire/module.c +++ b/src/pipewire/module.c @@ -41,7 +41,7 @@ struct impl { }; struct resource_data { - struct pw_callback_info resource_callbacks; + struct pw_listener resource_listener; }; @@ -100,8 +100,8 @@ static void module_unbind_func(void *data) spa_list_remove(&resource->link); } -static const struct pw_resource_callbacks resource_callbacks = { - PW_VERSION_RESOURCE_CALLBACKS, +static const struct pw_resource_events resource_events = { + PW_VERSION_RESOURCE_EVENTS, .destroy = module_unbind_func, }; @@ -119,7 +119,7 @@ module_bind_func(struct pw_global *global, goto no_mem; data = pw_resource_get_user_data(resource); - pw_resource_add_callbacks(resource, &data->resource_callbacks, &resource_callbacks, resource); + pw_resource_add_listener(resource, &data->resource_listener, &resource_events, resource); pw_log_debug("module %p: bound to %d", this, resource->id); @@ -210,7 +210,7 @@ struct pw_module *pw_module_load(struct pw_core *core, const char *name, const c this->core = core; spa_list_init(&this->resource_list); - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); this->info.name = name ? strdup(name) : NULL; this->info.filename = filename; @@ -257,7 +257,7 @@ void pw_module_destroy(struct pw_module *module) struct impl *impl = SPA_CONTAINER_OF(module, struct impl, this); struct pw_resource *resource, *tmp; - pw_callback_emit(&module->callback_list, struct pw_module_callbacks, destroy, module); + pw_listener_list_emit_na(&module->listener_list, struct pw_module_events, destroy); spa_list_for_each_safe(resource, tmp, &module->resource_list, link) pw_resource_destroy(resource); @@ -292,10 +292,10 @@ pw_module_get_info(struct pw_module *module) return &module->info; } -void pw_module_add_callbacks(struct pw_module *module, - struct pw_callback_info *info, - const struct pw_module_callbacks *callbacks, - void *data) +void pw_module_add_listener(struct pw_module *module, + struct pw_listener *listener, + const struct pw_module_events *events, + void *data) { - pw_callback_add(&module->callback_list, info, callbacks, data); + pw_listener_list_add(&module->listener_list, listener, events, data); } diff --git a/src/pipewire/module.h b/src/pipewire/module.h index f6e334335..1df852438 100644 --- a/src/pipewire/module.h +++ b/src/pipewire/module.h @@ -51,11 +51,11 @@ struct pw_module; */ typedef bool (*pw_module_init_func_t) (struct pw_module *module, char *args); -struct pw_module_callbacks { -#define PW_VERSION_MODULE_CALLBACKS 0 +struct pw_module_events { +#define PW_VERSION_MODULE_EVENTS 0 uint32_t version; - void (*destroy) (void *data, struct pw_module *module); + void (*destroy) (void *data); }; struct pw_module * @@ -68,10 +68,10 @@ struct pw_global * pw_module_get_global(struct pw_module *module); const struct pw_module_info * pw_module_get_info(struct pw_module *module); -void pw_module_add_callbacks(struct pw_module *module, - struct pw_callback_info *info, - const struct pw_module_callbacks *callbacks, - void *data); +void pw_module_add_listener(struct pw_module *module, + struct pw_listener *listener, + const struct pw_module_events *events, + void *data); void pw_module_destroy(struct pw_module *module); diff --git a/src/pipewire/node.c b/src/pipewire/node.c index e0b50bb82..c0de93c1a 100644 --- a/src/pipewire/node.c +++ b/src/pipewire/node.c @@ -39,13 +39,13 @@ struct impl { struct pw_work_queue *work; - struct pw_callback_info node_callbacks; + struct pw_listener node_listener; bool registered; }; struct resource_data { - struct pw_callback_info resource_callbacks; + struct pw_listener resource_listener; }; /** \endcond */ @@ -247,8 +247,8 @@ clear_info(struct pw_node *this) } -static const struct pw_resource_callbacks resource_callbacks = { - PW_VERSION_RESOURCE_CALLBACKS, +static const struct pw_resource_events resource_events = { + PW_VERSION_RESOURCE_EVENTS, .destroy = node_unbind_func, }; @@ -266,7 +266,7 @@ node_bind_func(struct pw_global *global, goto no_mem; data = pw_resource_get_user_data(resource); - pw_resource_add_callbacks(resource, &data->resource_callbacks, &resource_callbacks, resource); + pw_resource_add_listener(resource, &data->resource_listener, &resource_events, resource); pw_log_debug("node %p: bound to %d", this, resource->id); @@ -315,7 +315,7 @@ void pw_node_register(struct pw_node *this) node_bind_func, this); impl->registered = true; - pw_callback_emit_na(&this->callback_list, struct pw_node_callbacks, initialized); + pw_listener_list_emit_na(&this->listener_list, struct pw_node_events, initialized); pw_node_update_state(this, PW_NODE_STATE_SUSPENDED, NULL); } @@ -346,12 +346,12 @@ graph_impl_process_output(struct spa_graph_node *node, void *user_data) static const struct spa_graph_node_methods graph_methods = { SPA_VERSION_GRAPH_NODE_METHODS, - graph_impl_process_input, - graph_impl_process_output, + .process_input = graph_impl_process_input, + .process_output = graph_impl_process_output, }; -static const struct pw_node_callbacks node_callbacks = { - PW_VERSION_NODE_CALLBACKS, +static const struct pw_node_events node_events = { + PW_VERSION_NODE_EVENTS, .async_complete = node_async_complete, .event = node_event, .need_input = node_need_input, @@ -397,9 +397,9 @@ struct pw_node *pw_node_new(struct pw_core *core, spa_list_init(&this->resource_list); - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); - pw_node_add_callbacks(this, &impl->node_callbacks, &node_callbacks, impl); + pw_node_add_listener(this, &impl->node_listener, &node_events, impl); this->info.state = PW_NODE_STATE_CREATING; @@ -438,12 +438,12 @@ void pw_node_set_implementation(struct pw_node *node, node->implementation_data = data; } -void pw_node_add_callbacks(struct pw_node *node, - struct pw_callback_info *info, - const struct pw_node_callbacks *callbacks, +void pw_node_add_listener(struct pw_node *node, + struct pw_listener *listener, + const struct pw_node_events *events, void *data) { - pw_callback_add(&node->callback_list, info, callbacks, data); + pw_listener_list_add(&node->listener_list, listener, events, data); } static int @@ -474,7 +474,7 @@ void pw_node_destroy(struct pw_node *node) struct pw_port *port, *tmpp; pw_log_debug("node %p: destroy", impl); - pw_callback_emit_na(&node->callback_list, struct pw_node_callbacks, destroy); + pw_listener_list_emit_na(&node->listener_list, struct pw_node_events, destroy); pw_loop_invoke(node->data_loop, do_node_remove, 1, 0, NULL, true, node); @@ -489,17 +489,17 @@ void pw_node_destroy(struct pw_node *node) pw_log_debug("node %p: destroy ports", node); spa_list_for_each_safe(port, tmpp, &node->input_ports, link) { - pw_callback_emit(&node->callback_list, struct pw_node_callbacks, port_removed, port); + pw_listener_list_emit(&node->listener_list, struct pw_node_events, port_removed, port); pw_port_destroy(port); } spa_list_for_each_safe(port, tmpp, &node->output_ports, link) { - pw_callback_emit(&node->callback_list, struct pw_node_callbacks, port_removed, port); + pw_listener_list_emit(&node->listener_list, struct pw_node_events, port_removed, port); pw_port_destroy(port); } pw_log_debug("node %p: free", node); - pw_callback_emit_na(&node->callback_list, struct pw_node_callbacks, free); + pw_listener_list_emit_na(&node->listener_list, struct pw_node_events, free); pw_work_queue_destroy(impl->work); @@ -652,7 +652,7 @@ int pw_node_set_state(struct pw_node *node, enum pw_node_state state) int res = SPA_RESULT_OK; struct impl *impl = SPA_CONTAINER_OF(node, struct impl, this); - pw_callback_emit(&node->callback_list, struct pw_node_callbacks, state_request, state); + pw_listener_list_emit(&node->listener_list, struct pw_node_events, state_request, state); pw_log_debug("node %p: set state %s", node, pw_node_state_as_string(state)); @@ -715,11 +715,11 @@ void pw_node_update_state(struct pw_node *node, enum pw_node_state state, char * if (state == PW_NODE_STATE_IDLE) node_deactivate(node); - pw_callback_emit(&node->callback_list, struct pw_node_callbacks, state_changed, + pw_listener_list_emit(&node->listener_list, struct pw_node_events, state_changed, old, state, error); node->info.change_mask |= 1 << 5; - pw_callback_emit(&node->callback_list, struct pw_node_callbacks, info_changed, &node->info); + pw_listener_list_emit(&node->listener_list, struct pw_node_events, info_changed, &node->info); spa_list_for_each(resource, &node->resource_list, link) pw_node_resource_info(resource, &node->info); diff --git a/src/pipewire/node.h b/src/pipewire/node.h index 972ff60d4..28be3d805 100644 --- a/src/pipewire/node.h +++ b/src/pipewire/node.h @@ -76,8 +76,8 @@ struct pw_node_implementation { }; -struct pw_node_callbacks { -#define PW_VERSION_NODE_CALLBACKS 0 +struct pw_node_events { +#define PW_VERSION_NODE_EVENTS 0 uint32_t version; /** the node is destroyed */ @@ -135,10 +135,10 @@ void pw_node_set_implementation(struct pw_node *node, const struct pw_node_implementation *implementation, void *data); -void pw_node_add_callbacks(struct pw_node *node, - struct pw_callback_info *info, - const struct pw_node_callbacks *callbacks, - void *data); +void pw_node_add_listener(struct pw_node *node, + struct pw_listener *listener, + const struct pw_node_events *events, + void *data); /** Find the port with direction and port_id or NULL when not found */ struct pw_port * diff --git a/src/pipewire/pipewire.h b/src/pipewire/pipewire.h index 30c91242a..8edd912d0 100644 --- a/src/pipewire/pipewire.h +++ b/src/pipewire/pipewire.h @@ -42,7 +42,7 @@ extern "C" { #include #include #include -#include +#include #include #include #include diff --git a/src/pipewire/port.c b/src/pipewire/port.c index 3ee90acb0..49fc6f942 100644 --- a/src/pipewire/port.c +++ b/src/pipewire/port.c @@ -37,7 +37,7 @@ static void port_update_state(struct pw_port *port, enum pw_port_state state) if (port->state != state) { pw_log_debug("port %p: state %d -> %d", port, port->state, state); port->state = state; - pw_callback_emit(&port->callback_list, struct pw_port_callbacks, state_changed, state); + pw_listener_list_emit(&port->listener_list, struct pw_port_events, state_changed, state); } } @@ -160,7 +160,7 @@ struct pw_port *pw_port_new(enum pw_direction direction, spa_list_init(&this->links); - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); spa_graph_port_init(&this->rt.port, this->direction, @@ -194,12 +194,12 @@ void pw_port_set_implementation(struct pw_port *port, port->implementation_data = data; } -void pw_port_add_callbacks(struct pw_port *port, - struct pw_callback_info *info, - const struct pw_port_callbacks *callbacks, - void *data) +void pw_port_add_listener(struct pw_port *port, + struct pw_listener *listener, + const struct pw_port_events *events, + void *data) { - pw_callback_add(&port->callback_list, info, callbacks, data); + pw_listener_list_add(&port->listener_list, listener, events, data); } void * pw_port_get_user_data(struct pw_port *port) @@ -246,7 +246,7 @@ void pw_port_add(struct pw_port *port, struct pw_node *node) port_update_state(port, PW_PORT_STATE_CONFIGURE); - pw_callback_emit(&node->callback_list, struct pw_node_callbacks, port_added, port); + pw_listener_list_emit(&node->listener_list, struct pw_node_events, port_added, port); } static int do_remove_port(struct spa_loop *loop, @@ -273,7 +273,7 @@ void pw_port_destroy(struct pw_port *port) pw_log_debug("port %p: destroy", port); - pw_callback_emit_na(&port->callback_list, struct pw_port_callbacks, destroy); + pw_listener_list_emit_na(&port->listener_list, struct pw_port_events, destroy); if (node) { pw_loop_invoke(port->node->data_loop, do_remove_port, SPA_ID_INVALID, 0, NULL, true, port); @@ -287,7 +287,7 @@ void pw_port_destroy(struct pw_port *port) node->info.n_output_ports--; } spa_list_remove(&port->link); - pw_callback_emit(&node->callback_list, struct pw_node_callbacks, port_removed, port); + pw_listener_list_emit(&node->listener_list, struct pw_node_events, port_removed, port); } free(port); } diff --git a/src/pipewire/port.h b/src/pipewire/port.h index 85b83a1d8..ddc987ce0 100644 --- a/src/pipewire/port.h +++ b/src/pipewire/port.h @@ -89,8 +89,8 @@ struct pw_port_implementation { int (*send_command) (void *data, struct spa_command *command); }; -struct pw_port_callbacks { -#define PW_VERSION_PORT_CALLBACKS 0 +struct pw_port_events { +#define PW_VERSION_PORT_EVENTS 0 uint32_t version; void (*destroy) (void *data); @@ -112,10 +112,10 @@ void pw_port_set_implementation(struct pw_port *port, const struct pw_port_implementation *implementation, void *data); -void pw_port_add_callbacks(struct pw_port *port, - struct pw_callback_info *info, - const struct pw_port_callbacks *callbacks, - void *data); +void pw_port_add_listener(struct pw_port *port, + struct pw_listener *listener, + const struct pw_port_events *events, + void *data); /** Destroy a port \memberof pw_port */ void pw_port_destroy(struct pw_port *port); diff --git a/src/pipewire/private.h b/src/pipewire/private.h index 109526ff7..24f68f3bb 100644 --- a/src/pipewire/private.h +++ b/src/pipewire/private.h @@ -55,7 +55,7 @@ struct pw_client { bool busy; - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; struct pw_protocol *protocol; /**< protocol in use */ struct spa_list protocol_link; /**< link in the protocol client_list */ @@ -104,7 +104,7 @@ struct pw_core { struct spa_list node_list; /**< list of nodes */ struct spa_list node_factory_list; /**< list of node factories */ struct spa_list link_list; /**< list of links */ - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; struct pw_loop *main_loop; /**< main loop for control */ struct pw_loop *data_loop; /**< data loop for data passing */ @@ -122,7 +122,7 @@ struct pw_core { struct pw_data_loop { struct pw_loop *loop; - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; struct spa_source *event; @@ -133,7 +133,7 @@ struct pw_data_loop { struct pw_main_loop { struct pw_loop *loop; - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; bool running; }; @@ -158,7 +158,7 @@ struct pw_link { struct pw_port *input; /**< input port */ struct spa_list input_link; /**< link in input port links */ - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; struct { struct spa_graph_port out_port; @@ -175,7 +175,7 @@ struct pw_module { struct spa_list resource_list; /**< list of resources for this module */ - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; void *user_data; /**< module user_data */ }; @@ -209,7 +209,7 @@ struct pw_node { uint32_t n_used_output_links; /**< number of active output links */ uint32_t idle_used_output_links; /**< number of active output to be idle */ - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; struct pw_loop *data_loop; /**< the data loop for this node */ @@ -243,7 +243,7 @@ struct pw_port { struct spa_list links; /**< list of \ref pw_link */ - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; void *mix; /**< optional port buffer mix/split */ @@ -272,7 +272,7 @@ struct pw_resource { const void *implementation; void *implementation_data; - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; const struct pw_protocol_marshal *marshal; @@ -287,8 +287,8 @@ struct pw_proxy { uint32_t id; /**< client side id */ - struct pw_callback_list callback_list; - struct pw_callback_list listener_list; + struct pw_listener_list listener_list; + struct pw_listener_list proxy_listener_list; const struct pw_protocol_marshal *marshal; /**< protocol specific marshal functions */ @@ -317,7 +317,7 @@ struct pw_remote { enum pw_remote_state state; char *error; - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; }; @@ -333,7 +333,7 @@ struct pw_stream { enum pw_stream_state state; /**< stream state */ char *error; /**< error reason when state is in error */ - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; }; struct pw_node_factory { diff --git a/src/pipewire/protocol.c b/src/pipewire/protocol.c index 0c7097e2f..146ce2538 100644 --- a/src/pipewire/protocol.c +++ b/src/pipewire/protocol.c @@ -44,8 +44,6 @@ struct pw_protocol *pw_protocol_new(struct pw_core *core, spa_list_init(&protocol->connection_list); spa_list_init(&protocol->listener_list); - pw_signal_init(&protocol->destroy_signal); - if (user_data_size > 0) protocol->user_data = SPA_MEMBER(protocol, sizeof(struct impl), void); @@ -69,7 +67,6 @@ void pw_protocol_destroy(struct pw_protocol *protocol) struct pw_protocol_connection *connection, *t3; pw_log_info("protocol %p: destroy", protocol); - pw_signal_emit(&protocol->destroy_signal, protocol); spa_list_remove(&protocol->link); diff --git a/src/pipewire/protocol.h b/src/pipewire/protocol.h index 729dafae6..c15c7d2d4 100644 --- a/src/pipewire/protocol.h +++ b/src/pipewire/protocol.h @@ -97,9 +97,6 @@ struct pw_protocol { const struct pw_protocol_implementaton *implementation; /**< implementation of the protocol */ - /** Emited when the protocol is destroyed */ - PW_SIGNAL(destroy_signal, (struct pw_listener *listener, struct pw_protocol *protocol)); - const void *extension; /**< extension API */ void *user_data; /**< user data for the implementation */ diff --git a/src/pipewire/proxy.c b/src/pipewire/proxy.c index ad6556164..99e8de061 100644 --- a/src/pipewire/proxy.c +++ b/src/pipewire/proxy.c @@ -43,13 +43,13 @@ struct proxy { * * \memberof pw_proxy */ -struct pw_proxy *pw_proxy_new(struct pw_proxy *proxy, +struct pw_proxy *pw_proxy_new(struct pw_proxy *factory, uint32_t type, size_t user_data_size) { struct proxy *impl; struct pw_proxy *this; - struct pw_remote *remote = proxy->remote; + struct pw_remote *remote = factory->remote; impl = calloc(1, sizeof(struct proxy) + user_data_size); if (impl == NULL) @@ -58,8 +58,8 @@ struct pw_proxy *pw_proxy_new(struct pw_proxy *proxy, this = &impl->this; this->remote = remote; - pw_callback_init(&this->callback_list); - pw_callback_init(&this->listener_list); + pw_listener_list_init(&this->listener_list); + pw_listener_list_init(&this->proxy_listener_list); this->id = pw_map_insert_new(&remote->objects, this); @@ -85,20 +85,20 @@ uint32_t pw_proxy_get_id(struct pw_proxy *proxy) return proxy->id; } -void pw_proxy_add_callbacks(struct pw_proxy *proxy, - struct pw_callback_info *info, - const struct pw_proxy_callbacks *callbacks, - void *data) -{ - pw_callback_add(&proxy->callback_list, info, callbacks, data); -} - void pw_proxy_add_listener(struct pw_proxy *proxy, - struct pw_callback_info *info, - const void *callbacks, + struct pw_listener *listener, + const struct pw_proxy_events *events, void *data) { - pw_callback_add(&proxy->listener_list, info, callbacks, data); + pw_listener_list_add(&proxy->listener_list, listener, events, data); +} + +void pw_proxy_add_proxy_listener(struct pw_proxy *proxy, + struct pw_listener *listener, + const void *events, + void *data) +{ + pw_listener_list_add(&proxy->proxy_listener_list, listener, events, data); } /** Destroy a proxy object @@ -114,7 +114,7 @@ void pw_proxy_destroy(struct pw_proxy *proxy) struct proxy *impl = SPA_CONTAINER_OF(proxy, struct proxy, this); pw_log_debug("proxy %p: destroy %u", proxy, proxy->id); - pw_callback_emit_na(&proxy->callback_list, struct pw_proxy_callbacks, destroy); + pw_listener_list_emit_na(&proxy->listener_list, struct pw_proxy_events, destroy); pw_map_remove(&proxy->remote->objects, proxy->id); spa_list_remove(&proxy->link); @@ -122,12 +122,12 @@ void pw_proxy_destroy(struct pw_proxy *proxy) free(impl); } -struct pw_callback_list *pw_proxy_get_listeners(struct pw_proxy *proxy) +struct pw_listener_list *pw_proxy_get_proxy_listeners(struct pw_proxy *proxy) { - return &proxy->listener_list; + return &proxy->proxy_listener_list; } -const void *pw_proxy_get_implementation(struct pw_proxy *proxy) +const void *pw_proxy_get_proxy_implementation(struct pw_proxy *proxy) { return proxy->marshal->method_marshal; } diff --git a/src/pipewire/proxy.h b/src/pipewire/proxy.h index 5e55fabb6..efe529564 100644 --- a/src/pipewire/proxy.h +++ b/src/pipewire/proxy.h @@ -88,10 +88,10 @@ struct pw_proxy; #include #include -#include +#include -struct pw_proxy_callbacks { -#define PW_VERSION_PROXY_CALLBACKS 0 +struct pw_proxy_events { +#define PW_VERSION_PROXY_EVENTS 0 uint32_t version; void (*destroy) (void *data); @@ -99,21 +99,21 @@ struct pw_proxy_callbacks { /** Make a new proxy object. The id can be used to bind to a remote object. */ struct pw_proxy * -pw_proxy_new(struct pw_proxy *proxy, /**< proxy as factory */ +pw_proxy_new(struct pw_proxy *factory, /**< factory */ uint32_t type, /**< interface type */ size_t user_data_size /**< size of user data */); void -pw_proxy_add_callbacks(struct pw_proxy *proxy, - struct pw_callback_info *info, - const struct pw_proxy_callbacks *callbacks, +pw_proxy_add_listener(struct pw_proxy *proxy, + struct pw_listener *listener, + const struct pw_proxy_events *events, void *data); void -pw_proxy_add_listener(struct pw_proxy *proxy, /**< the proxy */ - struct pw_callback_info *info, - const void *callbacks, /**< events */ - void *data /**< data passed to events */); +pw_proxy_add_proxy_listener(struct pw_proxy *proxy, /**< the proxy */ + struct pw_listener *listener, /**< listener */ + const void *events, /**< proxied events */ + void *data /**< data passed to events */); void pw_proxy_destroy(struct pw_proxy *proxy); @@ -121,15 +121,15 @@ void *pw_proxy_get_user_data(struct pw_proxy *proxy); uint32_t pw_proxy_get_id(struct pw_proxy *proxy); -struct pw_callback_list *pw_proxy_get_listeners(struct pw_proxy *proxy); +struct pw_listener_list *pw_proxy_get_proxy_listeners(struct pw_proxy *proxy); -const void *pw_proxy_get_implementation(struct pw_proxy *proxy); +const void *pw_proxy_get_proxy_implementation(struct pw_proxy *proxy); -#define pw_proxy_notify(p,type,event,...) pw_callback_emit(pw_proxy_get_listeners(p),type,event,__VA_ARGS__) -#define pw_proxy_notify_na(p,type,event) pw_callback_emit_na(pw_proxy_get_listeners(p),type,event) +#define pw_proxy_notify(p,type,event,...) pw_listener_list_emit(pw_proxy_get_proxy_listeners(p),type,event,__VA_ARGS__) +#define pw_proxy_notify_na(p,type,event) pw_listener_list_emit_na(pw_proxy_get_proxy_listeners(p),type,event) -#define pw_proxy_do(p,type,method,...) ((type*) pw_proxy_get_implementation(p))->method(p, __VA_ARGS__) -#define pw_proxy_do_na(p,type,method) ((type*) pw_proxy_get_implementation(p))->method(p) +#define pw_proxy_do(p,type,method,...) ((type*) pw_proxy_get_proxy_implementation(p))->method(p, __VA_ARGS__) +#define pw_proxy_do_na(p,type,method) ((type*) pw_proxy_get_proxy_implementation(p))->method(p) #ifdef __cplusplus } diff --git a/src/pipewire/remote.c b/src/pipewire/remote.c index 2f44231cc..011dc4e53 100644 --- a/src/pipewire/remote.c +++ b/src/pipewire/remote.c @@ -42,7 +42,7 @@ struct remote { struct pw_remote this; uint32_t type_client_node; - struct pw_callback_info core_callbacks; + struct pw_listener core_listener; }; struct mem_id { @@ -62,11 +62,9 @@ struct buffer_id { }; struct node_data { - struct pw_node *node; struct pw_remote *remote; struct pw_core *core; struct pw_type *t; - struct pw_client_node_proxy *node_proxy; uint32_t node_id; int rtreadfd; @@ -74,9 +72,11 @@ struct node_data { struct spa_source *rtsocket_source; struct pw_transport *trans; - struct pw_listener node_proxy_destroy; - struct pw_callback_info node_callbacks; - struct pw_callback_info node_listener; + struct pw_node *node; + struct pw_listener node_listener; + + struct pw_client_node_proxy *node_proxy; + struct pw_listener proxy_listener; struct pw_array mem_ids; struct pw_array buffer_ids; @@ -132,7 +132,7 @@ pw_remote_update_state(struct pw_remote *remote, enum pw_remote_state state, con pw_remote_state_as_string(state), remote->error); remote->state = state; - pw_callback_emit(&remote->callback_list, struct pw_remote_callbacks, state_changed, + pw_listener_list_emit(&remote->listener_list, struct pw_remote_events, state_changed, old, state, remote->error); } } @@ -143,7 +143,7 @@ static void core_event_info(void *data, struct pw_core_info *info) pw_log_debug("got core info"); this->info = pw_core_info_update(this->info, info); - pw_callback_emit(&this->callback_list, struct pw_remote_callbacks, info_changed, info); + pw_listener_list_emit(&this->listener_list, struct pw_remote_events, info_changed, info); } static void core_event_done(void *data, uint32_t seq) @@ -154,7 +154,7 @@ static void core_event_done(void *data, uint32_t seq) if (seq == 0) pw_remote_update_state(this, PW_REMOTE_STATE_CONNECTED, NULL); - pw_callback_emit(&this->callback_list, struct pw_remote_callbacks, sync_reply, seq); + pw_listener_list_emit(&this->listener_list, struct pw_remote_events, sync_reply, seq); } static void core_event_error(void *data, uint32_t id, int res, const char *error, ...) @@ -188,8 +188,8 @@ core_event_update_types(void *data, uint32_t first_id, uint32_t n_types, const c } } -static const struct pw_core_events core_events = { - PW_VERSION_CORE_EVENTS, +static const struct pw_core_proxy_events core_proxy_events = { + PW_VERSION_CORE_PROXY_EVENTS, .update_types = core_event_update_types, .done = core_event_done, .error = core_event_error, @@ -231,7 +231,7 @@ struct pw_remote *pw_remote_new(struct pw_core *core, spa_list_init(&this->proxy_list); spa_list_init(&this->stream_list); - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); if ((protocol_name = pw_properties_get(properties, "pipewire.protocol")) == NULL) { if (!pw_module_load(core, "libpipewire-module-protocol-native", NULL)) @@ -268,7 +268,7 @@ void pw_remote_destroy(struct pw_remote *remote) struct pw_stream *stream, *s2; pw_log_debug("remote %p: destroy", remote); - pw_callback_emit_na(&remote->callback_list, struct pw_remote_callbacks, destroy); + pw_listener_list_emit_na(&remote->listener_list, struct pw_remote_events, destroy); if (remote->state != PW_REMOTE_STATE_UNCONNECTED) pw_remote_disconnect(remote); @@ -298,12 +298,12 @@ enum pw_remote_state pw_remote_get_state(struct pw_remote *remote, const char ** return remote->state; } -void pw_remote_add_callbacks(struct pw_remote *remote, - struct pw_callback_info *info, - const struct pw_remote_callbacks *callbacks, - void *data) +void pw_remote_add_listener(struct pw_remote *remote, + struct pw_listener *listener, + const struct pw_remote_events *events, + void *data) { - pw_callback_add(&remote->callback_list, info, callbacks, data); + pw_listener_list_add(&remote->listener_list, listener, events, data); } static int do_connect(struct pw_remote *remote) @@ -317,7 +317,7 @@ static int do_connect(struct pw_remote *remote) if (remote->core_proxy == NULL) goto no_proxy; - pw_core_proxy_add_listener(remote->core_proxy, &impl->core_callbacks, &core_events, remote); + pw_core_proxy_add_listener(remote->core_proxy, &impl->core_listener, &core_proxy_events, remote); pw_core_proxy_client_update(remote->core_proxy, &remote->properties->dict); pw_core_proxy_sync(remote->core_proxy, 0); @@ -906,8 +906,8 @@ client_node_port_command(void *object, pw_log_warn("port command not supported"); } -static const struct pw_client_node_events client_node_events = { - PW_VERSION_CLIENT_NODE_EVENTS, +static const struct pw_client_node_proxy_events client_node_events = { + PW_VERSION_CLIENT_NODE_PROXY_EVENTS, .transport = client_node_transport, .set_props = client_node_set_props, .event = client_node_event, @@ -967,8 +967,8 @@ static void do_node_init(struct pw_proxy *proxy) pw_client_node_proxy_done(data->node_proxy, 0, SPA_RESULT_OK); } -static const struct pw_node_callbacks node_callbacks = { - PW_VERSION_NODE_CALLBACKS, +static const struct pw_node_events node_events = { + PW_VERSION_NODE_EVENTS, .need_input = node_need_input, .have_output = node_have_output, }; @@ -1002,9 +1002,9 @@ struct pw_proxy *pw_remote_export(struct pw_remote *remote, pw_array_init(&data->buffer_ids, 32); pw_array_ensure_size(&data->buffer_ids, sizeof(struct buffer_id) * 64); - pw_node_add_callbacks(node, &data->node_callbacks, &node_callbacks, data); + pw_node_add_listener(node, &data->node_listener, &node_events, data); - pw_client_node_proxy_add_listener(data->node_proxy, &data->node_listener, &client_node_events, proxy); + pw_client_node_proxy_add_listener(data->node_proxy, &data->proxy_listener, &client_node_events, proxy); do_node_init(proxy); return proxy; diff --git a/src/pipewire/remote.h b/src/pipewire/remote.h index 9c862114f..cd85bbe9a 100644 --- a/src/pipewire/remote.h +++ b/src/pipewire/remote.h @@ -117,8 +117,8 @@ enum pw_remote_state { /** Convert a \ref pw_remote_state to a readable string \memberof pw_remote */ const char *pw_remote_state_as_string(enum pw_remote_state state); -struct pw_remote_callbacks { -#define PW_VERSION_REMOTE_CALLBACKS 0 +struct pw_remote_events { +#define PW_VERSION_REMOTE_EVENTS 0 uint32_t version; void (*destroy) (void *data); @@ -147,11 +147,11 @@ struct pw_core *pw_remote_get_core(struct pw_remote *remote); /** Get the current state, \a error is set when state is \ref PW_REMOTE_STATE_ERROR */ enum pw_remote_state pw_remote_get_state(struct pw_remote *remote, const char **error); -/** Add callbacks to the remote */ -void pw_remote_add_callbacks(struct pw_remote *remote, - struct pw_callback_info *info, - const struct pw_remote_callbacks *callbacks, - void *data); +/** Add listener for events */ +void pw_remote_add_listener(struct pw_remote *remote, + struct pw_listener *listener, + const struct pw_remote_events *events, + void *data); /** Connect to a remote PipeWire \memberof pw_remote * \return true on success. */ diff --git a/src/pipewire/resource.c b/src/pipewire/resource.c index 50f213cef..7253d036d 100644 --- a/src/pipewire/resource.c +++ b/src/pipewire/resource.c @@ -51,7 +51,7 @@ struct pw_resource *pw_resource_new(struct pw_client *client, this->type = type; this->version = version; - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); if (id == SPA_ID_INVALID) { id = pw_map_insert_new(&client->objects, this); @@ -66,7 +66,7 @@ struct pw_resource *pw_resource_new(struct pw_client *client, this->marshal = pw_protocol_get_marshal(client->protocol, type); pw_log_debug("resource %p: new for client %p id %u", this, client, id); - pw_callback_emit(&client->callback_list, struct pw_client_callbacks, resource_added, this); + pw_listener_list_emit(&client->listener_list, struct pw_client_events, resource_added, this); return this; @@ -81,12 +81,12 @@ void *pw_resource_get_user_data(struct pw_resource *resource) return resource->user_data; } -void pw_resource_add_callbacks(struct pw_resource *resource, - struct pw_callback_info *info, - const struct pw_resource_callbacks *callbacks, - void *data) +void pw_resource_add_listener(struct pw_resource *resource, + struct pw_listener *listener, + const struct pw_resource_events *events, + void *data) { - pw_callback_add(&resource->callback_list, info, callbacks, data); + pw_listener_list_add(&resource->listener_list, listener, events, data); } void pw_resource_set_implementation(struct pw_resource *resource, @@ -96,7 +96,7 @@ void pw_resource_set_implementation(struct pw_resource *resource, struct pw_client *client = resource->client; resource->implementation = implementation; resource->implementation_data = data; - pw_callback_emit(&client->callback_list, struct pw_client_callbacks, resource_impl, resource); + pw_listener_list_emit(&client->listener_list, struct pw_client_events, resource_impl, resource); } void pw_resource_destroy(struct pw_resource *resource) @@ -104,10 +104,10 @@ void pw_resource_destroy(struct pw_resource *resource) struct pw_client *client = resource->client; pw_log_trace("resource %p: destroy %u", resource, resource->id); - pw_callback_emit_na(&resource->callback_list, struct pw_resource_callbacks, destroy); + pw_listener_list_emit_na(&resource->listener_list, struct pw_resource_events, destroy); pw_map_insert_at(&client->objects, resource->id, NULL); - pw_callback_emit(&client->callback_list, struct pw_client_callbacks, resource_removed, resource); + pw_listener_list_emit(&client->listener_list, struct pw_client_events, resource_removed, resource); if (client->core_resource) pw_core_resource_remove_id(client->core_resource, resource->id); diff --git a/src/pipewire/resource.h b/src/pipewire/resource.h index a0d90fb92..c2eb27a4b 100644 --- a/src/pipewire/resource.h +++ b/src/pipewire/resource.h @@ -60,8 +60,8 @@ struct pw_resource; #include #include -struct pw_resource_callbacks { -#define PW_VERSION_RESOURCE_CALLBACKS 0 +struct pw_resource_events { +#define PW_VERSION_RESOURCE_EVENTS 0 uint32_t version; void (*destroy) (void *data); @@ -78,10 +78,10 @@ pw_resource_new(struct pw_client *client, /**< the client owning the resource */ void *pw_resource_get_user_data(struct pw_resource *resource); -void pw_resource_add_callbacks(struct pw_resource *resource, - struct pw_callback_info *info, - const struct pw_resource_callbacks *callbacks, - void *data); +void pw_resource_add_listener(struct pw_resource *resource, + struct pw_listener *listener, + const struct pw_resource_events *events, + void *data); void pw_resource_set_implementation(struct pw_resource *resource, const void *implementation, diff --git a/src/pipewire/sig.h b/src/pipewire/sig.h deleted file mode 100644 index ef850e5ac..000000000 --- a/src/pipewire/sig.h +++ /dev/null @@ -1,76 +0,0 @@ -/* PipeWire - * Copyright (C) 2015 Wim Taymans - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#ifndef __PIPEWIRE_SIGNAL_H__ -#define __PIPEWIRE_SIGNAL_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** \class pw_signal - * Signal emission helpers - */ - -/** A listener \memberof pw_signal */ -struct pw_listener { - struct spa_list link; /**< link in the signal listeners */ - void (*notify) (void *); /**< notify function */ -}; - -/** A signal definition \memberof pw_signal */ -#define PW_SIGNAL(name,func) \ - union { \ - struct spa_list listeners; \ - void (*notify) func; \ - } name; - -/** Initialize a signal \memberof pw_signal */ -#define pw_signal_init(signal) \ - spa_list_init(&(signal)->listeners); - -/** Add a signal listener \memberof pw_signal */ -#define pw_signal_add(signal,listener,func) \ -do { \ - __typeof__((signal)->notify) n = (func); \ - (listener)->notify = (void(*)(void *)) n; \ - spa_list_insert((signal)->listeners.prev, &(listener)->link); \ -} while (false); - -/** Remove a signal listener \memberof pw_signal */ -static inline void pw_signal_remove(struct pw_listener *listener) -{ - spa_list_remove(&listener->link); -} - -/** Emit a signal \memberof pw_signal */ -#define pw_signal_emit(signal,...) \ -do { \ - struct pw_listener *l, *next; \ - spa_list_for_each_safe(l, next, &(signal)->listeners, link) \ - ((__typeof__((signal)->notify))l->notify)(l,__VA_ARGS__); \ -} while (false); - -#ifdef __cplusplus -} -#endif - -#endif /* __PIPEWIRE_SIGNAL_H__ */ diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index fa838d80b..41d7f01ed 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -85,8 +85,8 @@ struct stream { struct pw_client_node_proxy *node_proxy; bool disconnecting; - struct pw_callback_info node_listener; - struct pw_callback_info proxy_callbacks; + struct pw_listener node_listener; + struct pw_listener proxy_listener; struct pw_transport *trans; @@ -131,7 +131,7 @@ static void clear_buffers(struct pw_stream *stream) pw_log_debug("stream %p: clear buffers", stream); pw_array_for_each(bid, &impl->buffer_ids) { - pw_callback_emit(&stream->callback_list, struct pw_stream_callbacks, remove_buffer, bid->id); + pw_listener_list_emit(&stream->listener_list, struct pw_stream_events, remove_buffer, bid->id); free(bid->buf); bid->buf = NULL; bid->used = false; @@ -155,7 +155,7 @@ static bool stream_set_state(struct pw_stream *stream, enum pw_stream_state stat pw_stream_state_as_string(state), stream->error); stream->state = state; - pw_callback_emit(&stream->callback_list, struct pw_stream_callbacks, state_changed, + pw_listener_list_emit(&stream->listener_list, struct pw_stream_events, state_changed, old, state, error); } return res; @@ -209,7 +209,7 @@ struct pw_stream *pw_stream_new(struct pw_remote *remote, this->name = strdup(name); impl->type_client_node = spa_type_map_get_id(remote->core->type.map, PW_TYPE_INTERFACE__ClientNode); - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); this->state = PW_STREAM_STATE_UNCONNECTED; @@ -241,12 +241,12 @@ struct pw_properties *pw_stream_get_properties(struct pw_stream *stream) return stream->properties; } -void pw_stream_add_callbacks(struct pw_stream *stream, - struct pw_callback_info *info, - const struct pw_stream_callbacks *callbacks, - void *data) +void pw_stream_add_listener(struct pw_stream *stream, + struct pw_listener *listener, + const struct pw_stream_events *events, + void *data) { - pw_callback_add(&stream->callback_list, info, callbacks, data); + pw_listener_list_add(&stream->listener_list, listener, events, data); } static void unhandle_socket(struct pw_stream *stream) @@ -309,14 +309,14 @@ void pw_stream_destroy(struct pw_stream *stream) pw_log_debug("stream %p: destroy", stream); - pw_callback_emit_na(&stream->callback_list, struct pw_stream_callbacks, destroy); + pw_listener_list_emit_na(&stream->listener_list, struct pw_stream_events, destroy); unhandle_socket(stream); spa_list_remove(&stream->link); if (impl->node_proxy) - pw_callback_remove(&impl->proxy_callbacks); + pw_listener_remove(&impl->proxy_listener); set_possible_formats(stream, 0, NULL); set_params(stream, 0, NULL); @@ -475,7 +475,7 @@ static inline void reuse_buffer(struct pw_stream *stream, uint32_t id) pw_log_trace("stream %p: reuse buffer %u", stream, id); bid->used = false; spa_list_insert(impl->free.prev, &bid->link); - pw_callback_emit(&stream->callback_list, struct pw_stream_callbacks, new_buffer, id); + pw_listener_list_emit(&stream->listener_list, struct pw_stream_events, new_buffer, id); } } @@ -495,7 +495,7 @@ static void handle_rtnode_event(struct pw_stream *stream, struct spa_event *even if (input->buffer_id == SPA_ID_INVALID) continue; - pw_callback_emit(&stream->callback_list, struct pw_stream_callbacks, + pw_listener_list_emit(&stream->listener_list, struct pw_stream_events, new_buffer, input->buffer_id); input->buffer_id = SPA_ID_INVALID; } @@ -514,7 +514,7 @@ static void handle_rtnode_event(struct pw_stream *stream, struct spa_event *even } pw_log_trace("stream %p: process output", stream); impl->in_need_buffer = true; - pw_callback_emit_na(&stream->callback_list, struct pw_stream_callbacks, need_buffer); + pw_listener_list_emit_na(&stream->listener_list, struct pw_stream_events, need_buffer); impl->in_need_buffer = false; } else if (SPA_EVENT_TYPE(event) == remote->core->type.event_transport.ReuseBuffer) { struct pw_event_transport_reuse_buffer *p = @@ -608,7 +608,7 @@ handle_node_command(struct pw_stream *stream, uint32_t seq, const struct spa_com send_need_input(stream); else { impl->in_need_buffer = true; - pw_callback_emit_na(&stream->callback_list, struct pw_stream_callbacks, + pw_listener_list_emit_na(&stream->listener_list, struct pw_stream_events, need_buffer); impl->in_need_buffer = false; } @@ -672,7 +672,7 @@ client_node_set_format(void *data, impl->format = format ? spa_format_copy(format) : NULL; impl->pending_seq = seq; - pw_callback_emit(&stream->callback_list, struct pw_stream_callbacks, format_changed, impl->format); + pw_listener_list_emit(&stream->listener_list, struct pw_stream_events, format_changed, impl->format); if (format) stream_set_state(stream, PW_STREAM_STATE_READY, NULL); @@ -821,7 +821,7 @@ client_node_use_buffers(void *data, pw_log_warn("unknown buffer data type %d", d->type); } } - pw_callback_emit(&stream->callback_list, struct pw_stream_callbacks, add_buffer, bid->id); + pw_listener_list_emit(&stream->listener_list, struct pw_stream_events, add_buffer, bid->id); } add_async_complete(stream, seq, SPA_RESULT_OK); @@ -876,8 +876,8 @@ static void client_node_transport(void *data, uint32_t node_id, stream_set_state(stream, PW_STREAM_STATE_CONFIGURE, NULL); } -static const struct pw_client_node_events client_node_events = { - PW_VERSION_CLIENT_NODE_EVENTS, +static const struct pw_client_node_proxy_events client_node_events = { + PW_VERSION_CLIENT_NODE_PROXY_EVENTS, .transport = client_node_transport, .set_props = client_node_set_props, .event = client_node_event, @@ -899,13 +899,13 @@ static void on_node_proxy_destroy(void *data) impl->disconnecting = false; impl->node_proxy = NULL; - pw_callback_remove(&impl->proxy_callbacks); + pw_listener_remove(&impl->proxy_listener); stream_set_state(this, PW_STREAM_STATE_UNCONNECTED, NULL); } -static const struct pw_proxy_callbacks proxy_callbacks = { - PW_VERSION_PROXY_CALLBACKS, +static const struct pw_proxy_events proxy_events = { + PW_VERSION_PROXY_EVENTS, .destroy = on_node_proxy_destroy, }; @@ -946,7 +946,7 @@ pw_stream_connect(struct pw_stream *stream, return false; pw_client_node_proxy_add_listener(impl->node_proxy, &impl->node_listener, &client_node_events, impl); - pw_proxy_add_callbacks((struct pw_proxy*)impl->node_proxy, &impl->proxy_callbacks, &proxy_callbacks, impl); + pw_proxy_add_listener((struct pw_proxy*)impl->node_proxy, &impl->proxy_listener, &proxy_events, impl); do_node_init(stream); diff --git a/src/pipewire/stream.h b/src/pipewire/stream.h index 77b02e3cc..8aa1d23e6 100644 --- a/src/pipewire/stream.h +++ b/src/pipewire/stream.h @@ -179,8 +179,8 @@ enum pw_stream_state { PW_STREAM_STATE_STREAMING = 5 /**< streaming */ }; -struct pw_stream_callbacks { -#define PW_VERSION_STREAM_CALLBACKS 0 +struct pw_stream_events { +#define PW_VERSION_STREAM_EVENTS 0 uint32_t version; void (*destroy) (void *data); @@ -238,10 +238,10 @@ pw_stream_new(struct pw_remote *remote, /**< a \ref pw_remote */ /** Destroy a stream \memberof pw_stream */ void pw_stream_destroy(struct pw_stream *stream); -void pw_stream_add_callbacks(struct pw_stream *stream, - struct pw_callback_info *info, - const struct pw_stream_callbacks *callbacks, - void *data); +void pw_stream_add_listener(struct pw_stream *stream, + struct pw_listener *listener, + const struct pw_stream_events *events, + void *data); enum pw_stream_state pw_stream_get_state(struct pw_stream *stream, const char **error); @@ -294,7 +294,7 @@ bool pw_stream_recycle_buffer(struct pw_stream *stream, uint32_t id); /** Get the buffer with \a id from \a stream \memberof pw_stream * \return a \ref spa_buffer or NULL when there is no buffer * - * This function should be called from the new-buffer signal callback. */ + * This function should be called from the new-buffer event. */ struct spa_buffer * pw_stream_peek_buffer(struct pw_stream *stream, uint32_t id); diff --git a/src/pipewire/thread-loop.c b/src/pipewire/thread-loop.c index f4f487a45..add469073 100644 --- a/src/pipewire/thread-loop.c +++ b/src/pipewire/thread-loop.c @@ -27,7 +27,7 @@ struct pw_thread_loop { struct pw_loop *loop; char *name; - struct pw_callback_list callback_list; + struct pw_listener_list listener_list; pthread_mutex_t lock; pthread_cond_t cond; @@ -102,7 +102,7 @@ struct pw_thread_loop *pw_thread_loop_new(struct pw_loop *loop, const char *name this->hooks = impl_hooks; pw_loop_add_hooks(loop, &this->hooks); - pw_callback_init(&this->callback_list); + pw_listener_list_init(&this->listener_list); pthread_mutexattr_init(&attr); pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); @@ -118,7 +118,7 @@ struct pw_thread_loop *pw_thread_loop_new(struct pw_loop *loop, const char *name /** Destroy a threaded loop \memberof pw_thread_loop */ void pw_thread_loop_destroy(struct pw_thread_loop *loop) { - pw_callback_emit_na(&loop->callback_list, struct pw_thread_loop_callbacks, destroy); + pw_listener_list_emit_na(&loop->listener_list, struct pw_thread_loop_events, destroy); pw_thread_loop_stop(loop); @@ -133,12 +133,12 @@ void pw_thread_loop_destroy(struct pw_thread_loop *loop) free(loop); } -void pw_thread_loop_add_callbacks(struct pw_thread_loop *loop, - struct pw_callback_info *info, - const struct pw_thread_loop_callbacks *callbacks, - void *data) +void pw_thread_loop_add_listener(struct pw_thread_loop *loop, + struct pw_listener *listener, + const struct pw_thread_loop_events *events, + void *data) { - pw_callback_add(&loop->callback_list, info, callbacks, data); + pw_listener_list_add(&loop->listener_list, listener, events, data); } struct pw_loop * diff --git a/src/pipewire/thread-loop.h b/src/pipewire/thread-loop.h index b65442248..c1551b88c 100644 --- a/src/pipewire/thread-loop.h +++ b/src/pipewire/thread-loop.h @@ -89,8 +89,8 @@ extern "C" { */ struct pw_thread_loop; -struct pw_thread_loop_callbacks { -#define PW_VERSION_THREAD_LOOP_CALLBACKS 0 +struct pw_thread_loop_events { +#define PW_VERSION_THREAD_LOOP_EVENTS 0 uint32_t version; void (*destroy) (void *data); @@ -102,10 +102,10 @@ pw_thread_loop_new(struct pw_loop *loop, const char *name); void pw_thread_loop_destroy(struct pw_thread_loop *loop); -void pw_thread_loop_add_callbacks(struct pw_thread_loop *loop, - struct pw_callback_info *info, - const struct pw_thread_loop_callbacks *callbacks, - void *data); +void pw_thread_loop_add_listener(struct pw_thread_loop *loop, + struct pw_listener *listener, + const struct pw_thread_loop_events *events, + void *data); struct pw_loop * pw_thread_loop_get_loop(struct pw_thread_loop *loop); diff --git a/src/pipewire/transport.c b/src/pipewire/transport.c index 3a6653a4f..dc25d02bb 100644 --- a/src/pipewire/transport.c +++ b/src/pipewire/transport.c @@ -118,7 +118,6 @@ struct pw_transport *pw_transport_new(uint32_t max_input_ports, uint32_t max_out return NULL; trans = &impl->trans; - pw_signal_init(&trans->destroy_signal); impl->offset = 0; if(user_data_size > 0) @@ -146,7 +145,6 @@ struct pw_transport *pw_transport_new_from_info(struct pw_transport_info *info, return NULL; trans = &impl->trans; - pw_signal_init(&trans->destroy_signal); if(user_data_size > 0) trans->user_data = SPA_MEMBER(impl, sizeof(struct transport), void); @@ -190,8 +188,6 @@ void pw_transport_destroy(struct pw_transport *trans) pw_log_debug("transport %p: destroy", trans); - pw_signal_emit(&trans->destroy_signal, trans); - pw_memblock_free(&impl->mem); free(impl); } diff --git a/src/pipewire/transport.h b/src/pipewire/transport.h index 9f592de29..27680bbb0 100644 --- a/src/pipewire/transport.h +++ b/src/pipewire/transport.h @@ -30,7 +30,6 @@ extern "C" { #include #include -#include /** information about the transport region \memberof pw_transport */ struct pw_transport_info { @@ -56,9 +55,6 @@ struct pw_transport_area { * lockfree way. */ struct pw_transport { - /** Emited when the transport is destroyed */ - PW_SIGNAL(destroy_signal, (struct pw_listener *listener, struct pw_transport *trans)); - struct pw_transport_area *area; /**< the transport area */ struct spa_port_io *inputs; /**< array of input port io */ struct spa_port_io *outputs; /**< array of output port io */ diff --git a/src/tools/pipewire-monitor.c b/src/tools/pipewire-monitor.c index dc315e315..7b6c772df 100644 --- a/src/tools/pipewire-monitor.c +++ b/src/tools/pipewire-monitor.c @@ -24,7 +24,6 @@ #include #include #include -#include struct data { bool running; @@ -32,12 +31,12 @@ struct data { struct pw_core *core; struct pw_remote *remote; - struct pw_callback_info remote_callbacks; + struct pw_listener remote_listener; struct pw_core_proxy *core_proxy; struct pw_registry_proxy *registry_proxy; - struct pw_callback_info registry_listener; + struct pw_listener registry_listener; }; struct proxy_data { @@ -49,8 +48,8 @@ struct proxy_data { uint32_t type; void *info; pw_destroy_t destroy; - struct pw_callback_info proxy_listener; - struct pw_callback_info proxy_callbacks; + struct pw_listener proxy_listener; + struct pw_listener proxy_proxy_listener; }; static void print_properties(struct spa_dict *props, char mark) @@ -115,8 +114,8 @@ static void module_event_info(void *object, struct pw_module_info *info) } } -static const struct pw_module_events module_events = { - PW_VERSION_MODULE_EVENTS, +static const struct pw_module_proxy_events module_events = { + PW_VERSION_MODULE_PROXY_EVENTS, .info = module_event_info, }; @@ -167,8 +166,8 @@ static void node_event_info(void *object, struct pw_node_info *info) } } -static const struct pw_node_events node_events = { - PW_VERSION_NODE_EVENTS, +static const struct pw_node_proxy_events node_events = { + PW_VERSION_NODE_PROXY_EVENTS, .info = node_event_info }; @@ -201,8 +200,8 @@ static void client_event_info(void *object, struct pw_client_info *info) } } -static const struct pw_client_events client_events = { - PW_VERSION_CLIENT_EVENTS, +static const struct pw_client_proxy_events client_events = { + PW_VERSION_CLIENT_PROXY_EVENTS, .info = client_event_info }; @@ -243,8 +242,8 @@ static void link_event_info(void *object, struct pw_link_info *info) } } -static const struct pw_link_events link_events = { - PW_VERSION_LINK_EVENTS, +static const struct pw_link_proxy_events link_events = { + PW_VERSION_LINK_PROXY_EVENTS, .info = link_event_info }; @@ -261,8 +260,8 @@ destroy_proxy (void *data) user_data->info = NULL; } -static const struct pw_proxy_callbacks proxy_callbacks = { - PW_VERSION_PROXY_CALLBACKS, +static const struct pw_proxy_events proxy_events = { + PW_VERSION_PROXY_EVENTS, .destroy = destroy_proxy, }; @@ -322,8 +321,8 @@ static void registry_event_global(void *data, uint32_t id, uint32_t parent_id, pd->permissions = permissions; pd->version = version; pd->destroy = destroy; - pw_proxy_add_listener(proxy, &pd->proxy_listener, events, pd); - pw_proxy_add_callbacks(proxy, &pd->proxy_callbacks, &proxy_callbacks, pd); + pw_proxy_add_proxy_listener(proxy, &pd->proxy_proxy_listener, events, pd); + pw_proxy_add_listener(proxy, &pd->proxy_listener, &proxy_events, pd); return; @@ -338,8 +337,8 @@ static void registry_event_global_remove(void *object, uint32_t id) printf("\tid: %u\n", id); } -static const struct pw_registry_events registry_events = { - PW_VERSION_REGISTRY_EVENTS, +static const struct pw_registry_proxy_events registry_events = { + PW_VERSION_REGISTRY_PROXY_EVENTS, .global = registry_event_global, .global_remove = registry_event_global_remove, }; @@ -374,8 +373,8 @@ static void on_state_changed(void *_data, enum pw_remote_state old, } } -static const struct pw_remote_callbacks remote_callbacks = { - PW_VERSION_REMOTE_CALLBACKS, +static const struct pw_remote_events remote_events = { + PW_VERSION_REMOTE_EVENTS, .info_changed = on_info_changed, .state_changed = on_state_changed, }; @@ -391,7 +390,7 @@ int main(int argc, char *argv[]) data.core = pw_core_new(data.loop, NULL); data.remote = pw_remote_new(data.core, NULL); - pw_remote_add_callbacks(data.remote, &data.remote_callbacks, &remote_callbacks, &data); + pw_remote_add_listener(data.remote, &data.remote_listener, &remote_events, &data); pw_remote_connect(data.remote); pw_loop_enter(data.loop);