mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
use opaque types for proxies
This makes it easier to implement the proxies
This commit is contained in:
parent
7dc8a33e3e
commit
af605cdda2
7 changed files with 28 additions and 34 deletions
|
|
@ -62,7 +62,7 @@ static void set_item(struct item *item, uint32_t subject, const char *key, const
|
|||
}
|
||||
|
||||
struct metadata {
|
||||
struct pw_metadata impl;
|
||||
struct spa_interface iface;
|
||||
|
||||
struct sm_media_session *session;
|
||||
struct spa_hook_list hooks;
|
||||
|
|
@ -189,7 +189,7 @@ void *sm_metadata_start(struct sm_media_session *sess)
|
|||
md->properties = pw_properties_new(NULL, NULL);
|
||||
pw_array_init(&md->metadata, 4096);
|
||||
|
||||
md->impl.iface = SPA_INTERFACE_INIT(
|
||||
md->iface = SPA_INTERFACE_INIT(
|
||||
PW_TYPE_INTERFACE_Metadata,
|
||||
PW_VERSION_METADATA,
|
||||
&impl_metadata, md);
|
||||
|
|
@ -198,7 +198,7 @@ void *sm_metadata_start(struct sm_media_session *sess)
|
|||
md->proxy = sm_media_session_export(sess,
|
||||
PW_TYPE_INTERFACE_Metadata,
|
||||
NULL,
|
||||
&md->impl,
|
||||
md,
|
||||
0);
|
||||
return md;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ extern "C" {
|
|||
#include <spa/utils/defs.h>
|
||||
#include <spa/param/param.h>
|
||||
|
||||
struct pw_client_node_proxy { struct spa_interface iface; };
|
||||
struct pw_client_node_proxy;
|
||||
|
||||
#define PW_VERSION_CLIENT_NODE 3
|
||||
|
||||
|
|
@ -284,8 +284,7 @@ struct pw_client_node_proxy_methods {
|
|||
#define pw_client_node_proxy_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
struct pw_client_node_proxy *_p = o; \
|
||||
spa_interface_call_res(&_p->iface, \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_client_node_proxy_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
|
|
@ -297,7 +296,7 @@ static inline struct pw_node_proxy *
|
|||
pw_client_node_proxy_get_node(struct pw_client_node_proxy *p, uint32_t version, size_t user_data_size)
|
||||
{
|
||||
struct pw_node_proxy *res = NULL;
|
||||
spa_interface_call_res(&p->iface,
|
||||
spa_interface_call_res((struct spa_interface*)p,
|
||||
struct pw_client_node_proxy_methods, res,
|
||||
get_node, 0, version, user_data_size);
|
||||
return res;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ extern "C" {
|
|||
|
||||
#include <spa/utils/defs.h>
|
||||
|
||||
struct pw_metadata { struct spa_interface iface; };
|
||||
struct pw_metadata;
|
||||
|
||||
#define PW_VERSION_METADATA 3
|
||||
|
||||
|
|
@ -80,8 +80,7 @@ struct pw_metadata_methods {
|
|||
#define pw_metadata_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
struct pw_metadata *_p = o; \
|
||||
spa_interface_call_res(&_p->iface, \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_metadata_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
#define PW_VERSION_CLIENT_ENDPOINT_PROXY 0
|
||||
struct pw_client_endpoint_proxy { struct spa_interface iface; };
|
||||
struct pw_client_endpoint_proxy;
|
||||
|
||||
#define PW_CLIENT_ENDPOINT_PROXY_EVENT_SET_SESSION_ID 0
|
||||
#define PW_CLIENT_ENDPOINT_PROXY_EVENT_SET_PARAM 1
|
||||
|
|
@ -156,8 +156,7 @@ struct pw_client_endpoint_proxy_methods {
|
|||
#define pw_client_endpoint_proxy_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
struct pw_client_endpoint_proxy *_p = o; \
|
||||
spa_interface_call_res(&_p->iface, \
|
||||
spa_interface_call_res((struct spa_interface*)&o, \
|
||||
struct pw_client_endpoint_proxy_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
|
|
@ -169,7 +168,7 @@ struct pw_client_endpoint_proxy_methods {
|
|||
|
||||
|
||||
#define PW_VERSION_CLIENT_SESSION_PROXY 0
|
||||
struct pw_client_session_proxy { struct spa_interface iface; };
|
||||
struct pw_client_session_proxy;
|
||||
|
||||
#define PW_CLIENT_SESSION_PROXY_EVENT_SET_PARAM 0
|
||||
#define PW_CLIENT_SESSION_PROXY_EVENT_LINK_SET_PARAM 1
|
||||
|
|
@ -270,8 +269,7 @@ struct pw_client_session_proxy_methods {
|
|||
#define pw_client_session_proxy_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
struct pw_client_session_proxy *_p = o; \
|
||||
spa_interface_call_res(&_p->iface, \
|
||||
spa_interface_call_res((struct spa_interface*)&o, \
|
||||
struct pw_client_session_proxy_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
|
|
|
|||
|
|
@ -36,13 +36,13 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
#define PW_VERSION_SESSION_PROXY 0
|
||||
struct pw_session_proxy { struct spa_interface iface; };
|
||||
struct pw_session_proxy;
|
||||
#define PW_VERSION_ENDPOINT_PROXY 0
|
||||
struct pw_endpoint_proxy { struct spa_interface iface; };
|
||||
struct pw_endpoint_proxy;
|
||||
#define PW_VERSION_ENDPOINT_STREAM_PROXY 0
|
||||
struct pw_endpoint_stream_proxy { struct spa_interface iface; };
|
||||
struct pw_endpoint_stream_proxy;
|
||||
#define PW_VERSION_ENDPOINT_LINK_PROXY 0
|
||||
struct pw_endpoint_link_proxy { struct spa_interface iface; };
|
||||
struct pw_endpoint_link_proxy;
|
||||
|
||||
/* Session */
|
||||
|
||||
|
|
@ -134,8 +134,7 @@ struct pw_session_proxy_methods {
|
|||
#define pw_session_proxy_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
struct pw_session_proxy *_p = o; \
|
||||
spa_interface_call_res(&_p->iface, \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_session_proxy_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
|
|
@ -239,8 +238,7 @@ struct pw_endpoint_proxy_methods {
|
|||
#define pw_endpoint_proxy_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
struct pw_endpoint_proxy *_p = o; \
|
||||
spa_interface_call_res(&_p->iface, \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_endpoint_proxy_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
|
|
@ -338,12 +336,11 @@ struct pw_endpoint_stream_proxy_methods {
|
|||
const struct spa_pod *param);
|
||||
};
|
||||
|
||||
#define pw_endpoint_stream_proxy_method(o,method,version,...) \
|
||||
#define pw_endpoint_stream_proxy_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
struct pw_endpoint_stream_proxy *_p = o; \
|
||||
spa_interface_call_res(&_p->iface, \
|
||||
struct pw_endpoint_stream_proxy_methods, _res, \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_endpoint_stream_proxy_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
|
@ -446,8 +443,7 @@ struct pw_endpoint_link_proxy_methods {
|
|||
#define pw_endpoint_link_proxy_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
struct pw_endpoint_link_proxy *_p = o; \
|
||||
spa_interface_call_res(&_p->iface, \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_endpoint_link_proxy_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ struct pw_proxy *pw_core_proxy_spa_device_export(struct pw_core_proxy *core_prox
|
|||
size_t user_data_size)
|
||||
{
|
||||
struct spa_device *device = object;
|
||||
struct spa_interface *iface;
|
||||
struct spa_interface *iface, *diface;
|
||||
struct pw_proxy *proxy;
|
||||
struct device_data *data;
|
||||
|
||||
|
|
@ -78,11 +78,12 @@ struct pw_proxy *pw_core_proxy_spa_device_export(struct pw_core_proxy *core_prox
|
|||
data->proxy = proxy;
|
||||
|
||||
iface = (struct spa_interface*)proxy;
|
||||
diface = (struct spa_interface*)device;
|
||||
|
||||
pw_proxy_add_listener(proxy, &data->proxy_listener, &proxy_events, data);
|
||||
|
||||
pw_proxy_add_object_listener(proxy, &data->device_methods,
|
||||
device->iface.cb.funcs, device->iface.cb.data);
|
||||
diface->cb.funcs, diface->cb.data);
|
||||
spa_device_add_listener(device, &data->device_listener,
|
||||
iface->cb.funcs, iface->cb.data);
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ struct pw_proxy *pw_core_proxy_metadata_export(struct pw_core_proxy *core_proxy,
|
|||
size_t user_data_size)
|
||||
{
|
||||
struct pw_metadata *meta = object;
|
||||
struct spa_interface *iface;
|
||||
struct spa_interface *iface, *miface;
|
||||
struct pw_proxy *proxy;
|
||||
struct object_data *data;
|
||||
|
||||
|
|
@ -78,13 +78,14 @@ struct pw_proxy *pw_core_proxy_metadata_export(struct pw_core_proxy *core_proxy,
|
|||
data->proxy = proxy;
|
||||
|
||||
iface = (struct spa_interface*)proxy;
|
||||
miface = (struct spa_interface*)meta;
|
||||
|
||||
pw_proxy_install_marshal(proxy, true);
|
||||
|
||||
pw_proxy_add_listener(proxy, &data->proxy_listener, &proxy_events, data);
|
||||
|
||||
pw_proxy_add_object_listener(proxy, &data->object_methods,
|
||||
meta->iface.cb.funcs, meta->iface.cb.data);
|
||||
miface->cb.funcs, miface->cb.data);
|
||||
pw_metadata_add_listener(meta, &data->object_listener,
|
||||
iface->cb.funcs, iface->cb.data);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue