remote: pass core_proxy to export function

We want to remove the need for the pw_remote in most cases.
This commit is contained in:
Wim Taymans 2019-12-05 11:15:04 +01:00
parent dd2fa2caee
commit 7594eabdc8
8 changed files with 18 additions and 25 deletions

View file

@ -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);

View file

@ -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;

View file

@ -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);

View file

@ -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)

View file

@ -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);

View file

@ -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;

View file

@ -44,6 +44,7 @@ struct pw_core;
#include <pipewire/client.h>
#include <pipewire/introspect.h>
#include <pipewire/interfaces.h>
#include <pipewire/remote.h>
#include <pipewire/global.h>
#include <pipewire/loop.h>
@ -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);
};

View file

@ -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;