mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	make per object IMPL
This commit is contained in:
		
							parent
							
								
									999b26c590
								
							
						
					
					
						commit
						b03f2f7afa
					
				
					 24 changed files with 205 additions and 67 deletions
				
			
		| 
						 | 
					@ -13,6 +13,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <pipewire/impl.h>
 | 
					#include <pipewire/impl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_CLIENT_NODE_IMPL	SPA_EXPORT
 | 
				
			||||||
#include "module-client-node/v0/client-node.h"
 | 
					#include "module-client-node/v0/client-node.h"
 | 
				
			||||||
#include "module-client-node/client-node.h"
 | 
					#include "module-client-node/client-node.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@
 | 
				
			||||||
#include <spa/utils/result.h>
 | 
					#include <spa/utils/result.h>
 | 
				
			||||||
#include <spa/utils/json.h>
 | 
					#include <spa/utils/json.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_METADATA_IMPL	SPA_EXPORT
 | 
				
			||||||
#include <pipewire/impl.h>
 | 
					#include <pipewire/impl.h>
 | 
				
			||||||
#include <pipewire/extensions/metadata.h>
 | 
					#include <pipewire/extensions/metadata.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@ extern "C" {
 | 
				
			||||||
#include <spa/utils/defs.h>
 | 
					#include <spa/utils/defs.h>
 | 
				
			||||||
#include <spa/param/param.h>
 | 
					#include <spa/param/param.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <pipewire/type.h>
 | 
				
			||||||
#include <pipewire/proxy.h>
 | 
					#include <pipewire/proxy.h>
 | 
				
			||||||
#include <pipewire/permission.h>
 | 
					#include <pipewire/permission.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,6 +31,10 @@ extern "C" {
 | 
				
			||||||
#define PW_VERSION_CLIENT		3
 | 
					#define PW_VERSION_CLIENT		3
 | 
				
			||||||
struct pw_client;
 | 
					struct pw_client;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_CLIENT_IMPL
 | 
				
			||||||
 | 
					#define PW_API_CLIENT_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* default ID of the current client after connect */
 | 
					/* default ID of the current client after connect */
 | 
				
			||||||
#define PW_ID_CLIENT			1
 | 
					#define PW_ID_CLIENT			1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -150,7 +155,9 @@ struct pw_client_methods {
 | 
				
			||||||
			const struct pw_permission *permissions);
 | 
								const struct pw_permission *permissions);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_client_add_listener(struct pw_client *object,
 | 
					/** \copydoc pw_client_methods.add_listener
 | 
				
			||||||
 | 
					 * \sa pw_client_methods.add_listener */
 | 
				
			||||||
 | 
					PW_API_CLIENT_IMPL int pw_client_add_listener(struct pw_client *object,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_client_events *events,
 | 
								const struct pw_client_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					@ -158,28 +165,54 @@ SPA_API_IMPL int pw_client_add_listener(struct pw_client *object,
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, add_listener, 0,
 | 
						return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, add_listener, 0,
 | 
				
			||||||
			listener, events, data);
 | 
								listener, events, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_client_error(struct pw_client *object, uint32_t id, int res, const char *message)
 | 
					/** \copydoc pw_client_methods.error
 | 
				
			||||||
 | 
					 * \sa pw_client_methods.error */
 | 
				
			||||||
 | 
					PW_API_CLIENT_IMPL int pw_client_error(struct pw_client *object, uint32_t id, int res, const char *message)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, error, 0,
 | 
						return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, error, 0,
 | 
				
			||||||
			id, res, message);
 | 
								id, res, message);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_client_update_properties(struct pw_client *object, const struct spa_dict *props)
 | 
					/** \copydoc pw_client_methods.update_properties
 | 
				
			||||||
 | 
					 * \sa pw_client_methods.update_properties */
 | 
				
			||||||
 | 
					PW_API_CLIENT_IMPL int pw_client_update_properties(struct pw_client *object, const struct spa_dict *props)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, update_properties, 0,
 | 
						return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, update_properties, 0,
 | 
				
			||||||
			props);
 | 
								props);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_client_get_permissions(struct pw_client *object, uint32_t index, uint32_t num)
 | 
					/** \copydoc pw_client_methods.get_permissions
 | 
				
			||||||
 | 
					 * \sa pw_client_methods.get_permissions */
 | 
				
			||||||
 | 
					PW_API_CLIENT_IMPL int pw_client_get_permissions(struct pw_client *object, uint32_t index, uint32_t num)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, get_permissions, 0,
 | 
						return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, get_permissions, 0,
 | 
				
			||||||
			index, num);
 | 
								index, num);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_client_update_permissions(struct pw_client *object, uint32_t n_permissions,
 | 
					/** \copydoc pw_client_methods.update_permissions
 | 
				
			||||||
 | 
					 * \sa pw_client_methods.update_permissions */
 | 
				
			||||||
 | 
					PW_API_CLIENT_IMPL int pw_client_update_permissions(struct pw_client *object, uint32_t n_permissions,
 | 
				
			||||||
			const struct pw_permission *permissions)
 | 
								const struct pw_permission *permissions)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, update_permissions, 0,
 | 
						return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, update_permissions, 0,
 | 
				
			||||||
			n_permissions, permissions);
 | 
								n_permissions, permissions);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PW_API_CLIENT_IMPL void *pw_client_get_user_data(struct pw_client *object)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return pw_proxy_get_user_data((struct pw_proxy *)object);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					PW_API_CLIENT_IMPL void pw_client_add_proxy_listener(struct pw_client *object,
 | 
				
			||||||
 | 
								struct spa_hook *listener,
 | 
				
			||||||
 | 
								const struct pw_proxy_events *events,
 | 
				
			||||||
 | 
								void *data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						pw_proxy_add_listener((struct pw_proxy *)object, listener, events, data);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					PW_API_CLIENT_IMPL struct pw_client *pw_registry_bind_client(struct pw_registry *object,
 | 
				
			||||||
 | 
							uint32_t id, size_t user_data_size)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return (struct pw_client*)pw_registry_bind(object, id, PW_TYPE_INTERFACE_Client,
 | 
				
			||||||
 | 
								PW_VERSION_CLIENT, user_data_size);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * \}
 | 
					 * \}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,9 @@
 | 
				
			||||||
#include <spa/pod/parser.h>
 | 
					#include <spa/pod/parser.h>
 | 
				
			||||||
#include <spa/debug/types.h>
 | 
					#include <spa/debug/types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_CORE_IMPL	SPA_EXPORT
 | 
				
			||||||
 | 
					#define PW_API_REGISTRY_IMPL	SPA_EXPORT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "pipewire/pipewire.h"
 | 
					#include "pipewire/pipewire.h"
 | 
				
			||||||
