diff options
author | Wim Taymans <wtaymans@redhat.com> | 2019-05-29 10:39:24 +0200 |
---|---|---|
committer | Wim Taymans <wtaymans@redhat.com> | 2019-05-29 10:39:24 +0200 |
commit | e9ecc4769692ff550dd793872b20410221386632 (patch) | |
tree | 87834e088f0591d067e742cf15e5d6ed7a259d4d /src | |
parent | b1ea91fa1d78868404fa896cc49779407289e1a0 (diff) |
clean up proxy and resource api
Remove override for resources, it can't work in general.
Rename method to add_object_listener to add a listener for
events/methods from the remote object.
Rename some methods to _call to call the interface and _notify
to notify the listeners.
Remove unused client event to be notified of resource
implementations.
Diffstat (limited to 'src')
-rw-r--r-- | src/examples/media-session.c | 8 | ||||
-rw-r--r-- | src/modules/module-client-device/protocol-native.c | 26 | ||||
-rw-r--r-- | src/modules/module-client-device/proxy-device.c | 75 | ||||
-rw-r--r-- | src/modules/module-client-device/resource-device.c | 18 | ||||
-rw-r--r-- | src/modules/module-client-node/client-node.c | 20 | ||||
-rw-r--r-- | src/modules/module-client-node/protocol-native.c | 12 | ||||
-rw-r--r-- | src/modules/module-protocol-native/protocol-native.c | 60 | ||||
-rw-r--r-- | src/pipewire/client.c | 11 | ||||
-rw-r--r-- | src/pipewire/client.h | 4 | ||||
-rw-r--r-- | src/pipewire/core.c | 25 | ||||
-rw-r--r-- | src/pipewire/device.c | 14 | ||||
-rw-r--r-- | src/pipewire/factory.c | 2 | ||||
-rw-r--r-- | src/pipewire/link.c | 2 | ||||
-rw-r--r-- | src/pipewire/module.c | 2 | ||||
-rw-r--r-- | src/pipewire/node.c | 15 | ||||
-rw-r--r-- | src/pipewire/port.c | 15 | ||||
-rw-r--r-- | src/pipewire/private.h | 18 | ||||
-rw-r--r-- | src/pipewire/proxy.c | 12 | ||||
-rw-r--r-- | src/pipewire/proxy.h | 26 | ||||
-rw-r--r-- | src/pipewire/resource.c | 29 | ||||
-rw-r--r-- | src/pipewire/resource.h | 33 | ||||
-rw-r--r-- | src/tests/test-client.c | 2 | ||||
-rw-r--r-- | src/tools/pipewire-cli.c | 8 | ||||
-rw-r--r-- | src/tools/pipewire-monitor.c | 4 |
24 files changed, 194 insertions, 247 deletions
diff --git a/src/examples/media-session.c b/src/examples/media-session.c index 7c1979f2..56ea035c 100644 --- a/src/examples/media-session.c +++ b/src/examples/media-session.c @@ -492,7 +492,7 @@ handle_node(struct impl *impl, uint32_t id, uint32_t parent_id, node->obj.proxy = p; spa_list_init(&node->port_list); pw_proxy_add_listener(p, &node->obj.listener, &node_proxy_events, node); - pw_proxy_add_proxy_listener(p, &node->listener, &node_events, node); + pw_proxy_add_object_listener(p, &node->listener, &node_events, node); add_object(impl, &node->obj); spa_list_append(&impl->node_list, &node->l); node->type = NODE_TYPE_UNKNOWN; @@ -675,7 +675,7 @@ handle_port(struct impl *impl, uint32_t id, uint32_t parent_id, uint32_t type, port->flags |= PORT_FLAG_SKIP; pw_proxy_add_listener(p, &port->obj.listener, &port_proxy_events, port); - pw_proxy_add_proxy_listener(p, &port->listener, &port_events, port); + pw_proxy_add_object_listener(p, &port->listener, &port_events, port); add_object(impl, &port->obj); spa_list_append(&node->port_list, &port->l); @@ -748,7 +748,7 @@ handle_client(struct impl *impl, uint32_t id, uint32_t parent_id, client->obj.proxy = p; pw_proxy_add_listener(p, &client->obj.listener, &client_proxy_events, client); - pw_proxy_add_proxy_listener(p, &client->listener, &client_events, client); + pw_proxy_add_object_listener(p, &client->listener, &client_events, client); add_object(impl, &client->obj); spa_list_append(&impl->client_list, &client->l); @@ -1264,7 +1264,7 @@ static void rescan_session(struct impl *impl, struct session *sess) 0); pw_properties_free(props); - pw_proxy_add_proxy_listener(sess->dsp_proxy, &sess->listener, &dsp_node_events, sess); + pw_proxy_add_object_listener(sess->dsp_proxy, &sess->listener, &dsp_node_events, sess); spa_pod_builder_init(&b, buf, sizeof(buf)); param = spa_format_audio_raw_build(&b, SPA_PARAM_Format, &info); diff --git a/src/modules/module-client-device/protocol-native.c b/src/modules/module-client-device/protocol-native.c index 1e9db43d..e936ee0b 100644 --- a/src/modules/module-client-device/protocol-native.c +++ b/src/modules/module-client-device/protocol-native.c @@ -30,24 +30,6 @@ #include <extensions/protocol-native.h> -#if 0 -static void push_dict(struct spa_pod_builder *b, const struct spa_dict *dict) -{ - uint32_t i, n_items; - struct spa_pod_frame f; - - n_items = dict ? dict->n_items : 0; - - spa_pod_builder_push_struct(b, &f); - spa_pod_builder_int(b, n_items); - for (i = 0; i < n_items; i++) { - spa_pod_builder_string(b, dict->items[i].key); - spa_pod_builder_string(b, dict->items[i].value); - } - spa_pod_builder_pop(b, &f); -} -#endif - static int device_marshal_add_listener(void *object, struct spa_hook *listener, const struct spa_device_events *events, @@ -254,7 +236,7 @@ static int device_demarshal_info(void *object, else { infop = NULL; } - pw_resource_do(resource, struct spa_device_events, info, 0, infop); + pw_resource_notify(resource, struct spa_device_events, info, 0, infop); return 0; } @@ -332,7 +314,7 @@ static int device_demarshal_result(void *object, break; } - pw_resource_do(resource, struct spa_device_events, result, 0, seq, res, type, result); + pw_resource_notify(resource, struct spa_device_events, result, 0, seq, res, type, result); return 0; } @@ -364,7 +346,7 @@ static int device_demarshal_event(void *object, SPA_POD_PodObject(&event)) < 0) return -EINVAL; - pw_resource_do(resource, struct spa_device_events, event, 0, event); + pw_resource_notify(resource, struct spa_device_events, event, 0, event); return 0; } @@ -458,7 +440,7 @@ static int device_demarshal_object_info(void *object, infop = NULL; } - pw_resource_do(resource, struct spa_device_events, object_info, 0, id, infop); + pw_resource_notify(resource, struct spa_device_events, object_info, 0, id, infop); return 0; } diff --git a/src/modules/module-client-device/proxy-device.c b/src/modules/module-client-device/proxy-device.c index 7af98758..4142dde5 100644 --- a/src/modules/module-client-device/proxy-device.c +++ b/src/modules/module-client-device/proxy-device.c @@ -44,71 +44,6 @@ struct device_data { struct spa_hook proxy_listener; }; -static void device_event_info(void *_data, const struct spa_device_info *info) -{ - struct device_data *data = _data; - struct spa_interface *iface = (struct spa_interface*)data->proxy; - pw_log_debug("%p", data); - spa_interface_call(iface, struct spa_device_events, info, 0, info); -} - -static void device_event_result(void *_data, int seq, int res, uint32_t type, const void *result) -{ - struct device_data *data = _data; - struct spa_interface *iface = (struct spa_interface*)data->proxy; - pw_log_debug("%p", data); - spa_interface_call(iface, struct spa_device_events, result, 0, seq, res, type, result); -} - -static void device_event_event(void *_data, const struct spa_event *event) -{ - struct device_data *data = _data; - struct spa_interface *iface = (struct spa_interface*)data->proxy; - pw_log_debug("%p", data); - spa_interface_call(iface, struct spa_device_events, event, 0, event); -} - -static void device_event_object_info(void *_data, uint32_t id, - const struct spa_device_object_info *info) -{ - struct device_data *data = _data; - struct spa_interface *iface = (struct spa_interface*)data->proxy; - pw_log_debug("%p", data); - spa_interface_call(iface, struct spa_device_events, object_info, 0, id, info); -} - -static const struct spa_device_events device_events = { - SPA_VERSION_DEVICE_EVENTS, - .info = device_event_info, - .result = device_event_result, - .event = device_event_event, - .object_info = device_event_object_info, -}; - -static int device_method_enum_params(void *object, int seq, - uint32_t id, uint32_t index, uint32_t max, - const struct spa_pod *filter) -{ - struct device_data *data = object; - pw_log_debug("%p", data); - return spa_device_enum_params(data->device, seq, id, index, max, filter); -} - -static int device_method_set_param(void *object, - uint32_t id, uint32_t flags, - const struct spa_pod *param) -{ - struct device_data *data = object; - pw_log_debug("%p", data); - return spa_device_set_param(data->device, id, flags, param); -} - -static const struct spa_device_methods device_methods = { - SPA_VERSION_DEVICE_METHODS, - .enum_params = device_method_enum_params, - .set_param = device_method_set_param, -}; - static void device_proxy_destroy(void *_data) { struct device_data *data = _data; @@ -124,6 +59,7 @@ struct pw_proxy *pw_remote_spa_device_export(struct pw_remote *remote, uint32_t type, struct pw_properties *props, void *object) { struct spa_device *device = object; + struct spa_interface *iface; struct pw_proxy *proxy; struct device_data *data; @@ -142,9 +78,14 @@ struct pw_proxy *pw_remote_spa_device_export(struct pw_remote *remote, data->core = pw_remote_get_core(remote); data->proxy = proxy; + iface = (struct spa_interface*)proxy; + pw_proxy_add_listener(proxy, &data->proxy_listener, &proxy_events, data); - pw_proxy_add_proxy_listener(proxy, &data->device_methods, &device_methods, data); - spa_device_add_listener(device, &data->device_listener, &device_events, data); + + pw_proxy_add_object_listener(proxy, &data->device_methods, + device->iface.cb.funcs, device->iface.cb.data); + spa_device_add_listener(device, &data->device_listener, + iface->cb.funcs, iface->cb.data); return proxy; } diff --git a/src/modules/module-client-device/resource-device.c b/src/modules/module-client-device/resource-device.c index 6d2623a0..b3ba6c2f 100644 --- a/src/modules/module-client-device/resource-device.c +++ b/src/modules/module-client-device/resource-device.c @@ -49,13 +49,14 @@ struct impl { struct pw_resource *resource; struct spa_hook resource_listener; + struct spa_hook implementation_listener; struct pw_global *parent; unsigned int registered:1; }; #define pw_device_resource(r,m,v,...) \ - pw_resource_notify_res(r,struct spa_device_methods,m,v,__VA_ARGS__) + pw_resource_call_res(r,struct spa_device_methods,m,v,__VA_ARGS__) #define pw_device_resource_enum_params(r,...) \ pw_device_resource(r,enum_params,0,__VA_ARGS__) @@ -161,6 +162,7 @@ static void device_resource_destroy(void *data) impl->resource = NULL; spa_hook_remove(&impl->device_listener); spa_hook_remove(&impl->resource_listener); + spa_hook_remove(&impl->implementation_listener); pw_device_destroy(impl->device); } @@ -185,6 +187,7 @@ static void device_destroy(void *data) impl->device = NULL; spa_hook_remove(&impl->device_listener); spa_hook_remove(&impl->resource_listener); + spa_hook_remove(&impl->implementation_listener); pw_resource_destroy(impl->resource); } @@ -227,12 +230,13 @@ struct pw_device *pw_client_device_new(struct pw_resource *resource, &impl->device_listener, &device_events, impl); pw_resource_add_listener(impl->resource, - &impl->resource_listener, - &resource_events, - impl); - pw_resource_set_implementation(impl->resource, - &resource_implementation, - impl); + &impl->resource_listener, + &resource_events, + impl); + pw_resource_add_object_listener(impl->resource, + &impl->implementation_listener, + &resource_implementation, + impl); return device; } diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c index 6e9ac3e9..cb67a6a2 100644 --- a/src/modules/module-client-node/client-node.c +++ b/src/modules/module-client-node/client-node.c @@ -163,6 +163,7 @@ struct impl { struct spa_hook node_listener; struct spa_hook resource_listener; + struct spa_hook object_listener; struct pw_array mems; @@ -174,7 +175,7 @@ struct impl { }; #define pw_client_node_resource(r,m,v,...) \ - pw_resource_notify_res(r,struct pw_client_node_proxy_events,m,v,__VA_ARGS__) + pw_resource_call_res(r,struct pw_client_node_proxy_events,m,v,__VA_ARGS__) #define pw_client_node_resource_add_mem(r,...) \ pw_client_node_resource(r,add_mem,0,__VA_ARGS__) @@ -476,11 +477,10 @@ static int impl_node_set_io(void *object, uint32_t id, void *data, size_t size) update_io(this, this->ios, id, memid); - pw_client_node_resource_set_io(this->resource, + return pw_client_node_resource_set_io(this->resource, id, memid, mem_offset, mem_size); - return 0; } static int impl_node_send_command(void *object, const struct spa_command *command) @@ -1224,6 +1224,7 @@ static void client_node_resource_destroy(void *data) impl->node.resource = this->resource = NULL; spa_hook_remove(&impl->resource_listener); + spa_hook_remove(&impl->object_listener); if (node->data_source.fd != -1) { spa_loop_invoke(node->data_loop, @@ -1695,12 +1696,13 @@ struct pw_client_node *pw_client_node_new(struct pw_resource *resource, this->node->rt.target.data = impl; pw_resource_add_listener(this->resource, - &impl->resource_listener, - &resource_events, - impl); - pw_resource_set_implementation(this->resource, - &client_node_methods, - impl); + &impl->resource_listener, + &resource_events, + impl); + pw_resource_add_object_listener(this->resource, + &impl->object_listener, + &client_node_methods, + impl); this->node->port_user_data_size = sizeof(struct port); diff --git a/src/modules/module-client-node/protocol-native.c b/src/modules/module-client-node/protocol-native.c index 0dac7c21..fae88603 100644 --- a/src/modules/module-client-node/protocol-native.c +++ b/src/modules/module-client-node/protocol-native.c @@ -53,7 +53,7 @@ static int client_node_marshal_add_listener(void *object, void *data) { struct pw_proxy *proxy = object; - pw_proxy_add_proxy_listener(proxy, listener, events, data); + pw_proxy_add_object_listener(proxy, listener, events, data); return 0; } @@ -820,7 +820,7 @@ static int client_node_demarshal_get_node(void *object, const struct pw_protocol SPA_POD_Int(&new_id)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_client_node_proxy_methods, get_node, 0, + return pw_resource_notify(resource, struct pw_client_node_proxy_methods, get_node, 0, version, new_id); } @@ -898,7 +898,7 @@ static int client_node_demarshal_update(void *object, const struct pw_protocol_n } } - pw_resource_do(resource, struct pw_client_node_proxy_methods, update, 0, change_mask, + pw_resource_notify(resource, struct pw_client_node_proxy_methods, update, 0, change_mask, n_params, params, infop); return 0; @@ -980,7 +980,7 @@ static int client_node_demarshal_port_update(void *object, const struct pw_proto } } - pw_resource_do(resource, struct pw_client_node_proxy_methods, port_update, 0, direction, + pw_resource_notify(resource, struct pw_client_node_proxy_methods, port_update, 0, direction, port_id, change_mask, n_params, @@ -999,7 +999,7 @@ static int client_node_demarshal_set_active(void *object, const struct pw_protoc SPA_POD_Bool(&active)) < 0) return -EINVAL; - pw_resource_do(resource, struct pw_client_node_proxy_methods, set_active, 0, active); + pw_resource_notify(resource, struct pw_client_node_proxy_methods, set_active, 0, active); return 0; } @@ -1014,7 +1014,7 @@ static int client_node_demarshal_event_method(void *object, const struct pw_prot SPA_POD_PodObject(&event)) < 0) return -EINVAL; - pw_resource_do(resource, struct pw_client_node_proxy_methods, event, 0, event); + pw_resource_notify(resource, struct pw_client_node_proxy_methods, event, 0, event); return 0; } diff --git a/src/modules/module-protocol-native/protocol-native.c b/src/modules/module-protocol-native/protocol-native.c index 58c47b7c..8199f7ed 100644 --- a/src/modules/module-protocol-native/protocol-native.c +++ b/src/modules/module-protocol-native/protocol-native.c @@ -38,7 +38,7 @@ static int core_method_marshal_add_listener(void *object, void *data) { struct pw_proxy *proxy = object; - pw_proxy_add_proxy_listener(proxy, listener, events, data); + pw_proxy_add_object_listener(proxy, listener, events, data); return 0; } @@ -401,7 +401,7 @@ static int core_method_demarshal_hello(void *object, const struct pw_protocol_na SPA_POD_Int(&version)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_core_proxy_methods, hello, 0, version); + return pw_resource_notify(resource, struct pw_core_proxy_methods, hello, 0, version); } static int core_method_demarshal_sync(void *object, const struct pw_protocol_native_message *msg) @@ -416,7 +416,7 @@ static int core_method_demarshal_sync(void *object, const struct pw_protocol_nat SPA_POD_Int(&seq)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_core_proxy_methods, sync, 0, id, seq); + return pw_resource_notify(resource, struct pw_core_proxy_methods, sync, 0, id, seq); } static int core_method_demarshal_pong(void *object, const struct pw_protocol_native_message *msg) @@ -431,7 +431,7 @@ static int core_method_demarshal_pong(void *object, const struct pw_protocol_nat SPA_POD_Int(&seq)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_core_proxy_methods, pong, 0, id, seq); + return pw_resource_notify(resource, struct pw_core_proxy_methods, pong, 0, id, seq); } static int core_method_demarshal_error(void *object, const struct pw_protocol_native_message *msg) @@ -450,7 +450,7 @@ static int core_method_demarshal_error(void *object, const struct pw_protocol_na SPA_POD_String(&error)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_core_proxy_methods, error, 0, id, seq, res, error); + return pw_resource_notify(resource, struct pw_core_proxy_methods, error, 0, id, seq, res, error); } static int core_method_demarshal_get_registry(void *object, const struct pw_protocol_native_message *msg) @@ -465,7 +465,7 @@ static int core_method_demarshal_get_registry(void *object, const struct pw_prot SPA_POD_Int(&new_id)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_core_proxy_methods, get_registry, 0, version, new_id); + return pw_resource_notify(resource, struct pw_core_proxy_methods, get_registry, 0, version, new_id); } static int core_method_demarshal_create_object(void *object, const struct pw_protocol_native_message *msg) @@ -504,7 +504,7 @@ static int core_method_demarshal_create_object(void *object, const struct pw_pro SPA_POD_Int(&new_id), NULL) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_core_proxy_methods, create_object, 0, factory_name, + return pw_resource_notify(resource, struct pw_core_proxy_methods, create_object, 0, factory_name, type, version, &props, new_id); } @@ -527,7 +527,7 @@ static int core_method_demarshal_destroy(void *object, const struct pw_protocol_ if ((r = pw_client_find_resource(client, id)) == NULL) goto no_resource; - return pw_resource_do(resource, struct pw_core_proxy_methods, destroy, 0, r); + return pw_resource_notify(resource, struct pw_core_proxy_methods, destroy, 0, r); no_resource: pw_log_error("client %p: can't find resouce %d", client, id); @@ -541,7 +541,7 @@ static int registry_method_marshal_add_listener(void *object, void *data) { struct pw_proxy *proxy = object; - pw_proxy_add_proxy_listener(proxy, listener, events, data); + pw_proxy_add_object_listener(proxy, listener, events, data); return 0; } @@ -594,7 +594,7 @@ static int registry_demarshal_bind(void *object, const struct pw_protocol_native SPA_POD_Int(&new_id)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_registry_proxy_methods, bind, 0, id, type, version, new_id); + return pw_resource_notify(resource, struct pw_registry_proxy_methods, bind, 0, id, type, version, new_id); } static int registry_demarshal_destroy(void *object, const struct pw_protocol_native_message *msg) @@ -608,7 +608,7 @@ static int registry_demarshal_destroy(void *object, const struct pw_protocol_nat SPA_POD_Int(&id)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_registry_proxy_methods, destroy, 0, id); + return pw_resource_notify(resource, struct pw_registry_proxy_methods, destroy, 0, id); } static int module_method_marshal_add_listener(void *object, @@ -617,7 +617,7 @@ static int module_method_marshal_add_listener(void *object, void *data) { struct pw_proxy *proxy = object; - pw_proxy_add_proxy_listener(proxy, listener, events, data); + pw_proxy_add_object_listener(proxy, listener, events, data); return 0; } @@ -684,7 +684,7 @@ static int device_method_marshal_add_listener(void *object, void *data) { struct pw_proxy *proxy = object; - pw_proxy_add_proxy_listener(proxy, listener, events, data); + pw_proxy_add_object_listener(proxy, listener, events, data); return 0; } @@ -833,7 +833,7 @@ static int device_demarshal_enum_params(void *object, const struct pw_protocol_n SPA_POD_Pod(&filter)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_device_proxy_methods, enum_params, 0, + return pw_resource_notify(resource, struct pw_device_proxy_methods, enum_params, 0, seq, id, index, num, filter); } @@ -866,7 +866,7 @@ static int device_demarshal_set_param(void *object, const struct pw_protocol_nat SPA_POD_Pod(¶m)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_device_proxy_methods, set_param, 0, id, flags, param); + return pw_resource_notify(resource, struct pw_device_proxy_methods, set_param, 0, id, flags, param); } static int factory_method_marshal_add_listener(void *object, @@ -875,7 +875,7 @@ static int factory_method_marshal_add_listener(void *object, void *data) { struct pw_proxy *proxy = object; - pw_proxy_add_proxy_listener(proxy, listener, events, data); + pw_proxy_add_object_listener(proxy, listener, events, data); return 0; } @@ -942,7 +942,7 @@ static int node_method_marshal_add_listener(void *object, void *data) { struct pw_proxy *proxy = object; - pw_proxy_add_proxy_listener(proxy, listener, events, data); + pw_proxy_add_object_listener(proxy, listener, events, data); return 0; } @@ -1095,7 +1095,7 @@ static int node_demarshal_subscribe_params(void *object, const struct pw_protoco if (ctype != SPA_TYPE_Id) return -EINVAL; - return pw_resource_do(resource, struct pw_node_proxy_methods, subscribe_params, 0, + return pw_resource_notify(resource, struct pw_node_proxy_methods, subscribe_params, 0, ids, n_ids); } @@ -1135,7 +1135,7 @@ static int node_demarshal_enum_params(void *object, const struct pw_protocol_nat SPA_POD_Pod(&filter)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_node_proxy_methods, enum_params, 0, + return pw_resource_notify(resource, struct pw_node_proxy_methods, enum_params, 0, seq, id, index, num, filter); } @@ -1168,7 +1168,7 @@ static int node_demarshal_set_param(void *object, const struct pw_protocol_nativ SPA_POD_Pod(¶m)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_node_proxy_methods, set_param, 0, id, flags, param); + return pw_resource_notify(resource, struct pw_node_proxy_methods, set_param, 0, id, flags, param); } static int node_marshal_send_command(void *object, const struct spa_command *command) @@ -1193,7 +1193,7 @@ static int node_demarshal_send_command(void *object, const struct pw_protocol_na SPA_POD_Pod(&command)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_node_proxy_methods, send_command, 0, command); + return pw_resource_notify(resource, struct pw_node_proxy_methods, send_command, 0, command); } static int port_method_marshal_add_listener(void *object, @@ -1202,7 +1202,7 @@ static int port_method_marshal_add_listener(void *object, void *data) { struct pw_proxy *proxy = object; - pw_proxy_add_proxy_listener(proxy, listener, events, data); + pw_proxy_add_object_listener(proxy, listener, events, data); return 0; } @@ -1342,7 +1342,7 @@ static int port_demarshal_subscribe_params(void *object, const struct pw_protoco if (ctype != SPA_TYPE_Id) return -EINVAL; - return pw_resource_do(resource, struct pw_port_proxy_methods, subscribe_params, 0, + return pw_resource_notify(resource, struct pw_port_proxy_methods, subscribe_params, 0, ids, n_ids); } @@ -1382,7 +1382,7 @@ static int port_demarshal_enum_params(void *object, const struct pw_protocol_nat SPA_POD_Pod(&filter)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_port_proxy_methods, enum_params, 0, + return pw_resource_notify(resource, struct pw_port_proxy_methods, enum_params, 0, seq, id, index, num, filter); } @@ -1392,7 +1392,7 @@ static int client_method_marshal_add_listener(void *object, void *data) { struct pw_proxy *proxy = object; - pw_proxy_add_proxy_listener(proxy, listener, events, data); + pw_proxy_add_object_listener(proxy, listener, events, data); return 0; } @@ -1535,7 +1535,7 @@ static int client_demarshal_error(void *object, const struct pw_protocol_native_ SPA_POD_String(&error)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_client_proxy_methods, error, 0, id, res, error); + return pw_resource_notify(resource, struct pw_client_proxy_methods, error, 0, id, res, error); } static int client_marshal_get_permissions(void *object, uint32_t index, uint32_t num) @@ -1589,7 +1589,7 @@ static int client_demarshal_update_properties(void *object, const struct pw_prot SPA_POD_String(&props.items[i].value), NULL) < 0) return -EINVAL; } - return pw_resource_do(resource, struct pw_client_proxy_methods, update_properties, 0, + return pw_resource_notify(resource, struct pw_client_proxy_methods, update_properties, 0, &props); } @@ -1605,7 +1605,7 @@ static int client_demarshal_get_permissions(void *object, const struct pw_protoc SPA_POD_Int(&num)) < 0) return -EINVAL; - return pw_resource_do(resource, struct pw_client_proxy_methods, get_permissions, 0, index, num); + return pw_resource_notify(resource, struct pw_client_proxy_methods, get_permissions, 0, index, num); } static int client_marshal_update_permissions(void *object, uint32_t n_permissions, @@ -1650,7 +1650,7 @@ static int client_demarshal_update_permissions(void *object, const struct pw_pro SPA_POD_Int(&permissions[i].permissions), NULL) < 0) return -EINVAL; } - return pw_resource_do(resource, struct pw_client_proxy_methods, update_permissions, 0, + return pw_resource_notify(resource, struct pw_client_proxy_methods, update_permissions, 0, n_permissions, permissions); } @@ -1660,7 +1660,7 @@ static int link_method_marshal_add_listener(void *object, void *data) { struct pw_proxy *proxy = object; - pw_proxy_add_proxy_listener(proxy, listener, events, data); + pw_proxy_add_object_listener(proxy, listener, events, data); return 0; } diff --git a/src/pipewire/client.c b/src/pipewire/client.c index f9fb1207..2e7716fc 100644 --- a/src/pipewire/client.c +++ b/src/pipewire/client.c @@ -38,12 +38,13 @@ struct impl { struct pw_array permissions; }; -#define pw_client_resource(r,m,v,...) pw_resource_notify(r,struct pw_client_proxy_events,m,v,__VA_ARGS__) +#define pw_client_resource(r,m,v,...) pw_resource_call(r,struct pw_client_proxy_events,m,v,__VA_ARGS__) #define pw_client_resource_info(r,...) pw_client_resource(r,info,0,__VA_ARGS__) #define pw_client_resource_permissions(r,...) pw_client_resource(r,permissions,0,__VA_ARGS__) struct resource_data { struct spa_hook resource_listener; + struct spa_hook object_listener; struct pw_client *client; }; @@ -198,8 +199,12 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, data = pw_resource_get_user_data(resource); data->client = this; - pw_resource_add_listener(resource, &data->resource_listener, &resource_events, resource); - pw_resource_set_implementation(resource, &client_methods, resource); + pw_resource_add_listener(resource, + &data->resource_listener, + &resource_events, resource); + pw_resource_add_object_listener(resource, + &data->object_listener, + &client_methods, resource); pw_log_debug("client %p: bound to %d", this, resource->id); diff --git a/src/pipewire/client.h b/src/pipewire/client.h index 0f165893..222b4d6e 100644 --- a/src/pipewire/client.h +++ b/src/pipewire/client.h @@ -97,10 +97,6 @@ struct pw_client_events { /** emited when a new resource is added for client */ void (*resource_added) (void *data, struct pw_resource *resource); - /** emited when an implementation is set on a resource. This can - * be used to override the implementation */ - void (*resource_impl) (void *data, struct pw_resource *resource); - /** emited when a resource is removed */ void (*resource_removed) (void *data, struct pw_resource *resource); diff --git a/src/pipewire/core.c b/src/pipewire/core.c index a3865e5a..cf47e81f 100644 --- a/src/pipewire/core.c +++ b/src/pipewire/core.c @@ -54,6 +54,7 @@ struct impl { struct resource_data { struct spa_hook resource_listener; + struct spa_hook object_listener; }; /** \endcond */ @@ -233,13 +234,13 @@ static struct pw_registry_proxy * core_get_registry(void *object, uint32_t versi data = pw_resource_get_user_data(registry_resource); pw_resource_add_listener(registry_resource, - &data->resource_listener, - &resource_events, - registry_resource); - - pw_resource_set_implementation(registry_resource, - ®istry_methods, - registry_resource); + &data->resource_listener, + &resource_events, + registry_resource); + pw_resource_add_object_listener(registry_resource, + &data->object_listener, + ®istry_methods, + registry_resource); spa_list_append(&this->registry_resource_list, ®istry_resource->link); @@ -386,9 +387,13 @@ global_bind(void *_data, goto no_mem; data = pw_resource_get_user_data(resource); - pw_resource_add_listener(resource, &data->resource_listener, &core_resource_events, resource); - - pw_resource_set_implementation(resource, &core_methods, resource); + pw_resource_add_listener(resource, + &data->resource_listener, + &core_resource_events, + resource); + pw_resource_add_object_listener(resource, + &data->object_listener, + &core_methods, resource); spa_list_append(&global->resource_list, &resource->link); diff --git a/src/pipewire/device.c b/src/pipewire/device.c index 01dd0965..9a6bdb26 100644 --- a/src/pipewire/device.c +++ b/src/pipewire/device.c @@ -37,7 +37,7 @@ struct impl { struct pw_device this; }; -#define pw_device_resource(r,m,v,...) pw_resource_notify(r,struct pw_device_proxy_events,m,v,__VA_ARGS__) +#define pw_device_resource(r,m,v,...) pw_resource_call(r,struct pw_device_proxy_events,m,v,__VA_ARGS__) #define pw_device_resource_info(r,...) pw_device_resource(r,info,0,__VA_ARGS__) #define pw_device_resource_param(r,...) pw_device_resource(r,param,0,__VA_ARGS__) @@ -49,10 +49,12 @@ struct result_device_params_data { }; struct resource_data { - struct spa_hook resource_listener; struct pw_device *device; struct pw_resource *resource; + struct spa_hook resource_listener; + struct spa_hook object_listener; + /* for async replies */ int seq; int end; @@ -294,9 +296,13 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, data = pw_resource_get_user_data(resource); data->device = this; data->resource = resource; - pw_resource_add_listener(resource, &data->resource_listener, &resource_events, data); - pw_resource_set_implementation(resource, &device_methods, data); + pw_resource_add_listener(resource, + &data->resource_listener, + &resource_events, data); + pw_resource_add_object_listener(resource, + &data->object_listener, + &device_methods, data); pw_log_debug("device %p: bound to %d", this, resource->id); diff --git a/src/pipewire/factory.c b/src/pipewire/factory.c index d18a164e..61c5dc35 100644 --- a/src/pipewire/factory.c +++ b/src/pipewire/factory.c @@ -32,7 +32,7 @@ #include "pipewire/interfaces.h" #include "pipewire/keys.h" -#define pw_factory_resource_info(r,...) pw_resource_notify(r,struct pw_factory_proxy_events,info,0,__VA_ARGS__) +#define pw_factory_resource_info(r,...) pw_resource_call(r,struct pw_factory_proxy_events,info,0,__VA_ARGS__) struct resource_data { struct spa_hook resource_listener; diff --git a/src/pipewire/link.c b/src/pipewire/link.c index 9a932645..01bfde7b 100644 --- a/src/pipewire/link.c +++ b/src/pipewire/link.c @@ -48,7 +48,7 @@ #define MAX_BUFFERS 64 -#define pw_link_resource_info(r,...) pw_resource_notify(r,struct pw_link_proxy_events,info,0,__VA_ARGS__) +#define pw_link_resource_info(r,...) pw_resource_call(r,struct pw_link_proxy_events,info,0,__VA_ARGS__) /** \cond */ struct impl { diff --git a/src/pipewire/module.c b/src/pipewire/module.c index 2650034c..e7adfcb5 100644 --- a/src/pipewire/module.c +++ b/src/pipewire/module.c @@ -46,7 +46,7 @@ struct impl { void *hnd; }; -#define pw_module_resource_info(r,...) pw_resource_notify(r,struct pw_module_proxy_events,info,0,__VA_ARGS__) +#define pw_module_resource_info(r,...) pw_resource_call(r,struct pw_module_proxy_events,info,0,__VA_ARGS__) struct resource_data { struct spa_hook resource_listener; diff --git a/src/pipewire/node.c b/src/pipewire/node.c index 7c31182c..2cf7954a 100644 --- a/src/pipewire/node.c +++ b/src/pipewire/node.c @@ -55,14 +55,17 @@ struct impl { unsigned int pause_on_idle:1; }; -#define pw_node_resource(r,m,v,...) pw_resource_notify(r,struct pw_node_proxy_events,m,v,__VA_ARGS__) +#define pw_node_resource(r,m,v,...) pw_resource_call(r,struct pw_node_proxy_events,m,v,__VA_ARGS__) #define pw_node_resource_info(r,...) pw_node_resource(r,info,0,__VA_ARGS__) #define pw_node_resource_param(r,...) pw_node_resource(r,param,0,__VA_ARGS__) struct resource_data { - struct spa_hook resource_listener; struct pw_node *node; struct pw_resource *resource; + + struct spa_hook resource_listener; + struct spa_hook object_listener; + uint32_t subscribe_ids[MAX_PARAMS]; uint32_t n_subscribe_ids; }; @@ -439,9 +442,13 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, data = pw_resource_get_user_data(resource); data->node = this; data->resource = resource; - pw_resource_add_listener(resource, &data->resource_listener, &resource_events, resource); - pw_resource_set_implementation(resource, &node_methods, resource); + pw_resource_add_listener(resource, + &data->resource_listener, + &resource_events, resource); + pw_resource_add_object_listener(resource, + &data->object_listener, + &node_methods, resource); pw_log_debug("node %p: bound to %d", this, resource->id); diff --git a/src/pipewire/port.c b/src/pipewire/port.c index 80107a9c..93a251eb 100644 --- a/src/pipewire/port.c +++ b/src/pipewire/port.c @@ -42,14 +42,17 @@ struct impl { struct spa_node mix_node; /**< mix node implementation */ }; -#define pw_port_resource(r,m,v,...) pw_resource_notify(r,struct pw_port_proxy_events,m,v,__VA_ARGS__) +#define pw_port_resource(r,m,v,...) pw_resource_call(r,struct pw_port_proxy_events,m,v,__VA_ARGS__) #define pw_port_resource_info(r,...) pw_port_resource(r,info,0,__VA_ARGS__) #define pw_port_resource_param(r,...) pw_port_resource(r,param,0,__VA_ARGS__) struct resource_data { - struct spa_hook resource_listener; struct pw_port *port; struct pw_resource *resource; + + struct spa_hook resource_listener; + struct spa_hook object_listener; + uint32_t subscribe_ids[MAX_PARAMS]; uint32_t n_subscribe_ids; }; @@ -598,9 +601,13 @@ global_bind(void *_data, struct pw_client *client, uint32_t permissions, data = pw_resource_get_user_data(resource); data->port = this; data->resource = resource; - pw_resource_add_listener(resource, &data->resource_listener, &resource_events, resource); - pw_resource_set_implementation(resource, &port_methods, resource); + pw_resource_add_listener(resource, + &data->resource_listener, + &resource_events, resource); + pw_resource_add_object_listener(resource, + &data->object_listener, + &port_methods, resource); pw_log_debug("port %p: bound to %d", this, resource->id); diff --git a/src/pipewire/private.h b/src/pipewire/private.h index e341e57e..02265edc 100644 --- a/src/pipewire/private.h +++ b/src/pipewire/private.h @@ -171,7 +171,7 @@ struct pw_global { #define pw_core_emit_global_added(c,g) pw_core_emit(c, global_added, 0, g) #define pw_core_emit_global_removed(c,g) pw_core_emit(c, global_removed, 0, g) -#define pw_core_resource(r,m,v,...) pw_resource_notify(r, struct pw_core_proxy_events, m, v, ##__VA_ARGS__) +#define pw_core_resource(r,m,v,...) pw_resource_call(r, struct pw_core_proxy_events, m, v, ##__VA_ARGS__) #define pw_core_resource_info(r,...) pw_core_resource(r,info,0,__VA_ARGS__) #define pw_core_resource_done(r,...) pw_core_resource(r,done,0,__VA_ARGS__) #define pw_core_resource_ping(r,...) pw_core_resource(r,ping,0,__VA_ARGS__) @@ -198,7 +198,7 @@ pw_core_resource_errorf(struct pw_resource *resource, uint32_t id, int seq, va_end(args); } -#define pw_registry_resource(r,m,v,...) pw_resource_notify(r, struct pw_registry_proxy_events,m,v,##__VA_ARGS__) +#define pw_registry_resource(r,m,v,...) pw_resource_call(r, struct pw_registry_proxy_events,m,v,##__VA_ARGS__) #define pw_registry_resource_global(r,...) pw_registry_resource(r,global,0,__VA_ARGS__) #define pw_registry_resource_global_remove(r,...) pw_registry_resource(r,global_remove,0,__VA_ARGS__) @@ -626,9 +626,10 @@ struct pw_link { #define pw_resource_emit_error(o,s,r,m) pw_resource_emit(o, error, 0, s, r, m) struct pw_resource { - struct spa_interface impl; /**< event implementation */ + struct spa_interface impl; /**< object implementation */ + struct pw_core *core; /**< the core object */ - struct spa_list link; /**< link in object resource_list */ + struct spa_list link; /**< link in global resource_list */ struct pw_client *client; /**< owner client */ @@ -639,13 +640,11 @@ struct pw_resource { unsigned int removed:1; /**< resource was removed from server */ - struct spa_hook implementation; - struct spa_hook_list implementation_list; struct spa_hook_list listener_list; + struct spa_hook_list object_listener_list; const struct pw_protocol_marshal *marshal; - void *access_private; /**< private data for access control */ void *user_data; /**< extra user data */ }; @@ -655,7 +654,8 @@ struct pw_resource { #define pw_proxy_emit_error(p,s,r,m) pw_proxy_emit(p, error, 0, s, r, m) struct pw_proxy { - struct spa_interface impl; /**< method implementation */ + struct spa_interface impl; /**< object implementation */ + struct pw_remote *remote; /**< the owner remote of this proxy */ struct spa_list link; /**< link in the remote */ @@ -663,7 +663,7 @@ struct pw_proxy { unsigned int removed:1; /**< proxy was removed from server */ struct spa_hook_list listener_list; - struct spa_hook_list proxy_listener_list; + struct spa_hook_list object_listener_list; const struct pw_protocol_marshal *marshal; /**< protocol specific marshal functions */ diff --git a/src/pipewire/proxy.c b/src/pipewire/proxy.c index 40962ca5..1edb74fe 100644 --- a/src/pipewire/proxy.c +++ b/src/pipewire/proxy.c @@ -69,7 +69,7 @@ struct pw_proxy *pw_proxy_new(struct pw_proxy *factory, this->remote = remote; spa_hook_list_init(&this->listener_list); - spa_hook_list_init(&this->proxy_listener_list); + spa_hook_list_init(&this->object_listener_list); this->id = pw_map_insert_new(&remote->objects, this); @@ -121,12 +121,12 @@ void pw_proxy_add_listener(struct pw_proxy *proxy, } SPA_EXPORT -void pw_proxy_add_proxy_listener(struct pw_proxy *proxy, +void pw_proxy_add_object_listener(struct pw_proxy *proxy, struct spa_hook *listener, - const void *events, + const void *funcs, void *data) { - spa_hook_list_append(&proxy->proxy_listener_list, listener, events, data); + spa_hook_list_append(&proxy->object_listener_list, listener, funcs, data); } /** Destroy a proxy object @@ -189,9 +189,9 @@ int pw_proxy_error(struct pw_proxy *proxy, int res, const char *error, ...) } SPA_EXPORT -struct spa_hook_list *pw_proxy_get_proxy_listeners(struct pw_proxy *proxy) +struct spa_hook_list *pw_proxy_get_object_listeners(struct pw_proxy *proxy) { - return &proxy->proxy_listener_list; + return &proxy->object_listener_list; } SPA_EXPORT diff --git a/src/pipewire/proxy.h b/src/pipewire/proxy.h index a43d860a..efd367f3 100644 --- a/src/pipewire/proxy.h +++ b/src/pipewire/proxy.h @@ -131,11 +131,11 @@ void pw_proxy_add_listener(struct pw_proxy *proxy, const struct pw_proxy_events *events, void *data); -/** Add a listener for the events received from the remote resource. The - * events depend on the type of the remote resource. */ -void pw_proxy_add_proxy_listener(struct pw_proxy *proxy, /**< the proxy */ +/** Add a listener for the events received from the remote object. The + * events depend on the type of the remote object type. */ +void pw_proxy_add_object_listener(struct pw_proxy *proxy, /**< the proxy */ struct spa_hook *listener, /**< listener */ - const void *events, /**< proxied events */ + const void *funcs, /**< proxied functions */ void *data /**< data passed to events */); /** destroy a proxy */ @@ -158,12 +158,26 @@ int pw_proxy_sync(struct pw_proxy *proxy, int seq); int pw_proxy_error(struct pw_proxy *proxy, int res, const char *error, ...); /** Get the listener of proxy */ -struct spa_hook_list *pw_proxy_get_proxy_listeners(struct pw_proxy *proxy); +struct spa_hook_list *pw_proxy_get_object_listeners(struct pw_proxy *proxy); /** Get the marshal functions for the proxy */ const struct pw_protocol_marshal *pw_proxy_get_marshal(struct pw_proxy *proxy); -#define pw_proxy_notify(p,type,event,ver,...) spa_hook_list_call(pw_proxy_get_proxy_listeners(p),type,event,ver,## __VA_ARGS__) +#define pw_proxy_notify(p,type,event,version,...) \ + spa_hook_list_call(pw_proxy_get_object_listeners(p), \ + type, event, version, ## __VA_ARGS__) + +#define pw_proxy_call(p,type,method,version,...) \ + spa_interface_call((struct spa_interface*)p, \ + type, method, version, ##__VA_ARGS__) + +#define pw_proxy_call_res(p,type,method,version,...) \ +({ \ + int _res = -ENOTSUP; \ + spa_interface_call_res((struct spa_interface*)p, \ + type, _res, method, version, ##__VA_ARGS__); \ + _res; \ +}) #ifdef __cplusplus } diff --git a/src/pipewire/resource.c b/src/pipewire/resource.c index 349553ad..56d7b88d 100644 --- a/src/pipewire/resource.c +++ b/src/pipewire/resource.c @@ -60,9 +60,8 @@ struct pw_resource *pw_resource_new(struct pw_client *client, this->type = type; this->version = version; - spa_hook_list_init(&this->implementation_list); - spa_hook_list_append(&this->implementation_list, &this->implementation, NULL, NULL); spa_hook_list_init(&this->listener_list); + spa_hook_list_init(&this->object_listener_list); if (id == SPA_ID_INVALID) { id = pw_map_insert_new(&client->objects, this); @@ -141,30 +140,18 @@ void pw_resource_add_listener(struct pw_resource *resource, } SPA_EXPORT -void pw_resource_set_implementation(struct pw_resource *resource, - const void *implementation, - void *data) +void pw_resource_add_object_listener(struct pw_resource *resource, + struct spa_hook *listener, + const void *funcs, + void *data) { - struct pw_client *client = resource->client; - - resource->implementation.cb = SPA_CALLBACKS_INIT(implementation, data); - - pw_client_emit_resource_impl(client, resource); -} - -SPA_EXPORT -void pw_resource_add_override(struct pw_resource *resource, - struct spa_hook *listener, - const void *implementation, - void *data) -{ - spa_hook_list_prepend(&resource->implementation_list, listener, implementation, data); + spa_hook_list_append(&resource->object_listener_list, listener, funcs, data); } SPA_EXPORT -struct spa_hook_list *pw_resource_get_implementation(struct pw_resource *resource) +struct spa_hook_list *pw_resource_get_object_listeners(struct pw_resource *resource) { - return &resource->implementation_list; + return &resource->object_listener_list; } SPA_EXPORT diff --git a/src/pipewire/resource.h b/src/pipewire/resource.h index 243cab87..2de3d433 100644 --- a/src/pipewire/resource.h +++ b/src/pipewire/resource.h @@ -112,15 +112,10 @@ void pw_resource_add_listener(struct pw_resource *resource, void *data); /** Set the resource implementation. */ -void pw_resource_set_implementation(struct pw_resource *resource, - const void *implementation, - void *data); - -/** Override the implementation of a resource. */ -void pw_resource_add_override(struct pw_resource *resource, - struct spa_hook *listener, - const void *implementation, - void *data); +void pw_resource_add_object_listener(struct pw_resource *resource, + struct spa_hook *listener, + const void *funcs, + void *data); /** Generate an ping event for a resource. This will generate a pong event * with the same \a sequence number in the return value. */ @@ -129,27 +124,25 @@ int pw_resource_ping(struct pw_resource *resource, int seq); /** Generate an error for a resource */ void pw_resource_error(struct pw_resource *resource, int res, const char *error, ...); -/** Get the implementation list of a resource */ -struct spa_hook_list *pw_resource_get_implementation(struct pw_resource *resource); +/** Get the list of object listeners from a resource */ +struct spa_hook_list *pw_resource_get_object_listeners(struct pw_resource *resource); /** Get the marshal functions for the resource */ const struct pw_protocol_marshal *pw_resource_get_marshal(struct pw_resource *resource); -#define pw_resource_do(r,type,method,v,...) \ - spa_hook_list_call_once(pw_resource_get_implementation(r),type,method,v,## __VA_ARGS__) - -#define pw_resource_do_parent(r,l,type,method,...) \ - spa_hook_list_call_once_start(pw_resource_get_implementation(r),l,type,method,v,## __VA_ARGS__) - #define pw_resource_notify(r,type,event,version,...) \ + spa_hook_list_call(pw_resource_get_object_listeners(r), \ + type, event, version, ## __VA_ARGS__) + +#define pw_resource_call(r,type,method,version,...) \ spa_interface_call((struct spa_interface*)r, \ - type, event, version, ##__VA_ARGS__); + type, method, version, ##__VA_ARGS__) -#define pw_resource_notify_res(r,type,event,version,...) \ +#define pw_resource_call_res(r,type,method,version,...) \ ({ \ int _res = -ENOTSUP; \ spa_interface_call_res((struct spa_interface*)r, \ - type, _res, event, version, ##__VA_ARGS__); \ + type, _res, method, version, ##__VA_ARGS__); \ _res; \ }) diff --git a/src/tests/test-client.c b/src/tests/test-client.c index 264685c8..f25bd594 100644 --- a/src/tests/test-client.c +++ b/src/tests/test-client.c @@ -40,7 +40,6 @@ static void test_abi(void) void (*free) (void *data); void (*info_changed) (void *data, const struct pw_client_info *info); void (*resource_added) (void *data, struct pw_resource *resource); - void (*resource_impl) (void *data, struct pw_resource *resource); void (*resource_removed) (void *data, struct pw_resource *resource); void (*busy_changed) (void *data, bool busy); } test = { PW_VERSION_CLIENT_EVENTS, NULL }; @@ -49,7 +48,6 @@ static void test_abi(void) TEST_FUNC(ev, test, free); TEST_FUNC(ev, test, info_changed); TEST_FUNC(ev, test, resource_added); - TEST_FUNC(ev, test, resource_impl); TEST_FUNC(ev, test, resource_removed); TEST_FUNC(ev, test, busy_changed); diff --git a/src/tools/pipewire-cli.c b/src/tools/pipewire-cli.c index 940c5dd9..c11e14df 100644 --- a/src/tools/pipewire-cli.c +++ b/src/tools/pipewire-cli.c @@ -95,7 +95,7 @@ struct proxy_data { info_func_t info_func; pw_destroy_t destroy; struct spa_hook proxy_listener; - struct spa_hook proxy_proxy_listener; + struct spa_hook object_listener; }; struct command { @@ -944,7 +944,7 @@ static bool bind_global(struct remote_data *rd, struct global *global, char **er pd->proxy = proxy; pd->info_func = info_func; pd->destroy = destroy; - pw_proxy_add_proxy_listener(proxy, &pd->proxy_proxy_listener, events, pd); + pw_proxy_add_object_listener(proxy, &pd->object_listener, events, pd); pw_proxy_add_listener(proxy, &pd->proxy_listener, &proxy_events, pd); global->proxy = proxy; @@ -1039,7 +1039,7 @@ static bool do_create_node(struct data *data, const char *cmd, char *args, char pd->rd = rd; pd->proxy = proxy; pd->destroy = (pw_destroy_t) pw_node_info_free; - pw_proxy_add_proxy_listener(proxy, &pd->proxy_proxy_listener, &node_events, pd); + pw_proxy_add_object_listener(proxy, &pd->object_listener, &node_events, pd); pw_proxy_add_listener(proxy, &pd->proxy_listener, &proxy_events, pd); id = pw_map_insert_new(&data->vars, proxy); @@ -1108,7 +1108,7 @@ static bool do_create_link(struct data *data, const char *cmd, char *args, char pd->rd = rd; pd->proxy = proxy; pd->destroy = (pw_destroy_t) pw_link_info_free; - pw_proxy_add_proxy_listener(proxy, &pd->proxy_proxy_listener, &link_events, pd); + pw_proxy_add_object_listener(proxy, &pd->object_listener, &link_events, pd); pw_proxy_add_listener(proxy, &pd->proxy_listener, &proxy_events, pd); id = pw_map_insert_new(&data->vars, proxy); diff --git a/src/tools/pipewire-monitor.c b/src/tools/pipewire-monitor.c index c00adb41..8fe21cda 100644 --- a/src/tools/pipewire-monitor.c +++ b/src/tools/pipewire-monitor.c @@ -74,7 +74,7 @@ struct proxy_data { void *info; pw_destroy_t destroy; struct spa_hook proxy_listener; - struct spa_hook proxy_proxy_listener; + struct spa_hook object_listener; int pending_seq; struct spa_list pending_link; print_func_t print_func; @@ -656,7 +656,7 @@ static void registry_event_global(void *data, uint32_t id, uint32_t parent_id, pd->pending_seq = 0; pd->print_func = print_func; spa_list_init(&pd->param_list); - pw_proxy_add_proxy_listener(proxy, &pd->proxy_proxy_listener, events, pd); + pw_proxy_add_object_listener(proxy, &pd->object_listener, events, pd); pw_proxy_add_listener(proxy, &pd->proxy_listener, &proxy_events, pd); return; |