use opaque types for proxies

This makes it easier to implement the proxies
This commit is contained in:
Wim Taymans 2019-12-06 17:37:41 +01:00
parent 7dc8a33e3e
commit af605cdda2
7 changed files with 28 additions and 34 deletions

View file

@ -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;

View file

@ -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; \

View file

@ -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; \

View file

@ -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; \