core: add wp_core_create_local_object API

This commit is contained in:
Julian Bouzas 2020-01-08 09:48:35 -05:00
parent 55ff0a6339
commit 0a690f61a4
2 changed files with 40 additions and 0 deletions

View file

@ -545,6 +545,43 @@ wp_core_get_remote_state (WpCore * self, const gchar ** error)
return (WpRemoteState) pw_remote_get_state (self->pw_remote, error);
}
WpProxy *
wp_core_create_local_object (WpCore * self, const gchar *factory_name,
guint32 interface_type, guint32 interface_version,
WpProperties * properties)
{
struct pw_proxy *pw_proxy = NULL;
struct pw_factory *factory = NULL;
gpointer iface = NULL;
g_return_val_if_fail (WP_IS_CORE (self), NULL);
g_return_val_if_fail (self->pw_core, NULL);
g_return_val_if_fail (self->pw_remote, NULL);
factory = pw_core_find_factory (self->pw_core, factory_name);
if (!factory)
return NULL;
iface = pw_factory_create_object (factory,
NULL,
interface_type,
interface_version,
properties ? wp_properties_to_pw_properties (properties) : NULL,
0);
if (!iface)
return NULL;
pw_proxy = pw_remote_export (self->pw_remote,
interface_type,
properties ? wp_properties_to_pw_properties (properties) : NULL,
iface,
0);
if (!pw_proxy)
return NULL;
return wp_proxy_new_wrap (self, pw_proxy, interface_type, interface_version);
}
WpProxy *
wp_core_create_remote_object (WpCore *self,
const gchar *factory_name, guint32 interface_type,

View file

@ -50,6 +50,9 @@ struct pw_remote * wp_core_get_pw_remote (WpCore * self);
gboolean wp_core_connect (WpCore * self);
WpRemoteState wp_core_get_remote_state (WpCore * self, const gchar ** error);
WpProxy * wp_core_create_local_object (WpCore * self,
const gchar *factory_name, guint32 interface_type,
guint32 interface_version, WpProperties * properties);
WpProxy * wp_core_create_remote_object (WpCore * self,
const gchar * factory_name, guint32 interface_type,
guint32 interface_version, WpProperties * properties);