#include "pipewire/private.h"
 | 
					#include "pipewire/private.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -476,6 +479,15 @@ struct pw_mempool * pw_core_get_mempool(struct pw_core *core)
 | 
				
			||||||
	return core->pool;
 | 
						return core->pool;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
 | 
					void pw_core_add_proxy_listener(struct pw_core *object,
 | 
				
			||||||
 | 
								struct spa_hook *listener,
 | 
				
			||||||
 | 
								const struct pw_proxy_events *events,
 | 
				
			||||||
 | 
								void *data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						pw_proxy_add_listener((struct pw_proxy *)object, listener, events, data);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_EXPORT
 | 
					SPA_EXPORT
 | 
				
			||||||
int pw_core_disconnect(struct pw_core *core)
 | 
					int pw_core_disconnect(struct pw_core *core)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,8 @@ extern "C" {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <spa/utils/hook.h>
 | 
					#include <spa/utils/hook.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <pipewire/type.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** \defgroup pw_core Core
 | 
					/** \defgroup pw_core Core
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * \brief The core global object.
 | 
					 * \brief The core global object.
 | 
				
			||||||
| 
						 | 
					@ -41,6 +43,13 @@ struct pw_core;
 | 
				
			||||||
#define PW_VERSION_REGISTRY	3
 | 
					#define PW_VERSION_REGISTRY	3
 | 
				
			||||||
struct pw_registry;
 | 
					struct pw_registry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_CORE_IMPL
 | 
				
			||||||
 | 
					#define PW_API_CORE_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef PW_API_REGISTRY_IMPL
 | 
				
			||||||
 | 
					#define PW_API_REGISTRY_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** The default remote name to connect to */
 | 
					/** The default remote name to connect to */
 | 
				
			||||||
#define PW_DEFAULT_REMOTE	"pipewire-0"
 | 
					#define PW_DEFAULT_REMOTE	"pipewire-0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -335,7 +344,7 @@ struct pw_core_methods {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_core_add_listener(struct pw_core *object,
 | 
					PW_API_CORE_IMPL int pw_core_add_listener(struct pw_core *object,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_core_events *events,
 | 
								const struct pw_core_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					@ -344,31 +353,31 @@ SPA_API_IMPL int pw_core_add_listener(struct pw_core *object,
 | 
				
			||||||
			pw_core, (struct spa_interface*)object, add_listener, 0,
 | 
								pw_core, (struct spa_interface*)object, add_listener, 0,
 | 
				
			||||||
			listener, events, data);
 | 
								listener, events, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_core_hello(struct pw_core *object, uint32_t version)
 | 
					PW_API_CORE_IMPL int pw_core_hello(struct pw_core *object, uint32_t version)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_core, (struct spa_interface*)object, hello, 0,
 | 
								pw_core, (struct spa_interface*)object, hello, 0,
 | 
				
			||||||
			version);
 | 
								version);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_core_sync(struct pw_core *object, uint32_t id, int seq)
 | 
					PW_API_CORE_IMPL int pw_core_sync(struct pw_core *object, uint32_t id, int seq)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_core, (struct spa_interface*)object, sync, 0,
 | 
								pw_core, (struct spa_interface*)object, sync, 0,
 | 
				
			||||||
			id, seq);
 | 
								id, seq);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_core_pong(struct pw_core *object, uint32_t id, int seq)
 | 
					PW_API_CORE_IMPL int pw_core_pong(struct pw_core *object, uint32_t id, int seq)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_core, (struct spa_interface*)object, pong, 0,
 | 
								pw_core, (struct spa_interface*)object, pong, 0,
 | 
				
			||||||
			id, seq);
 | 
								id, seq);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_core_error(struct pw_core *object, uint32_t id, int seq, int res, const char *message)
 | 
					PW_API_CORE_IMPL int pw_core_error(struct pw_core *object, uint32_t id, int seq, int res, const char *message)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_core, (struct spa_interface*)object, error, 0,
 | 
								pw_core, (struct spa_interface*)object, error, 0,
 | 
				
			||||||
			id, seq, res, message);
 | 
								id, seq, res, message);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL
 | 
					PW_API_CORE_IMPL
 | 
				
			||||||
SPA_PRINTF_FUNC(5, 0) int
 | 
					SPA_PRINTF_FUNC(5, 0) int
 | 
				
			||||||
pw_core_errorv(struct pw_core *core, uint32_t id, int seq,
 | 
					pw_core_errorv(struct pw_core *core, uint32_t id, int seq,
 | 
				
			||||||
		int res, const char *message, va_list args)
 | 
							int res, const char *message, va_list args)
 | 
				
			||||||
| 
						 | 
					@ -379,7 +388,7 @@ pw_core_errorv(struct pw_core *core, uint32_t id, int seq,
 | 
				
			||||||
	return pw_core_error(core, id, seq, res, buffer);
 | 
						return pw_core_error(core, id, seq, res, buffer);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL
 | 
					PW_API_CORE_IMPL
 | 
				
			||||||
SPA_PRINTF_FUNC(5, 6) int
 | 
					SPA_PRINTF_FUNC(5, 6) int
 | 
				
			||||||
pw_core_errorf(struct pw_core *core, uint32_t id, int seq,
 | 
					pw_core_errorf(struct pw_core *core, uint32_t id, int seq,
 | 
				
			||||||
		int res, const char *message, ...)
 | 
							int res, const char *message, ...)
 | 
				
			||||||
| 
						 | 
					@ -392,14 +401,14 @@ pw_core_errorf(struct pw_core *core, uint32_t id, int seq,
 | 
				
			||||||
	return r;
 | 
						return r;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL struct pw_registry *
 | 
					PW_API_CORE_IMPL struct pw_registry *
 | 
				
			||||||
pw_core_get_registry(struct pw_core *core, uint32_t version, size_t user_data_size)
 | 
					pw_core_get_registry(struct pw_core *core, uint32_t version, size_t user_data_size)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(struct pw_registry*, NULL,
 | 
						return spa_api_method_r(struct pw_registry*, NULL,
 | 
				
			||||||
			pw_core, (struct spa_interface*)core, get_registry, 0,
 | 
								pw_core, (struct spa_interface*)core, get_registry, 0,
 | 
				
			||||||
			version, user_data_size);
 | 
								version, user_data_size);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL void *
 | 
					PW_API_CORE_IMPL void *
 | 
				
			||||||
pw_core_create_object(struct pw_core *core,
 | 
					pw_core_create_object(struct pw_core *core,
 | 
				
			||||||
			    const char *factory_name,
 | 
								    const char *factory_name,
 | 
				
			||||||
			    const char *type,
 | 
								    const char *type,
 | 
				
			||||||
| 
						 | 
					@ -411,13 +420,15 @@ pw_core_create_object(struct pw_core *core,
 | 
				
			||||||
			pw_core, (struct spa_interface*)core, create_object, 0,
 | 
								pw_core, (struct spa_interface*)core, create_object, 0,
 | 
				
			||||||
			factory_name, type, version, props, user_data_size);
 | 
								factory_name, type, version, props, user_data_size);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL void
 | 
					PW_API_CORE_IMPL void
 | 
				
			||||||
pw_core_destroy(struct pw_core *core, void *proxy)
 | 
					pw_core_destroy(struct pw_core *core, void *proxy)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_api_method_v(pw_core, (struct spa_interface*)core, destroy, 0,
 | 
						spa_api_method_v(pw_core, (struct spa_interface*)core, destroy, 0,
 | 
				
			||||||
			proxy);
 | 
								proxy);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void *pw_core_get_user_data(struct pw_core *object);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * \}
 | 
					 * \}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					@ -532,8 +543,9 @@ struct pw_registry_methods {
 | 
				
			||||||
	int (*destroy) (void *object, uint32_t id);
 | 
						int (*destroy) (void *object, uint32_t id);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Registry */
 | 
					/** Registry */
 | 
				
			||||||
SPA_API_IMPL int pw_registry_add_listener(struct pw_registry *registry,
 | 
					PW_API_REGISTRY_IMPL int pw_registry_add_listener(struct pw_registry *registry,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_registry_events *events,
 | 
								const struct pw_registry_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					@ -542,7 +554,7 @@ SPA_API_IMPL int pw_registry_add_listener(struct pw_registry *registry,
 | 
				
			||||||
			pw_registry, (struct spa_interface*)registry, add_listener, 0,
 | 
								pw_registry, (struct spa_interface*)registry, add_listener, 0,
 | 
				
			||||||
			listener, events, data);
 | 
								listener, events, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL void *
 | 
					PW_API_REGISTRY_IMPL void *
 | 
				
			||||||
pw_registry_bind(struct pw_registry *registry,
 | 
					pw_registry_bind(struct pw_registry *registry,
 | 
				
			||||||
		       uint32_t id, const char *type, uint32_t version,
 | 
							       uint32_t id, const char *type, uint32_t version,
 | 
				
			||||||
		       size_t user_data_size)
 | 
							       size_t user_data_size)
 | 
				
			||||||
| 
						 | 
					@ -551,13 +563,20 @@ pw_registry_bind(struct pw_registry *registry,
 | 
				
			||||||
			pw_registry, (struct spa_interface*)registry, bind, 0,
 | 
								pw_registry, (struct spa_interface*)registry, bind, 0,
 | 
				
			||||||
			id, type, version, user_data_size);
 | 
								id, type, version, user_data_size);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int
 | 
					PW_API_REGISTRY_IMPL int
 | 
				
			||||||
pw_registry_destroy(struct pw_registry *registry, uint32_t id)
 | 
					pw_registry_destroy(struct pw_registry *registry, uint32_t id)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_registry, (struct spa_interface*)registry, destroy, 0, id);
 | 
								pw_registry, (struct spa_interface*)registry, destroy, 0, id);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PW_API_REGISTRY_IMPL struct pw_core *pw_registry_bind_core(struct pw_registry *object,
 | 
				
			||||||
 | 
							uint32_t id, size_t user_data_size)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return (struct pw_core*)pw_registry_bind(object, id, PW_TYPE_INTERFACE_Core,
 | 
				
			||||||
 | 
								PW_VERSION_CORE, user_data_size);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * \}
 | 
					 * \}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,6 +30,10 @@ extern "C" {
 | 
				
			||||||
#define PW_VERSION_DEVICE		3
 | 
					#define PW_VERSION_DEVICE		3
 | 
				
			||||||
struct pw_device;
 | 
					struct pw_device;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_DEVICE_IMPL
 | 
				
			||||||
 | 
					#define PW_API_DEVICE_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** The device information. Extra information can be added in later versions */
 | 
					/** The device information. Extra information can be added in later versions */
 | 
				
			||||||
struct pw_device_info {
 | 
					struct pw_device_info {
 | 
				
			||||||
	uint32_t id;			/**< id of the global */
 | 
						uint32_t id;			/**< id of the global */
 | 
				
			||||||
| 
						 | 
					@ -141,7 +145,7 @@ struct pw_device_methods {
 | 
				
			||||||
			  const struct spa_pod *param);
 | 
								  const struct spa_pod *param);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_device_add_listener(struct pw_device *object,
 | 
					PW_API_DEVICE_IMPL int pw_device_add_listener(struct pw_device *object,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_device_events *events,
 | 
								const struct pw_device_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					@ -150,13 +154,13 @@ SPA_API_IMPL int pw_device_add_listener(struct pw_device *object,
 | 
				
			||||||
			pw_device, (struct spa_interface*)object, add_listener, 0,
 | 
								pw_device, (struct spa_interface*)object, add_listener, 0,
 | 
				
			||||||
			listener, events, data);
 | 
								listener, events, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_device_subscribe_params(struct pw_device *object, uint32_t *ids, uint32_t n_ids)
 | 
					PW_API_DEVICE_IMPL int pw_device_subscribe_params(struct pw_device *object, uint32_t *ids, uint32_t n_ids)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_device, (struct spa_interface*)object, subscribe_params, 0,
 | 
								pw_device, (struct spa_interface*)object, subscribe_params, 0,
 | 
				
			||||||
			ids, n_ids);
 | 
								ids, n_ids);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_device_enum_params(struct pw_device *object,
 | 
					PW_API_DEVICE_IMPL int pw_device_enum_params(struct pw_device *object,
 | 
				
			||||||
		int seq, uint32_t id, uint32_t start, uint32_t num,
 | 
							int seq, uint32_t id, uint32_t start, uint32_t num,
 | 
				
			||||||
			    const struct spa_pod *filter)
 | 
								    const struct spa_pod *filter)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -164,7 +168,7 @@ SPA_API_IMPL int pw_device_enum_params(struct pw_device *object,
 | 
				
			||||||
			pw_device, (struct spa_interface*)object, enum_params, 0,
 | 
								pw_device, (struct spa_interface*)object, enum_params, 0,
 | 
				
			||||||
			seq, id, start, num, filter);
 | 
								seq, id, start, num, filter);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_device_set_param(struct pw_device *object, uint32_t id, uint32_t flags,
 | 
					PW_API_DEVICE_IMPL int pw_device_set_param(struct pw_device *object, uint32_t id, uint32_t flags,
 | 
				
			||||||
			  const struct spa_pod *param)
 | 
								  const struct spa_pod *param)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
| 
						 | 
					@ -172,6 +176,24 @@ SPA_API_IMPL int pw_device_set_param(struct pw_device *object, uint32_t id, uint
 | 
				
			||||||
			id, flags, param);
 | 
								id, flags, param);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PW_API_DEVICE_IMPL void *pw_device_get_user_data(struct pw_device *object)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return pw_proxy_get_user_data((struct pw_proxy *)object);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					PW_API_DEVICE_IMPL void pw_device_add_proxy_listener(struct pw_device *object,
 | 
				
			||||||
 | 
								struct spa_hook *listener,
 | 
				
			||||||
 | 
								const struct pw_proxy_events *events,
 | 
				
			||||||
 | 
								void *data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						pw_proxy_add_listener((struct pw_proxy *)object, listener, events, data);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					PW_API_DEVICE_IMPL struct pw_device *pw_registry_bind_device(struct pw_registry *object,
 | 
				
			||||||
 | 
							uint32_t id, size_t user_data_size)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return (struct pw_device*)pw_registry_bind(object, id, PW_TYPE_INTERFACE_Device,
 | 
				
			||||||
 | 
								PW_VERSION_DEVICE, user_data_size);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * \}
 | 
					 * \}
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,6 +30,10 @@ extern "C" {
 | 
				
			||||||
#define PW_VERSION_CLIENT_NODE			6
 | 
					#define PW_VERSION_CLIENT_NODE			6
 | 
				
			||||||
struct pw_client_node;
 | 
					struct pw_client_node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_CLIENT_NODE_IMPL
 | 
				
			||||||
 | 
					#define PW_API_CLIENT_NODE_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define PW_EXTENSION_MODULE_CLIENT_NODE		PIPEWIRE_MODULE_PREFIX "module-client-node"
 | 
					#define PW_EXTENSION_MODULE_CLIENT_NODE		PIPEWIRE_MODULE_PREFIX "module-client-node"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** information about a buffer */
 | 
					/** information about a buffer */
 | 
				
			||||||
| 
						 | 
					@ -303,7 +307,7 @@ struct pw_client_node_methods {
 | 
				
			||||||
			  struct spa_buffer **buffers);
 | 
								  struct spa_buffer **buffers);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_client_node_add_listener(struct pw_client_node *object,
 | 
					PW_API_CLIENT_NODE_IMPL int pw_client_node_add_listener(struct pw_client_node *object,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_client_node_events *events,
 | 
								const struct pw_client_node_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					@ -311,13 +315,13 @@ SPA_API_IMPL int pw_client_node_add_listener(struct pw_client_node *object,
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
 | 
						return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
 | 
				
			||||||
			add_listener, 0, listener, events, data);
 | 
								add_listener, 0, listener, events, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL struct pw_node *
 | 
					PW_API_CLIENT_NODE_IMPL struct pw_node *
 | 
				
			||||||
pw_client_node_get_node(struct pw_client_node *p, uint32_t version, size_t user_data_size)
 | 
					pw_client_node_get_node(struct pw_client_node *p, uint32_t version, size_t user_data_size)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(struct pw_node*, NULL, pw_client_node, (struct spa_interface*)p,
 | 
						return spa_api_method_r(struct pw_node*, NULL, pw_client_node, (struct spa_interface*)p,
 | 
				
			||||||
			get_node, 0, version, user_data_size);
 | 
								get_node, 0, version, user_data_size);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_client_node_update(struct pw_client_node *object,
 | 
					PW_API_CLIENT_NODE_IMPL int pw_client_node_update(struct pw_client_node *object,
 | 
				
			||||||
			uint32_t change_mask,
 | 
								uint32_t change_mask,
 | 
				
			||||||
			uint32_t n_params, const struct spa_pod **params,
 | 
								uint32_t n_params, const struct spa_pod **params,
 | 
				
			||||||
			const struct spa_node_info *info)
 | 
								const struct spa_node_info *info)
 | 
				
			||||||
| 
						 | 
					@ -325,7 +329,7 @@ SPA_API_IMPL int pw_client_node_update(struct pw_client_node *object,
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
 | 
						return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
 | 
				
			||||||
			update, 0, change_mask, n_params, params, info);
 | 
								update, 0, change_mask, n_params, params, info);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_client_node_port_update(struct pw_client_node *object,
 | 
					PW_API_CLIENT_NODE_IMPL int pw_client_node_port_update(struct pw_client_node *object,
 | 
				
			||||||
			     enum spa_direction direction, uint32_t port_id,
 | 
								     enum spa_direction direction, uint32_t port_id,
 | 
				
			||||||
			     uint32_t change_mask,
 | 
								     uint32_t change_mask,
 | 
				
			||||||
			     uint32_t n_params, const struct spa_pod **params,
 | 
								     uint32_t n_params, const struct spa_pod **params,
 | 
				
			||||||
| 
						 | 
					@ -334,17 +338,17 @@ SPA_API_IMPL int pw_client_node_port_update(struct pw_client_node *object,
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
 | 
						return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
 | 
				
			||||||
			port_update, 0, direction, port_id, change_mask, n_params, params, info);
 | 
								port_update, 0, direction, port_id, change_mask, n_params, params, info);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_client_node_set_active(struct pw_client_node *object, bool active)
 | 
					PW_API_CLIENT_NODE_IMPL int pw_client_node_set_active(struct pw_client_node *object, bool active)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
 | 
						return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
 | 
				
			||||||
			set_active, 0, active);
 | 
								set_active, 0, active);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_client_node_event(struct pw_client_node *object, const struct spa_event *event)
 | 
					PW_API_CLIENT_NODE_IMPL int pw_client_node_event(struct pw_client_node *object, const struct spa_event *event)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
 | 
						return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
 | 
				
			||||||
			event, 0, event);
 | 
								event, 0, event);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_client_node_port_buffers(struct pw_client_node *object,
 | 
					PW_API_CLIENT_NODE_IMPL int pw_client_node_port_buffers(struct pw_client_node *object,
 | 
				
			||||||
			  enum spa_direction direction, uint32_t port_id,
 | 
								  enum spa_direction direction, uint32_t port_id,
 | 
				
			||||||
			  uint32_t mix_id, uint32_t n_buffers, struct spa_buffer **buffers)
 | 
								  uint32_t mix_id, uint32_t n_buffers, struct spa_buffer **buffers)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,6 +26,10 @@ extern "C" {
 | 
				
			||||||
#define PW_VERSION_METADATA			3
 | 
					#define PW_VERSION_METADATA			3
 | 
				
			||||||
struct pw_metadata;
 | 
					struct pw_metadata;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_METADATA_IMPL
 | 
				
			||||||
 | 
					#define PW_API_METADATA_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define PW_EXTENSION_MODULE_METADATA		PIPEWIRE_MODULE_PREFIX "module-metadata"
 | 
					#define PW_EXTENSION_MODULE_METADATA		PIPEWIRE_MODULE_PREFIX "module-metadata"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define PW_METADATA_EVENT_PROPERTY		0
 | 
					#define PW_METADATA_EVENT_PROPERTY		0
 | 
				
			||||||
| 
						 | 
					@ -89,7 +93,7 @@ struct pw_metadata_methods {
 | 
				
			||||||
	int (*clear) (void *object);
 | 
						int (*clear) (void *object);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_metadata_add_listener(struct pw_metadata *object,
 | 
					PW_API_METADATA_IMPL int pw_metadata_add_listener(struct pw_metadata *object,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_metadata_events *events,
 | 
								const struct pw_metadata_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					@ -98,7 +102,7 @@ SPA_API_IMPL int pw_metadata_add_listener(struct pw_metadata *object,
 | 
				
			||||||
			pw_metadata, (struct spa_interface*)object, add_listener, 0,
 | 
								pw_metadata, (struct spa_interface*)object, add_listener, 0,
 | 
				
			||||||
			listener, events, data);
 | 
								listener, events, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_metadata_set_property(struct pw_metadata *object,
 | 
					PW_API_METADATA_IMPL int pw_metadata_set_property(struct pw_metadata *object,
 | 
				
			||||||
			uint32_t subject,
 | 
								uint32_t subject,
 | 
				
			||||||
			const char *key,
 | 
								const char *key,
 | 
				
			||||||
			const char *type,
 | 
								const char *type,
 | 
				
			||||||
| 
						 | 
					@ -108,7 +112,7 @@ SPA_API_IMPL int pw_metadata_set_property(struct pw_metadata *object,
 | 
				
			||||||
			pw_metadata, (struct spa_interface*)object, set_property, 0,
 | 
								pw_metadata, (struct spa_interface*)object, set_property, 0,
 | 
				
			||||||
			subject, key, type, value);
 | 
								subject, key, type, value);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_metadata_clear(struct pw_metadata *object)
 | 
					PW_API_METADATA_IMPL int pw_metadata_clear(struct pw_metadata *object)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_metadata, (struct spa_interface*)object, clear, 0);
 | 
								pw_metadata, (struct spa_interface*)object, clear, 0);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,6 +32,10 @@ extern "C" {
 | 
				
			||||||
#define PW_VERSION_FACTORY		3
 | 
					#define PW_VERSION_FACTORY		3
 | 
				
			||||||
struct pw_factory;
 | 
					struct pw_factory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_FACTORY_IMPL
 | 
				
			||||||
 | 
					#define PW_API_FACTORY_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** The factory information. Extra information can be added in later versions */
 | 
					/** The factory information. Extra information can be added in later versions */
 | 
				
			||||||
struct pw_factory_info {
 | 
					struct pw_factory_info {
 | 
				
			||||||
	uint32_t id;			/**< id of the global */
 | 
						uint32_t id;			/**< id of the global */
 | 
				
			||||||
| 
						 | 
					@ -83,7 +87,7 @@ struct pw_factory_methods {
 | 
				
			||||||
			void *data);
 | 
								void *data);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_factory_add_listener(struct pw_factory *object,
 | 
					PW_API_FACTORY_IMPL int pw_factory_add_listener(struct pw_factory *object,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_factory_events *events,
 | 
								const struct pw_factory_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,8 +6,12 @@
 | 
				
			||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
#include <assert.h>
 | 
					#include <assert.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/utils/defs.h>
 | 
				
			||||||
#include <spa/utils/string.h>
 | 
					#include <spa/utils/string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_CLIENT_IMPL	SPA_EXPORT
 | 
				
			||||||
 | 
					#include "pipewire/client.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "pipewire/impl.h"
 | 
					#include "pipewire/impl.h"
 | 
				
			||||||
#include "pipewire/private.h"
 | 
					#include "pipewire/private.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@
 | 
				
			||||||
#include <spa/utils/string.h>
 | 
					#include <spa/utils/string.h>
 | 
				
			||||||
#include <spa/utils/json-pod.h>
 | 
					#include <spa/utils/json-pod.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_DEVICE_IMPL SPA_EXPORT
 | 
				
			||||||
#include "pipewire/impl.h"
 | 
					#include "pipewire/impl.h"
 | 
				
			||||||
#include "pipewire/private.h"
 | 
					#include "pipewire/private.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,8 @@
 | 
				
			||||||
#include <spa/debug/types.h>
 | 
					#include <spa/debug/types.h>
 | 
				
			||||||
#include <spa/utils/string.h>
 | 
					#include <spa/utils/string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_FACTORY_IMPL	SPA_EXPORT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "pipewire/impl.h"
 | 
					#include "pipewire/impl.h"
 | 
				
			||||||
#include "pipewire/private.h"
 | 
					#include "pipewire/private.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@
 | 
				
			||||||
#include <spa/param/param.h>
 | 
					#include <spa/param/param.h>
 | 
				
			||||||
#include <spa/debug/types.h>
 | 
					#include <spa/debug/types.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_LINK_IMPL	SPA_EXPORT
 | 
				
			||||||
#include "pipewire/impl-link.h"
 | 
					#include "pipewire/impl-link.h"
 | 
				
			||||||
#include "pipewire/private.h"
 | 
					#include "pipewire/private.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,6 +16,7 @@
 | 
				
			||||||
#include <spa/utils/cleanup.h>
 | 
					#include <spa/utils/cleanup.h>
 | 
				
			||||||
#include <spa/utils/string.h>
 | 
					#include <spa/utils/string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_MODULE_IMPL	SPA_EXPORT
 | 
				
			||||||
#include "pipewire/impl.h"
 | 
					#include "pipewire/impl.h"
 | 
				
			||||||
#include "pipewire/private.h"
 | 
					#include "pipewire/private.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,6 +22,7 @@
 | 
				
			||||||
#include <spa/utils/string.h>
 | 
					#include <spa/utils/string.h>
 | 
				
			||||||
#include <spa/utils/json-pod.h>
 | 
					#include <spa/utils/json-pod.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_NODE_IMPL	SPA_EXPORT
 | 
				
			||||||
#include "pipewire/impl-node.h"
 | 
					#include "pipewire/impl-node.h"
 | 
				
			||||||
#include "pipewire/private.h"
 | 
					#include "pipewire/private.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,6 +19,7 @@
 | 
				
			||||||
#include <spa/pod/dynamic.h>
 | 
					#include <spa/pod/dynamic.h>
 | 
				
			||||||
#include <spa/debug/pod.h>
 | 
					#include <spa/debug/pod.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_PORT_IMPL	SPA_EXPORT
 | 
				
			||||||
#include "pipewire/impl.h"
 | 
					#include "pipewire/impl.h"
 | 
				
			||||||
#include "pipewire/private.h"
 | 
					#include "pipewire/private.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,11 @@ extern "C" {
 | 
				
			||||||
#define PW_VERSION_LINK		3
 | 
					#define PW_VERSION_LINK		3
 | 
				
			||||||
struct pw_link;
 | 
					struct pw_link;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_LINK_IMPL
 | 
				
			||||||
 | 
					#define PW_API_LINK_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** \enum pw_link_state The different link states */
 | 
					/** \enum pw_link_state The different link states */
 | 
				
			||||||
enum pw_link_state {
 | 
					enum pw_link_state {
 | 
				
			||||||
	PW_LINK_STATE_ERROR = -2,	/**< the link is in error */
 | 
						PW_LINK_STATE_ERROR = -2,	/**< the link is in error */
 | 
				
			||||||
| 
						 | 
					@ -108,7 +113,7 @@ struct pw_link_methods {
 | 
				
			||||||
			void *data);
 | 
								void *data);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_link_add_listener(struct pw_link *object,
 | 
					PW_API_LINK_IMPL int pw_link_add_listener(struct pw_link *object,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_link_events *events,
 | 
								const struct pw_link_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,6 +8,7 @@
 | 
				
			||||||
#include <spa/utils/names.h>
 | 
					#include <spa/utils/names.h>
 | 
				
			||||||
#include <spa/utils/result.h>
 | 
					#include <spa/utils/result.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_LOOP_IMPL	SPA_EXPORT
 | 
				
			||||||
#include <pipewire/pipewire.h>
 | 
					#include <pipewire/pipewire.h>
 | 
				
			||||||
#include <pipewire/private.h>
 | 
					#include <pipewire/private.h>
 | 
				
			||||||
#include <pipewire/loop.h>
 | 
					#include <pipewire/loop.h>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,10 @@ struct pw_loop {
 | 
				
			||||||
	const char *name;
 | 
						const char *name;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_LOOP_IMPL
 | 
				
			||||||
 | 
					#define PW_API_LOOP_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct pw_loop *
 | 
					struct pw_loop *
 | 
				
			||||||
pw_loop_new(const struct spa_dict *props);
 | 
					pw_loop_new(const struct spa_dict *props);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,99 +46,99 @@ pw_loop_destroy(struct pw_loop *loop);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int pw_loop_set_name(struct pw_loop *loop, const char *name);
 | 
					int pw_loop_set_name(struct pw_loop *loop, const char *name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_loop_add_source(struct pw_loop *object, struct spa_source *source)
 | 
					PW_API_LOOP_IMPL int pw_loop_add_source(struct pw_loop *object, struct spa_source *source)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_add_source(object->loop, source);
 | 
						return spa_loop_add_source(object->loop, source);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_loop_update_source(struct pw_loop *object, struct spa_source *source)
 | 
					PW_API_LOOP_IMPL int pw_loop_update_source(struct pw_loop *object, struct spa_source *source)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_update_source(object->loop, source);
 | 
						return spa_loop_update_source(object->loop, source);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_loop_remove_source(struct pw_loop *object, struct spa_source *source)
 | 
					PW_API_LOOP_IMPL int pw_loop_remove_source(struct pw_loop *object, struct spa_source *source)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_remove_source(object->loop, source);
 | 
						return spa_loop_remove_source(object->loop, source);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_loop_invoke(struct pw_loop *object,
 | 
					PW_API_LOOP_IMPL int pw_loop_invoke(struct pw_loop *object,
 | 
				
			||||||
                spa_invoke_func_t func, uint32_t seq, const void *data,
 | 
					                spa_invoke_func_t func, uint32_t seq, const void *data,
 | 
				
			||||||
                size_t size, bool block, void *user_data)
 | 
					                size_t size, bool block, void *user_data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_invoke(object->loop, func, seq, data, size, block, user_data);
 | 
						return spa_loop_invoke(object->loop, func, seq, data, size, block, user_data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_loop_get_fd(struct pw_loop *object)
 | 
					PW_API_LOOP_IMPL int pw_loop_get_fd(struct pw_loop *object)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_control_get_fd(object->control);
 | 
						return spa_loop_control_get_fd(object->control);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL void pw_loop_add_hook(struct pw_loop *object,
 | 
					PW_API_LOOP_IMPL void pw_loop_add_hook(struct pw_loop *object,
 | 
				
			||||||
                struct spa_hook *hook, const struct spa_loop_control_hooks *hooks,
 | 
					                struct spa_hook *hook, const struct spa_loop_control_hooks *hooks,
 | 
				
			||||||
                void *data)
 | 
					                void *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_loop_control_add_hook(object->control, hook, hooks, data);
 | 
						spa_loop_control_add_hook(object->control, hook, hooks, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL void pw_loop_enter(struct pw_loop *object)
 | 
					PW_API_LOOP_IMPL void pw_loop_enter(struct pw_loop *object)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_loop_control_enter(object->control);
 | 
						spa_loop_control_enter(object->control);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL void pw_loop_leave(struct pw_loop *object)
 | 
					PW_API_LOOP_IMPL void pw_loop_leave(struct pw_loop *object)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_loop_control_leave(object->control);
 | 
						spa_loop_control_leave(object->control);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_loop_iterate(struct pw_loop *object,
 | 
					PW_API_LOOP_IMPL int pw_loop_iterate(struct pw_loop *object,
 | 
				
			||||||
                int timeout)
 | 
					                int timeout)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_control_iterate_fast(object->control, timeout);
 | 
						return spa_loop_control_iterate_fast(object->control, timeout);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL struct spa_source *
 | 
					PW_API_LOOP_IMPL struct spa_source *
 | 
				
			||||||
pw_loop_add_io(struct pw_loop *object, int fd, uint32_t mask,
 | 
					pw_loop_add_io(struct pw_loop *object, int fd, uint32_t mask,
 | 
				
			||||||
                bool close, spa_source_io_func_t func, void *data)
 | 
					                bool close, spa_source_io_func_t func, void *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_utils_add_io(object->utils, fd, mask, close, func, data);
 | 
						return spa_loop_utils_add_io(object->utils, fd, mask, close, func, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_loop_update_io(struct pw_loop *object,
 | 
					PW_API_LOOP_IMPL int pw_loop_update_io(struct pw_loop *object,
 | 
				
			||||||
                struct spa_source *source, uint32_t mask)
 | 
					                struct spa_source *source, uint32_t mask)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_utils_update_io(object->utils, source, mask);
 | 
						return spa_loop_utils_update_io(object->utils, source, mask);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL struct spa_source *
 | 
					PW_API_LOOP_IMPL struct spa_source *
 | 
				
			||||||
pw_loop_add_idle(struct pw_loop *object, bool enabled,
 | 
					pw_loop_add_idle(struct pw_loop *object, bool enabled,
 | 
				
			||||||
                spa_source_idle_func_t func, void *data)
 | 
					                spa_source_idle_func_t func, void *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_utils_add_idle(object->utils, enabled, func, data);
 | 
						return spa_loop_utils_add_idle(object->utils, enabled, func, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_loop_enable_idle(struct pw_loop *object,
 | 
					PW_API_LOOP_IMPL int pw_loop_enable_idle(struct pw_loop *object,
 | 
				
			||||||
                struct spa_source *source, bool enabled)
 | 
					                struct spa_source *source, bool enabled)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_utils_enable_idle(object->utils, source, enabled);
 | 
						return spa_loop_utils_enable_idle(object->utils, source, enabled);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL struct spa_source *
 | 
					PW_API_LOOP_IMPL struct spa_source *
 | 
				
			||||||
pw_loop_add_event(struct pw_loop *object, spa_source_event_func_t func, void *data)
 | 
					pw_loop_add_event(struct pw_loop *object, spa_source_event_func_t func, void *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_utils_add_event(object->utils, func, data);
 | 
						return spa_loop_utils_add_event(object->utils, func, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_loop_signal_event(struct pw_loop *object,
 | 
					PW_API_LOOP_IMPL int pw_loop_signal_event(struct pw_loop *object,
 | 
				
			||||||
                struct spa_source *source)
 | 
					                struct spa_source *source)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_utils_signal_event(object->utils, source);
 | 
						return spa_loop_utils_signal_event(object->utils, source);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL struct spa_source *
 | 
					PW_API_LOOP_IMPL struct spa_source *
 | 
				
			||||||
pw_loop_add_timer(struct pw_loop *object, spa_source_timer_func_t func, void *data)
 | 
					pw_loop_add_timer(struct pw_loop *object, spa_source_timer_func_t func, void *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_utils_add_timer(object->utils, func, data);
 | 
						return spa_loop_utils_add_timer(object->utils, func, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_loop_update_timer(struct pw_loop *object,
 | 
					PW_API_LOOP_IMPL int pw_loop_update_timer(struct pw_loop *object,
 | 
				
			||||||
                struct spa_source *source, struct timespec *value,
 | 
					                struct spa_source *source, struct timespec *value,
 | 
				
			||||||
                struct timespec *interval, bool absolute)
 | 
					                struct timespec *interval, bool absolute)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_utils_update_timer(object->utils, source, value, interval, absolute);
 | 
						return spa_loop_utils_update_timer(object->utils, source, value, interval, absolute);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL struct spa_source *
 | 
					PW_API_LOOP_IMPL struct spa_source *
 | 
				
			||||||
pw_loop_add_signal(struct pw_loop *object, int signal_number,
 | 
					pw_loop_add_signal(struct pw_loop *object, int signal_number,
 | 
				
			||||||
                spa_source_signal_func_t func, void *data)
 | 
					                spa_source_signal_func_t func, void *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_utils_add_signal(object->utils, signal_number, func, data);
 | 
						return spa_loop_utils_add_signal(object->utils, signal_number, func, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL void pw_loop_destroy_source(struct pw_loop *object,
 | 
					PW_API_LOOP_IMPL void pw_loop_destroy_source(struct pw_loop *object,
 | 
				
			||||||
                struct spa_source *source)
 | 
					                struct spa_source *source)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_loop_utils_destroy_source(object->utils, source);
 | 
						return spa_loop_utils_destroy_source(object->utils, source);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,10 @@ extern "C" {
 | 
				
			||||||
#define PW_VERSION_MODULE		3
 | 
					#define PW_VERSION_MODULE		3
 | 
				
			||||||
struct pw_module;
 | 
					struct pw_module;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_MODULE_IMPL
 | 
				
			||||||
 | 
					#define PW_API_MODULE_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** The module information. Extra information can be added in later versions */
 | 
					/** The module information. Extra information can be added in later versions */
 | 
				
			||||||
struct pw_module_info {
 | 
					struct pw_module_info {
 | 
				
			||||||
	uint32_t id;		/**< id of the global */
 | 
						uint32_t id;		/**< id of the global */
 | 
				
			||||||
| 
						 | 
					@ -81,7 +85,7 @@ struct pw_module_methods {
 | 
				
			||||||
			void *data);
 | 
								void *data);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_module_add_listener(struct pw_module *object,
 | 
					PW_API_MODULE_IMPL int pw_module_add_listener(struct pw_module *object,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_module_events *events,
 | 
								const struct pw_module_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,10 @@ extern "C" {
 | 
				
			||||||
#define PW_VERSION_NODE		3
 | 
					#define PW_VERSION_NODE		3
 | 
				
			||||||
struct pw_node;
 | 
					struct pw_node;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_NODE_IMPL
 | 
				
			||||||
 | 
					#define PW_API_NODE_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** \enum pw_node_state The different node states */
 | 
					/** \enum pw_node_state The different node states */
 | 
				
			||||||
enum pw_node_state {
 | 
					enum pw_node_state {
 | 
				
			||||||
	PW_NODE_STATE_ERROR = -1,	/**< error state */
 | 
						PW_NODE_STATE_ERROR = -1,	/**< error state */
 | 
				
			||||||
| 
						 | 
					@ -180,7 +184,7 @@ struct pw_node_methods {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_node_add_listener(struct pw_node *object,
 | 
					PW_API_NODE_IMPL int pw_node_add_listener(struct pw_node *object,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_node_events *events,
 | 
								const struct pw_node_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					@ -189,13 +193,13 @@ SPA_API_IMPL int pw_node_add_listener(struct pw_node *object,
 | 
				
			||||||
			pw_node, (struct spa_interface*)object, add_listener, 0,
 | 
								pw_node, (struct spa_interface*)object, add_listener, 0,
 | 
				
			||||||
			listener, events, data);
 | 
								listener, events, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_node_subscribe_params(struct pw_node *object, uint32_t *ids, uint32_t n_ids)
 | 
					PW_API_NODE_IMPL int pw_node_subscribe_params(struct pw_node *object, uint32_t *ids, uint32_t n_ids)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_node, (struct spa_interface*)object, subscribe_params, 0,
 | 
								pw_node, (struct spa_interface*)object, subscribe_params, 0,
 | 
				
			||||||
			ids, n_ids);
 | 
								ids, n_ids);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_node_enum_params(struct pw_node *object,
 | 
					PW_API_NODE_IMPL int pw_node_enum_params(struct pw_node *object,
 | 
				
			||||||
		int seq, uint32_t id, uint32_t start, uint32_t num,
 | 
							int seq, uint32_t id, uint32_t start, uint32_t num,
 | 
				
			||||||
			    const struct spa_pod *filter)
 | 
								    const struct spa_pod *filter)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -203,14 +207,14 @@ SPA_API_IMPL int pw_node_enum_params(struct pw_node *object,
 | 
				
			||||||
			pw_node, (struct spa_interface*)object, enum_params, 0,
 | 
								pw_node, (struct spa_interface*)object, enum_params, 0,
 | 
				
			||||||
			seq, id, start, num, filter);
 | 
								seq, id, start, num, filter);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_node_set_param(struct pw_node *object, uint32_t id, uint32_t flags,
 | 
					PW_API_NODE_IMPL int pw_node_set_param(struct pw_node *object, uint32_t id, uint32_t flags,
 | 
				
			||||||
			  const struct spa_pod *param)
 | 
								  const struct spa_pod *param)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_node, (struct spa_interface*)object, set_param, 0,
 | 
								pw_node, (struct spa_interface*)object, set_param, 0,
 | 
				
			||||||
			id, flags, param);
 | 
								id, flags, param);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_node_send_command(struct pw_node *object, const struct spa_command *command)
 | 
					PW_API_NODE_IMPL int pw_node_send_command(struct pw_node *object, const struct spa_command *command)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_node, (struct spa_interface*)object, send_command, 0, command);
 | 
								pw_node, (struct spa_interface*)object, send_command, 0, command);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,10 @@ extern "C" {
 | 
				
			||||||
#define PW_VERSION_PORT		3
 | 
					#define PW_VERSION_PORT		3
 | 
				
			||||||
struct pw_port;
 | 
					struct pw_port;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef PW_API_PORT_IMPL
 | 
				
			||||||
 | 
					#define PW_API_PORT_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** The direction of a port */
 | 
					/** The direction of a port */
 | 
				
			||||||
#define pw_direction spa_direction
 | 
					#define pw_direction spa_direction
 | 
				
			||||||
#define PW_DIRECTION_INPUT SPA_DIRECTION_INPUT
 | 
					#define PW_DIRECTION_INPUT SPA_DIRECTION_INPUT
 | 
				
			||||||
| 
						 | 
					@ -141,7 +145,7 @@ struct pw_port_methods {
 | 
				
			||||||
			const struct spa_pod *filter);
 | 
								const struct spa_pod *filter);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL int pw_port_add_listener(struct pw_port *object,
 | 
					PW_API_PORT_IMPL int pw_port_add_listener(struct pw_port *object,
 | 
				
			||||||
			struct spa_hook *listener,
 | 
								struct spa_hook *listener,
 | 
				
			||||||
			const struct pw_port_events *events,
 | 
								const struct pw_port_events *events,
 | 
				
			||||||
			void *data)
 | 
								void *data)
 | 
				
			||||||
| 
						 | 
					@ -150,13 +154,13 @@ SPA_API_IMPL int pw_port_add_listener(struct pw_port *object,
 | 
				
			||||||
			pw_port, (struct spa_interface*)object, add_listener, 0,
 | 
								pw_port, (struct spa_interface*)object, add_listener, 0,
 | 
				
			||||||
			listener, events, data);
 | 
								listener, events, data);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_port_subscribe_params(struct pw_port *object, uint32_t *ids, uint32_t n_ids)
 | 
					PW_API_PORT_IMPL int pw_port_subscribe_params(struct pw_port *object, uint32_t *ids, uint32_t n_ids)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_api_method_r(int, -ENOTSUP,
 | 
						return spa_api_method_r(int, -ENOTSUP,
 | 
				
			||||||
			pw_port, (struct spa_interface*)object, subscribe_params, 0,
 | 
								pw_port, (struct spa_interface*)object, subscribe_params, 0,
 | 
				
			||||||
			ids, n_ids);
 | 
								ids, n_ids);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_port_enum_params(struct pw_port *object,
 | 
					PW_API_PORT_IMPL int pw_port_enum_params(struct pw_port *object,
 | 
				
			||||||
		int seq, uint32_t id, uint32_t start, uint32_t num,
 | 
							int seq, uint32_t id, uint32_t start, uint32_t num,
 | 
				
			||||||
			    const struct spa_pod *filter)
 | 
								    const struct spa_pod *filter)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,7 @@
 | 
				
			||||||
#include <spa/utils/list.h>
 | 
					#include <spa/utils/list.h>
 | 
				
			||||||
#include <spa/utils/json.h>
 | 
					#include <spa/utils/json.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define PW_API_THREAD_IMPL SPA_EXPORT
 | 
				
			||||||
#include <pipewire/log.h>
 | 
					#include <pipewire/log.h>
 | 
				
			||||||
#include <pipewire/private.h>
 | 
					#include <pipewire/private.h>
 | 
				
			||||||
#include <pipewire/thread.h>
 | 
					#include <pipewire/thread.h>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,24 +29,28 @@ void pw_thread_utils_set(struct spa_thread_utils *impl);
 | 
				
			||||||
struct spa_thread_utils *pw_thread_utils_get(void);
 | 
					struct spa_thread_utils *pw_thread_utils_get(void);
 | 
				
			||||||
void *pw_thread_fill_attr(const struct spa_dict *props, void *attr);
 | 
					void *pw_thread_fill_attr(const struct spa_dict *props, void *attr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPA_API_IMPL struct spa_thread *pw_thread_utils_create(
 | 
					#ifndef PW_API_THREAD_IMPL
 | 
				
			||||||
 | 
					#define PW_API_THREAD_IMPL static inline
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PW_API_THREAD_IMPL struct spa_thread *pw_thread_utils_create(
 | 
				
			||||||
		const struct spa_dict *props, void *(*start_routine)(void*), void *arg)
 | 
							const struct spa_dict *props, void *(*start_routine)(void*), void *arg)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_thread_utils_create(pw_thread_utils_get(), props, start_routine, arg);
 | 
						return spa_thread_utils_create(pw_thread_utils_get(), props, start_routine, arg);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_thread_utils_join(struct spa_thread *thread, void **retval)
 | 
					PW_API_THREAD_IMPL int pw_thread_utils_join(struct spa_thread *thread, void **retval)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_thread_utils_join(pw_thread_utils_get(), thread, retval);
 | 
						return spa_thread_utils_join(pw_thread_utils_get(), thread, retval);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_thread_utils_get_rt_range(const struct spa_dict *props, int *min, int *max)
 | 
					PW_API_THREAD_IMPL int pw_thread_utils_get_rt_range(const struct spa_dict *props, int *min, int *max)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_thread_utils_get_rt_range(pw_thread_utils_get(), props, min, max);
 | 
						return spa_thread_utils_get_rt_range(pw_thread_utils_get(), props, min, max);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_thread_utils_acquire_rt(struct spa_thread *thread, int priority)
 | 
					PW_API_THREAD_IMPL int pw_thread_utils_acquire_rt(struct spa_thread *thread, int priority)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_thread_utils_acquire_rt(pw_thread_utils_get(), thread, priority);
 | 
						return spa_thread_utils_acquire_rt(pw_thread_utils_get(), thread, priority);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
SPA_API_IMPL int pw_thread_utils_drop_rt(struct spa_thread *thread)
 | 
					PW_API_THREAD_IMPL int pw_thread_utils_drop_rt(struct spa_thread *thread)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return spa_thread_utils_drop_rt(pw_thread_utils_get(), thread);
 | 
						return spa_thread_utils_drop_rt(pw_thread_utils_get(), thread);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue