From 7594eabdc8ebaec267b58ae07da4ed2609cf0d36 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 5 Dec 2019 11:15:04 +0100 Subject: [PATCH] remote: pass core_proxy to export function We want to remove the need for the pw_remote in most cases. --- src/modules/module-client-device.c | 2 +- src/modules/module-client-device/proxy-device.c | 9 ++------- src/modules/module-client-node.c | 8 ++++---- src/modules/module-client-node/remote-node.c | 6 ++++-- src/modules/module-metadata.c | 4 ++-- src/modules/module-metadata/proxy-metadata.c | 9 ++------- src/pipewire/core.h | 3 ++- src/pipewire/remote.c | 2 +- 8 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/modules/module-client-device.c b/src/modules/module-client-device.c index 640919718..abb5c8b8b 100644 --- a/src/modules/module-client-device.c +++ b/src/modules/module-client-device.c @@ -43,7 +43,7 @@ static const struct spa_dict_item module_props[] = { { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; -struct pw_proxy *pw_remote_spa_device_export(struct pw_remote *remote, +struct pw_proxy *pw_remote_spa_device_export(struct pw_core_proxy *core_proxy, uint32_t type, struct pw_properties *props, void *object, size_t user_data_size); diff --git a/src/modules/module-client-device/proxy-device.c b/src/modules/module-client-device/proxy-device.c index ac30c6029..54260f693 100644 --- a/src/modules/module-client-device/proxy-device.c +++ b/src/modules/module-client-device/proxy-device.c @@ -33,9 +33,6 @@ #include "pipewire/private.h" struct device_data { - struct pw_remote *remote; - struct pw_core *core; - struct spa_device *device; struct spa_hook device_listener; struct spa_hook device_methods; @@ -55,7 +52,7 @@ static const struct pw_proxy_events proxy_events = { .destroy = device_proxy_destroy, }; -struct pw_proxy *pw_remote_spa_device_export(struct pw_remote *remote, +struct pw_proxy *pw_remote_spa_device_export(struct pw_core_proxy *core_proxy, uint32_t type, struct pw_properties *props, void *object, size_t user_data_size) { @@ -64,7 +61,7 @@ struct pw_proxy *pw_remote_spa_device_export(struct pw_remote *remote, struct pw_proxy *proxy; struct device_data *data; - proxy = pw_core_proxy_create_object(remote->core_proxy, + proxy = pw_core_proxy_create_object(core_proxy, "client-device", SPA_TYPE_INTERFACE_Device, SPA_VERSION_DEVICE, @@ -77,9 +74,7 @@ struct pw_proxy *pw_remote_spa_device_export(struct pw_remote *remote, data = pw_proxy_get_user_data(proxy); data = SPA_MEMBER(data, user_data_size, struct device_data); - data->remote = remote; data->device = device; - data->core = pw_remote_get_core(remote); data->proxy = proxy; iface = (struct spa_interface*)proxy; diff --git a/src/modules/module-client-node.c b/src/modules/module-client-node.c index 5b470ab09..e7a8d697d 100644 --- a/src/modules/module-client-node.c +++ b/src/modules/module-client-node.c @@ -44,9 +44,9 @@ static const struct spa_dict_item module_props[] = { { PW_KEY_MODULE_VERSION, PACKAGE_VERSION }, }; -struct pw_proxy *pw_remote_node_export(struct pw_remote *remote, +struct pw_proxy *pw_core_proxy_node_export(struct pw_core_proxy *core_proxy, uint32_t type, struct pw_properties *props, void *object, size_t user_data_size); -struct pw_proxy *pw_remote_spa_node_export(struct pw_remote *remote, +struct pw_proxy *pw_core_proxy_spa_node_export(struct pw_core_proxy *core_proxy, uint32_t type, struct pw_properties *props, void *object, size_t user_data_size); struct pw_protocol *pw_protocol_native_ext_client_node_init(struct pw_core *core); @@ -178,11 +178,11 @@ int pipewire__module_init(struct pw_module *module, const char *args) pw_protocol_native_ext_client_node0_init(core); data->export_node.type = PW_TYPE_INTERFACE_Node; - data->export_node.func = pw_remote_node_export; + data->export_node.func = pw_core_proxy_node_export; pw_core_register_export_type(core, &data->export_node); data->export_spanode.type = SPA_TYPE_INTERFACE_Node; - data->export_spanode.func = pw_remote_spa_node_export; + data->export_spanode.func = pw_core_proxy_spa_node_export; pw_core_register_export_type(core, &data->export_spanode); pw_module_add_listener(module, &data->module_listener, &module_events, data); diff --git a/src/modules/module-client-node/remote-node.c b/src/modules/module-client-node/remote-node.c index a5ffcba4b..7d2910b8d 100644 --- a/src/modules/module-client-node/remote-node.c +++ b/src/modules/module-client-node/remote-node.c @@ -1161,11 +1161,12 @@ static struct pw_proxy *node_export(struct pw_remote *remote, void *object, bool return data->proxy; } -struct pw_proxy *pw_remote_node_export(struct pw_remote *remote, +struct pw_proxy *pw_core_proxy_node_export(struct pw_core_proxy *core_proxy, uint32_t type, struct pw_properties *props, void *object, size_t user_data_size) { struct pw_node *node = object; + struct pw_remote *remote = pw_proxy_get_remote((struct pw_proxy*)core_proxy); if (props) { pw_node_update_properties(node, &props->dict); @@ -1174,11 +1175,12 @@ struct pw_proxy *pw_remote_node_export(struct pw_remote *remote, return node_export(remote, object, false, user_data_size); } -struct pw_proxy *pw_remote_spa_node_export(struct pw_remote *remote, +struct pw_proxy *pw_core_proxy_spa_node_export(struct pw_core_proxy *core_proxy, uint32_t type, struct pw_properties *props, void *object, size_t user_data_size) { struct pw_node *node; + struct pw_remote *remote = pw_proxy_get_remote((struct pw_proxy*)core_proxy); node = pw_node_new(pw_remote_get_core(remote), props, 0); if (node == NULL) diff --git a/src/modules/module-metadata.c b/src/modules/module-metadata.c index 1aaf15857..f475f6941 100644 --- a/src/modules/module-metadata.c +++ b/src/modules/module-metadata.c @@ -46,7 +46,7 @@ static const struct spa_dict_item module_props[] = { void * pw_metadata_new(struct pw_core *core, struct pw_resource *resource, struct pw_properties *properties); -struct pw_proxy *pw_remote_metadata_export(struct pw_remote *remote, +struct pw_proxy *pw_core_proxy_metadata_export(struct pw_core_proxy *core_proxy, uint32_t type, struct pw_properties *props, void *object, size_t user_data_size); int pw_protocol_native_ext_metadata_init(struct pw_core *core); @@ -174,7 +174,7 @@ int pipewire__module_init(struct pw_module *module, const char *args) data); data->export_metadata.type = PW_TYPE_INTERFACE_Metadata; - data->export_metadata.func = pw_remote_metadata_export; + data->export_metadata.func = pw_core_proxy_metadata_export; pw_core_register_export_type(core, &data->export_metadata); pw_module_add_listener(module, &data->module_listener, &module_events, data); diff --git a/src/modules/module-metadata/proxy-metadata.c b/src/modules/module-metadata/proxy-metadata.c index ce2247966..8c6d3b63a 100644 --- a/src/modules/module-metadata/proxy-metadata.c +++ b/src/modules/module-metadata/proxy-metadata.c @@ -33,9 +33,6 @@ #include "extensions/metadata.h" struct object_data { - struct pw_remote *remote; - struct pw_core *core; - struct pw_metadata *object; struct spa_hook object_listener; struct spa_hook object_methods; @@ -55,7 +52,7 @@ static const struct pw_proxy_events proxy_events = { .destroy = object_proxy_destroy, }; -struct pw_proxy *pw_remote_metadata_export(struct pw_remote *remote, +struct pw_proxy *pw_core_proxy_metadata_export(struct pw_core_proxy *core_proxy, uint32_t type, struct pw_properties *props, void *object, size_t user_data_size) { @@ -64,7 +61,7 @@ struct pw_proxy *pw_remote_metadata_export(struct pw_remote *remote, struct pw_proxy *proxy; struct object_data *data; - proxy = pw_core_proxy_create_object(remote->core_proxy, + proxy = pw_core_proxy_create_object(core_proxy, "metadata", PW_TYPE_INTERFACE_Metadata, PW_VERSION_METADATA, @@ -77,9 +74,7 @@ struct pw_proxy *pw_remote_metadata_export(struct pw_remote *remote, data = pw_proxy_get_user_data(proxy); data = SPA_MEMBER(data, user_data_size, struct object_data); - data->remote = remote; data->object = object; - data->core = pw_remote_get_core(remote); data->proxy = proxy; iface = (struct spa_interface*)proxy; diff --git a/src/pipewire/core.h b/src/pipewire/core.h index bdfb16ce6..7291b6dbe 100644 --- a/src/pipewire/core.h +++ b/src/pipewire/core.h @@ -44,6 +44,7 @@ struct pw_core; #include #include +#include #include #include #include @@ -163,7 +164,7 @@ struct spa_handle *pw_core_load_spa_handle(struct pw_core *core, struct pw_export_type { struct spa_list link; uint32_t type; - struct pw_proxy * (*func) (struct pw_remote *remote, + struct pw_proxy * (*func) (struct pw_core_proxy *core_proxy, uint32_t type, struct pw_properties *properties, void *object, size_t user_data_size); }; diff --git a/src/pipewire/remote.c b/src/pipewire/remote.c index b06056dc4..d9c539771 100644 --- a/src/pipewire/remote.c +++ b/src/pipewire/remote.c @@ -558,7 +558,7 @@ struct pw_proxy *pw_remote_export(struct pw_remote *remote, goto error_export_type; } - proxy = t->func(remote, type, props, object, user_data_size); + proxy = t->func(remote->core_proxy, type, props, object, user_data_size); if (proxy == NULL) { res = -errno; goto error_proxy_failed;