lib: introduce export macros and hide all private symbols

This commit is contained in:
George Kiagiadakis
2020-01-16 18:50:07 +02:00
parent 83a0725b6a
commit efb33ddd1b
29 changed files with 360 additions and 8 deletions

View File

@@ -19,10 +19,12 @@ static const guint32 WP_STREAM_ID_NONE = 0xffffffff;
static const guint32 WP_CONTROL_ID_NONE = 0xffffffff; static const guint32 WP_CONTROL_ID_NONE = 0xffffffff;
#define WP_TYPE_BASE_ENDPOINT (wp_base_endpoint_get_type ()) #define WP_TYPE_BASE_ENDPOINT (wp_base_endpoint_get_type ())
WP_API
G_DECLARE_DERIVABLE_TYPE (WpBaseEndpoint, wp_base_endpoint, G_DECLARE_DERIVABLE_TYPE (WpBaseEndpoint, wp_base_endpoint,
WP, BASE_ENDPOINT, GObject) WP, BASE_ENDPOINT, GObject)
#define WP_TYPE_BASE_ENDPOINT_LINK (wp_base_endpoint_link_get_type ()) #define WP_TYPE_BASE_ENDPOINT_LINK (wp_base_endpoint_link_get_type ())
WP_API
G_DECLARE_DERIVABLE_TYPE (WpBaseEndpointLink, wp_base_endpoint_link, G_DECLARE_DERIVABLE_TYPE (WpBaseEndpointLink, wp_base_endpoint_link,
WP, BASE_ENDPOINT_LINK, GObject) WP, BASE_ENDPOINT_LINK, GObject)
@@ -45,43 +47,90 @@ struct _WpBaseEndpointClass
const gchar * (*get_endpoint_link_factory) (WpBaseEndpoint * self); const gchar * (*get_endpoint_link_factory) (WpBaseEndpoint * self);
}; };
WP_API
WpBaseEndpoint * wp_base_endpoint_new_finish (GObject *initable, GAsyncResult *res, WpBaseEndpoint * wp_base_endpoint_new_finish (GObject *initable, GAsyncResult *res,
GError **error); GError **error);
WP_API
void wp_base_endpoint_register (WpBaseEndpoint * self); void wp_base_endpoint_register (WpBaseEndpoint * self);
WP_API
void wp_base_endpoint_unregister (WpBaseEndpoint * self); void wp_base_endpoint_unregister (WpBaseEndpoint * self);
WP_API
WpCore *wp_base_endpoint_get_core (WpBaseEndpoint * self); WpCore *wp_base_endpoint_get_core (WpBaseEndpoint * self);
WP_API
const gchar * wp_base_endpoint_get_name (WpBaseEndpoint * self); const gchar * wp_base_endpoint_get_name (WpBaseEndpoint * self);
WP_API
const gchar * wp_base_endpoint_get_media_class (WpBaseEndpoint * self); const gchar * wp_base_endpoint_get_media_class (WpBaseEndpoint * self);
WP_API
guint wp_base_endpoint_get_direction (WpBaseEndpoint * self); guint wp_base_endpoint_get_direction (WpBaseEndpoint * self);
WP_API
guint64 wp_base_endpoint_get_creation_time (WpBaseEndpoint * self); guint64 wp_base_endpoint_get_creation_time (WpBaseEndpoint * self);
WP_API
guint32 wp_base_endpoint_get_priority (WpBaseEndpoint * self); guint32 wp_base_endpoint_get_priority (WpBaseEndpoint * self);
WP_API
WpProperties * wp_base_endpoint_get_properties (WpBaseEndpoint * self); WpProperties * wp_base_endpoint_get_properties (WpBaseEndpoint * self);
WP_API
const char * wp_base_endpoint_get_role (WpBaseEndpoint * self); const char * wp_base_endpoint_get_role (WpBaseEndpoint * self);
WP_API
guint32 wp_base_endpoint_get_global_id (WpBaseEndpoint * self); guint32 wp_base_endpoint_get_global_id (WpBaseEndpoint * self);
WP_API
void wp_base_endpoint_register_stream (WpBaseEndpoint * self, GVariant * stream); void wp_base_endpoint_register_stream (WpBaseEndpoint * self, GVariant * stream);
WP_API
GVariant * wp_base_endpoint_get_stream (WpBaseEndpoint * self, guint32 stream_id); GVariant * wp_base_endpoint_get_stream (WpBaseEndpoint * self, guint32 stream_id);
WP_API
GVariant * wp_base_endpoint_list_streams (WpBaseEndpoint * self); GVariant * wp_base_endpoint_list_streams (WpBaseEndpoint * self);
WP_API
guint32 wp_base_endpoint_find_stream (WpBaseEndpoint * self, const gchar * name); guint32 wp_base_endpoint_find_stream (WpBaseEndpoint * self, const gchar * name);
WP_API
void wp_base_endpoint_register_control (WpBaseEndpoint * self, GVariant * control); void wp_base_endpoint_register_control (WpBaseEndpoint * self, GVariant * control);
WP_API
GVariant * wp_base_endpoint_get_control (WpBaseEndpoint * self, guint32 control_id); GVariant * wp_base_endpoint_get_control (WpBaseEndpoint * self, guint32 control_id);
WP_API
GVariant * wp_base_endpoint_list_controls (WpBaseEndpoint * self); GVariant * wp_base_endpoint_list_controls (WpBaseEndpoint * self);
WP_API
guint32 wp_base_endpoint_find_control (WpBaseEndpoint * self, guint32 stream_id, guint32 wp_base_endpoint_find_control (WpBaseEndpoint * self, guint32 stream_id,
const gchar * name); const gchar * name);
WP_API
GVariant * wp_base_endpoint_get_control_value (WpBaseEndpoint * self, GVariant * wp_base_endpoint_get_control_value (WpBaseEndpoint * self,
guint32 control_id); guint32 control_id);
WP_API
gboolean wp_base_endpoint_set_control_value (WpBaseEndpoint * self, gboolean wp_base_endpoint_set_control_value (WpBaseEndpoint * self,
guint32 control_id, GVariant * value); guint32 control_id, GVariant * value);
WP_API
void wp_base_endpoint_notify_control_value (WpBaseEndpoint * self, void wp_base_endpoint_notify_control_value (WpBaseEndpoint * self,
guint32 control_id); guint32 control_id);
WP_API
gboolean wp_base_endpoint_is_linked (WpBaseEndpoint * self); gboolean wp_base_endpoint_is_linked (WpBaseEndpoint * self);
WP_API
GPtrArray * wp_base_endpoint_get_links (WpBaseEndpoint * self); GPtrArray * wp_base_endpoint_get_links (WpBaseEndpoint * self);
WP_API
void wp_base_endpoint_unlink (WpBaseEndpoint * self); void wp_base_endpoint_unlink (WpBaseEndpoint * self);
struct _WpBaseEndpointLinkClass struct _WpBaseEndpointLinkClass
{ {
GObjectClass parent_class; GObjectClass parent_class;
@@ -91,19 +140,33 @@ struct _WpBaseEndpointLinkClass
void (*destroy) (WpBaseEndpointLink * self); void (*destroy) (WpBaseEndpointLink * self);
}; };
WP_API
WpBaseEndpoint * wp_base_endpoint_link_get_source_endpoint ( WpBaseEndpoint * wp_base_endpoint_link_get_source_endpoint (
WpBaseEndpointLink * self); WpBaseEndpointLink * self);
WP_API
guint32 wp_base_endpoint_link_get_source_stream (WpBaseEndpointLink * self); guint32 wp_base_endpoint_link_get_source_stream (WpBaseEndpointLink * self);
WP_API
WpBaseEndpoint * wp_base_endpoint_link_get_sink_endpoint ( WpBaseEndpoint * wp_base_endpoint_link_get_sink_endpoint (
WpBaseEndpointLink * self); WpBaseEndpointLink * self);
WP_API
guint32 wp_base_endpoint_link_get_sink_stream (WpBaseEndpointLink * self); guint32 wp_base_endpoint_link_get_sink_stream (WpBaseEndpointLink * self);
WP_API
gboolean wp_base_endpoint_link_is_kept (WpBaseEndpointLink * self); gboolean wp_base_endpoint_link_is_kept (WpBaseEndpointLink * self);
WP_API
void wp_base_endpoint_link_new (WpCore * core, WpBaseEndpoint * src, void wp_base_endpoint_link_new (WpCore * core, WpBaseEndpoint * src,
guint32 src_stream, WpBaseEndpoint * sink, guint32 sink_stream, guint32 src_stream, WpBaseEndpoint * sink, guint32 sink_stream,
gboolean keep, GAsyncReadyCallback ready, gpointer data); gboolean keep, GAsyncReadyCallback ready, gpointer data);
WP_API
WpBaseEndpointLink * wp_base_endpoint_link_new_finish (GObject *initable, WpBaseEndpointLink * wp_base_endpoint_link_new_finish (GObject *initable,
GAsyncResult *res, GError **error); GAsyncResult *res, GError **error);
WP_API
void wp_base_endpoint_link_destroy (WpBaseEndpointLink * self); void wp_base_endpoint_link_destroy (WpBaseEndpointLink * self);
G_END_DECLS G_END_DECLS

View File

@@ -13,7 +13,10 @@
G_BEGIN_DECLS G_BEGIN_DECLS
/* WpConfigParser */
#define WP_TYPE_CONFIG_PARSER (wp_config_parser_get_type ()) #define WP_TYPE_CONFIG_PARSER (wp_config_parser_get_type ())
WP_API
G_DECLARE_INTERFACE (WpConfigParser, wp_config_parser, WP, G_DECLARE_INTERFACE (WpConfigParser, wp_config_parser, WP,
CONFIG_PARSER, GObject) CONFIG_PARSER, GObject)
@@ -26,24 +29,45 @@ struct _WpConfigParserInterface
void (*reset) (WpConfigParser *parser); void (*reset) (WpConfigParser *parser);
}; };
WP_API
gboolean wp_config_parser_add_file (WpConfigParser *self, const char *location); gboolean wp_config_parser_add_file (WpConfigParser *self, const char *location);
WP_API
gconstpointer wp_config_parser_get_matched_data (WpConfigParser *self, gconstpointer wp_config_parser_get_matched_data (WpConfigParser *self,
gpointer data); gpointer data);
WP_API
void wp_config_parser_reset (WpConfigParser *self); void wp_config_parser_reset (WpConfigParser *self);
/* WpConfiguration */
#define WP_TYPE_CONFIGURATION (wp_configuration_get_type ()) #define WP_TYPE_CONFIGURATION (wp_configuration_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpConfiguration, wp_configuration, WP, CONFIGURATION, G_DECLARE_FINAL_TYPE (WpConfiguration, wp_configuration, WP, CONFIGURATION,
GObject) GObject)
WP_API
WpConfiguration * wp_configuration_get_instance (WpCore *core); WpConfiguration * wp_configuration_get_instance (WpCore *core);
WP_API
void wp_configuration_add_path (WpConfiguration *self, const char *path); void wp_configuration_add_path (WpConfiguration *self, const char *path);
WP_API
void wp_configuration_remove_path (WpConfiguration *self, const char *path); void wp_configuration_remove_path (WpConfiguration *self, const char *path);
WP_API
gboolean wp_configuration_add_extension (WpConfiguration *self, gboolean wp_configuration_add_extension (WpConfiguration *self,
const gchar * extension, GType parser_type); const gchar * extension, GType parser_type);
WP_API
gboolean wp_configuration_remove_extension (WpConfiguration *self, gboolean wp_configuration_remove_extension (WpConfiguration *self,
const gchar * extension); const gchar * extension);
WP_API
WpConfigParser *wp_configuration_get_parser (WpConfiguration *self, WpConfigParser *wp_configuration_get_parser (WpConfiguration *self,
const char *extension); const char *extension);
WP_API
void wp_configuration_reload (WpConfiguration *self, const char *extension); void wp_configuration_reload (WpConfiguration *self, const char *extension);
G_END_DECLS G_END_DECLS

View File

@@ -18,35 +18,60 @@ G_BEGIN_DECLS
struct pw_context; struct pw_context;
#define WP_TYPE_CORE (wp_core_get_type ()) #define WP_TYPE_CORE (wp_core_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpCore, wp_core, WP, CORE, GObject) G_DECLARE_FINAL_TYPE (WpCore, wp_core, WP, CORE, GObject)
/* Basic */ /* Basic */
WP_API
WpCore * wp_core_new (GMainContext *context, WpProperties * properties); WpCore * wp_core_new (GMainContext *context, WpProperties * properties);
WP_API
GMainContext * wp_core_get_context (WpCore * self); GMainContext * wp_core_get_context (WpCore * self);
WP_API
struct pw_context * wp_core_get_pw_context (WpCore * self); struct pw_context * wp_core_get_pw_context (WpCore * self);
/* Connection */ /* Connection */
WP_API
gboolean wp_core_connect (WpCore *self); gboolean wp_core_connect (WpCore *self);
WP_API
void wp_core_disconnect (WpCore *self); void wp_core_disconnect (WpCore *self);
WP_API
gboolean wp_core_is_connected (WpCore * self); gboolean wp_core_is_connected (WpCore * self);
/* Callback */ /* Callback */
WP_API
guint wp_core_idle_add (WpCore * self, GSourceFunc function, gpointer data, guint wp_core_idle_add (WpCore * self, GSourceFunc function, gpointer data,
GDestroyNotify destroy); GDestroyNotify destroy);
WP_API
gboolean wp_core_sync (WpCore * self, GCancellable * cancellable, gboolean wp_core_sync (WpCore * self, GCancellable * cancellable,
GAsyncReadyCallback callback, gpointer user_data); GAsyncReadyCallback callback, gpointer user_data);
/* Object */ /* Object */
WP_API
WpProxy * wp_core_export_object (WpCore * self, const gchar * interface_type, WpProxy * wp_core_export_object (WpCore * self, const gchar * interface_type,
gpointer local_object, WpProperties * properties); gpointer local_object, WpProperties * properties);
WP_API
WpProxy * wp_core_create_local_object (WpCore * self, WpProxy * wp_core_create_local_object (WpCore * self,
const gchar *factory_name, const gchar * interface_type, const gchar *factory_name, const gchar * interface_type,
guint32 interface_version, WpProperties * properties); guint32 interface_version, WpProperties * properties);
WP_API
WpProxy * wp_core_create_remote_object (WpCore * self, WpProxy * wp_core_create_remote_object (WpCore * self,
const gchar * factory_name, const gchar * interface_type, const gchar * factory_name, const gchar * interface_type,
guint32 interface_version, WpProperties * properties); guint32 interface_version, WpProperties * properties);
/* Object Manager */ /* Object Manager */
WP_API
void wp_core_install_object_manager (WpCore * self, WpObjectManager * om); void wp_core_install_object_manager (WpCore * self, WpObjectManager * om);
G_END_DECLS G_END_DECLS

30
lib/wp/defs.h Normal file
View File

@@ -0,0 +1,30 @@
/* WirePlumber
*
* Copyright © 2020 Collabora Ltd.
* @author George Kiagiadakis <george.kiagiadakis@collabora.com>
*
* SPDX-License-Identifier: MIT
*/
#ifndef __WIREPLUMBER_DEFS_H__
#define __WIREPLUMBER_DEFS_H__
#if defined(__GNUC__)
# define WP_PLUGIN_EXPORT __attribute__ ((visibility ("default")))
# define WP_API_EXPORT extern __attribute__ ((visibility ("default")))
#else
# define WP_PLUGIN_EXPORT
# define WP_API_EXPORT extern
#endif
#define WP_API_IMPORT extern
#ifndef WP_API
# ifdef BUILDING_WP
# define WP_API WP_API_EXPORT
# else
# define WP_API WP_API_IMPORT
# endif
#endif
#endif

View File

@@ -15,6 +15,7 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define WP_TYPE_ENDPOINT (wp_endpoint_get_type ()) #define WP_TYPE_ENDPOINT (wp_endpoint_get_type ())
WP_API
G_DECLARE_INTERFACE (WpEndpoint, wp_endpoint, WP, ENDPOINT, GObject) G_DECLARE_INTERFACE (WpEndpoint, wp_endpoint, WP, ENDPOINT, GObject)
/** /**
@@ -52,27 +53,47 @@ struct _WpEndpointInterface
// void (*create_link) (WpEndpoint * self, WpProperties * props); // void (*create_link) (WpEndpoint * self, WpProperties * props);
}; };
WP_API
WpProperties * wp_endpoint_get_properties (WpEndpoint * self); WpProperties * wp_endpoint_get_properties (WpEndpoint * self);
WP_API
const gchar * wp_endpoint_get_name (WpEndpoint * self); const gchar * wp_endpoint_get_name (WpEndpoint * self);
WP_API
const gchar * wp_endpoint_get_media_class (WpEndpoint * self); const gchar * wp_endpoint_get_media_class (WpEndpoint * self);
WP_API
WpDirection wp_endpoint_get_direction (WpEndpoint * self); WpDirection wp_endpoint_get_direction (WpEndpoint * self);
WP_API
const struct spa_pod * wp_endpoint_get_control (WpEndpoint * self, const struct spa_pod * wp_endpoint_get_control (WpEndpoint * self,
guint32 control_id); guint32 control_id);
WP_API
gboolean wp_endpoint_get_control_boolean (WpEndpoint * self, guint32 control_id, gboolean wp_endpoint_get_control_boolean (WpEndpoint * self, guint32 control_id,
gboolean * value); gboolean * value);
WP_API
gboolean wp_endpoint_get_control_int (WpEndpoint * self, guint32 control_id, gboolean wp_endpoint_get_control_int (WpEndpoint * self, guint32 control_id,
gint * value); gint * value);
WP_API
gboolean wp_endpoint_get_control_float (WpEndpoint * self, guint32 control_id, gboolean wp_endpoint_get_control_float (WpEndpoint * self, guint32 control_id,
gfloat * value); gfloat * value);
WP_API
gboolean wp_endpoint_set_control (WpEndpoint * self, guint32 control_id, gboolean wp_endpoint_set_control (WpEndpoint * self, guint32 control_id,
const struct spa_pod * value); const struct spa_pod * value);
WP_API
gboolean wp_endpoint_set_control_boolean (WpEndpoint * self, guint32 control_id, gboolean wp_endpoint_set_control_boolean (WpEndpoint * self, guint32 control_id,
gboolean value); gboolean value);
WP_API
gboolean wp_endpoint_set_control_int (WpEndpoint * self, guint32 control_id, gboolean wp_endpoint_set_control_int (WpEndpoint * self, guint32 control_id,
gint value); gint value);
WP_API
gboolean wp_endpoint_set_control_float (WpEndpoint * self, guint32 control_id, gboolean wp_endpoint_set_control_float (WpEndpoint * self, guint32 control_id,
gfloat value); gfloat value);
@@ -85,15 +106,18 @@ typedef enum { /*< flags >*/
} WpProxyEndpointFeatures; } WpProxyEndpointFeatures;
#define WP_TYPE_PROXY_ENDPOINT (wp_proxy_endpoint_get_type ()) #define WP_TYPE_PROXY_ENDPOINT (wp_proxy_endpoint_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpProxyEndpoint, wp_proxy_endpoint, G_DECLARE_FINAL_TYPE (WpProxyEndpoint, wp_proxy_endpoint,
WP, PROXY_ENDPOINT, WpProxy) WP, PROXY_ENDPOINT, WpProxy)
WP_API
const struct pw_endpoint_info * wp_proxy_endpoint_get_info ( const struct pw_endpoint_info * wp_proxy_endpoint_get_info (
WpProxyEndpoint * self); WpProxyEndpoint * self);
/* exported */ /* exported */
#define WP_TYPE_EXPORTED_ENDPOINT (wp_exported_endpoint_get_type ()) #define WP_TYPE_EXPORTED_ENDPOINT (wp_exported_endpoint_get_type ())
WP_API
G_DECLARE_DERIVABLE_TYPE (WpExportedEndpoint, wp_exported_endpoint, G_DECLARE_DERIVABLE_TYPE (WpExportedEndpoint, wp_exported_endpoint,
WP, EXPORTED_ENDPOINT, WpExported) WP, EXPORTED_ENDPOINT, WpExported)
@@ -102,22 +126,33 @@ struct _WpExportedEndpointClass
WpExportedClass parent_class; WpExportedClass parent_class;
}; };
WP_API
WpExportedEndpoint * wp_exported_endpoint_new (WpCore * core); WpExportedEndpoint * wp_exported_endpoint_new (WpCore * core);
WP_API
guint32 wp_exported_endpoint_get_global_id (WpExportedEndpoint * self); guint32 wp_exported_endpoint_get_global_id (WpExportedEndpoint * self);
WP_API
void wp_exported_endpoint_set_property (WpExportedEndpoint * self, void wp_exported_endpoint_set_property (WpExportedEndpoint * self,
const gchar * key, const gchar * value); const gchar * key, const gchar * value);
WP_API
void wp_exported_endpoint_update_properties (WpExportedEndpoint * self, void wp_exported_endpoint_update_properties (WpExportedEndpoint * self,
WpProperties * updates); WpProperties * updates);
WP_API
void wp_exported_endpoint_set_name (WpExportedEndpoint * self, void wp_exported_endpoint_set_name (WpExportedEndpoint * self,
const gchar * name); const gchar * name);
WP_API
void wp_exported_endpoint_set_media_class (WpExportedEndpoint * self, void wp_exported_endpoint_set_media_class (WpExportedEndpoint * self,
const gchar * media_class); const gchar * media_class);
WP_API
void wp_exported_endpoint_set_direction (WpExportedEndpoint * self, void wp_exported_endpoint_set_direction (WpExportedEndpoint * self,
WpDirection dir); WpDirection dir);
WP_API
void wp_exported_endpoint_register_control (WpExportedEndpoint * self, void wp_exported_endpoint_register_control (WpExportedEndpoint * self,
WpEndpointControl control); WpEndpointControl control);

View File

@@ -10,9 +10,11 @@
#define __WP_ERROR_H__ #define __WP_ERROR_H__
#include <glib.h> #include <glib.h>
#include "defs.h"
G_BEGIN_DECLS G_BEGIN_DECLS
WP_API
GQuark wp_domain_library_quark (void); GQuark wp_domain_library_quark (void);
#define WP_DOMAIN_LIBRARY (wp_domain_library_quark ()) #define WP_DOMAIN_LIBRARY (wp_domain_library_quark ())

View File

@@ -15,6 +15,7 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define WP_TYPE_EXPORTED (wp_exported_get_type ()) #define WP_TYPE_EXPORTED (wp_exported_get_type ())
WP_API
G_DECLARE_DERIVABLE_TYPE (WpExported, wp_exported, WP, EXPORTED, GObject) G_DECLARE_DERIVABLE_TYPE (WpExported, wp_exported, WP, EXPORTED, GObject)
struct _WpExportedClass struct _WpExportedClass
@@ -26,15 +27,21 @@ struct _WpExportedClass
WpProxy * (*get_proxy) (WpExported * self); WpProxy * (*get_proxy) (WpExported * self);
}; };
WP_API
WpCore * wp_exported_get_core (WpExported * self); WpCore * wp_exported_get_core (WpExported * self);
WP_API
void wp_exported_export (WpExported * self, GCancellable * cancellable, void wp_exported_export (WpExported * self, GCancellable * cancellable,
GAsyncReadyCallback callback, gpointer user_data); GAsyncReadyCallback callback, gpointer user_data);
WP_API
gboolean wp_exported_export_finish (WpExported * self, gboolean wp_exported_export_finish (WpExported * self,
GAsyncResult * res, GError ** error); GAsyncResult * res, GError ** error);
WP_API
void wp_exported_unexport (WpExported * self); void wp_exported_unexport (WpExported * self);
WP_API
WpProxy * wp_exported_get_proxy (WpExported * self); WpProxy * wp_exported_get_proxy (WpExported * self);
G_END_DECLS G_END_DECLS

View File

@@ -16,20 +16,30 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define WP_TYPE_FACTORY (wp_factory_get_type ()) #define WP_TYPE_FACTORY (wp_factory_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpFactory, wp_factory, WP, FACTORY, GObject) G_DECLARE_FINAL_TYPE (WpFactory, wp_factory, WP, FACTORY, GObject)
typedef void (*WpFactoryFunc) (WpFactory * self, GType type, typedef void (*WpFactoryFunc) (WpFactory * self, GType type,
GVariant * properties, GAsyncReadyCallback ready, gpointer user_data); GVariant * properties, GAsyncReadyCallback ready, gpointer user_data);
WP_API
WpFactory * wp_factory_new (WpCore * core, const gchar * name, WpFactory * wp_factory_new (WpCore * core, const gchar * name,
WpFactoryFunc func); WpFactoryFunc func);
WP_API
const gchar * wp_factory_get_name (WpFactory * self); const gchar * wp_factory_get_name (WpFactory * self);
WP_API
WpCore * wp_factory_get_core (WpFactory * self); WpCore * wp_factory_get_core (WpFactory * self);
WP_API
void wp_factory_create_object (WpFactory * self, GType type, void wp_factory_create_object (WpFactory * self, GType type,
GVariant * properties, GAsyncReadyCallback ready, gpointer user_data); GVariant * properties, GAsyncReadyCallback ready, gpointer user_data);
WP_API
WpFactory * wp_factory_find (WpCore * core, const gchar * name); WpFactory * wp_factory_find (WpCore * core, const gchar * name);
WP_API
void wp_factory_make (WpCore * core, const gchar * name, GType type, void wp_factory_make (WpCore * core, const gchar * name, GType type,
GVariant * properties, GAsyncReadyCallback ready, gpointer user_data); GVariant * properties, GAsyncReadyCallback ready, gpointer user_data);

View File

@@ -24,8 +24,9 @@ wp_lib_sources = [
wp_lib_headers = [ wp_lib_headers = [
'base-endpoint.h', 'base-endpoint.h',
'configuration.h', 'configuration.h',
'endpoint.h',
'core.h', 'core.h',
'defs.h',
'endpoint.h',
'error.h', 'error.h',
'exported.h', 'exported.h',
'factory.h', 'factory.h',
@@ -50,6 +51,8 @@ install_headers(wp_lib_headers,
enums = gnome.mkenums_simple('wpenums', enums = gnome.mkenums_simple('wpenums',
sources: wp_lib_headers, sources: wp_lib_headers,
header_prefix: '#include "wp/defs.h"',
decorator: 'WP_API',
install_header: true, install_header: true,
install_dir: join_paths(get_option('includedir'), 'wireplumber-' + wireplumber_api_version, 'wp'), install_dir: join_paths(get_option('includedir'), 'wireplumber-' + wireplumber_api_version, 'wp'),
) )
@@ -61,6 +64,7 @@ wp_lib = library('wireplumber-' + wireplumber_api_version,
'-DG_LOG_USE_STRUCTURED', '-DG_LOG_USE_STRUCTURED',
'-DG_LOG_DOMAIN="libwireplumber"', '-DG_LOG_DOMAIN="libwireplumber"',
'-DWIREPLUMBER_DEFAULT_MODULE_DIR="@0@"'.format(wireplumber_module_dir), '-DWIREPLUMBER_DEFAULT_MODULE_DIR="@0@"'.format(wireplumber_module_dir),
'-DBUILDING_WP',
], ],
install: true, install: true,
include_directories: wp_lib_include_dir, include_directories: wp_lib_include_dir,

View File

@@ -14,14 +14,20 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define WP_TYPE_MODULE (wp_module_get_type ()) #define WP_TYPE_MODULE (wp_module_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpModule, wp_module, WP, MODULE, GObject) G_DECLARE_FINAL_TYPE (WpModule, wp_module, WP, MODULE, GObject)
WP_API
WpModule * wp_module_load (WpCore * core, const gchar * abi, WpModule * wp_module_load (WpCore * core, const gchar * abi,
const gchar * module_name, GVariant * args, GError ** error); const gchar * module_name, GVariant * args, GError ** error);
WP_API
GVariant * wp_module_get_properties (WpModule * module); GVariant * wp_module_get_properties (WpModule * module);
WP_API
WpCore * wp_module_get_core (WpModule * self); WpCore * wp_module_get_core (WpModule * self);
WP_API
void wp_module_set_destroy_callback (WpModule * module, GDestroyNotify callback, void wp_module_set_destroy_callback (WpModule * module, GDestroyNotify callback,
gpointer data); gpointer data);

View File

@@ -22,15 +22,23 @@ typedef enum { /*< flags, prefix=WP_MONITOR_FLAG_ >*/
#define WP_MONITOR_KEY_OBJECT_ID "wp.monitor.object.id" #define WP_MONITOR_KEY_OBJECT_ID "wp.monitor.object.id"
#define WP_TYPE_MONITOR (wp_monitor_get_type ()) #define WP_TYPE_MONITOR (wp_monitor_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpMonitor, wp_monitor, WP, MONITOR, GObject) G_DECLARE_FINAL_TYPE (WpMonitor, wp_monitor, WP, MONITOR, GObject)
WP_API
WpMonitor * wp_monitor_new (WpCore * core, const gchar * factory_name, WpMonitor * wp_monitor_new (WpCore * core, const gchar * factory_name,
WpProperties *props, WpMonitorFlags flags); WpProperties *props, WpMonitorFlags flags);
WP_API
const gchar * wp_monitor_get_factory_name (WpMonitor *self); const gchar * wp_monitor_get_factory_name (WpMonitor *self);
WP_API
WpMonitorFlags wp_monitor_get_flags (WpMonitor *self); WpMonitorFlags wp_monitor_get_flags (WpMonitor *self);
WP_API
gboolean wp_monitor_start (WpMonitor *self, GError **error); gboolean wp_monitor_start (WpMonitor *self, GError **error);
WP_API
void wp_monitor_stop (WpMonitor *self); void wp_monitor_stop (WpMonitor *self);
G_END_DECLS G_END_DECLS

View File

@@ -21,16 +21,22 @@ typedef enum {
} WpObjectManagerConstraintType; } WpObjectManagerConstraintType;
#define WP_TYPE_OBJECT_MANAGER (wp_object_manager_get_type ()) #define WP_TYPE_OBJECT_MANAGER (wp_object_manager_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpObjectManager, wp_object_manager, WP, OBJECT_MANAGER, GObject) G_DECLARE_FINAL_TYPE (WpObjectManager, wp_object_manager, WP, OBJECT_MANAGER, GObject)
WP_API
WpObjectManager * wp_object_manager_new (void); WpObjectManager * wp_object_manager_new (void);
WP_API
void wp_object_manager_add_proxy_interest (WpObjectManager *self, void wp_object_manager_add_proxy_interest (WpObjectManager *self,
const gchar * iface_type, GVariant * constraints, const gchar * iface_type, GVariant * constraints,
WpProxyFeatures wanted_features); WpProxyFeatures wanted_features);
WP_API
void wp_object_manager_add_object_interest (WpObjectManager *self, void wp_object_manager_add_object_interest (WpObjectManager *self,
GType gtype, GVariant * constraints); GType gtype, GVariant * constraints);
WP_API
GPtrArray * wp_object_manager_get_objects (WpObjectManager *self, GPtrArray * wp_object_manager_get_objects (WpObjectManager *self,
GType type_filter); GType type_filter);

View File

@@ -35,9 +35,11 @@ typedef enum {
} WpPolicyRank; } WpPolicyRank;
#define WP_TYPE_POLICY_MANAGER (wp_policy_manager_get_type ()) #define WP_TYPE_POLICY_MANAGER (wp_policy_manager_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpPolicyManager, wp_policy_manager, WP, POLICY_MANAGER, GObject) G_DECLARE_FINAL_TYPE (WpPolicyManager, wp_policy_manager, WP, POLICY_MANAGER, GObject)
#define WP_TYPE_POLICY (wp_policy_get_type ()) #define WP_TYPE_POLICY (wp_policy_get_type ())
WP_API
G_DECLARE_DERIVABLE_TYPE (WpPolicy, wp_policy, WP, POLICY, GObject) G_DECLARE_DERIVABLE_TYPE (WpPolicy, wp_policy, WP, POLICY, GObject)
struct _WpPolicyClass struct _WpPolicyClass
@@ -51,20 +53,32 @@ struct _WpPolicyClass
guint32 *stream_id); guint32 *stream_id);
}; };
WP_API
WpPolicyManager * wp_policy_manager_get_instance (WpCore *core); WpPolicyManager * wp_policy_manager_get_instance (WpCore *core);
WP_API
WpSession * wp_policy_manager_get_session (WpPolicyManager *self); WpSession * wp_policy_manager_get_session (WpPolicyManager *self);
WP_API
GPtrArray * wp_policy_manager_list_endpoints (WpPolicyManager * self, GPtrArray * wp_policy_manager_list_endpoints (WpPolicyManager * self,
const gchar * media_class); const gchar * media_class);
WP_API
guint32 wp_policy_get_rank (WpPolicy *self); guint32 wp_policy_get_rank (WpPolicy *self);
WP_API
WpCore *wp_policy_get_core (WpPolicy *self); WpCore *wp_policy_get_core (WpPolicy *self);
WP_API
void wp_policy_register (WpPolicy *self, WpCore *core); void wp_policy_register (WpPolicy *self, WpCore *core);
WP_API
void wp_policy_unregister (WpPolicy *self); void wp_policy_unregister (WpPolicy *self);
WP_API
void wp_policy_notify_changed (WpPolicy *self); void wp_policy_notify_changed (WpPolicy *self);
WP_API
WpBaseEndpoint * wp_policy_find_endpoint (WpCore *core, GVariant *props, WpBaseEndpoint * wp_policy_find_endpoint (WpCore *core, GVariant *props,
guint32 *stream_id); guint32 *stream_id);

View File

@@ -10,6 +10,7 @@
#define __WIREPLUMBER_PROPERTIES_H__ #define __WIREPLUMBER_PROPERTIES_H__
#include <glib-object.h> #include <glib-object.h>
#include "defs.h"
G_BEGIN_DECLS G_BEGIN_DECLS
@@ -17,47 +18,84 @@ struct pw_properties;
struct spa_dict; struct spa_dict;
#define WP_TYPE_PROPERTIES (wp_properties_get_type ()) #define WP_TYPE_PROPERTIES (wp_properties_get_type ())
WP_API
GType wp_properties_get_type (void); GType wp_properties_get_type (void);
typedef struct _WpProperties WpProperties; typedef struct _WpProperties WpProperties;
WP_API
WpProperties * wp_properties_new_empty (void); WpProperties * wp_properties_new_empty (void);
WP_API
WpProperties * wp_properties_new (const gchar * key, ...) G_GNUC_NULL_TERMINATED; WpProperties * wp_properties_new (const gchar * key, ...) G_GNUC_NULL_TERMINATED;
WP_API
WpProperties * wp_properties_new_valist (const gchar * key, va_list args); WpProperties * wp_properties_new_valist (const gchar * key, va_list args);
WP_API
WpProperties * wp_properties_new_string (const gchar * str); WpProperties * wp_properties_new_string (const gchar * str);
WP_API
WpProperties * wp_properties_new_wrap (struct pw_properties * props); WpProperties * wp_properties_new_wrap (struct pw_properties * props);
WP_API
WpProperties * wp_properties_new_take (struct pw_properties * props); WpProperties * wp_properties_new_take (struct pw_properties * props);
WP_API
WpProperties * wp_properties_new_copy (const struct pw_properties * props); WpProperties * wp_properties_new_copy (const struct pw_properties * props);
WP_API
WpProperties * wp_properties_new_wrap_dict (const struct spa_dict * dict); WpProperties * wp_properties_new_wrap_dict (const struct spa_dict * dict);
WP_API
WpProperties * wp_properties_new_copy_dict (const struct spa_dict * dict); WpProperties * wp_properties_new_copy_dict (const struct spa_dict * dict);
WP_API
WpProperties * wp_properties_copy (WpProperties * other); WpProperties * wp_properties_copy (WpProperties * other);
WP_API
WpProperties * wp_properties_ref (WpProperties * self); WpProperties * wp_properties_ref (WpProperties * self);
WP_API
void wp_properties_unref (WpProperties * self); void wp_properties_unref (WpProperties * self);
WP_API
gint wp_properties_update_from_dict (WpProperties * self, gint wp_properties_update_from_dict (WpProperties * self,
const struct spa_dict * dict); const struct spa_dict * dict);
WP_API
gint wp_properties_copy_keys (WpProperties * src, WpProperties * dst, gint wp_properties_copy_keys (WpProperties * src, WpProperties * dst,
const gchar *key1, ...) G_GNUC_NULL_TERMINATED; const gchar *key1, ...) G_GNUC_NULL_TERMINATED;
WP_API
gint wp_properties_copy_keys_valist (WpProperties * src, WpProperties * dst, gint wp_properties_copy_keys_valist (WpProperties * src, WpProperties * dst,
const gchar *key1, va_list args); const gchar *key1, va_list args);
WP_API
void wp_properties_copy_all (WpProperties * src, WpProperties * dst); void wp_properties_copy_all (WpProperties * src, WpProperties * dst);
WP_API
const gchar * wp_properties_get (WpProperties * self, const gchar * key); const gchar * wp_properties_get (WpProperties * self, const gchar * key);
WP_API
gint wp_properties_set (WpProperties * self, const gchar * key, gint wp_properties_set (WpProperties * self, const gchar * key,
const gchar * value); const gchar * value);
WP_API
gint wp_properties_setf (WpProperties * self, const gchar * key, gint wp_properties_setf (WpProperties * self, const gchar * key,
const gchar * format, ...) G_GNUC_PRINTF(3, 4); const gchar * format, ...) G_GNUC_PRINTF(3, 4);
WP_API
gint wp_properties_setf_valist (WpProperties * self, const gchar * key, gint wp_properties_setf_valist (WpProperties * self, const gchar * key,
const gchar * format, va_list args); const gchar * format, va_list args);
WP_API
const struct spa_dict * wp_properties_peek_dict (WpProperties * self); const struct spa_dict * wp_properties_peek_dict (WpProperties * self);
WP_API
struct pw_properties * wp_properties_to_pw_properties (WpProperties * self); struct pw_properties * wp_properties_to_pw_properties (WpProperties * self);
WP_API
gboolean wp_properties_matches (WpProperties * self, WpProperties *other); gboolean wp_properties_matches (WpProperties * self, WpProperties *other);
G_DEFINE_AUTOPTR_CLEANUP_FUNC (WpProperties, wp_properties_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC (WpProperties, wp_properties_unref)

View File

@@ -17,14 +17,20 @@ struct pw_client_info;
struct pw_permission; struct pw_permission;
#define WP_TYPE_PROXY_CLIENT (wp_proxy_client_get_type ()) #define WP_TYPE_PROXY_CLIENT (wp_proxy_client_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpProxyClient, wp_proxy_client, WP, PROXY_CLIENT, WpProxy) G_DECLARE_FINAL_TYPE (WpProxyClient, wp_proxy_client, WP, PROXY_CLIENT, WpProxy)
WP_API
const struct pw_client_info * wp_proxy_client_get_info (WpProxyClient * self); const struct pw_client_info * wp_proxy_client_get_info (WpProxyClient * self);
WP_API
WpProperties * wp_proxy_client_get_properties (WpProxyClient * self); WpProperties * wp_proxy_client_get_properties (WpProxyClient * self);
WP_API
void wp_proxy_client_update_permissions (WpProxyClient * self, void wp_proxy_client_update_permissions (WpProxyClient * self,
guint n_perm, ...); guint n_perm, ...);
WP_API
void wp_proxy_client_update_permissions_array (WpProxyClient * self, void wp_proxy_client_update_permissions_array (WpProxyClient * self,
guint n_perm, const struct pw_permission *permissions); guint n_perm, const struct pw_permission *permissions);

View File

@@ -14,8 +14,10 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define WP_TYPE_PROXY_DEVICE (wp_proxy_device_get_type ()) #define WP_TYPE_PROXY_DEVICE (wp_proxy_device_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpProxyDevice, wp_proxy_device, WP, PROXY_DEVICE, WpProxy) G_DECLARE_FINAL_TYPE (WpProxyDevice, wp_proxy_device, WP, PROXY_DEVICE, WpProxy)
WP_API
WpProperties * wp_proxy_device_get_properties (WpProxyDevice * self); WpProperties * wp_proxy_device_get_properties (WpProxyDevice * self);
G_END_DECLS G_END_DECLS

View File

@@ -16,10 +16,13 @@ G_BEGIN_DECLS
struct pw_link_info; struct pw_link_info;
#define WP_TYPE_PROXY_LINK (wp_proxy_link_get_type ()) #define WP_TYPE_PROXY_LINK (wp_proxy_link_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpProxyLink, wp_proxy_link, WP, PROXY_LINK, WpProxy) G_DECLARE_FINAL_TYPE (WpProxyLink, wp_proxy_link, WP, PROXY_LINK, WpProxy)
WP_API
const struct pw_link_info * wp_proxy_link_get_info (WpProxyLink * self); const struct pw_link_info * wp_proxy_link_get_info (WpProxyLink * self);
WP_API
WpProperties * wp_proxy_link_get_properties (WpProxyLink * self); WpProperties * wp_proxy_link_get_properties (WpProxyLink * self);
G_END_DECLS G_END_DECLS

View File

@@ -17,25 +17,37 @@ struct spa_pod;
struct pw_node_info; struct pw_node_info;
#define WP_TYPE_PROXY_NODE (wp_proxy_node_get_type ()) #define WP_TYPE_PROXY_NODE (wp_proxy_node_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpProxyNode, wp_proxy_node, WP, PROXY_NODE, WpProxy) G_DECLARE_FINAL_TYPE (WpProxyNode, wp_proxy_node, WP, PROXY_NODE, WpProxy)
WP_API
const struct pw_node_info * wp_proxy_node_get_info (WpProxyNode * self); const struct pw_node_info * wp_proxy_node_get_info (WpProxyNode * self);
WP_API
WpProperties * wp_proxy_node_get_properties (WpProxyNode * self); WpProperties * wp_proxy_node_get_properties (WpProxyNode * self);
WP_API
void wp_proxy_node_enum_params_collect (WpProxyNode * self, void wp_proxy_node_enum_params_collect (WpProxyNode * self,
guint32 id, const struct spa_pod *filter, guint32 id, const struct spa_pod *filter,
GCancellable * cancellable, GAsyncReadyCallback callback, GCancellable * cancellable, GAsyncReadyCallback callback,
gpointer user_data); gpointer user_data);
WP_API
GPtrArray * wp_proxy_node_enum_params_collect_finish (WpProxyNode * self, GPtrArray * wp_proxy_node_enum_params_collect_finish (WpProxyNode * self,
GAsyncResult * res, GError ** error); GAsyncResult * res, GError ** error);
WP_API
gint wp_proxy_node_enum_params (WpProxyNode * self, gint wp_proxy_node_enum_params (WpProxyNode * self,
guint32 id, const struct spa_pod *filter); guint32 id, const struct spa_pod *filter);
WP_API
void wp_proxy_node_subscribe_params (WpProxyNode * self, guint32 n_ids, ...); void wp_proxy_node_subscribe_params (WpProxyNode * self, guint32 n_ids, ...);
WP_API
void wp_proxy_node_subscribe_params_array (WpProxyNode * self, guint32 n_ids, void wp_proxy_node_subscribe_params_array (WpProxyNode * self, guint32 n_ids,
guint32 *ids); guint32 *ids);
WP_API
void wp_proxy_node_set_param (WpProxyNode * self, guint32 id, void wp_proxy_node_set_param (WpProxyNode * self, guint32 id,
guint32 flags, const struct spa_pod *param); guint32 flags, const struct spa_pod *param);

View File

@@ -17,22 +17,33 @@ struct spa_pod;
struct pw_port_info; struct pw_port_info;
#define WP_TYPE_PROXY_PORT (wp_proxy_port_get_type ()) #define WP_TYPE_PROXY_PORT (wp_proxy_port_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpProxyPort, wp_proxy_port, WP, PROXY_PORT, WpProxy) G_DECLARE_FINAL_TYPE (WpProxyPort, wp_proxy_port, WP, PROXY_PORT, WpProxy)
WP_API
const struct pw_port_info * wp_proxy_port_get_info (WpProxyPort * self); const struct pw_port_info * wp_proxy_port_get_info (WpProxyPort * self);
WP_API
WpProperties * wp_proxy_port_get_properties (WpProxyPort * self); WpProperties * wp_proxy_port_get_properties (WpProxyPort * self);
WP_API
void wp_proxy_port_enum_params_collect (WpProxyPort * self, void wp_proxy_port_enum_params_collect (WpProxyPort * self,
guint32 id, const struct spa_pod *filter, guint32 id, const struct spa_pod *filter,
GCancellable * cancellable, GAsyncReadyCallback callback, GCancellable * cancellable, GAsyncReadyCallback callback,
gpointer user_data); gpointer user_data);
WP_API
GPtrArray * wp_proxy_port_enum_params_collect_finish (WpProxyPort * self, GPtrArray * wp_proxy_port_enum_params_collect_finish (WpProxyPort * self,
GAsyncResult * res, GError ** error); GAsyncResult * res, GError ** error);
WP_API
gint wp_proxy_port_enum_params (WpProxyPort * self, gint wp_proxy_port_enum_params (WpProxyPort * self,
guint32 id, const struct spa_pod *filter); guint32 id, const struct spa_pod *filter);
WP_API
void wp_proxy_port_subscribe_params (WpProxyPort * self, guint32 n_ids, ...); void wp_proxy_port_subscribe_params (WpProxyPort * self, guint32 n_ids, ...);
WP_API
void wp_proxy_port_subscribe_params_array (WpProxyPort * self, guint32 n_ids, void wp_proxy_port_subscribe_params_array (WpProxyPort * self, guint32 n_ids,
guint32 *ids); guint32 *ids);

View File

@@ -27,6 +27,7 @@ typedef enum { /*< flags >*/
} WpProxyFeatures; } WpProxyFeatures;
#define WP_TYPE_PROXY (wp_proxy_get_type ()) #define WP_TYPE_PROXY (wp_proxy_get_type ())
WP_API
G_DECLARE_DERIVABLE_TYPE (WpProxy, wp_proxy, WP, PROXY, GObject) G_DECLARE_DERIVABLE_TYPE (WpProxy, wp_proxy, WP, PROXY, GObject)
/* The proxy base class */ /* The proxy base class */
@@ -40,32 +41,54 @@ struct _WpProxyClass
void (*pw_proxy_destroyed) (WpProxy * self); void (*pw_proxy_destroyed) (WpProxy * self);
}; };
WP_API
WpProxy * wp_proxy_new_wrap (WpCore * core, struct pw_proxy * proxy, WpProxy * wp_proxy_new_wrap (WpCore * core, struct pw_proxy * proxy,
const char *type, guint32 version, gpointer local_object); const char *type, guint32 version, gpointer local_object);
WP_API
void wp_proxy_augment (WpProxy *self, void wp_proxy_augment (WpProxy *self,
WpProxyFeatures wanted_features, GCancellable * cancellable, WpProxyFeatures wanted_features, GCancellable * cancellable,
GAsyncReadyCallback callback, gpointer user_data); GAsyncReadyCallback callback, gpointer user_data);
WP_API
gboolean wp_proxy_augment_finish (WpProxy * self, GAsyncResult * res, gboolean wp_proxy_augment_finish (WpProxy * self, GAsyncResult * res,
GError ** error); GError ** error);
WP_API
WpProxyFeatures wp_proxy_get_features (WpProxy * self); WpProxyFeatures wp_proxy_get_features (WpProxy * self);
WP_API
WpCore * wp_proxy_get_core (WpProxy * self); WpCore * wp_proxy_get_core (WpProxy * self);
WP_API
gboolean wp_proxy_is_global (WpProxy * self); gboolean wp_proxy_is_global (WpProxy * self);
WP_API
guint32 wp_proxy_get_global_id (WpProxy * self); guint32 wp_proxy_get_global_id (WpProxy * self);
WP_API
guint32 wp_proxy_get_global_permissions (WpProxy * self); guint32 wp_proxy_get_global_permissions (WpProxy * self);
WP_API
WpProperties * wp_proxy_get_global_properties (WpProxy * self); WpProperties * wp_proxy_get_global_properties (WpProxy * self);
WP_API
const char * wp_proxy_get_interface_type (WpProxy * self); const char * wp_proxy_get_interface_type (WpProxy * self);
WP_API
GQuark wp_proxy_get_interface_quark (WpProxy * self); GQuark wp_proxy_get_interface_quark (WpProxy * self);
WP_API
guint32 wp_proxy_get_interface_version (WpProxy * self); guint32 wp_proxy_get_interface_version (WpProxy * self);
WP_API
struct pw_proxy * wp_proxy_get_pw_proxy (WpProxy * self); struct pw_proxy * wp_proxy_get_pw_proxy (WpProxy * self);
WP_API
void wp_proxy_sync (WpProxy * self, GCancellable * cancellable, void wp_proxy_sync (WpProxy * self, GCancellable * cancellable,
GAsyncReadyCallback callback, gpointer user_data); GAsyncReadyCallback callback, gpointer user_data);
WP_API
gboolean wp_proxy_sync_finish (WpProxy * self, GAsyncResult * res, gboolean wp_proxy_sync_finish (WpProxy * self, GAsyncResult * res,
GError ** error); GError ** error);

View File

@@ -15,6 +15,7 @@
G_BEGIN_DECLS G_BEGIN_DECLS
#define WP_TYPE_SESSION (wp_session_get_type ()) #define WP_TYPE_SESSION (wp_session_get_type ())
WP_API
G_DECLARE_INTERFACE (WpSession, wp_session, WP, SESSION, GObject) G_DECLARE_INTERFACE (WpSession, wp_session, WP, SESSION, GObject)
typedef enum { typedef enum {
@@ -35,10 +36,14 @@ struct _WpSessionInterface
WpDefaultEndpointType type, guint32 id); WpDefaultEndpointType type, guint32 id);
}; };
WP_API
WpProperties * wp_session_get_properties (WpSession * self); WpProperties * wp_session_get_properties (WpSession * self);
WP_API
guint32 wp_session_get_default_endpoint (WpSession * self, guint32 wp_session_get_default_endpoint (WpSession * self,
WpDefaultEndpointType type); WpDefaultEndpointType type);
WP_API
void wp_session_set_default_endpoint (WpSession * self, void wp_session_set_default_endpoint (WpSession * self,
WpDefaultEndpointType type, guint32 id); WpDefaultEndpointType type, guint32 id);
@@ -49,13 +54,16 @@ typedef enum { /*< flags >*/
} WpProxySessionFeatures; } WpProxySessionFeatures;
#define WP_TYPE_PROXY_SESSION (wp_proxy_session_get_type ()) #define WP_TYPE_PROXY_SESSION (wp_proxy_session_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpProxySession, wp_proxy_session, WP, PROXY_SESSION, WpProxy) G_DECLARE_FINAL_TYPE (WpProxySession, wp_proxy_session, WP, PROXY_SESSION, WpProxy)
WP_API
const struct pw_session_info * wp_proxy_session_get_info (WpProxySession * self); const struct pw_session_info * wp_proxy_session_get_info (WpProxySession * self);
/* exported */ /* exported */
#define WP_TYPE_EXPORTED_SESSION (wp_exported_session_get_type ()) #define WP_TYPE_EXPORTED_SESSION (wp_exported_session_get_type ())
WP_API
G_DECLARE_DERIVABLE_TYPE (WpExportedSession, wp_exported_session, WP, EXPORTED_SESSION, WpExported) G_DECLARE_DERIVABLE_TYPE (WpExportedSession, wp_exported_session, WP, EXPORTED_SESSION, WpExported)
struct _WpExportedSessionClass struct _WpExportedSessionClass
@@ -63,12 +71,17 @@ struct _WpExportedSessionClass
WpExportedClass parent_class; WpExportedClass parent_class;
}; };
WP_API
WpExportedSession * wp_exported_session_new (WpCore * core); WpExportedSession * wp_exported_session_new (WpCore * core);
WP_API
guint32 wp_exported_session_get_global_id (WpExportedSession * self); guint32 wp_exported_session_get_global_id (WpExportedSession * self);
WP_API
void wp_exported_session_set_property (WpExportedSession * self, void wp_exported_session_set_property (WpExportedSession * self,
const gchar * key, const gchar * value); const gchar * key, const gchar * value);
WP_API
void wp_exported_session_update_properties (WpExportedSession * self, void wp_exported_session_update_properties (WpExportedSession * self,
WpProperties * updates); WpProperties * updates);

View File

@@ -38,6 +38,16 @@ pkgconfig = import('pkgconfig')
wp_lib_include_dir = include_directories('lib') wp_lib_include_dir = include_directories('lib')
cc = meson.get_compiler('c')
if cc.has_argument('-fvisibility=hidden')
add_project_arguments('-fvisibility=hidden', language: 'c')
endif
ccpp = meson.get_compiler('cpp')
if ccpp.has_argument('-fvisibility=hidden')
add_project_arguments('-fvisibility=hidden', language: 'cpp')
endif
subdir('lib') subdir('lib')
subdir('modules') subdir('modules')
subdir('src') subdir('src')

View File

@@ -27,7 +27,7 @@ client_added (WpObjectManager * om, WpProxyClient *client, gpointer data)
} }
} }
void WP_PLUGIN_EXPORT void
wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args) wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
{ {
WpObjectManager *om; WpObjectManager *om;

View File

@@ -10,7 +10,7 @@
#include "module-config-endpoint/context.h" #include "module-config-endpoint/context.h"
void WP_PLUGIN_EXPORT void
wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args) wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
{ {
WpConfigEndpointContext *ctx = wp_config_endpoint_context_new (core); WpConfigEndpointContext *ctx = wp_config_endpoint_context_new (core);

View File

@@ -10,7 +10,7 @@
#include "module-config-policy/config-policy.h" #include "module-config-policy/config-policy.h"
void WP_PLUGIN_EXPORT void
wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args) wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
{ {
g_autoptr (WpConfiguration) config = wp_configuration_get_instance (core); g_autoptr (WpConfiguration) config = wp_configuration_get_instance (core);

View File

@@ -10,7 +10,7 @@
#include "module-config-static-nodes/context.h" #include "module-config-static-nodes/context.h"
void WP_PLUGIN_EXPORT void
wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args) wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
{ {
WpConfigStaticNodesContext *ctx = wp_config_static_nodes_context_new (core); WpConfigStaticNodesContext *ctx = wp_config_static_nodes_context_new (core);

View File

@@ -209,7 +209,7 @@ start_monitor (WpMonitor *monitor)
} }
} }
void WP_PLUGIN_EXPORT void
wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args) wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
{ {
WpMonitor *monitor; WpMonitor *monitor;

View File

@@ -21,7 +21,7 @@ void
audio_softdsp_endpoint_factory (WpFactory * factory, GType type, audio_softdsp_endpoint_factory (WpFactory * factory, GType type,
GVariant * properties, GAsyncReadyCallback ready, gpointer user_data); GVariant * properties, GAsyncReadyCallback ready, gpointer user_data);
void WP_PLUGIN_EXPORT void
wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args) wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
{ {
/* Register simple-endpoint-link and audio-softdsp-endpoint */ /* Register simple-endpoint-link and audio-softdsp-endpoint */

View File

@@ -118,7 +118,7 @@ module_destroy (gpointer d)
g_slice_free (struct module_data, data); g_slice_free (struct module_data, data);
} }
void WP_PLUGIN_EXPORT void
wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args) wireplumber__module_init (WpModule * module, WpCore * core, GVariant * args)
{ {
struct module_data *data = g_slice_new0 (struct module_data); struct module_data *data = g_slice_new0 (struct module_data);