mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
export-spa: implement with core-proxy
This commit is contained in:
parent
e2ba3dc6e4
commit
42103a8218
1 changed files with 19 additions and 18 deletions
|
|
@ -40,7 +40,7 @@ struct data {
|
||||||
struct pw_core_proxy *core_proxy;
|
struct pw_core_proxy *core_proxy;
|
||||||
struct spa_hook core_listener;
|
struct spa_hook core_listener;
|
||||||
|
|
||||||
struct pw_node *node;
|
struct spa_node *node;
|
||||||
const char *library;
|
const char *library;
|
||||||
const char *factory;
|
const char *factory;
|
||||||
const char *path;
|
const char *path;
|
||||||
|
|
@ -67,32 +67,33 @@ static const struct pw_node_proxy_events node_events = {
|
||||||
|
|
||||||
static int make_node(struct data *data)
|
static int make_node(struct data *data)
|
||||||
{
|
{
|
||||||
struct pw_factory *factory;
|
|
||||||
struct pw_properties *props;
|
struct pw_properties *props;
|
||||||
|
struct spa_handle *hndl;
|
||||||
factory = pw_core_find_factory(data->core, "spa-node-factory");
|
void *iface;
|
||||||
if (factory == NULL)
|
int res;
|
||||||
return -1;
|
|
||||||
|
|
||||||
props = pw_properties_new(SPA_KEY_LIBRARY_NAME, data->library,
|
props = pw_properties_new(SPA_KEY_LIBRARY_NAME, data->library,
|
||||||
SPA_KEY_FACTORY_NAME, data->factory, NULL);
|
SPA_KEY_FACTORY_NAME, data->factory,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
|
||||||
|
hndl = pw_core_load_spa_handle(data->core, data->factory, &props->dict);
|
||||||
|
if (hndl == NULL)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
if ((res = spa_handle_get_interface(hndl, SPA_TYPE_INTERFACE_Node, &iface)) < 0)
|
||||||
|
return res;
|
||||||
|
|
||||||
|
data->node = iface;
|
||||||
|
|
||||||
if (data->path) {
|
if (data->path) {
|
||||||
pw_properties_set(props, PW_KEY_NODE_AUTOCONNECT, "1");
|
pw_properties_set(props, PW_KEY_NODE_AUTOCONNECT, "1");
|
||||||
pw_properties_set(props, PW_KEY_NODE_TARGET, data->path);
|
pw_properties_set(props, PW_KEY_NODE_TARGET, data->path);
|
||||||
}
|
}
|
||||||
|
|
||||||
data->node = pw_factory_create_object(factory,
|
data->proxy = pw_core_proxy_export(data->core_proxy,
|
||||||
NULL,
|
SPA_TYPE_INTERFACE_Node, props,
|
||||||
PW_TYPE_INTERFACE_Node,
|
data->node, 0);
|
||||||
PW_VERSION_NODE_PROXY,
|
|
||||||
props, SPA_ID_INVALID);
|
|
||||||
if (data->node == NULL)
|
|
||||||
return -errno;
|
|
||||||
|
|
||||||
pw_node_set_active(data->node, true);
|
|
||||||
|
|
||||||
data->proxy = pw_core_proxy_export(data->core_proxy, PW_TYPE_INTERFACE_Node, NULL, data->node, 0);
|
|
||||||
if (data->proxy == NULL)
|
if (data->proxy == NULL)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue