diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c index 3e5218102..a17dc87ce 100644 --- a/src/modules/module-client-node/client-node.c +++ b/src/modules/module-client-node/client-node.c @@ -1270,14 +1270,11 @@ static void client_node_resource_pong(void *data, int seq) spa_node_emit_result(&impl->hooks, seq, 0, 0, NULL); } -static void node_peer_added(void *data, struct pw_impl_node *peer, uint32_t id) +static void node_peer_added(void *data, struct pw_impl_node *peer) { struct impl *impl = data; struct pw_memblock *m; - if (peer == NULL) - return; - m = pw_mempool_import_block(impl->client_pool, peer->activation); if (m == NULL) { pw_log_warn("%p: can't ensure mem: %m", impl); @@ -1298,14 +1295,11 @@ static void node_peer_added(void *data, struct pw_impl_node *peer, uint32_t id) sizeof(struct pw_node_activation)); } -static void node_peer_removed(void *data, struct pw_impl_node *peer, uint32_t id) +static void node_peer_removed(void *data, struct pw_impl_node *peer) { struct impl *impl = data; struct pw_memblock *m; - if (peer == NULL) - return; - m = pw_mempool_find_fd(impl->client_pool, peer->activation->fd); if (m == NULL) { pw_log_warn("%p: unknown peer %p fd:%d", impl, peer, diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c index 6321d6c80..a8f65b06c 100644 --- a/src/pipewire/impl-node.c +++ b/src/pipewire/impl-node.c @@ -898,8 +898,8 @@ int pw_impl_node_add_target(struct pw_impl_node *node, struct pw_node_target *t) { pw_loop_locked(node->data_loop, do_add_target, SPA_ID_INVALID, &node, sizeof(void *), t); - - pw_impl_node_emit_peer_added(node, t->node, t->id); + if (t->node) + pw_impl_node_emit_peer_added(node, t->node); return 0; } @@ -934,8 +934,8 @@ int pw_impl_node_remove_target(struct pw_impl_node *node, struct pw_node_target * can inspect the nodes as well */ pw_loop_locked(node->data_loop, do_remove_target, SPA_ID_INVALID, &node, sizeof(void *), t); - - pw_impl_node_emit_peer_removed(node, t->node, t->id); + if (t->node) + pw_impl_node_emit_peer_removed(node, t->node); return 0; } diff --git a/src/pipewire/impl-node.h b/src/pipewire/impl-node.h index dfb880320..7f7edb37a 100644 --- a/src/pipewire/impl-node.h +++ b/src/pipewire/impl-node.h @@ -29,7 +29,7 @@ struct pw_impl_port; /** Node events, listen to them with \ref pw_impl_node_add_listener */ struct pw_impl_node_events { -#define PW_VERSION_IMPL_NODE_EVENTS 1 +#define PW_VERSION_IMPL_NODE_EVENTS 0 uint32_t version; /** the node is destroyed */ @@ -69,10 +69,10 @@ struct pw_impl_node_events { /** the driver of the node changed */ void (*driver_changed) (void *data, struct pw_impl_node *old, struct pw_impl_node *driver); - /** a peer was added, id added in version 1 */ - void (*peer_added) (void *data, struct pw_impl_node *peer, uint32_t id); - /** a peer was removed, id added in version 1 */ - void (*peer_removed) (void *data, struct pw_impl_node *peer, uint32_t id); + /** a peer was added */ + void (*peer_added) (void *data, struct pw_impl_node *peer); + /** a peer was removed */ + void (*peer_removed) (void *data, struct pw_impl_node *peer); }; struct pw_impl_node_rt_events { diff --git a/src/pipewire/private.h b/src/pipewire/private.h index 695d1f6e8..36f85bd9d 100644 --- a/src/pipewire/private.h +++ b/src/pipewire/private.h @@ -717,8 +717,8 @@ void pw_node_peer_unref(struct pw_node_peer *peer); #define pw_impl_node_emit_result(n,s,r,t,result) pw_impl_node_emit(n, result, 0, s, r, t, result) #define pw_impl_node_emit_event(n,e) pw_impl_node_emit(n, event, 0, e) #define pw_impl_node_emit_driver_changed(n,o,d) pw_impl_node_emit(n, driver_changed, 0, o, d) -#define pw_impl_node_emit_peer_added(n,p,i) pw_impl_node_emit(n, peer_added, 1, p, i) -#define pw_impl_node_emit_peer_removed(n,p,i) pw_impl_node_emit(n, peer_removed, 1, p, i) +#define pw_impl_node_emit_peer_added(n,p) pw_impl_node_emit(n, peer_added, 0, p) +#define pw_impl_node_emit_peer_removed(n,p) pw_impl_node_emit(n, peer_removed, 0, p) #define pw_impl_node_rt_emit(o,m,v,...) spa_hook_list_call(&o->rt_listener_list, struct pw_impl_node_rt_events, m, v, ##__VA_ARGS__) #define pw_impl_node_rt_emit_drained(n) pw_impl_node_rt_emit(n, drained, 0) @@ -1145,8 +1145,6 @@ struct pw_core { #define pw_stream_emit_control_info(s,i,c) pw_stream_emit(s, control_info, 0, i, c) #define pw_stream_emit_command(s,c) pw_stream_emit(s, command,1,c) #define pw_stream_emit_trigger_done(s) pw_stream_emit(s, trigger_done,2) -#define pw_stream_emit_peer_added(s,i) pw_stream_emit(s, peer_added, 3, i) -#define pw_stream_emit_peer_removed(s,i) pw_stream_emit(s, peer_removed, 3, i) struct pw_stream { diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index 613732b68..9387ee58a 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -1466,24 +1466,11 @@ static void node_state_changed(void *data, enum pw_node_state old, } } -static void node_peer_added (void *data, struct pw_impl_node *node, uint32_t id) -{ - struct pw_stream *stream = data; - pw_stream_emit_peer_added(stream, id); -} -static void node_peer_removed (void *data, struct pw_impl_node *node, uint32_t id) -{ - struct pw_stream *stream = data; - pw_stream_emit_peer_removed(stream, id); -} - static const struct pw_impl_node_events node_events = { PW_VERSION_IMPL_NODE_EVENTS, .destroy = node_event_destroy, .info_changed = node_event_info, .state_changed = node_state_changed, - .peer_added = node_peer_added, - .peer_removed = node_peer_removed, }; static void on_core_error(void *data, uint32_t id, int seq, int res, const char *message) diff --git a/src/pipewire/stream.h b/src/pipewire/stream.h index 7d98179f7..28b4eba1f 100644 --- a/src/pipewire/stream.h +++ b/src/pipewire/stream.h @@ -414,7 +414,7 @@ struct pw_time { /** Events for a stream. These events are always called from the mainloop * unless explicitly documented otherwise. */ struct pw_stream_events { -#define PW_VERSION_STREAM_EVENTS 3 +#define PW_VERSION_STREAM_EVENTS 2 uint32_t version; void (*destroy) (void *data); @@ -453,11 +453,6 @@ struct pw_stream_events { * can also be called directly from the realtime data * thread if the user is prepared to deal with this. */ void (*trigger_done) (void *data); - - /* notify that a new node linked to the stream, since 1.6.0:3 */ - void (*peer_added) (void *data, uint32_t id); - /* notify that a new node unlinked to the stream, since 1.6.0:3 */ - void (*peer_removed) (void *data, uint32_t id); }; /** Convert a stream state to a readable string */