mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-05 13:30:02 -05:00
spa: use static inline for interfaces instead of macro
It gives better typechecking and a path to make a library of functions.
This commit is contained in:
parent
5e0e1204d7
commit
84bd4b7ea9
32 changed files with 1069 additions and 563 deletions
|
|
@ -150,20 +150,35 @@ struct pw_client_methods {
|
|||
const struct pw_permission *permissions);
|
||||
};
|
||||
|
||||
#define pw_client_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_client_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_client_add_listener(c,...) pw_client_method(c,add_listener,0,__VA_ARGS__)
|
||||
#define pw_client_error(c,...) pw_client_method(c,error,0,__VA_ARGS__)
|
||||
#define pw_client_update_properties(c,...) pw_client_method(c,update_properties,0,__VA_ARGS__)
|
||||
#define pw_client_get_permissions(c,...) pw_client_method(c,get_permissions,0,__VA_ARGS__)
|
||||
#define pw_client_update_permissions(c,...) pw_client_method(c,update_permissions,0,__VA_ARGS__)
|
||||
static inline int pw_client_add_listener(struct pw_client *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_client_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
static inline 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,
|
||||
id, res, message);
|
||||
}
|
||||
static inline 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,
|
||||
props);
|
||||
}
|
||||
static inline 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,
|
||||
index, num);
|
||||
}
|
||||
static inline int pw_client_update_permissions(struct pw_client *object, uint32_t n_permissions,
|
||||
const struct pw_permission *permissions)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP, pw_client, (struct spa_interface*)object, update_permissions, 0,
|
||||
n_permissions, permissions);
|
||||
}
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
|
|||
|
|
@ -334,22 +334,40 @@ struct pw_core_methods {
|
|||
int (*destroy) (void *object, void *proxy);
|
||||
};
|
||||
|
||||
#define pw_core_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_core_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_core_add_listener(c,...) pw_core_method(c,add_listener,0,__VA_ARGS__)
|
||||
#define pw_core_hello(c,...) pw_core_method(c,hello,0,__VA_ARGS__)
|
||||
#define pw_core_sync(c,...) pw_core_method(c,sync,0,__VA_ARGS__)
|
||||
#define pw_core_pong(c,...) pw_core_method(c,pong,0,__VA_ARGS__)
|
||||
#define pw_core_error(c,...) pw_core_method(c,error,0,__VA_ARGS__)
|
||||
|
||||
|
||||
static inline int pw_core_add_listener(struct pw_core *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_core_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_core, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
static inline int pw_core_hello(struct pw_core *object, uint32_t version)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_core, (struct spa_interface*)object, hello, 0,
|
||||
version);
|
||||
}
|
||||
static inline int pw_core_sync(struct pw_core *object, uint32_t id, int seq)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_core, (struct spa_interface*)object, sync, 0,
|
||||
id, seq);
|
||||
}
|
||||
static inline int pw_core_pong(struct pw_core *object, uint32_t id, int seq)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_core, (struct spa_interface*)object, pong, 0,
|
||||
id, seq);
|
||||
}
|
||||
static inline 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,
|
||||
pw_core, (struct spa_interface*)object, error, 0,
|
||||
id, seq, res, message);
|
||||
}
|
||||
static inline
|
||||
SPA_PRINTF_FUNC(5, 0) int
|
||||
pw_core_errorv(struct pw_core *core, uint32_t id, int seq,
|
||||
|
|
@ -377,13 +395,10 @@ pw_core_errorf(struct pw_core *core, uint32_t id, int seq,
|
|||
static inline struct pw_registry *
|
||||
pw_core_get_registry(struct pw_core *core, uint32_t version, size_t user_data_size)
|
||||
{
|
||||
struct pw_registry *res = NULL;
|
||||
spa_interface_call_res((struct spa_interface*)core,
|
||||
struct pw_core_methods, res,
|
||||
get_registry, 0, version, user_data_size);
|
||||
return res;
|
||||
return spa_api_method_r(struct pw_registry*, NULL,
|
||||
pw_core, (struct spa_interface*)core, get_registry, 0,
|
||||
version, user_data_size);
|
||||
}
|
||||
|
||||
static inline void *
|
||||
pw_core_create_object(struct pw_core *core,
|
||||
const char *factory_name,
|
||||
|
|
@ -392,15 +407,16 @@ pw_core_create_object(struct pw_core *core,
|
|||
const struct spa_dict *props,
|
||||
size_t user_data_size)
|
||||
{
|
||||
void *res = NULL;
|
||||
spa_interface_call_res((struct spa_interface*)core,
|
||||
struct pw_core_methods, res,
|
||||
create_object, 0, factory_name,
|
||||
type, version, props, user_data_size);
|
||||
return res;
|
||||
return spa_api_method_r(void*, NULL,
|
||||
pw_core, (struct spa_interface*)core, create_object, 0,
|
||||
factory_name, type, version, props, user_data_size);
|
||||
}
|
||||
static inline void
|
||||
pw_core_destroy(struct pw_core *core, void *proxy)
|
||||
{
|
||||
spa_api_method_v(pw_core, (struct spa_interface*)core, destroy, 0,
|
||||
proxy);
|
||||
}
|
||||
|
||||
#define pw_core_destroy(c,...) pw_core_method(c,destroy,0,__VA_ARGS__)
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
@ -516,31 +532,31 @@ struct pw_registry_methods {
|
|||
int (*destroy) (void *object, uint32_t id);
|
||||
};
|
||||
|
||||
#define pw_registry_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_registry_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
/** Registry */
|
||||
#define pw_registry_add_listener(p,...) pw_registry_method(p,add_listener,0,__VA_ARGS__)
|
||||
|
||||
static inline int pw_registry_add_listener(struct pw_registry *registry,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_registry_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_registry, (struct spa_interface*)registry, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
static inline void *
|
||||
pw_registry_bind(struct pw_registry *registry,
|
||||
uint32_t id, const char *type, uint32_t version,
|
||||
size_t user_data_size)
|
||||
{
|
||||
void *res = NULL;
|
||||
spa_interface_call_res((struct spa_interface*)registry,
|
||||
struct pw_registry_methods, res,
|
||||
bind, 0, id, type, version, user_data_size);
|
||||
return res;
|
||||
return spa_api_method_r(void*, NULL,
|
||||
pw_registry, (struct spa_interface*)registry, bind, 0,
|
||||
id, type, version, user_data_size);
|
||||
}
|
||||
static inline int
|
||||
pw_registry_destroy(struct pw_registry *registry, uint32_t id)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_registry, (struct spa_interface*)registry, destroy, 0, id);
|
||||
}
|
||||
|
||||
#define pw_registry_destroy(p,...) pw_registry_method(p,destroy,0,__VA_ARGS__)
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
|
|||
|
|
@ -141,19 +141,36 @@ struct pw_device_methods {
|
|||
const struct spa_pod *param);
|
||||
};
|
||||
|
||||
#define pw_device_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_device_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_device_add_listener(c,...) pw_device_method(c,add_listener,0,__VA_ARGS__)
|
||||
#define pw_device_subscribe_params(c,...) pw_device_method(c,subscribe_params,0,__VA_ARGS__)
|
||||
#define pw_device_enum_params(c,...) pw_device_method(c,enum_params,0,__VA_ARGS__)
|
||||
#define pw_device_set_param(c,...) pw_device_method(c,set_param,0,__VA_ARGS__)
|
||||
static inline int pw_device_add_listener(struct pw_device *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_device_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_device, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
static inline int pw_device_subscribe_params(struct pw_device *object, uint32_t *ids, uint32_t n_ids)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_device, (struct spa_interface*)object, subscribe_params, 0,
|
||||
ids, n_ids);
|
||||
}
|
||||
static inline int pw_device_enum_params(struct pw_device *object,
|
||||
int seq, uint32_t id, uint32_t start, uint32_t num,
|
||||
const struct spa_pod *filter)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_device, (struct spa_interface*)object, enum_params, 0,
|
||||
seq, id, start, num, filter);
|
||||
}
|
||||
static inline int pw_device_set_param(struct pw_device *object, uint32_t id, uint32_t flags,
|
||||
const struct spa_pod *param)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_device, (struct spa_interface*)object, set_param, 0,
|
||||
id, flags, param);
|
||||
}
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
|
|||
|
|
@ -303,33 +303,54 @@ struct pw_client_node_methods {
|
|||
struct spa_buffer **buffers);
|
||||
};
|
||||
|
||||
|
||||
#define pw_client_node_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_client_node_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_client_node_add_listener(c,...) pw_client_node_method(c,add_listener,0,__VA_ARGS__)
|
||||
|
||||
static inline int pw_client_node_add_listener(struct pw_client_node *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_client_node_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
|
||||
add_listener, 0, listener, events, data);
|
||||
}
|
||||
static inline struct pw_node *
|
||||
pw_client_node_get_node(struct pw_client_node *p, uint32_t version, size_t user_data_size)
|
||||
{
|
||||
struct pw_node *res = NULL;
|
||||
spa_interface_call_res((struct spa_interface*)p,
|
||||
struct pw_client_node_methods, res,
|
||||
return spa_api_method_r(struct pw_node*, NULL, pw_client_node, (struct spa_interface*)p,
|
||||
get_node, 0, version, user_data_size);
|
||||
return res;
|
||||
}
|
||||
|
||||
#define pw_client_node_update(c,...) pw_client_node_method(c,update,0,__VA_ARGS__)
|
||||
#define pw_client_node_port_update(c,...) pw_client_node_method(c,port_update,0,__VA_ARGS__)
|
||||
#define pw_client_node_set_active(c,...) pw_client_node_method(c,set_active,0,__VA_ARGS__)
|
||||
#define pw_client_node_event(c,...) pw_client_node_method(c,event,0,__VA_ARGS__)
|
||||
#define pw_client_node_port_buffers(c,...) pw_client_node_method(c,port_buffers,0,__VA_ARGS__)
|
||||
static inline int pw_client_node_update(struct pw_client_node *object,
|
||||
uint32_t change_mask,
|
||||
uint32_t n_params, const struct spa_pod **params,
|
||||
const struct spa_node_info *info)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
|
||||
update, 0, change_mask, n_params, params, info);
|
||||
}
|
||||
static inline int pw_client_node_port_update(struct pw_client_node *object,
|
||||
enum spa_direction direction, uint32_t port_id,
|
||||
uint32_t change_mask,
|
||||
uint32_t n_params, const struct spa_pod **params,
|
||||
const struct spa_port_info *info)
|
||||
{
|
||||
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);
|
||||
}
|
||||
static inline 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,
|
||||
set_active, 0, active);
|
||||
}
|
||||
static inline 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,
|
||||
event, 0, event);
|
||||
}
|
||||
static inline int pw_client_node_port_buffers(struct pw_client_node *object,
|
||||
enum spa_direction direction, uint32_t port_id,
|
||||
uint32_t mix_id, uint32_t n_buffers, struct spa_buffer **buffers)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP, pw_client_node, (struct spa_interface*)object,
|
||||
port_buffers, 0, direction, port_id, mix_id, n_buffers, buffers);
|
||||
}
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
|
|||
|
|
@ -89,19 +89,30 @@ struct pw_metadata_methods {
|
|||
int (*clear) (void *object);
|
||||
};
|
||||
|
||||
|
||||
#define pw_metadata_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_metadata_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_metadata_add_listener(c,...) pw_metadata_method(c,add_listener,0,__VA_ARGS__)
|
||||
#define pw_metadata_set_property(c,...) pw_metadata_method(c,set_property,0,__VA_ARGS__)
|
||||
#define pw_metadata_clear(c) pw_metadata_method(c,clear,0)
|
||||
static inline int pw_metadata_add_listener(struct pw_metadata *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_metadata_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_metadata, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
static inline int pw_metadata_set_property(struct pw_metadata *object,
|
||||
uint32_t subject,
|
||||
const char *key,
|
||||
const char *type,
|
||||
const char *value)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_metadata, (struct spa_interface*)object, set_property, 0,
|
||||
subject, key, type, value);
|
||||
}
|
||||
static inline int pw_metadata_clear(struct pw_metadata *object)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_metadata, (struct spa_interface*)object, clear, 0);
|
||||
}
|
||||
|
||||
#define PW_KEY_METADATA_NAME "metadata.name"
|
||||
#define PW_KEY_METADATA_VALUES "metadata.values"
|
||||
|
|
|
|||
|
|
@ -53,16 +53,15 @@ struct pw_profiler_methods {
|
|||
void *data);
|
||||
};
|
||||
|
||||
#define pw_profiler_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_profiler_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_profiler_add_listener(c,...) pw_profiler_method(c,add_listener,0,__VA_ARGS__)
|
||||
static inline int pw_profiler_add_listener(struct pw_profiler *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_profiler_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_profiler, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
|
||||
#define PW_KEY_PROFILER_NAME "profiler.name"
|
||||
|
||||
|
|
|
|||
|
|
@ -94,18 +94,23 @@ struct pw_security_context_methods {
|
|||
const struct spa_dict *props);
|
||||
};
|
||||
|
||||
static inline int pw_security_context_add_listener(struct pw_security_context *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_security_context_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_security_context, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
|
||||
#define pw_security_context_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_security_context_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_security_context_add_listener(c,...) pw_security_context_method(c,add_listener,0,__VA_ARGS__)
|
||||
#define pw_security_context_create(c,...) pw_security_context_method(c,create,0,__VA_ARGS__)
|
||||
static inline int pw_security_context_create(struct pw_security_context *object,
|
||||
int listen_fd, int close_fd, const struct spa_dict *props)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_security_context, (struct spa_interface*)object, create, 0,
|
||||
listen_fd, close_fd, props);
|
||||
}
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
|
|||
|
|
@ -83,16 +83,15 @@ struct pw_factory_methods {
|
|||
void *data);
|
||||
};
|
||||
|
||||
#define pw_factory_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_factory_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_factory_add_listener(c,...) pw_factory_method(c,add_listener,0,__VA_ARGS__)
|
||||
static inline int pw_factory_add_listener(struct pw_factory *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_factory_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_factory, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
|
|||
|
|
@ -108,16 +108,15 @@ struct pw_link_methods {
|
|||
void *data);
|
||||
};
|
||||
|
||||
#define pw_link_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_link_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_link_add_listener(c,...) pw_link_method(c,add_listener,0,__VA_ARGS__)
|
||||
static inline int pw_link_add_listener(struct pw_link *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_link_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_link, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
|
|||
|
|
@ -81,16 +81,15 @@ struct pw_module_methods {
|
|||
void *data);
|
||||
};
|
||||
|
||||
#define pw_module_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_module_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_module_add_listener(c,...) pw_module_method(c,add_listener,0,__VA_ARGS__)
|
||||
static inline int pw_module_add_listener(struct pw_module *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_module_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_module, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
|
|||
|
|
@ -179,21 +179,42 @@ struct pw_node_methods {
|
|||
int (*send_command) (void *object, const struct spa_command *command);
|
||||
};
|
||||
|
||||
#define pw_node_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_node_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
/** Node */
|
||||
#define pw_node_add_listener(c,...) pw_node_method(c,add_listener,0,__VA_ARGS__)
|
||||
#define pw_node_subscribe_params(c,...) pw_node_method(c,subscribe_params,0,__VA_ARGS__)
|
||||
#define pw_node_enum_params(c,...) pw_node_method(c,enum_params,0,__VA_ARGS__)
|
||||
#define pw_node_set_param(c,...) pw_node_method(c,set_param,0,__VA_ARGS__)
|
||||
#define pw_node_send_command(c,...) pw_node_method(c,send_command,0,__VA_ARGS__)
|
||||
static inline int pw_node_add_listener(struct pw_node *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_node_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_node, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
static inline int pw_node_subscribe_params(struct pw_node *object, uint32_t *ids, uint32_t n_ids)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_node, (struct spa_interface*)object, subscribe_params, 0,
|
||||
ids, n_ids);
|
||||
}
|
||||
static inline int pw_node_enum_params(struct pw_node *object,
|
||||
int seq, uint32_t id, uint32_t start, uint32_t num,
|
||||
const struct spa_pod *filter)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_node, (struct spa_interface*)object, enum_params, 0,
|
||||
seq, id, start, num, filter);
|
||||
}
|
||||
static inline int pw_node_set_param(struct pw_node *object, uint32_t id, uint32_t flags,
|
||||
const struct spa_pod *param)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_node, (struct spa_interface*)object, set_param, 0,
|
||||
id, flags, param);
|
||||
}
|
||||
static inline int pw_node_send_command(struct pw_node *object, const struct spa_command *command)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_node, (struct spa_interface*)object, send_command, 0, command);
|
||||
}
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
|
|||
|
|
@ -141,18 +141,29 @@ struct pw_port_methods {
|
|||
const struct spa_pod *filter);
|
||||
};
|
||||
|
||||
#define pw_port_method(o,method,version,...) \
|
||||
({ \
|
||||
int _res = -ENOTSUP; \
|
||||
spa_interface_call_res((struct spa_interface*)o, \
|
||||
struct pw_port_methods, _res, \
|
||||
method, version, ##__VA_ARGS__); \
|
||||
_res; \
|
||||
})
|
||||
|
||||
#define pw_port_add_listener(c,...) pw_port_method(c,add_listener,0,__VA_ARGS__)
|
||||
#define pw_port_subscribe_params(c,...) pw_port_method(c,subscribe_params,0,__VA_ARGS__)
|
||||
#define pw_port_enum_params(c,...) pw_port_method(c,enum_params,0,__VA_ARGS__)
|
||||
static inline int pw_port_add_listener(struct pw_port *object,
|
||||
struct spa_hook *listener,
|
||||
const struct pw_port_events *events,
|
||||
void *data)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_port, (struct spa_interface*)object, add_listener, 0,
|
||||
listener, events, data);
|
||||
}
|
||||
static inline int pw_port_subscribe_params(struct pw_port *object, uint32_t *ids, uint32_t n_ids)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_port, (struct spa_interface*)object, subscribe_params, 0,
|
||||
ids, n_ids);
|
||||
}
|
||||
static inline int pw_port_enum_params(struct pw_port *object,
|
||||
int seq, uint32_t id, uint32_t start, uint32_t num,
|
||||
const struct spa_pod *filter)
|
||||
{
|
||||
return spa_api_method_r(int, -ENOTSUP,
|
||||
pw_port, (struct spa_interface*)object, enum_params, 0,
|
||||
seq, id, start, num, filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* \}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
#include <locale.h>
|
||||
#include <ncurses.h>
|
||||
|
||||
#undef clear
|
||||
|
||||
#include <spa/utils/result.h>
|
||||
#include <spa/utils/string.h>
|
||||
#include <spa/pod/parser.h>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue