diff --git a/lib/wp/core.c b/lib/wp/core.c index 2ff8271c..f9032042 100644 --- a/lib/wp/core.c +++ b/lib/wp/core.c @@ -545,6 +545,27 @@ wp_core_get_remote_state (WpCore * self, const gchar ** error) return (WpRemoteState) pw_remote_get_state (self->pw_remote, error); } +WpProxy * +wp_core_export_object (WpCore * self, guint32 interface_type, + gpointer local_object, WpProperties * properties) +{ + struct pw_proxy *proxy = NULL; + guint32 type; + guint32 version; + + g_return_val_if_fail (WP_IS_CORE (self), NULL); + g_return_val_if_fail (self->pw_remote, NULL); + + proxy = pw_remote_export (self->pw_remote, interface_type, + properties ? wp_properties_to_pw_properties (properties) : NULL, + local_object, 0); + if (!proxy) + return NULL; + + type = pw_proxy_get_type (proxy, &version); + return wp_proxy_new_wrap (self, proxy, type, version, NULL); +} + WpProxy * wp_core_create_local_object (WpCore * self, const gchar *factory_name, guint32 interface_type, guint32 interface_version, diff --git a/lib/wp/core.h b/lib/wp/core.h index a31d6499..d233e8a5 100644 --- a/lib/wp/core.h +++ b/lib/wp/core.h @@ -50,6 +50,8 @@ 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_export_object (WpCore * self, guint32 interface_type, + gpointer local_object, WpProperties * properties); WpProxy * wp_core_create_local_object (WpCore * self, const gchar *factory_name, guint32 interface_type, guint32 interface_version, WpProperties * properties);