Make interface types a string

This is more in line with wayland and it allows us to create new
interfaces in modules without having to add anything to the type
enum. It also removes some lookups to map type_id to readable
name in debug.
This commit is contained in:
Wim Taymans 2019-12-19 13:15:10 +01:00
parent 9657486a81
commit f391353c7f
123 changed files with 791 additions and 1251 deletions

View file

@ -96,6 +96,9 @@ struct object {
struct client *client;
#define INTERFACE_Port 0
#define INTERFACE_Node 1
#define INTERFACE_Link 2
uint32_t type;
uint32_t id;
@ -410,7 +413,7 @@ static struct port * alloc_port(struct client *c, enum spa_direction direction)
spa_list_remove(&p->link);
o = alloc_object(c);
o->type = PW_TYPE_INTERFACE_Port;
o->type = INTERFACE_Port;
o->id = SPA_ID_INVALID;
o->port.node_id = c->node_id;
o->port.port_id = p->id;
@ -1838,20 +1841,21 @@ static const struct pw_metadata_events metadata_events = {
};
static void registry_event_global(void *data, uint32_t id,
uint32_t permissions, uint32_t type, uint32_t version,
uint32_t permissions, const char *type, uint32_t version,
const struct spa_dict *props)
{
struct client *c = (struct client *) data;
struct object *o, *ot;
const char *str;
uint32_t object_type;
size_t size;
if (props == NULL)
return;
switch (type) {
case PW_TYPE_INTERFACE_Node:
if (strcmp(type, PW_TYPE_INTERFACE_Node) == 0) {
o = alloc_object(c);
object_type = INTERFACE_Node;
if ((str = spa_dict_lookup(props, PW_KEY_NODE_DESCRIPTION)) == NULL &&
(str = spa_dict_lookup(props, PW_KEY_NODE_NICK)) == NULL &&
@ -1865,16 +1869,15 @@ static void registry_event_global(void *data, uint32_t id,
pw_log_debug(NAME" %p: add node %d", c, id);
spa_list_append(&c->context.nodes, &o->link);
break;
case PW_TYPE_INTERFACE_Port:
{
}
else if (strcmp(type, PW_TYPE_INTERFACE_Port) == 0) {
const struct spa_dict_item *item;
unsigned long flags = 0;
jack_port_type_id_t type_id;
uint32_t node_id;
char full_name[1024];
object_type = INTERFACE_Port;
if ((str = spa_dict_lookup(props, PW_KEY_FORMAT_DSP)) == NULL)
str = "other";
if ((type_id = string_to_type(str)) == SPA_ID_INVALID)
@ -1923,7 +1926,7 @@ static void registry_event_global(void *data, uint32_t id,
spa_list_append(&c->context.ports, &o->link);
ot = pw_map_lookup(&c->context.globals, node_id);
if (ot == NULL || ot->type != PW_TYPE_INTERFACE_Node)
if (ot == NULL || ot->type != INTERFACE_Node)
goto exit_free;
snprintf(o->port.name, sizeof(o->port.name), "%s:%s", ot->node.name, str);
@ -1954,10 +1957,11 @@ static void registry_event_global(void *data, uint32_t id,
}
pw_log_debug(NAME" %p: add port %d %s %d", c, id, o->port.name, type_id);
break;
}
case PW_TYPE_INTERFACE_Link:
else if (strcmp(type, PW_TYPE_INTERFACE_Link) == 0) {
o = alloc_object(c);
object_type = INTERFACE_Link;
spa_list_append(&c->context.links, &o->link);
if ((str = spa_dict_lookup(props, PW_KEY_LINK_OUTPUT_PORT)) == NULL)
@ -1970,10 +1974,8 @@ static void registry_event_global(void *data, uint32_t id,
pw_log_debug(NAME" %p: add link %d %d->%d", c, id,
o->port_link.src, o->port_link.dst);
break;
case PW_TYPE_INTERFACE_Metadata:
{
}
else if (strcmp(type, PW_TYPE_INTERFACE_Metadata) == 0) {
struct pw_proxy *proxy;
if (c->metadata)
@ -1990,11 +1992,11 @@ static void registry_event_global(void *data, uint32_t id,
&metadata_events, c);
goto exit;
}
default:
else {
goto exit;
}
o->type = type;
o->type = object_type;
o->id = id;
size = pw_map_get_size(&c->context.globals);
@ -2004,18 +2006,18 @@ static void registry_event_global(void *data, uint32_t id,
pw_thread_loop_unlock(c->context.loop);
switch (type) {
case PW_TYPE_INTERFACE_Node:
switch (o->type) {
case INTERFACE_Node:
if (c->registration_callback)
c->registration_callback(o->node.name, 1, c->registration_arg);
break;
case PW_TYPE_INTERFACE_Port:
case INTERFACE_Port:
if (c->portregistration_callback)
c->portregistration_callback(o->id, 1, c->portregistration_arg);
break;
case PW_TYPE_INTERFACE_Link:
case INTERFACE_Link:
if (c->connect_callback)
c->connect_callback(o->port_link.src, o->port_link.dst, 1, c->connect_arg);
break;
@ -2043,15 +2045,15 @@ static void registry_event_global_remove(void *object, uint32_t id)
pw_thread_loop_unlock(c->context.loop);
switch (o->type) {
case PW_TYPE_INTERFACE_Node:
case INTERFACE_Node:
if (c->registration_callback)
c->registration_callback(o->node.name, 0, c->registration_arg);
break;
case PW_TYPE_INTERFACE_Port:
case INTERFACE_Port:
if (c->portregistration_callback)
c->portregistration_callback(o->id, 0, c->portregistration_arg);
break;
case PW_TYPE_INTERFACE_Link:
case INTERFACE_Link:
if (c->connect_callback)
c->connect_callback(o->port_link.src, o->port_link.dst, 0, c->connect_arg);
break;
@ -2846,7 +2848,7 @@ int jack_port_unregister (jack_client_t *client, jack_port_t *port)
struct port *p;
int res;
if (o->type != PW_TYPE_INTERFACE_Port || o->port.port_id == SPA_ID_INVALID) {
if (o->type != INTERFACE_Port || o->port.port_id == SPA_ID_INVALID) {
pw_log_error(NAME" %p: invalid port %p", client, port);
return -EINVAL;
}
@ -2963,7 +2965,7 @@ void * jack_port_get_buffer (jack_port_t *port, jack_nframes_t frames)
c = o->client;
if (o->type != PW_TYPE_INTERFACE_Port || o->port.port_id == SPA_ID_INVALID) {
if (o->type != INTERFACE_Port || o->port.port_id == SPA_ID_INVALID) {
pw_log_error(NAME" %p: invalid port %p", c, port);
return NULL;
}
@ -3052,7 +3054,7 @@ SPA_EXPORT
int jack_port_is_mine (const jack_client_t *client, const jack_port_t *port)
{
struct object *o = (struct object *) port;
return o->type == PW_TYPE_INTERFACE_Port && o->port.port_id != SPA_ID_INVALID;
return o->type == INTERFACE_Port && o->port.port_id != SPA_ID_INVALID;
}
SPA_EXPORT
@ -3714,7 +3716,7 @@ jack_port_t * jack_port_by_id (jack_client_t *client,
o = pw_map_lookup(&c->context.globals, port_id);
pw_log_debug(NAME" %p: port %d -> %p", c, port_id, o);
if (o == NULL || o->type != PW_TYPE_INTERFACE_Port)
if (o == NULL || o->type != INTERFACE_Port)
goto exit;
res = o;

View file

@ -54,6 +54,7 @@ static void global_free(pa_context *c, struct global *g)
}
if (g->props)
pw_properties_free(g->props);
free(g->type);
free(g);
}
@ -152,7 +153,7 @@ struct global *pa_context_find_linked(pa_context *c, uint32_t idx)
struct global *g, *f;
spa_list_for_each(g, &c->globals, link) {
if (g->type != PW_TYPE_INTERFACE_EndpointLink)
if (strcmp(g->type, PW_TYPE_INTERFACE_EndpointLink) != 0)
continue;
pw_log_debug("context %p: %p %d %d:%d %d:%d", c, g, idx,
@ -577,8 +578,7 @@ static int set_mask(pa_context *c, struct global *g)
pw_destroy_t destroy;
uint32_t client_version;
switch (g->type) {
case PW_TYPE_INTERFACE_Device:
if (strcmp(g->type, PW_TYPE_INTERFACE_Device) == 0) {
if (g->props == NULL)
return 0;
if ((str = pw_properties_get(g->props, PW_KEY_MEDIA_CLASS)) == NULL)
@ -595,9 +595,7 @@ static int set_mask(pa_context *c, struct global *g)
client_version = PW_VERSION_DEVICE;
destroy = device_destroy;
spa_list_init(&g->card_info.profiles);
break;
case PW_TYPE_INTERFACE_Endpoint:
} else if (strcmp(g->type, PW_TYPE_INTERFACE_Endpoint) == 0) {
if (g->props == NULL)
return 0;
@ -660,9 +658,7 @@ static int set_mask(pa_context *c, struct global *g)
destroy = endpoint_destroy;
g->endpoint_info.volume = 1.0;
g->endpoint_info.mute = false;
break;
case PW_TYPE_INTERFACE_EndpointStream:
} else if (strcmp(g->type, PW_TYPE_INTERFACE_EndpointStream) == 0) {
if (g->props == NULL)
return 0;
@ -672,27 +668,21 @@ static int set_mask(pa_context *c, struct global *g)
}
/* streams get transformed into profiles on the device */
pw_log_debug("found endpoint stream %d", g->id);
break;
case PW_TYPE_INTERFACE_Module:
} else if (strcmp(g->type, PW_TYPE_INTERFACE_Module) == 0) {
pw_log_debug("found module %d", g->id);
g->mask = PA_SUBSCRIPTION_MASK_MODULE;
g->event = PA_SUBSCRIPTION_EVENT_MODULE;
events = &module_events;
client_version = PW_VERSION_MODULE;
destroy = module_destroy;
break;
case PW_TYPE_INTERFACE_Client:
} else if (strcmp(g->type, PW_TYPE_INTERFACE_Client) == 0) {
pw_log_debug("found client %d", g->id);
g->mask = PA_SUBSCRIPTION_MASK_CLIENT;
g->event = PA_SUBSCRIPTION_EVENT_CLIENT;
events = &client_events;
client_version = PW_VERSION_CLIENT;
destroy = client_destroy;
break;
case PW_TYPE_INTERFACE_EndpointLink:
} else if (strcmp(g->type, PW_TYPE_INTERFACE_EndpointLink) == 0) {
if ((str = pw_properties_get(g->props, PW_KEY_ENDPOINT_LINK_OUTPUT_ENDPOINT)) == NULL)
return 0;
g->link_info.output = pa_context_find_global(c, pw_properties_parse_int(str));
@ -710,9 +700,7 @@ static int set_mask(pa_context *c, struct global *g)
if (!g->link_info.input->init)
emit_event(c, g->link_info.input, PA_SUBSCRIPTION_EVENT_CHANGE);
break;
default:
} else {
return 0;
}
@ -749,7 +737,7 @@ static inline void insert_global(pa_context *c, struct global *global)
}
static void registry_event_global(void *data, uint32_t id,
uint32_t permissions, uint32_t type, uint32_t version,
uint32_t permissions, const char *type, uint32_t version,
const struct spa_dict *props)
{
pa_context *c = data;
@ -757,10 +745,10 @@ static void registry_event_global(void *data, uint32_t id,
int res;
g = calloc(1, sizeof(struct global));
pw_log_debug("context %p: global %d %u %p", c, id, type, g);
pw_log_debug("context %p: global %d %s %p", c, id, type, g);
g->context = c;
g->id = id;
g->type = type;
g->type = strdup(type);
g->init = true;
g->props = props ? pw_properties_new_dict(props) : NULL;

View file

@ -219,7 +219,7 @@ struct param {
struct global {
struct spa_list link;
uint32_t id;
uint32_t type;
char *type;
struct pw_properties *props;
pa_context *context;

View file

@ -42,7 +42,9 @@ extern "C" {
* Devices or Nodes.
*
*/
#define SPA_VERSION_DEVICE 0
#define SPA_TYPE_INTERFACE_Device SPA_TYPE_INFO_INTERFACE_BASE "Device"
#define SPA_VERSION_DEVICE 0
struct spa_device { struct spa_interface iface; };
/**
@ -75,7 +77,7 @@ struct spa_device_object_info {
#define SPA_VERSION_DEVICE_OBJECT_INFO 0
uint32_t version;
uint32_t type; /**< the object type managed by this device */
const char *type; /**< the object type managed by this device */
const char *factory_name; /**< a factory name that implements the object */
#define SPA_DEVICE_OBJECT_CHANGE_MASK_FLAGS (1u<<0)

View file

@ -40,7 +40,9 @@ extern "C" {
/**
* A spa_node is a component that can consume and produce buffers.
*/
#define SPA_VERSION_NODE 0
#define SPA_TYPE_INTERFACE_Node SPA_TYPE_INFO_INTERFACE_BASE "Node"
#define SPA_VERSION_NODE 0
struct spa_node { struct spa_interface iface; };
/**

View file

@ -37,7 +37,9 @@ extern "C" {
/**
* The CPU features interface
*/
#define SPA_VERSION_CPU 0
#define SPA_TYPE_INTERFACE_CPU SPA_TYPE_INFO_INTERFACE_BASE "CPU"
#define SPA_VERSION_CPU 0
struct spa_cpu { struct spa_interface iface; };
/* x86 specific */

View file

@ -31,7 +31,9 @@ extern "C" {
#include <spa/support/loop.h>
#define SPA_VERSION_DBUS 0
#define SPA_TYPE_INTERFACE_DBus SPA_TYPE_INFO_INTERFACE_BASE "DBus"
#define SPA_VERSION_DBUS 0
struct spa_dbus { struct spa_interface iface; };
enum spa_dbus_type {

View file

@ -46,10 +46,13 @@ enum spa_log_level {
/**
* The Log interface
*/
#define SPA_TYPE_INTERFACE_Log SPA_TYPE_INFO_INTERFACE_BASE "Log"
#define SPA_VERSION_LOG 0
struct spa_log {
/** the version of this log. This can be used to expand this
* structure in the future */
#define SPA_VERSION_LOG 0
struct spa_interface iface;
/**
* Logging level, everything above this level is not logged

View file

@ -33,12 +33,19 @@ extern "C" {
#include <spa/utils/hook.h>
#include <spa/support/system.h>
#define SPA_TYPE_INTERFACE_Loop SPA_TYPE_INFO_INTERFACE_BASE "Loop"
#define SPA_TYPE_INTERFACE_DataLoop SPA_TYPE_INFO_INTERFACE_BASE "DataLoop"
#define SPA_VERSION_LOOP 0
struct spa_loop { struct spa_interface iface; };
#define SPA_TYPE_INTERFACE_LoopControl SPA_TYPE_INFO_INTERFACE_BASE "LoopControl"
#define SPA_VERSION_LOOP_CONTROL 0
struct spa_loop_control { struct spa_interface iface; };
#define SPA_TYPE_INTERFACE_LoopUtils SPA_TYPE_INFO_INTERFACE_BASE "LoopUtils"
#define SPA_VERSION_LOOP_UTILS 0
struct spa_loop_utils { struct spa_interface iface; };
struct spa_source;
typedef void (*spa_source_func_t) (struct spa_source *source);

View file

@ -50,7 +50,7 @@ struct spa_handle {
* -ENOTSUP when there are no interfaces
* -EINVAL when handle or info is NULL
*/
int (*get_interface) (struct spa_handle *handle, uint32_t type, void **interface);
int (*get_interface) (struct spa_handle *handle, const char *type, void **interface);
/**
* Clean up the memory of \a handle. After this, \a handle should not be used
* anymore.
@ -69,8 +69,8 @@ struct spa_handle {
* handles.
*/
struct spa_interface_info {
uint32_t type; /*< the type of the interface, can be
* used to get the interface */
const char *type; /*< the type of the interface, can be
* used to get the interface */
};
/**
@ -78,18 +78,18 @@ struct spa_interface_info {
* a factory. It can be extra information or interfaces such as logging.
*/
struct spa_support {
uint32_t type; /*< the type of the support item */
void *data; /*< specific data for the item */
const char *type; /*< the type of the support item */
void *data; /*< specific data for the item */
};
/** Find a support item of the given type */
static inline void *spa_support_find(const struct spa_support *support,
uint32_t n_support,
uint32_t type)
const char *type)
{
uint32_t i;
for (i = 0; i < n_support; i++) {
if (support[i].type == type)
if (strcmp(support[i].type, type) == 0)
return support[i].data;
}
return NULL;

View file

@ -37,6 +37,9 @@ extern "C" {
/**
* a collection of core system functions
*/
#define SPA_TYPE_INTERFACE_System SPA_TYPE_INFO_INTERFACE_BASE "System"
#define SPA_TYPE_INTERFACE_DataSystem SPA_TYPE_INFO_INTERFACE_BASE "DataSystem"
#define SPA_VERSION_SYSTEM 0
struct spa_system { struct spa_interface iface; };

View file

@ -54,7 +54,7 @@ struct spa_callbacks {
#define SPA_CALLBACKS_INIT(_funcs,_data) (struct spa_callbacks){ _funcs, _data, }
struct spa_interface {
uint32_t type;
const char *type;
uint32_t version;
struct spa_callbacks cb;
};

View file

@ -98,21 +98,6 @@ static const struct spa_type_info spa_types[] = {
{ SPA_TYPE_POINTER_Meta, SPA_TYPE_Pointer, SPA_TYPE_INFO_POINTER_BASE "Meta", NULL },
{ SPA_TYPE_POINTER_Dict, SPA_TYPE_Pointer, SPA_TYPE_INFO_POINTER_BASE "Dict", NULL },
{ SPA_TYPE_INTERFACE_START, SPA_TYPE_Pointer, SPA_TYPE_INFO_Interface, NULL },
{ SPA_TYPE_INTERFACE_Handle, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "Handle", NULL },
{ SPA_TYPE_INTERFACE_HandleFactory, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "HandleFactory", NULL },
{ SPA_TYPE_INTERFACE_Log, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "Log", NULL },
{ SPA_TYPE_INTERFACE_System, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "System", NULL },
{ SPA_TYPE_INTERFACE_Loop, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "Loop", NULL },
{ SPA_TYPE_INTERFACE_LoopControl, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "LoopControl", NULL },
{ SPA_TYPE_INTERFACE_LoopUtils, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "LoopUtils", NULL },
{ SPA_TYPE_INTERFACE_DataSystem, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "DataSystem", NULL },
{ SPA_TYPE_INTERFACE_DataLoop, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "DataLoop", NULL },
{ SPA_TYPE_INTERFACE_DBus, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "DBus", NULL },
{ SPA_TYPE_INTERFACE_Node, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "Node", NULL },
{ SPA_TYPE_INTERFACE_Device, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "Device", NULL },
{ SPA_TYPE_INTERFACE_CPU, SPA_TYPE_Pointer, SPA_TYPE_INFO_INTERFACE_BASE "CPU", NULL },
{ SPA_TYPE_EVENT_START, SPA_TYPE_Object, SPA_TYPE_INFO_Event, NULL },
{ SPA_TYPE_EVENT_Device, SPA_TYPE_Object, SPA_TYPE_INFO_EVENT_BASE "Device", NULL },
{ SPA_TYPE_EVENT_Node, SPA_TYPE_Object, SPA_TYPE_INFO_EVENT_BASE "Node", spa_type_node_event },

View file

@ -63,37 +63,20 @@ enum {
SPA_TYPE_POINTER_Dict,
SPA_TYPE_POINTER_LAST, /**< not part of ABI */
/* Interfaces */
SPA_TYPE_INTERFACE_START = 0x20000,
SPA_TYPE_INTERFACE_Handle, /**< object handle */
SPA_TYPE_INTERFACE_HandleFactory, /**< factory for object handles */
SPA_TYPE_INTERFACE_Log, /**< log interface */
SPA_TYPE_INTERFACE_System, /**< System functions */
SPA_TYPE_INTERFACE_Loop, /**< main loop support */
SPA_TYPE_INTERFACE_LoopControl, /**< control of loops */
SPA_TYPE_INTERFACE_LoopUtils, /**< loop utilities */
SPA_TYPE_INTERFACE_DataSystem, /**< System functions for data loop */
SPA_TYPE_INTERFACE_DataLoop, /**< a data loop */
SPA_TYPE_INTERFACE_DBus, /**< dbus connection */
SPA_TYPE_INTERFACE_Node, /**< nodes for data processing */
SPA_TYPE_INTERFACE_Device, /**< device managing nodes */
SPA_TYPE_INTERFACE_CPU, /**< CPU functions */
SPA_TYPE_INTERFACE_LAST, /**< not part of ABI */
/* Events */
SPA_TYPE_EVENT_START = 0x30000,
SPA_TYPE_EVENT_START = 0x20000,
SPA_TYPE_EVENT_Device,
SPA_TYPE_EVENT_Node,
SPA_TYPE_EVENT_LAST, /**< not part of ABI */
/* Commands */
SPA_TYPE_COMMAND_START = 0x40000,
SPA_TYPE_COMMAND_START = 0x30000,
SPA_TYPE_COMMAND_Device,
SPA_TYPE_COMMAND_Node,
SPA_TYPE_COMMAND_LAST, /**< not part of ABI */
/* Objects */
SPA_TYPE_OBJECT_START = 0x50000,
SPA_TYPE_OBJECT_START = 0x40000,
SPA_TYPE_OBJECT_PropInfo,
SPA_TYPE_OBJECT_Props,
SPA_TYPE_OBJECT_Format,

View file

@ -33,6 +33,7 @@
#include <spa/support/log.h>
#include <spa/utils/type.h>
#include <spa/node/node.h>
#include <spa/utils/keys.h>
#include <spa/utils/names.h>
#include <spa/support/loop.h>
@ -124,6 +125,7 @@ static int emit_node(struct impl *this, snd_pcm_info_t *pcminfo, uint32_t id)
info = SPA_DEVICE_OBJECT_INFO_INIT();
info.type = SPA_TYPE_INTERFACE_Node;
if (snd_pcm_info_get_stream(pcminfo) == SND_PCM_STREAM_PLAYBACK) {
info.factory_name = SPA_NAME_API_ALSA_PCM_SINK;
stream = "playback";
@ -433,7 +435,7 @@ static const struct spa_device_methods impl_device = {
.set_param = impl_set_param,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -442,7 +444,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Device)
if (strcmp(type, SPA_TYPE_INTERFACE_Device) == 0)
*interface = &this->device;
else
return -ENOENT;
@ -471,7 +473,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
const char *str;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -481,13 +482,7 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->device.iface = SPA_INTERFACE_INIT(
SPA_TYPE_INTERFACE_Device,

View file

@ -652,7 +652,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct state *this;
@ -661,7 +661,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct state *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -695,19 +695,11 @@ impl_init(const struct spa_handle_factory *factory,
handle->clear = impl_clear;
this = (struct state *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
if (this->data_loop == NULL) {
spa_log_error(this->log, "a data loop is needed");
return -EINVAL;

View file

@ -683,7 +683,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct state *this;
@ -692,7 +692,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct state *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -730,19 +730,10 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct state *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
if (this->data_loop == NULL) {
spa_log_error(this->log, NAME" %p: a data loop is needed", this);
return -EINVAL;

View file

@ -796,7 +796,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct seq_state *this;
@ -805,7 +805,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct seq_state *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -851,22 +851,11 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct seq_state *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_Loop:
this->main_loop = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->main_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Loop);
if (this->data_loop == NULL) {
spa_log_error(this->log, "a data loop is needed");
return -EINVAL;

View file

@ -541,7 +541,7 @@ static const struct spa_device_methods impl_device = {
.add_listener = impl_device_add_listener,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -550,13 +550,11 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
switch (type) {
case SPA_TYPE_INTERFACE_Device:
if (strcmp(type, SPA_TYPE_INTERFACE_Device) == 0)
*interface = &this->device;
break;
default:
else
return -ENOENT;
}
return 0;
}
@ -583,7 +581,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -593,18 +590,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_Loop:
this->main_loop = support[i].data;
break;
default:
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->main_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Loop);
if (this->main_loop == NULL) {
spa_log_error(this->log, "a main-loop is needed");
return -EINVAL;

View file

@ -917,7 +917,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -926,7 +926,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -994,7 +994,6 @@ impl_init(const struct spa_handle_factory *factory,
struct impl *this;
void *iface;
const char *str;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -1004,16 +1003,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_CPU:
this->cpu = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->cpu = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_CPU);
if (info == NULL || (str = spa_dict_lookup(info, "audio.adapt.slave")) == NULL)
return -EINVAL;

View file

@ -1092,7 +1092,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -1101,7 +1101,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -1160,7 +1160,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
size_t size;
void *iface;
@ -1172,16 +1171,8 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_CPU:
this->cpu = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->cpu = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_CPU);
if (this->cpu)
this->max_align = spa_cpu_get_max_align(this->cpu);

View file

@ -933,7 +933,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -942,7 +942,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -971,7 +971,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -981,16 +980,8 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_CPU:
this->cpu = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->cpu = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_CPU);
if (this->cpu)
this->cpu_flags = spa_cpu_get_flags(this->cpu);

View file

@ -899,7 +899,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -908,7 +908,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -961,7 +961,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -971,25 +970,18 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_CPU:
this->cpu = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->cpu = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_CPU);
if (this->cpu)
this->cpu_flags = spa_cpu_get_flags(this->cpu);
this->node.iface = SPA_INTERFACE_INIT(
SPA_TYPE_INTERFACE_Node,
SPA_VERSION_NODE,
&impl_node, this);
spa_hook_list_init(&this->hooks);
if (this->cpu)
this->cpu_flags = spa_cpu_get_flags(this->cpu);
this->info_all = SPA_PORT_CHANGE_MASK_FLAGS;
this->info = SPA_NODE_INFO_INIT();
this->info.flags = SPA_NODE_FLAG_RT;

View file

@ -1017,7 +1017,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -1026,7 +1026,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -1055,7 +1055,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -1065,16 +1064,8 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_CPU:
this->cpu = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->cpu = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_CPU);
if (this->cpu)
this->cpu_flags = spa_cpu_get_flags(this->cpu);

View file

@ -854,7 +854,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -863,7 +863,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -900,7 +900,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
const char *str;
spa_return_val_if_fail(factory != NULL, -EINVAL);
@ -911,16 +910,8 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_CPU:
this->cpu = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->cpu = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_CPU);
if (this->cpu)
this->resample.cpu_flags = spa_cpu_get_flags(this->cpu);

View file

@ -938,7 +938,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -947,7 +947,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -976,7 +976,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -986,16 +985,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_CPU:
this->cpu = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->cpu = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_CPU);
if (this->cpu)
this->cpu_flags = spa_cpu_get_flags(this->cpu);

View file

@ -790,7 +790,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -799,13 +799,11 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
switch (type) {
case SPA_TYPE_INTERFACE_Node:
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
break;
default:
else
return -ENOENT;
}
return 0;
}
@ -830,7 +828,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -840,13 +837,7 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
spa_log_debug(this->log, NAME " %p: init", this);
spa_hook_list_init(&this->hooks);

View file

@ -826,7 +826,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -835,7 +835,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -871,7 +871,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -881,16 +880,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_CPU:
this->cpu = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->cpu = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_CPU);
if (this->cpu)
this->cpu_flags = spa_cpu_get_flags(this->cpu);

View file

@ -764,7 +764,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -773,7 +773,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -802,7 +802,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -812,16 +811,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_CPU:
this->cpu = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->cpu = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_CPU);
if (this->cpu)
this->cpu_flags = spa_cpu_get_flags(this->cpu);

View file

@ -923,7 +923,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -932,7 +932,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -971,7 +971,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -981,19 +980,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
spa_hook_list_init(&this->hooks);

View file

@ -1359,7 +1359,7 @@ static const struct spa_bt_transport_events transport_events = {
.destroy = transport_destroy,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -1368,7 +1368,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -1399,7 +1399,7 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
const char *str;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -1409,19 +1409,10 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
if (this->data_loop == NULL) {
spa_log_error(this->log, "a data loop is needed");
return -EINVAL;
@ -1465,10 +1456,9 @@ impl_init(const struct spa_handle_factory *factory,
port->info.n_params = 5;
spa_list_init(&port->ready);
for (i = 0; info && i < info->n_items; i++) {
if (strcmp(info->items[i].key, SPA_KEY_API_BLUEZ5_TRANSPORT) == 0)
sscanf(info->items[i].value, "pointer:%p", &this->transport);
}
if (info && (str = spa_dict_lookup(info, SPA_KEY_API_BLUEZ5_TRANSPORT)))
sscanf(str, "pointer:%p", &this->transport);
if (this->transport == NULL) {
spa_log_error(this->log, "a transport is needed");
return -EINVAL;

View file

@ -1049,7 +1049,7 @@ static const struct spa_bt_transport_events transport_events = {
.state_changed = transport_state_changed,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -1058,7 +1058,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -1087,7 +1087,7 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
const char *str;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -1097,19 +1097,10 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
if (this->data_loop == NULL) {
spa_log_error(this->log, "a data loop is needed");
return -EINVAL;
@ -1160,10 +1151,9 @@ impl_init(const struct spa_handle_factory *factory,
spa_list_init(&port->ready);
spa_list_init(&port->free);
for (i = 0; info && i < info->n_items; i++) {
if (strcmp(info->items[i].key, SPA_KEY_API_BLUEZ5_TRANSPORT) == 0)
sscanf(info->items[i].value, "pointer:%p", &this->transport);
}
if (info && (str = spa_dict_lookup(info, SPA_KEY_API_BLUEZ5_TRANSPORT)))
sscanf(str, "pointer:%p", &this->transport);
if (this->transport == NULL) {
spa_log_error(this->log, "a transport is needed");
return -EINVAL;

View file

@ -2199,7 +2199,7 @@ static const struct spa_device_methods impl_device = {
.add_listener = impl_device_add_listener,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct spa_bt_monitor *this;
@ -2208,13 +2208,11 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct spa_bt_monitor *) handle;
switch (type) {
case SPA_TYPE_INTERFACE_Device:
if (strcmp(type, SPA_TYPE_INTERFACE_Device) == 0)
*interface = &this->device;
break;
default:
else
return -ENOENT;
}
return 0;
}
@ -2238,7 +2236,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct spa_bt_monitor *this;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -2248,22 +2245,11 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct spa_bt_monitor *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DBus:
this->dbus = support[i].data;
break;
case SPA_TYPE_INTERFACE_Loop:
this->main_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_System:
this->main_system = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->dbus = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DBus);
this->main_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Loop);
this->main_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_System);
if (this->dbus == NULL) {
spa_log_error(this->log, "a dbus is needed");
return -EINVAL;

View file

@ -34,6 +34,7 @@
#include <spa/utils/type.h>
#include <spa/utils/keys.h>
#include <spa/utils/names.h>
#include <spa/node/node.h>
#include <spa/support/loop.h>
#include <spa/support/plugin.h>
#include <spa/monitor/device.h>
@ -183,7 +184,7 @@ static const struct spa_device_methods impl_device = {
.set_param = impl_set_param,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -192,7 +193,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Device)
if (strcmp(type, SPA_TYPE_INTERFACE_Device) == 0)
*interface = &this->device;
else
return -ENOENT;
@ -220,7 +221,7 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
const char *str;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -230,18 +231,11 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
if (info && (str = spa_dict_lookup(info, SPA_KEY_API_BLUEZ5_DEVICE)))
sscanf(str, "pointer:%p", &this->bt_dev);
for (i = 0; info && i < info->n_items; i++) {
if (strcmp(info->items[i].key, SPA_KEY_API_BLUEZ5_DEVICE) == 0)
sscanf(info->items[i].value, "pointer:%p", &this->bt_dev);
}
if (this->bt_dev == NULL) {
spa_log_error(this->log, "a device is needed");
return -EINVAL;

View file

@ -1049,7 +1049,7 @@ static const struct spa_bt_transport_events transport_events = {
.destroy = transport_destroy,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -1058,7 +1058,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -1089,7 +1089,7 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
const char *str;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -1099,19 +1099,10 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
if (this->data_loop == NULL) {
spa_log_error(this->log, "a data loop is needed");
return -EINVAL;
@ -1155,10 +1146,9 @@ impl_init(const struct spa_handle_factory *factory,
port->info.n_params = 5;
spa_list_init(&port->ready);
for (i = 0; info && i < info->n_items; i++) {
if (strcmp(info->items[i].key, SPA_KEY_API_BLUEZ5_TRANSPORT) == 0)
sscanf(info->items[i].value, "pointer:%p", &this->transport);
}
if (info && (str = spa_dict_lookup(info, SPA_KEY_API_BLUEZ5_TRANSPORT)))
sscanf(str, "pointer:%p", &this->transport);
if (this->transport == NULL) {
spa_log_error(this->log, "a transport is needed");
return -EINVAL;

View file

@ -957,7 +957,7 @@ static const struct spa_bt_transport_events transport_events = {
.destroy = transport_destroy,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -966,7 +966,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -995,7 +995,7 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
const char *str;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -1005,19 +1005,10 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
if (this->data_loop == NULL) {
spa_log_error(this->log, "a data loop is needed");
return -EINVAL;
@ -1066,10 +1057,9 @@ impl_init(const struct spa_handle_factory *factory,
spa_list_init(&port->ready);
spa_list_init(&port->free);
for (i = 0; info && i < info->n_items; i++) {
if (strcmp(info->items[i].key, SPA_KEY_API_BLUEZ5_TRANSPORT) == 0)
sscanf(info->items[i].value, "pointer:%p", &this->transport);
}
if (info && (str = spa_dict_lookup(info, SPA_KEY_API_BLUEZ5_TRANSPORT)))
sscanf(str, "pointer:%p", &this->transport);
if (this->transport == NULL) {
spa_log_error(this->log, "a transport is needed");
return -EINVAL;

View file

@ -698,7 +698,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -707,7 +707,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -736,7 +736,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -746,13 +745,7 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
spa_hook_list_init(&this->hooks);

View file

@ -436,7 +436,7 @@ static const struct spa_node_methods impl_node = {
};
static int
impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -445,7 +445,7 @@ impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -461,16 +461,12 @@ spa_ffmpeg_dec_init(struct spa_handle *handle,
{
struct impl *this;
struct port *port;
uint32_t i;
handle->get_interface = impl_get_interface;
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
if (support[i].type == SPA_TYPE_INTERFACE_Log)
this->log = support[i].data;
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
spa_hook_list_init(&this->hooks);

View file

@ -415,7 +415,7 @@ static const struct spa_node_methods impl_node = {
};
static int
impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -424,7 +424,7 @@ impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -439,16 +439,12 @@ spa_ffmpeg_enc_init(struct spa_handle *handle,
{
struct impl *this;
struct port *port;
uint32_t i;
handle->get_interface = impl_get_interface;
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
if (support[i].type == SPA_TYPE_INTERFACE_Log)
this->log = support[i].data;
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
spa_hook_list_init(&this->hooks);

View file

@ -34,6 +34,7 @@
#include <spa/utils/keys.h>
#include <spa/utils/names.h>
#include <spa/utils/result.h>
#include <spa/node/node.h>
#include <spa/support/loop.h>
#include <spa/support/plugin.h>
#include <spa/monitor/device.h>
@ -335,7 +336,7 @@ static const struct spa_device_methods impl_device = {
.set_param = impl_set_param,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -344,13 +345,10 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
switch (type) {
case SPA_TYPE_INTERFACE_Device:
if (strcmp(type, SPA_TYPE_INTERFACE_Device) == 0)
*interface = &this->device;
break;
default:
else
return -ENOENT;
}
return 0;
}
@ -383,7 +381,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
const char *str;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -393,13 +390,7 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->device.iface = SPA_INTERFACE_INIT(
SPA_TYPE_INTERFACE_Device,
@ -409,10 +400,8 @@ impl_init(const struct spa_handle_factory *factory,
reset_props(&this->props);
if (info) {
if ((str = spa_dict_lookup(info, SPA_KEY_API_JACK_SERVER)))
snprintf(this->props.server, 64, "%s", str);
}
if (info && (str = spa_dict_lookup(info, SPA_KEY_API_JACK_SERVER)))
snprintf(this->props.server, 64, "%s", str);
return 0;
}

View file

@ -801,7 +801,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -810,7 +810,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -838,7 +838,7 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
const char *str;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -848,15 +848,11 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
if (support[i].type == SPA_TYPE_INTERFACE_Log)
this->log = support[i].data;
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
if (info && (str = spa_dict_lookup(info, SPA_KEY_API_JACK_CLIENT)))
sscanf(str, "pointer:%p", &this->client);
for (i = 0; info && i < info->n_items; i++) {
if (strcmp(info->items[i].key, SPA_KEY_API_JACK_CLIENT) == 0)
sscanf(info->items[i].value, "pointer:%p", &this->client);
}
if (this->client == NULL) {
spa_log_error(this->log, NAME" %p: missing "SPA_KEY_API_JACK_CLIENT
" property", this);

View file

@ -823,7 +823,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -832,7 +832,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -860,7 +860,7 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
const char *str;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -870,15 +870,11 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
if (support[i].type == SPA_TYPE_INTERFACE_Log)
this->log = support[i].data;
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
if (info && (str = spa_dict_lookup(info, SPA_KEY_API_JACK_CLIENT)))
sscanf(str, "pointer:%p", &this->client);
for (i = 0; info && i < info->n_items; i++) {
if (strcmp(info->items[i].key, SPA_KEY_API_JACK_CLIENT) == 0)
sscanf(info->items[i].value, "pointer:%p", &this->client);
}
if (this->client == NULL) {
spa_log_error(this->log, NAME" %p: missing "SPA_KEY_API_JACK_CLIENT
" property", this);

View file

@ -122,7 +122,7 @@ static const struct spa_cpu_methods impl_cpu = {
.get_max_align = impl_cpu_get_max_align,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -131,7 +131,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_CPU)
if (strcmp(type, SPA_TYPE_INTERFACE_CPU) == 0)
*interface = &this->cpu;
else
return -ENOENT;
@ -160,7 +160,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
const char *str;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -175,13 +174,8 @@ impl_init(const struct spa_handle_factory *factory,
SPA_VERSION_CPU,
&impl_cpu, this);
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->flags = 0;
this->force = SPA_CPU_FORCE_AUTODETECT;
this->max_align = 16;

View file

@ -339,7 +339,7 @@ static const struct spa_dbus_methods impl_dbus = {
.get_connection = impl_get_connection,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -348,7 +348,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_DBus)
if (strcmp(type, SPA_TYPE_INTERFACE_DBus) == 0)
*interface = &this->dbus;
else
return -ENOENT;
@ -377,7 +377,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -393,16 +392,9 @@ impl_init(const struct spa_handle_factory *factory,
SPA_VERSION_DBUS,
&impl_dbus, this);
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_LoopUtils:
this->utils = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->utils = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_LoopUtils);
if (this->utils == NULL) {
spa_log_error(this->log, "a LoopUtils is needed");
return -EINVAL;

View file

@ -362,7 +362,7 @@ static const struct spa_system_methods impl_system = {
.signalfd_read = impl_signalfd_read,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *impl;
@ -371,13 +371,11 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
impl = (struct impl *) handle;
switch (type) {
case SPA_TYPE_INTERFACE_System:
if (strcmp(type, SPA_TYPE_INTERFACE_System) == 0)
*interface = &impl->system;
break;
default:
else
return -ENOENT;
}
return 0;
}
@ -402,7 +400,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *impl;
uint32_t i;
int res;
spa_return_val_if_fail(factory != NULL, -EINVAL);
@ -417,13 +414,8 @@ impl_init(const struct spa_handle_factory *factory,
SPA_VERSION_SYSTEM,
&impl_system, impl);
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
impl->log = support[i].data;
break;
}
}
impl->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
impl->pid = getpid();
if ((res = evl_attach_self("evl-system-%d-%p", impl->pid, impl)) < 0) {

View file

@ -174,7 +174,7 @@ static const struct spa_log_methods impl_log = {
.logv = impl_log_logv,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -183,7 +183,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Log)
if (strcmp(type, SPA_TYPE_INTERFACE_Log) == 0)
*interface = &this->log;
else
return -ENOENT;
@ -222,7 +222,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
struct spa_loop *loop = NULL;
const char *str;
@ -240,16 +239,9 @@ impl_init(const struct spa_handle_factory *factory,
&impl_log, this);
this->log.level = DEFAULT_LOG_LEVEL;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Loop:
loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_System:
this->system = support[i].data;
break;
}
}
loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Loop);
this->system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_System);
if (loop != NULL && this->system != NULL) {
this->source.func = on_trace_event;
this->source.data = this;

View file

@ -664,7 +664,7 @@ static const struct spa_loop_utils_methods impl_loop_utils = {
.destroy_source = loop_destroy_source,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *impl;
@ -673,19 +673,15 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
impl = (struct impl *) handle;
switch (type) {
case SPA_TYPE_INTERFACE_Loop:
if (strcmp(type, SPA_TYPE_INTERFACE_Loop) == 0)
*interface = &impl->loop;
break;
case SPA_TYPE_INTERFACE_LoopControl:
else if (strcmp(type, SPA_TYPE_INTERFACE_LoopControl) == 0)
*interface = &impl->control;
break;
case SPA_TYPE_INTERFACE_LoopUtils:
else if (strcmp(type, SPA_TYPE_INTERFACE_LoopUtils) == 0)
*interface = &impl->utils;
break;
default:
else
return -ENOENT;
}
return 0;
}
@ -724,7 +720,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *impl;
uint32_t i;
int res;
spa_return_val_if_fail(factory != NULL, -EINVAL);
@ -747,16 +742,9 @@ impl_init(const struct spa_handle_factory *factory,
SPA_VERSION_LOOP_UTILS,
&impl_loop_utils, impl);
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
impl->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_System:
impl->system = support[i].data;
break;
}
}
impl->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
impl->system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_System);
if (impl->system == NULL) {
spa_log_error(impl->log, NAME " %p: a System is needed", impl);
res = -EINVAL;

View file

@ -278,7 +278,7 @@ static const struct spa_system_methods impl_system = {
.signalfd_read = impl_signalfd_read,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *impl;
@ -287,13 +287,11 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
impl = (struct impl *) handle;
switch (type) {
case SPA_TYPE_INTERFACE_System:
if (strcmp(type, SPA_TYPE_INTERFACE_System) == 0)
*interface = &impl->system;
break;
default:
else
return -ENOENT;
}
return 0;
}
@ -318,7 +316,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *impl;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -332,13 +329,7 @@ impl_init(const struct spa_handle_factory *factory,
SPA_VERSION_SYSTEM,
&impl_system, impl);
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
impl->log = support[i].data;
break;
}
}
impl->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
spa_log_debug(impl->log, NAME " %p: initialized", impl);

View file

@ -679,7 +679,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -688,7 +688,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -727,7 +727,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -737,19 +736,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
spa_hook_list_init(&this->hooks);

View file

@ -713,7 +713,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -722,7 +722,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -761,7 +761,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -771,19 +770,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
spa_hook_list_init(&this->hooks);

View file

@ -34,6 +34,7 @@
#include <spa/support/loop.h>
#include <spa/utils/keys.h>
#include <spa/utils/names.h>
#include <spa/node/node.h>
#include <spa/pod/builder.h>
#include <spa/monitor/device.h>
#include <spa/monitor/utils.h>
@ -186,7 +187,7 @@ static const struct spa_device_methods impl_device = {
.set_param = impl_set_param,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -195,7 +196,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Device)
if (strcmp(type, SPA_TYPE_INTERFACE_Device) == 0)
*interface = &this->device;
else
return -ENOENT;
@ -223,7 +224,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
const char *str;
spa_return_val_if_fail(factory != NULL, -EINVAL);
@ -232,13 +232,7 @@ impl_init(const struct spa_handle_factory *factory,
handle->get_interface = impl_get_interface;
handle->clear = impl_clear, this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
spa_hook_list_init(&this->hooks);

View file

@ -886,7 +886,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -895,7 +895,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -923,7 +923,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
const char *str;
struct port *port;
int res;
@ -936,16 +935,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
if (this->data_loop == NULL) {
spa_log_error(this->log, "a data_loop is needed");
return -EINVAL;

View file

@ -426,7 +426,7 @@ static const struct spa_device_methods impl_device = {
.add_listener = impl_device_add_listener,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -435,13 +435,10 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
switch (type) {
case SPA_TYPE_INTERFACE_Device:
if (strcmp(type, SPA_TYPE_INTERFACE_Device) == 0)
*interface = &this->device;
break;
default:
else
return -ENOENT;
}
return 0;
}
@ -469,7 +466,6 @@ impl_init(const struct spa_handle_factory *factory,
uint32_t n_support)
{
struct impl *this;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -479,16 +475,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_Loop:
this->main_loop = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->main_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Loop);
if (this->main_loop == NULL) {
spa_log_error(this->log, "a main-loop is needed");
return -EINVAL;

View file

@ -801,7 +801,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -810,7 +810,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -864,7 +864,6 @@ impl_init(const struct spa_handle_factory *factory,
void *iface;
#endif
const char *str;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -874,13 +873,8 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
if (info == NULL || (str = spa_dict_lookup(info, "video.adapt.slave")) == NULL)
return -EINVAL;

View file

@ -808,7 +808,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -817,7 +817,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -856,7 +856,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -866,19 +865,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
spa_hook_list_init(&this->hooks);

View file

@ -737,7 +737,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -746,7 +746,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -775,7 +775,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -785,10 +784,7 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
if (support[i].type == SPA_TYPE_INTERFACE_Log)
this->log = support[i].data;
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
spa_hook_list_init(&this->hooks);

View file

@ -824,7 +824,7 @@ static const struct spa_node_methods impl_node = {
.process = impl_node_process,
};
static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **interface)
static int impl_get_interface(struct spa_handle *handle, const char *type, void **interface)
{
struct impl *this;
@ -833,7 +833,7 @@ static int impl_get_interface(struct spa_handle *handle, uint32_t type, void **i
this = (struct impl *) handle;
if (type == SPA_TYPE_INTERFACE_Node)
if (strcmp(type, SPA_TYPE_INTERFACE_Node) == 0)
*interface = &this->node;
else
return -ENOENT;
@ -872,7 +872,6 @@ impl_init(const struct spa_handle_factory *factory,
{
struct impl *this;
struct port *port;
uint32_t i;
spa_return_val_if_fail(factory != NULL, -EINVAL);
spa_return_val_if_fail(handle != NULL, -EINVAL);
@ -882,19 +881,9 @@ impl_init(const struct spa_handle_factory *factory,
this = (struct impl *) handle;
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
spa_hook_list_init(&this->hooks);

View file

@ -101,27 +101,27 @@ static void test_abi(void)
spa_assert(SPA_TYPE_Pod == 20);
spa_assert(SPA_TYPE_LAST == 21);
spa_assert(SPA_TYPE_EVENT_START == 0x30000);
spa_assert(SPA_TYPE_EVENT_Device == 0x30001);
spa_assert(SPA_TYPE_EVENT_Node == 0x30002);
spa_assert(SPA_TYPE_EVENT_LAST == 0x30003);
spa_assert(SPA_TYPE_EVENT_START == 0x20000);
spa_assert(SPA_TYPE_EVENT_Device == 0x20001);
spa_assert(SPA_TYPE_EVENT_Node == 0x20002);
spa_assert(SPA_TYPE_EVENT_LAST == 0x20003);
spa_assert(SPA_TYPE_COMMAND_START == 0x40000);
spa_assert(SPA_TYPE_COMMAND_Device == 0x40001);
spa_assert(SPA_TYPE_COMMAND_Node == 0x40002);
spa_assert(SPA_TYPE_COMMAND_LAST == 0x40003);
spa_assert(SPA_TYPE_COMMAND_START == 0x30000);
spa_assert(SPA_TYPE_COMMAND_Device == 0x30001);
spa_assert(SPA_TYPE_COMMAND_Node == 0x30002);
spa_assert(SPA_TYPE_COMMAND_LAST == 0x30003);
spa_assert(SPA_TYPE_OBJECT_START == 0x50000);
spa_assert(SPA_TYPE_OBJECT_PropInfo == 0x50001);
spa_assert(SPA_TYPE_OBJECT_Props == 0x50002);
spa_assert(SPA_TYPE_OBJECT_Format == 0x50003);
spa_assert(SPA_TYPE_OBJECT_ParamBuffers == 0x50004);
spa_assert(SPA_TYPE_OBJECT_ParamMeta == 0x50005);
spa_assert(SPA_TYPE_OBJECT_ParamIO == 0x50006);
spa_assert(SPA_TYPE_OBJECT_ParamProfile == 0x50007);
spa_assert(SPA_TYPE_OBJECT_ParamPortConfig == 0x50008);
spa_assert(SPA_TYPE_OBJECT_ParamRoute == 0x50009);
spa_assert(SPA_TYPE_OBJECT_LAST == 0x5000a);
spa_assert(SPA_TYPE_OBJECT_START == 0x40000);
spa_assert(SPA_TYPE_OBJECT_PropInfo == 0x40001);
spa_assert(SPA_TYPE_OBJECT_Props == 0x40002);
spa_assert(SPA_TYPE_OBJECT_Format == 0x40003);
spa_assert(SPA_TYPE_OBJECT_ParamBuffers == 0x40004);
spa_assert(SPA_TYPE_OBJECT_ParamMeta == 0x40005);
spa_assert(SPA_TYPE_OBJECT_ParamIO == 0x40006);
spa_assert(SPA_TYPE_OBJECT_ParamProfile == 0x40007);
spa_assert(SPA_TYPE_OBJECT_ParamPortConfig == 0x40008);
spa_assert(SPA_TYPE_OBJECT_ParamRoute == 0x40009);
spa_assert(SPA_TYPE_OBJECT_LAST == 0x4000a);
spa_assert(SPA_TYPE_VENDOR_PipeWire == 0x02000000);
spa_assert(SPA_TYPE_VENDOR_Other == 0x7f000000);

View file

@ -218,7 +218,7 @@ static void inspect_factory(struct data *data, const struct spa_handle_factory *
spa_strerror(res));
break;
}
printf(" interface: '%d'\n", info->type);
printf(" interface: '%s'\n", info->type);
}
handle = calloc(1, spa_handle_factory_get_size(factory, NULL));
@ -237,14 +237,14 @@ static void inspect_factory(struct data *data, const struct spa_handle_factory *
spa_strerror(res));
break;
}
printf(" interface: '%d'\n", info->type);
printf(" interface: '%s'\n", info->type);
if ((res = spa_handle_get_interface(handle, info->type, &interface)) < 0) {
printf("can't get interface: %d %d\n", info->type, res);
printf("can't get interface: %s: %d\n", info->type, res);
continue;
}
if (info->type == SPA_TYPE_INTERFACE_Node)
if (strcmp(info->type, SPA_TYPE_INTERFACE_Node) == 0)
inspect_node(data, interface);
else
printf("skipping unknown interface\n");

View file

@ -194,7 +194,7 @@ int main(int argc, char *argv[])
break;
}
if (info->type == SPA_TYPE_INTERFACE_Device) {
if (strcmp(info->type, SPA_TYPE_INTERFACE_Device) == 0) {
struct spa_handle *handle;
void *interface;

View file

@ -34,6 +34,7 @@
#include <spa/node/node.h>
#include <spa/utils/hook.h>
#include <spa/utils/names.h>
#include <spa/utils/result.h>
#include <spa/param/audio/format-utils.h>
#include <spa/param/props.h>
#include <spa/debug/dict.h>
@ -116,7 +117,7 @@ static struct node *create_node(struct object *obj, uint32_t id,
pw_log_debug("new node %u", id);
if (info->type != SPA_TYPE_INTERFACE_Node)
if (strcmp(info->type, SPA_TYPE_INTERFACE_Node) != 0)
return NULL;
handle = pw_context_load_spa_handle(context,
@ -128,7 +129,7 @@ static struct node *create_node(struct object *obj, uint32_t id,
}
if ((res = spa_handle_get_interface(handle, info->type, &iface)) < 0) {
pw_log_error("can't get %d interface: %d", info->type, res);
pw_log_error("can't get %s interface: %s", info->type, spa_strerror(res));
goto unload_handle;
}
@ -225,7 +226,7 @@ static struct object *create_object(struct impl *impl, uint32_t id,
pw_log_debug("new object %u", id);
if (info->type != SPA_TYPE_INTERFACE_Device)
if (strcmp(info->type, SPA_TYPE_INTERFACE_Device) != 0)
return NULL;
handle = pw_context_load_spa_handle(context,
@ -237,7 +238,7 @@ static struct object *create_object(struct impl *impl, uint32_t id,
}
if ((res = spa_handle_get_interface(handle, info->type, &iface)) < 0) {
pw_log_error("can't get %d interface: %d", info->type, res);
pw_log_error("can't get %s interface: %s", info->type, spa_strerror(res));
goto unload_handle;
}

View file

@ -195,7 +195,7 @@ static int client_endpoint_create_link(void *object, const struct spa_dict *prop
goto exit;
}
obj = sm_media_session_find_object(impl->session, atoi(str));
if (obj == NULL || obj->type != PW_TYPE_INTERFACE_Endpoint) {
if (obj == NULL || strcmp(obj->type, PW_TYPE_INTERFACE_Endpoint) !=0) {
pw_log_warn(NAME" %p: could not find endpoint %s (%p)", impl, str, obj);
res = -EINVAL;
goto exit;
@ -707,15 +707,11 @@ static void session_create(void *data, struct sm_object *object)
struct impl *impl = data;
int res;
switch (object->type) {
case PW_TYPE_INTERFACE_Device:
if (strcmp(object->type, PW_TYPE_INTERFACE_Device) == 0)
res = handle_device(impl, object);
break;
default:
else
res = 0;
break;
}
if (res < 0) {
pw_log_warn(NAME" %p: can't handle global %d: %s", impl,
object->id, spa_strerror(res));
@ -726,16 +722,10 @@ static void session_remove(void *data, struct sm_object *object)
{
struct impl *impl = data;
switch (object->type) {
case PW_TYPE_INTERFACE_Device:
{
if (strcmp(object->type, PW_TYPE_INTERFACE_Device) == 0) {
struct device *device;
if ((device = sm_object_get_data(object, SESSION_KEY)) != NULL)
destroy_device(impl, device);
break;
}
default:
break;
}
}

View file

@ -35,6 +35,7 @@
#include <spa/monitor/device.h>
#include <spa/node/node.h>
#include <spa/node/keys.h>
#include <spa/utils/result.h>
#include <spa/utils/hook.h>
#include <spa/utils/names.h>
#include <spa/utils/keys.h>
@ -147,7 +148,7 @@ static struct node *alsa_create_node(struct device *device, uint32_t id,
pw_log_debug("new node %u", id);
if (info->type != SPA_TYPE_INTERFACE_Node) {
if (strcmp(info->type, SPA_TYPE_INTERFACE_Node) != 0) {
errno = EINVAL;
return NULL;
}
@ -570,7 +571,7 @@ static struct device *alsa_create_device(struct impl *impl, uint32_t id,
pw_log_debug("new device %u", id);
if (info->type != SPA_TYPE_INTERFACE_Device) {
if (strcmp(info->type, SPA_TYPE_INTERFACE_Device) != 0) {
errno = EINVAL;
return NULL;
}
@ -585,7 +586,7 @@ static struct device *alsa_create_device(struct impl *impl, uint32_t id,
}
if ((res = spa_handle_get_interface(handle, info->type, &iface)) < 0) {
pw_log_error("can't get %d interface: %d", info->type, res);
pw_log_error("can't get %s interface: %s", info->type, spa_strerror(res));
goto unload_handle;
}

View file

@ -35,6 +35,7 @@
#include <spa/utils/hook.h>
#include <spa/utils/result.h>
#include <spa/utils/names.h>
#include <spa/utils/result.h>
#include <spa/param/audio/format-utils.h>
#include <spa/param/props.h>
#include <spa/debug/dict.h>
@ -115,7 +116,7 @@ static struct bluez5_node *bluez5_create_node(struct bluez5_object *obj, uint32_
pw_log_debug("new node %u", id);
if (info->type != SPA_TYPE_INTERFACE_Node) {
if (strcmp(info->type, SPA_TYPE_INTERFACE_Node) != 0) {
errno = EINVAL;
return NULL;
}
@ -247,7 +248,7 @@ static struct bluez5_object *bluez5_create_object(struct impl *impl, uint32_t id
pw_log_debug("new object %u", id);
if (info->type != SPA_TYPE_INTERFACE_Device) {
if (strcmp(info->type, SPA_TYPE_INTERFACE_Device) != 0) {
errno = EINVAL;
return NULL;
}
@ -262,7 +263,7 @@ static struct bluez5_object *bluez5_create_object(struct impl *impl, uint32_t id
}
if ((res = spa_handle_get_interface(handle, info->type, &iface)) < 0) {
pw_log_error("can't get %d interface: %d", info->type, res);
pw_log_error("can't get %s interface: %s", info->type, spa_strerror(res));
goto unload_handle;
}

View file

@ -147,7 +147,7 @@ struct link {
};
struct object_info {
uint32_t type;
const char *type;
uint32_t version;
const void *events;
size_t size;
@ -387,6 +387,7 @@ static void device_destroy(void *object)
if (device->info)
pw_device_info_free(device->info);
device->info = NULL;
}
static const struct object_info device_info = {
@ -920,7 +921,10 @@ destroy_proxy(void *data)
if (obj->destroy)
obj->destroy(obj);
pw_properties_free(obj->props);
if (obj->props)
pw_properties_free(obj->props);
obj->props = NULL;
spa_list_consume(d, &obj->data, link) {
spa_list_remove(&d->link);
free(d);
@ -967,41 +971,31 @@ int sm_object_sync_update(struct sm_object *obj)
return obj->pending;
}
static const struct object_info *get_object_info(struct impl *impl, uint32_t type)
static const struct object_info *get_object_info(struct impl *impl, const char *type)
{
const struct object_info *info;
switch (type) {
case PW_TYPE_INTERFACE_Client:
if (strcmp(type, PW_TYPE_INTERFACE_Client) == 0)
info = &client_info;
break;
case SPA_TYPE_INTERFACE_Device:
else if (strcmp(type, SPA_TYPE_INTERFACE_Device) == 0)
info = &spa_device_info;
break;
case PW_TYPE_INTERFACE_Device:
else if (strcmp(type, PW_TYPE_INTERFACE_Device) == 0)
info = &device_info;
break;
case PW_TYPE_INTERFACE_Node:
else if (strcmp(type, PW_TYPE_INTERFACE_Node) == 0)
info = &node_info;
break;
case PW_TYPE_INTERFACE_Port:
else if (strcmp(type, PW_TYPE_INTERFACE_Port) == 0)
info = &port_info;
break;
case PW_TYPE_INTERFACE_Session:
else if (strcmp(type, PW_TYPE_INTERFACE_Session) == 0)
info = &session_info;
break;
case PW_TYPE_INTERFACE_Endpoint:
else if (strcmp(type, PW_TYPE_INTERFACE_Endpoint) == 0)
info = &endpoint_info;
break;
case PW_TYPE_INTERFACE_EndpointStream:
else if (strcmp(type, PW_TYPE_INTERFACE_EndpointStream) == 0)
info = &endpoint_stream_info;
break;
case PW_TYPE_INTERFACE_EndpointLink:
else if (strcmp(type, PW_TYPE_INTERFACE_EndpointLink) == 0)
info = &endpoint_link_info;
break;
default:
else
info = NULL;
break;
}
return info;
}
@ -1041,7 +1035,7 @@ static struct sm_object *
create_object(struct impl *impl, struct pw_proxy *proxy,
const struct spa_dict *props)
{
uint32_t type;
const char *type;
const struct object_info *info;
struct sm_object *obj;
@ -1049,7 +1043,7 @@ create_object(struct impl *impl, struct pw_proxy *proxy,
info = get_object_info(impl, type);
if (info == NULL) {
pw_log_error(NAME" %p: unknown object type %d", impl, type);
pw_log_error(NAME" %p: unknown object type %s", impl, type);
errno = ENOTSUP;
return NULL;
}
@ -1062,7 +1056,7 @@ create_object(struct impl *impl, struct pw_proxy *proxy,
static struct sm_object *
bind_object(struct impl *impl, const struct object_info *info, uint32_t id,
uint32_t permissions, uint32_t type, uint32_t version,
uint32_t permissions, const char *type, uint32_t version,
const struct spa_dict *props)
{
int res;
@ -1090,15 +1084,15 @@ error:
static int
update_object(struct impl *impl, const struct object_info *info,
struct sm_object *obj, uint32_t id,
uint32_t permissions, uint32_t type, uint32_t version,
uint32_t permissions, const char *type, uint32_t version,
const struct spa_dict *props)
{
pw_properties_update(obj->props, props);
if (obj->type == type)
if (strcmp(obj->type, type) == 0)
return 0;
pw_log_debug(NAME" %p: update type:%d -> type:%d", impl, obj->type, type);
pw_log_debug(NAME" %p: update type:%s -> type:%s", impl, obj->type, type);
obj->handle = obj->proxy;
spa_hook_remove(&obj->proxy_listener);
pw_proxy_add_listener(obj->handle, &obj->handle_listener, &proxy_events, obj);
@ -1108,7 +1102,7 @@ update_object(struct impl *impl, const struct object_info *info,
obj->proxy = pw_registry_bind(impl->registry,
id, info->type, info->version, 0);
obj->type = type;
obj->type = info->type;
pw_proxy_add_listener(obj->proxy, &obj->proxy_listener, &proxy_events, obj);
if (info->events)
@ -1123,15 +1117,14 @@ update_object(struct impl *impl, const struct object_info *info,
static void
registry_global(void *data, uint32_t id,
uint32_t permissions, uint32_t type, uint32_t version,
uint32_t permissions, const char *type, uint32_t version,
const struct spa_dict *props)
{
struct impl *impl = data;
struct sm_object *obj;
const struct object_info *info;
pw_log_debug(NAME " %p: new global '%d' %s/%d", impl, id,
spa_debug_type_find_name(pw_type_info(), type), version);
pw_log_debug(NAME " %p: new global '%d' %s/%d", impl, id, type, version);
info = get_object_info(impl, type);
if (info == NULL)
@ -1141,7 +1134,7 @@ registry_global(void *data, uint32_t id,
if (obj == NULL) {
bind_object(impl, info, id, permissions, type, version, props);
} else {
pw_log_debug(NAME " %p: our object %d appeared %d/%d",
pw_log_debug(NAME " %p: our object %d appeared %s/%s",
impl, id, obj->type, type);
update_object(impl, info, obj, id, permissions, type, version, props);
}
@ -1259,7 +1252,7 @@ static const struct pw_registry_events registry_events = {
};
struct pw_proxy *sm_media_session_export(struct sm_media_session *sess,
uint32_t type, const struct spa_dict *props,
const char *type, const struct spa_dict *props,
void *object, size_t user_data_size)
{
struct impl *impl = SPA_CONTAINER_OF(sess, struct impl, this);
@ -1285,7 +1278,7 @@ struct sm_device *sm_media_session_export_device(struct sm_media_session *sess,
}
struct pw_proxy *sm_media_session_create_object(struct sm_media_session *sess,
const char *factory_name, uint32_t type, uint32_t version,
const char *factory_name, const char *type, uint32_t version,
const struct spa_dict *props, size_t user_data_size)
{
struct impl *impl = SPA_CONTAINER_OF(sess, struct impl, this);
@ -1431,36 +1424,36 @@ int sm_media_session_create_links(struct sm_media_session *sess,
/* find output node */
if ((str = spa_dict_lookup(dict, PW_KEY_LINK_OUTPUT_NODE)) != NULL &&
(obj = find_object(impl, atoi(str))) != NULL &&
obj->type == PW_TYPE_INTERFACE_Node) {
strcmp(obj->type, PW_TYPE_INTERFACE_Node) == 0) {
outnode = (struct sm_node*)obj;
}
/* find input node */
if ((str = spa_dict_lookup(dict, PW_KEY_LINK_INPUT_NODE)) != NULL &&
(obj = find_object(impl, atoi(str))) != NULL &&
obj->type == PW_TYPE_INTERFACE_Node) {
strcmp(obj->type, PW_TYPE_INTERFACE_Node) == 0) {
innode = (struct sm_node*)obj;
}
/* find endpoints and streams */
if ((str = spa_dict_lookup(dict, PW_KEY_ENDPOINT_LINK_OUTPUT_ENDPOINT)) != NULL &&
(obj = find_object(impl, atoi(str))) != NULL &&
obj->type == PW_TYPE_INTERFACE_Endpoint) {
strcmp(obj->type, PW_TYPE_INTERFACE_Endpoint) == 0) {
outendpoint = (struct sm_endpoint*)obj;
}
if ((str = spa_dict_lookup(dict, PW_KEY_ENDPOINT_LINK_OUTPUT_STREAM)) != NULL &&
(obj = find_object(impl, atoi(str))) != NULL &&
obj->type == PW_TYPE_INTERFACE_EndpointStream) {
strcmp(obj->type, PW_TYPE_INTERFACE_EndpointStream) == 0) {
outstream = (struct sm_endpoint_stream*)obj;
}
if ((str = spa_dict_lookup(dict, PW_KEY_ENDPOINT_LINK_INPUT_ENDPOINT)) != NULL &&
(obj = find_object(impl, atoi(str))) != NULL &&
obj->type == PW_TYPE_INTERFACE_Endpoint) {
strcmp(obj->type, PW_TYPE_INTERFACE_Endpoint) == 0) {
inendpoint = (struct sm_endpoint*)obj;
}
if ((str = spa_dict_lookup(dict, PW_KEY_ENDPOINT_LINK_INPUT_STREAM)) != NULL &&
(obj = find_object(impl, atoi(str))) != NULL &&
obj->type == PW_TYPE_INTERFACE_EndpointStream) {
strcmp(obj->type, PW_TYPE_INTERFACE_EndpointStream) == 0) {
instream = (struct sm_endpoint_stream*)obj;
}

View file

@ -46,7 +46,7 @@ struct sm_object_events {
struct sm_object {
uint32_t id;
uint32_t type;
const char *type;
struct spa_list link;
struct sm_media_session *session;
@ -226,14 +226,14 @@ struct sm_object *sm_media_session_find_object(struct sm_media_session *sess, ui
int sm_media_session_schedule_rescan(struct sm_media_session *sess);
struct pw_proxy *sm_media_session_export(struct sm_media_session *sess,
uint32_t type, const struct spa_dict *props,
const char *type, const struct spa_dict *props,
void *object, size_t user_data_size);
struct sm_device *sm_media_session_export_device(struct sm_media_session *sess,
const struct spa_dict *props, struct spa_device *device);
struct pw_proxy *sm_media_session_create_object(struct sm_media_session *sess,
const char *factory_name, uint32_t type, uint32_t version,
const char *factory_name, const char *type, uint32_t version,
const struct spa_dict *props, size_t user_data_size);
struct sm_node *sm_media_session_create_node(struct sm_media_session *sess,

View file

@ -219,19 +219,13 @@ static void session_create(void *data, struct sm_object *object)
struct impl *impl = data;
int res;
switch (object->type) {
case PW_TYPE_INTERFACE_Endpoint:
if (strcmp(object->type, PW_TYPE_INTERFACE_Endpoint) == 0)
res = handle_endpoint(impl, object);
break;
case PW_TYPE_INTERFACE_EndpointStream:
else if (strcmp(object->type, PW_TYPE_INTERFACE_EndpointStream) == 0)
res = handle_stream(impl, object);
break;
default:
else
res = 0;
break;
}
if (res < 0) {
pw_log_warn(NAME" %p: can't handle global %d", impl, object->id);
}
@ -244,23 +238,15 @@ static void session_remove(void *data, struct sm_object *object)
struct impl *impl = data;
pw_log_debug(NAME " %p: remove global '%d'", impl, object->id);
switch (object->type) {
case PW_TYPE_INTERFACE_Endpoint:
{
if (strcmp(object->type, PW_TYPE_INTERFACE_Endpoint) == 0) {
struct endpoint *ep;
if ((ep = sm_object_get_data(object, SESSION_KEY)) != NULL)
destroy_endpoint(impl, ep);
break;
}
case PW_TYPE_INTERFACE_EndpointStream:
{
else if (strcmp(object->type, PW_TYPE_INTERFACE_EndpointStream) == 0) {
struct stream *s;
if ((s = sm_object_get_data(object, SESSION_KEY)) != NULL)
destroy_stream(impl, s);
break;
}
default:
break;
}
sm_media_session_schedule_rescan(impl->session);
@ -444,11 +430,11 @@ static int rescan_endpoint(struct impl *impl, struct endpoint *ep)
pw_log_info(NAME " %p: target:%d", impl, path_id);
if ((obj = sm_media_session_find_object(impl->session, path_id)) != NULL) {
switch (obj->type) {
case PW_TYPE_INTERFACE_Endpoint:
if (strcmp(obj->type, PW_TYPE_INTERFACE_Endpoint) == 0) {
peer = sm_object_get_data(obj, SESSION_KEY);
goto do_link;
case PW_TYPE_INTERFACE_Node:
}
else if (strcmp(obj->type, PW_TYPE_INTERFACE_Node) == 0) {
node = (struct sm_node*)obj;
goto do_link_node;
}
@ -469,7 +455,7 @@ static int rescan_endpoint(struct impl *impl, struct endpoint *ep)
}
obj = sm_media_session_find_object(impl->session, ep->client_id);
if (obj && obj->type == PW_TYPE_INTERFACE_Client) {
if (obj && strcmp(obj->type, PW_TYPE_INTERFACE_Client) == 0) {
pw_client_error((struct pw_client*)obj->proxy,
ep->id, -ENOENT, "no endpoint available");
}

View file

@ -207,7 +207,7 @@ static int client_endpoint_create_link(void *object, const struct spa_dict *prop
goto exit;
}
obj = sm_media_session_find_object(impl->session, atoi(str));
if (obj == NULL || obj->type != PW_TYPE_INTERFACE_Endpoint) {
if (obj == NULL || strcmp(obj->type, PW_TYPE_INTERFACE_Endpoint) != 0) {
pw_log_warn(NAME" %p: could not find endpoint %s (%p)", impl, str, obj);
res = -EINVAL;
goto exit;
@ -557,15 +557,11 @@ static void session_create(void *data, struct sm_object *object)
struct impl *impl = data;
int res;
switch (object->type) {
case PW_TYPE_INTERFACE_Node:
if (strcmp(object->type, PW_TYPE_INTERFACE_Node) == 0)
res = handle_node(impl, object);
break;
default:
else
res = 0;
break;
}
if (res < 0) {
pw_log_warn(NAME" %p: can't handle global %d: %s", impl,
object->id, spa_strerror(res));
@ -576,16 +572,10 @@ static void session_remove(void *data, struct sm_object *object)
{
struct impl *impl = data;
switch (object->type) {
case PW_TYPE_INTERFACE_Node:
{
if (strcmp(object->type, PW_TYPE_INTERFACE_Node) == 0) {
struct node *node;
if ((node = sm_object_get_data(object, SESSION_KEY)) != NULL)
destroy_node(impl, node);
break;
}
default:
break;
}
}

View file

@ -161,7 +161,7 @@ static int client_endpoint_create_link(void *object, const struct spa_dict *prop
goto exit;
}
obj = sm_media_session_find_object(impl->session, atoi(str));
if (obj == NULL || obj->type != PW_TYPE_INTERFACE_Endpoint) {
if (obj == NULL || strcmp(obj->type, PW_TYPE_INTERFACE_Endpoint) != 0) {
pw_log_warn(NAME" %p: could not find endpoint %s (%p)", impl, str, obj);
res = -EINVAL;
goto exit;
@ -591,15 +591,11 @@ static void session_create(void *data, struct sm_object *object)
struct impl *impl = data;
int res;
switch (object->type) {
case PW_TYPE_INTERFACE_Device:
if (strcmp(object->type, PW_TYPE_INTERFACE_Device) == 0)
res = handle_device(impl, object);
break;
default:
else
res = 0;
break;
}
if (res < 0) {
pw_log_warn(NAME" %p: can't handle global %d: %s", impl,
object->id, spa_strerror(res));
@ -610,16 +606,10 @@ static void session_remove(void *data, struct sm_object *object)
{
struct impl *impl = data;
switch (object->type) {
case PW_TYPE_INTERFACE_Device:
{
if (strcmp(object->type, PW_TYPE_INTERFACE_Device) == 0) {
struct device *device;
if ((device = sm_object_get_data(object, SESSION_KEY)) != NULL)
destroy_device(impl, device);
break;
}
default:
break;
}
}

View file

@ -34,6 +34,7 @@
#include <spa/node/node.h>
#include <spa/utils/hook.h>
#include <spa/utils/names.h>
#include <spa/utils/result.h>
#include <spa/param/props.h>
#include <spa/debug/dict.h>
#include <spa/pod/builder.h>
@ -121,7 +122,7 @@ static struct node *v4l2_create_node(struct device *dev, uint32_t id,
pw_log_debug("new node %u", id);
if (info->type != SPA_TYPE_INTERFACE_Node) {
if (strcmp(info->type, SPA_TYPE_INTERFACE_Node) != 0) {
errno = EINVAL;
return NULL;
}
@ -337,7 +338,7 @@ static struct device *v4l2_create_device(struct impl *impl, uint32_t id,
pw_log_debug("new device %u", id);
if (info->type != SPA_TYPE_INTERFACE_Device) {
if (strcmp(info->type, SPA_TYPE_INTERFACE_Device) != 0) {
errno = EINVAL;
return NULL;
}
@ -352,7 +353,7 @@ static struct device *v4l2_create_device(struct impl *impl, uint32_t id,
}
if ((res = spa_handle_get_interface(handle, info->type, &iface)) < 0) {
pw_log_error("can't get %d interface: %d", info->type, res);
pw_log_error("can't get %s interface: %s", info->type, spa_strerror(res));
goto unload_handle;
}

View file

@ -32,9 +32,10 @@ extern "C" {
#include <spa/utils/defs.h>
#include <spa/param/param.h>
struct pw_client_node;
#define PW_TYPE_INTERFACE_ClientNode PW_TYPE_INFO_INTERFACE_BASE "ClientNode"
#define PW_VERSION_CLIENT_NODE 3
struct pw_client_node;
#define PW_EXTENSION_MODULE_CLIENT_NODE PIPEWIRE_MODULE_PREFIX "module-client-node"

View file

@ -31,9 +31,10 @@ extern "C" {
#include <spa/utils/defs.h>
struct pw_metadata;
#define PW_TYPE_INTERFACE_Metadata PW_TYPE_INFO_INTERFACE_BASE "Metadata"
#define PW_VERSION_METADATA 3
struct pw_metadata;
#define PW_EXTENSION_MODULE_METADATA PIPEWIRE_MODULE_PREFIX "module-metadata"

View file

@ -36,7 +36,9 @@
extern "C" {
#endif
#define PW_VERSION_CLIENT_ENDPOINT 0
#define PW_TYPE_INTERFACE_ClientEndpoint PW_TYPE_INFO_INTERFACE_BASE "ClientEndpoint"
#define PW_VERSION_CLIENT_ENDPOINT 0
struct pw_client_endpoint;
#define PW_CLIENT_ENDPOINT_EVENT_SET_SESSION_ID 0
@ -166,6 +168,7 @@ struct pw_client_endpoint_methods {
#define pw_client_endpoint_update(o,...) pw_client_endpoint_method(o,update,0,__VA_ARGS__)
#define pw_client_endpoint_stream_update(o,...) pw_client_endpoint_method(o,stream_update,0,__VA_ARGS__)
#define PW_TYPE_INTERFACE_ClientSession PW_TYPE_INFO_INTERFACE_BASE "ClientSession"
#define PW_VERSION_CLIENT_SESSION 0
struct pw_client_session;

View file

@ -35,12 +35,19 @@
extern "C" {
#endif
#define PW_VERSION_SESSION 0
#define PW_TYPE_INTERFACE_Session PW_TYPE_INFO_INTERFACE_BASE "Session"
#define PW_VERSION_SESSION 0
struct pw_session;
#define PW_VERSION_ENDPOINT 0
#define PW_TYPE_INTERFACE_Endpoint PW_TYPE_INFO_INTERFACE_BASE "Endpoint"
#define PW_VERSION_ENDPOINT 0
struct pw_endpoint;
#define PW_VERSION_ENDPOINT_STREAM 0
#define PW_TYPE_INTERFACE_EndpointStream PW_TYPE_INFO_INTERFACE_BASE "EndpointStream"
#define PW_VERSION_ENDPOINT_STREAM 0
struct pw_endpoint_stream;
#define PW_TYPE_INTERFACE_EndpointLink PW_TYPE_INFO_INTERFACE_BASE "EndpointLink"
#define PW_VERSION_ENDPOINT_LINK 0
struct pw_endpoint_link;

View file

@ -447,19 +447,18 @@ static const struct pw_proxy_events proxy_port_events = {
};
static void registry_event_global(void *data, uint32_t id, uint32_t permissions,
uint32_t type, uint32_t version,
const char *type, uint32_t version,
const struct spa_dict *props)
{
struct core_data *rd = data;
GstPipeWireDeviceProvider *self = rd->self;
struct node_data *nd;
if (type == PW_TYPE_INTERFACE_Node) {
if (strcmp(type, PW_TYPE_INTERFACE_Node) == 0) {
struct pw_node *node;
node = pw_registry_bind(rd->registry,
id, PW_TYPE_INTERFACE_Node,
PW_VERSION_NODE, sizeof(*nd));
id, type, PW_VERSION_NODE, sizeof(*nd));
if (node == NULL)
goto no_mem;
@ -473,7 +472,7 @@ static void registry_event_global(void *data, uint32_t id, uint32_t permissions,
pw_proxy_add_listener((struct pw_proxy*)node, &nd->proxy_listener, &proxy_node_events, nd);
add_pending(self, &nd->pending, NULL, NULL);
}
else if (type == PW_TYPE_INTERFACE_Port) {
else if (strcmp(type, PW_TYPE_INTERFACE_Port) == 0) {
struct pw_port *port;
struct port_data *pd;
const char *str;
@ -485,8 +484,7 @@ static void registry_event_global(void *data, uint32_t id, uint32_t permissions,
return;
port = pw_registry_bind(rd->registry,
id, PW_TYPE_INTERFACE_Port,
PW_VERSION_PORT, sizeof(*pd));
id, type, PW_VERSION_PORT, sizeof(*pd));
if (port == NULL)
goto no_mem;

View file

@ -138,7 +138,7 @@ static const struct pw_impl_node_events node_events = {
static void *create_object(void *_data,
struct pw_resource *resource,
uint32_t type,
const char *type,
uint32_t version,
struct pw_properties *properties,
uint32_t new_id)

View file

@ -44,7 +44,7 @@ static const struct spa_dict_item module_props[] = {
};
struct pw_proxy *pw_core_spa_device_export(struct pw_core *core,
uint32_t type, const struct spa_dict *props, void *object,
const char *type, const struct spa_dict *props, void *object,
size_t user_data_size);
struct pw_protocol *pw_protocol_native_ext_client_device_init(struct pw_context *context);
@ -60,7 +60,7 @@ struct factory_data {
static void *create_object(void *_data,
struct pw_resource *resource,
uint32_t type,
const char *type,
uint32_t version,
struct pw_properties *properties,
uint32_t new_id)

View file

@ -425,7 +425,7 @@ static void device_marshal_object_info(void *object, uint32_t id,
spa_pod_builder_push_struct(b, &f[1]);
spa_pod_builder_add(b,
SPA_POD_Id(info->type),
SPA_POD_String(info->type),
SPA_POD_Long(change_mask),
SPA_POD_Long(info->flags),
SPA_POD_Int(n_items), NULL);
@ -465,7 +465,7 @@ static int device_demarshal_object_info(void *object,
spa_pod_parser_pod(&p2, ipod);
if (spa_pod_parser_push_struct(&p2, &f2) < 0 ||
spa_pod_parser_get(&p2,
SPA_POD_Id(&info.type),
SPA_POD_String(&info.type),
SPA_POD_Long(&info.change_mask),
SPA_POD_Long(&info.flags),
SPA_POD_Int(&props.n_items), NULL) < 0)

View file

@ -45,9 +45,9 @@ static const struct spa_dict_item module_props[] = {
};
struct pw_proxy *pw_core_node_export(struct pw_core *core,
uint32_t type, const struct spa_dict *props, void *object, size_t user_data_size);
const char *type, const struct spa_dict *props, void *object, size_t user_data_size);
struct pw_proxy *pw_core_spa_node_export(struct pw_core *core,
uint32_t type, const struct spa_dict *props, void *object, size_t user_data_size);
const char *type, const struct spa_dict *props, void *object, size_t user_data_size);
struct pw_protocol *pw_protocol_native_ext_client_node_init(struct pw_context *context);
struct pw_protocol *pw_protocol_native_ext_client_node0_init(struct pw_context *context);
@ -64,7 +64,7 @@ struct factory_data {
static void *create_object(void *_data,
struct pw_resource *resource,
uint32_t type,
const char *type,
uint32_t version,
struct pw_properties *properties,
uint32_t new_id)

View file

@ -1090,21 +1090,10 @@ node_init(struct node *this,
const struct spa_support *support,
uint32_t n_support)
{
uint32_t i;
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
if (this->data_loop == NULL) {
spa_log_error(this->log, "a data-loop is needed");
return -EINVAL;

View file

@ -1078,21 +1078,10 @@ node_init(struct node *this,
const struct spa_support *support,
uint32_t n_support)
{
uint32_t i;
this->log = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_Log);
this->data_loop = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataLoop);
this->data_system = spa_support_find(support, n_support, SPA_TYPE_INTERFACE_DataSystem);
for (i = 0; i < n_support; i++) {
switch (support[i].type) {
case SPA_TYPE_INTERFACE_Log:
this->log = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataLoop:
this->data_loop = support[i].data;
break;
case SPA_TYPE_INTERFACE_DataSystem:
this->data_system = support[i].data;
break;
}
}
if (this->data_loop == NULL) {
spa_log_error(this->log, "a data-loop is needed");
return -EINVAL;

View file

@ -30,6 +30,8 @@ extern "C" {
#include <pipewire/proxy.h>
#define PW_TYPE_INTERFACE_ClientNode PW_TYPE_INFO_INTERFACE_BASE "ClientNode"
#define PW_VERSION_CLIENT_NODE0 0
struct pw_client_node0_message;

View file

@ -172,7 +172,7 @@ static struct pw_impl_port *get_port(struct pw_impl_node *node, enum spa_directi
static void *create_object(void *_data,
struct pw_resource *resource,
uint32_t type,
const char *type,
uint32_t version,
struct pw_properties *properties,
uint32_t new_id)
@ -214,13 +214,13 @@ static void *create_object(void *_data,
input_port_id = str ? pw_properties_parse_int(str) : -1;
global = pw_context_find_global(context, output_node_id);
if (global == NULL || pw_global_get_type(global) != PW_TYPE_INTERFACE_Node)
if (global == NULL || !pw_global_is_type(global, PW_TYPE_INTERFACE_Node))
goto error_output;
output_node = pw_global_get_object(global);
global = pw_context_find_global(context, input_node_id);
if (global == NULL || pw_global_get_type(global) != PW_TYPE_INTERFACE_Node)
if (global == NULL || !pw_global_is_type(global, PW_TYPE_INTERFACE_Node))
goto error_input;
input_node = pw_global_get_object(global);
@ -230,7 +230,7 @@ static void *create_object(void *_data,
}
else {
global = pw_context_find_global(context, output_port_id);
if (global == NULL || pw_global_get_type(global) != PW_TYPE_INTERFACE_Port)
if (global == NULL || !pw_global_is_type(global, PW_TYPE_INTERFACE_Port))
goto error_output_port;
outport = pw_global_get_object(global);
@ -242,7 +242,7 @@ static void *create_object(void *_data,
inport = get_port(input_node, SPA_DIRECTION_INPUT);
else {
global = pw_context_find_global(context, input_port_id);
if (global == NULL || pw_global_get_type(global) != PW_TYPE_INTERFACE_Port)
if (global == NULL || !pw_global_is_type(global, PW_TYPE_INTERFACE_Port))
goto error_input_port;
inport = pw_global_get_object(global);

View file

@ -47,7 +47,7 @@ void * pw_metadata_new(struct pw_context *context, struct pw_resource *resource,
struct pw_properties *properties);
struct pw_proxy *pw_core_metadata_export(struct pw_core *core,
uint32_t type, const struct spa_dict *props, void *object, size_t user_data_size);
const char *type, const struct spa_dict *props, void *object, size_t user_data_size);
int pw_protocol_native_ext_metadata_init(struct pw_context *context);
@ -62,7 +62,7 @@ struct factory_data {
static void *create_object(void *_data,
struct pw_resource *resource,
uint32_t type,
const char *type,
uint32_t version,
struct pw_properties *properties,
uint32_t new_id)

View file

@ -193,7 +193,7 @@ static void push_params(struct spa_pod_builder *b, uint32_t n_params,
static void *
core_method_marshal_create_object(void *object,
const char *factory_name,
uint32_t type, uint32_t version,
const char *type, uint32_t version,
const struct spa_dict *props, size_t user_data_size)
{
struct pw_proxy *proxy = object;
@ -213,7 +213,7 @@ core_method_marshal_create_object(void *object,
spa_pod_builder_push_struct(b, &f);
spa_pod_builder_add(b,
SPA_POD_String(factory_name),
SPA_POD_Id(type),
SPA_POD_String(type),
SPA_POD_Int(version),
NULL);
push_dict(b, props);
@ -595,15 +595,15 @@ static int core_method_demarshal_create_object(void *object, const struct pw_pro
struct pw_resource *resource = object;
struct spa_pod_parser prs;
struct spa_pod_frame f[2];
uint32_t version, type, new_id;
const char *factory_name;
uint32_t version, new_id;
const char *factory_name, *type;
struct spa_dict props = SPA_DICT_INIT(NULL, 0);
spa_pod_parser_init(&prs, msg->data, msg->size);
if (spa_pod_parser_push_struct(&prs, &f[0]) < 0 ||
spa_pod_parser_get(&prs,
SPA_POD_String(&factory_name),
SPA_POD_Id(&type),
SPA_POD_String(&type),
SPA_POD_Int(&version),
NULL) < 0)
return -EINVAL;
@ -664,7 +664,7 @@ static int registry_method_marshal_add_listener(void *object,
}
static void registry_marshal_global(void *object, uint32_t id, uint32_t permissions,
uint32_t type, uint32_t version, const struct spa_dict *props)
const char *type, uint32_t version, const struct spa_dict *props)
{
struct pw_resource *resource = object;
struct spa_pod_builder *b;
@ -676,7 +676,7 @@ static void registry_marshal_global(void *object, uint32_t id, uint32_t permissi
spa_pod_builder_add(b,
SPA_POD_Int(id),
SPA_POD_Int(permissions),
SPA_POD_Id(type),
SPA_POD_String(type),
SPA_POD_Int(version),
NULL);
push_dict(b, props);
@ -701,12 +701,13 @@ static int registry_demarshal_bind(void *object, const struct pw_protocol_native
{
struct pw_resource *resource = object;
struct spa_pod_parser prs;
uint32_t id, version, type, new_id;
uint32_t id, version, new_id;
char *type;
spa_pod_parser_init(&prs, msg->data, msg->size);
if (spa_pod_parser_get_struct(&prs,
SPA_POD_Int(&id),
SPA_POD_Id(&type),
SPA_POD_String(&type),
SPA_POD_Int(&version),
SPA_POD_Int(&new_id)) < 0)
return -EINVAL;
@ -998,7 +999,7 @@ static void factory_marshal_info(void *object, const struct pw_factory_info *inf
spa_pod_builder_add(b,
SPA_POD_Int(info->id),
SPA_POD_String(info->name),
SPA_POD_Id(info->type),
SPA_POD_String(info->type),
SPA_POD_Int(info->version),
SPA_POD_Long(info->change_mask),
NULL);
@ -1021,7 +1022,7 @@ static int factory_demarshal_info(void *object, const struct pw_protocol_native_
spa_pod_parser_get(&prs,
SPA_POD_Int(&info.id),
SPA_POD_String(&info.name),
SPA_POD_Id(&info.type),
SPA_POD_String(&info.type),
SPA_POD_Int(&info.version),
SPA_POD_Long(&info.change_mask), NULL) < 0)
return -EINVAL;
@ -1815,7 +1816,8 @@ static int registry_demarshal_global(void *object, const struct pw_protocol_nati
struct pw_proxy *proxy = object;
struct spa_pod_parser prs;
struct spa_pod_frame f[2];
uint32_t id, permissions, type, version;
uint32_t id, permissions, version;
char *type;
struct spa_dict props = SPA_DICT_INIT(NULL, 0);
spa_pod_parser_init(&prs, msg->data, msg->size);
@ -1823,7 +1825,7 @@ static int registry_demarshal_global(void *object, const struct pw_protocol_nati
spa_pod_parser_get(&prs,
SPA_POD_Int(&id),
SPA_POD_Int(&permissions),
SPA_POD_Id(&type),
SPA_POD_String(&type),
SPA_POD_Int(&version), NULL) < 0)
return -EINVAL;
@ -1856,7 +1858,7 @@ static int registry_demarshal_global_remove(void *object, const struct pw_protoc
}
static void * registry_marshal_bind(void *object, uint32_t id,
uint32_t type, uint32_t version, size_t user_data_size)
const char *type, uint32_t version, size_t user_data_size)
{
struct pw_proxy *proxy = object;
struct spa_pod_builder *b;
@ -1873,7 +1875,7 @@ static void * registry_marshal_bind(void *object, uint32_t id,
spa_pod_builder_add_struct(b,
SPA_POD_Int(id),
SPA_POD_Id(type),
SPA_POD_String(type),
SPA_POD_Int(version),
SPA_POD_Int(new_id));

View file

@ -28,6 +28,9 @@
#include "pipewire/protocol.h"
#include "pipewire/resource.h"
#include "extensions/protocol-native.h"
#include "extensions/metadata.h"
#include "extensions/session-manager.h"
#include "extensions/client-node.h"
#include "interfaces.h"
#include "typemap.h"
@ -275,6 +278,23 @@ uint32_t pw_protocol_native0_type_from_v2(struct pw_impl_client *client, uint32_
return type_map[index].id;
}
SPA_EXPORT
const char * pw_protocol_native0_name_from_v2(struct pw_impl_client *client, uint32_t type)
{
void *t;
uint32_t index;
struct protocol_compat_v2 *compat_v2 = client->compat_v2;
if ((t = pw_map_lookup(&compat_v2->types, type)) == NULL)
return NULL;
index = PW_MAP_PTR_TO_ID(t);
if (index >= SPA_N_ELEMENTS(type_map))
return NULL;
return type_map[index].name;
}
SPA_EXPORT
uint32_t pw_protocol_native0_type_to_v2(struct pw_impl_client *client,
const struct spa_type_info *info, uint32_t type)
@ -614,7 +634,7 @@ static int core_demarshal_create_object(void *object, const struct pw_protocol_n
struct spa_pod_parser prs;
struct spa_pod_frame f;
uint32_t version, type, new_id, i;
const char *factory_name;
const char *factory_name, *type_name;
struct spa_dict props;
spa_pod_parser_init(&prs, msg->data, msg->size);
@ -636,10 +656,12 @@ static int core_demarshal_create_object(void *object, const struct pw_protocol_n
if (spa_pod_parser_get(&prs, "i", &new_id, NULL) < 0)
return -EINVAL;
type = pw_protocol_native0_type_from_v2(client, type);
type_name = pw_protocol_native0_name_from_v2(client, type);
if (type_name == NULL)
return -EINVAL;
return pw_resource_notify(resource, struct pw_core_methods, create_object, 0, factory_name,
type, version,
type_name, version,
&props, new_id);
}
@ -702,19 +724,20 @@ static int core_demarshal_update_types_server(void *object, const struct pw_prot
}
static void registry_marshal_global(void *object, uint32_t id, uint32_t permissions,
uint32_t type, uint32_t version, const struct spa_dict *props)
const char *type, uint32_t version, const struct spa_dict *props)
{
struct pw_resource *resource = object;
struct pw_impl_client *client = resource->client;
struct spa_pod_builder *b;
struct spa_pod_frame f;
uint32_t i, n_items, parent_id;
uint32_t type_id;
b = pw_protocol_native_begin_resource(resource, PW_REGISTRY_V0_EVENT_GLOBAL, NULL);
n_items = props ? props->n_items : 0;
type = pw_protocol_native0_type_to_v2(client, pw_type_info(), type);
type_id = pw_protocol_native0_find_type(client, type);
parent_id = 0;
version = 0;
@ -723,7 +746,7 @@ static void registry_marshal_global(void *object, uint32_t id, uint32_t permissi
"i", id,
"i", parent_id,
"i", permissions,
"I", type,
"I", type_id,
"i", version,
"i", n_items, NULL);
@ -754,6 +777,7 @@ static int registry_demarshal_bind(void *object, const struct pw_protocol_native
struct pw_resource *resource = object;
struct spa_pod_parser prs;
uint32_t id, version, type, new_id;
const char *type_name;
spa_pod_parser_init(&prs, msg->data, msg->size);
if (spa_pod_parser_get_struct(&prs,
@ -763,9 +787,11 @@ static int registry_demarshal_bind(void *object, const struct pw_protocol_native
"i", &new_id) < 0)
return -EINVAL;
type = pw_protocol_native0_type_from_v2(resource->client, type);
type_name = pw_protocol_native0_name_from_v2(resource->client, type);
if (type_name == NULL)
return -EINVAL;
return pw_resource_notify(resource, struct pw_registry_methods, bind, 0, id, type, version, new_id);
return pw_resource_notify(resource, struct pw_registry_methods, bind, 0, id, type_name, version, new_id);
}
static void module_marshal_info(void *object, const struct pw_module_info *info)
@ -810,7 +836,7 @@ static void factory_marshal_info(void *object, const struct pw_factory_info *inf
n_items = info->props ? info->props->n_items : 0;
type = pw_protocol_native0_type_to_v2(client, pw_type_info(), info->type);
type = pw_protocol_native0_find_type(client, info->type);
version = 0;
spa_pod_builder_push_struct(b, &f);

View file

@ -5,34 +5,34 @@ const struct type_info {
uint32_t id;
} type_map[] = {
{ "Spa:Interface:TypeMap", SPA_TYPE_INFO_INTERFACE_BASE, 0, },
{ "Spa:Interface:Log", SPA_TYPE_INFO_INTERFACE_BASE "Log", SPA_TYPE_INTERFACE_Log, },
{ "Spa:Interface:Loop", SPA_TYPE_INFO_INTERFACE_BASE "Loop", SPA_TYPE_INTERFACE_Loop, },
{ "Spa:Interface:LoopControl", SPA_TYPE_INFO_INTERFACE_BASE "LoopControl", SPA_TYPE_INTERFACE_LoopControl, },
{ "Spa:Interface:LoopUtils", SPA_TYPE_INFO_INTERFACE_BASE "LoopUtils", SPA_TYPE_INTERFACE_LoopUtils, },
{ "PipeWire:Interface:Core", PW_TYPE_INFO_INTERFACE_BASE "Core", PW_TYPE_INTERFACE_Core, },
{ "PipeWire:Interface:Registry", PW_TYPE_INFO_INTERFACE_BASE "Registry", PW_TYPE_INTERFACE_Registry, },
{ "PipeWire:Interface:Node", PW_TYPE_INFO_INTERFACE_BASE "Node", PW_TYPE_INTERFACE_Node, },
{ "PipeWire:Interface:Port", PW_TYPE_INFO_INTERFACE_BASE "Port", PW_TYPE_INTERFACE_Port,},
{ "PipeWire:Interface:Factory", PW_TYPE_INFO_INTERFACE_BASE "Factory", PW_TYPE_INTERFACE_Factory, },
{ "PipeWire:Interface:Link", PW_TYPE_INFO_INTERFACE_BASE "Link", PW_TYPE_INTERFACE_Link, },
{ "PipeWire:Interface:Client", PW_TYPE_INFO_INTERFACE_BASE "Client", PW_TYPE_INTERFACE_Client, },
{ "PipeWire:Interface:Module", PW_TYPE_INFO_INTERFACE_BASE "Module", PW_TYPE_INTERFACE_Module, },
{ "PipeWire:Interface:Device", PW_TYPE_INFO_INTERFACE_BASE "Device", PW_TYPE_INTERFACE_Device, },
{ "Spa:Interface:Log", SPA_TYPE_INTERFACE_Log, 0, },
{ "Spa:Interface:Loop", SPA_TYPE_INTERFACE_Loop, 0, },
{ "Spa:Interface:LoopControl", SPA_TYPE_INTERFACE_LoopControl, 0, },
{ "Spa:Interface:LoopUtils", SPA_TYPE_INTERFACE_LoopUtils, 0, },
{ "PipeWire:Interface:Core", PW_TYPE_INTERFACE_Core, 0, },
{ "PipeWire:Interface:Registry", PW_TYPE_INTERFACE_Registry, 0, },
{ "PipeWire:Interface:Node", PW_TYPE_INTERFACE_Node, 0, },
{ "PipeWire:Interface:Port", PW_TYPE_INTERFACE_Port,0, },
{ "PipeWire:Interface:Factory", PW_TYPE_INTERFACE_Factory, 0, },
{ "PipeWire:Interface:Link", PW_TYPE_INTERFACE_Link, 0, },
{ "PipeWire:Interface:Client", PW_TYPE_INTERFACE_Client, 0, },
{ "PipeWire:Interface:Module", PW_TYPE_INTERFACE_Module, 0, },
{ "PipeWire:Interface:Device", PW_TYPE_INTERFACE_Device, 0, },
{ "PipeWire:Interface:Metadata", PW_TYPE_INFO_INTERFACE_BASE "Metadata", PW_TYPE_INTERFACE_Metadata, },
{ "PipeWire:Interface:Session", PW_TYPE_INFO_INTERFACE_BASE "Session", PW_TYPE_INTERFACE_Session, },
{ "PipeWire:Interface:Endpoint", PW_TYPE_INFO_INTERFACE_BASE "Endpoint", PW_TYPE_INTERFACE_Endpoint, },
{ "PipeWire:Interface:EndpointStream", PW_TYPE_INFO_INTERFACE_BASE "EndpointStream", PW_TYPE_INTERFACE_EndpointStream, },
{ "PipeWire:Interface:EndpointLink", PW_TYPE_INFO_INTERFACE_BASE "EndpointLink", PW_TYPE_INTERFACE_EndpointLink, },
{ "PipeWire:Interface:Metadata", PW_TYPE_INTERFACE_Metadata, 0, },
{ "PipeWire:Interface:Session", PW_TYPE_INTERFACE_Session, 0, },
{ "PipeWire:Interface:Endpoint", PW_TYPE_INTERFACE_Endpoint, 0, },
{ "PipeWire:Interface:EndpointStream", PW_TYPE_INTERFACE_EndpointStream, 0, },
{ "PipeWire:Interface:EndpointLink", PW_TYPE_INTERFACE_EndpointLink, 0, },
{ "PipeWire:Interface:ClientNode", PW_TYPE_INFO_INTERFACE_BASE "ClientNode", PW_TYPE_INTERFACE_ClientNode, },
{ "PipeWire:Interface:ClientSession", PW_TYPE_INFO_INTERFACE_BASE "ClientSession", PW_TYPE_INTERFACE_ClientSession, },
{ "PipeWire:Interface:ClientEndpoint", PW_TYPE_INFO_INTERFACE_BASE "ClientEndpoint", PW_TYPE_INTERFACE_ClientEndpoint, },
{ "PipeWire:Interface:ClientNode", PW_TYPE_INTERFACE_ClientNode, 0, },
{ "PipeWire:Interface:ClientSession", PW_TYPE_INTERFACE_ClientSession, 0, },
{ "PipeWire:Interface:ClientEndpoint", PW_TYPE_INTERFACE_ClientEndpoint, 0, },
{ "Spa:Interface:Node", SPA_TYPE_INFO_INTERFACE_BASE "Node", SPA_TYPE_INTERFACE_Node, },
{ "Spa:Interface:Node", SPA_TYPE_INTERFACE_Node, 0, },
{ "Spa:Interface:Clock", },
{ "Spa:Interface:Monitor", },
{ "Spa:Interface:Device", SPA_TYPE_INFO_INTERFACE_BASE "Device", SPA_TYPE_INTERFACE_Device, },
{ "Spa:Interface:Device", SPA_TYPE_INTERFACE_Device, 0, },
{ "Spa:POD:Object:Param:Format", SPA_TYPE_INFO_Format, SPA_TYPE_OBJECT_Format, },
{ "Spa:POD:Object:Param:Props", SPA_TYPE_INFO_Props, SPA_TYPE_OBJECT_Props, },
{ "Spa:Pointer:IO:Buffers", },
@ -102,7 +102,7 @@ const struct type_info {
{ "Spa:Enum:ParamId:IO:Props:In", },
{ "Spa:Enum:ParamId:IO:Props:Out", },
{ "Spa:POD:Object:Param:IO:Prop", },
{ "Spa:Interface:DBus", SPA_TYPE_INFO_INTERFACE_BASE "DBus", SPA_TYPE_INTERFACE_DBus, },
{ "Spa:Interface:DBus", SPA_TYPE_INFO_INTERFACE_BASE "DBus", 0, },
{ "Spa:Enum:MediaType:audio", SPA_TYPE_INFO_MEDIA_TYPE_BASE "audio", SPA_MEDIA_TYPE_audio, },
{ "Spa:Enum:MediaType:video", SPA_TYPE_INFO_MEDIA_TYPE_BASE "video", SPA_MEDIA_TYPE_video, },
{ "Spa:Enum:MediaType:image", SPA_TYPE_INFO_MEDIA_TYPE_BASE "image", SPA_MEDIA_TYPE_image, },

View file

@ -160,7 +160,7 @@ static const struct pw_resource_events resource_events = {
static void *create_object(void *data,
struct pw_resource *owner_resource,
uint32_t type,
const char *type,
uint32_t version,
struct pw_properties *properties,
uint32_t new_id)

View file

@ -159,7 +159,7 @@ static const struct pw_resource_events resource_events = {
static void *create_object(void *data,
struct pw_resource *owner_resource,
uint32_t type,
const char *type,
uint32_t version,
struct pw_properties *properties,
uint32_t new_id)

View file

@ -77,7 +77,7 @@ static const struct pw_impl_device_events device_events = {
static void *create_object(void *_data,
struct pw_resource *resource,
uint32_t type,
const char *type,
uint32_t version,
struct pw_properties *properties,
uint32_t new_id)

View file

@ -95,7 +95,7 @@ static const struct pw_impl_node_events node_events = {
static void *create_object(void *_data,
struct pw_resource *resource,
uint32_t type,
const char *type,
uint32_t version,
struct pw_properties *properties,
uint32_t new_id)

View file

@ -35,6 +35,11 @@ extern "C" {
#include <pipewire/proxy.h>
#include <pipewire/permission.h>
#define PW_TYPE_INTERFACE_Client PW_TYPE_INFO_INTERFACE_BASE "Client"
#define PW_VERSION_CLIENT 3
struct pw_client;
/** The client information. Extra information can be added in later versions \memberof pw_introspect */
struct pw_client_info {
uint32_t id; /**< id of the global */
@ -53,9 +58,6 @@ pw_client_info_update(struct pw_client_info *info,
void pw_client_info_free(struct pw_client_info *info);
#define PW_VERSION_CLIENT 3
struct pw_client;
#define PW_CLIENT_EVENT_INFO 0
#define PW_CLIENT_EVENT_PERMISSIONS 1
#define PW_CLIENT_EVENT_NUM 2

View file

@ -876,18 +876,17 @@ struct spa_handle *pw_context_load_spa_handle(struct pw_context *context,
SPA_EXPORT
int pw_context_register_export_type(struct pw_context *context, struct pw_export_type *type)
{
pw_log_debug("context %p: Add export type %d/%s to context", context, type->type,
spa_debug_type_find_name(pw_type_info(), type->type));
pw_log_debug("context %p: Add export type %s to context", context, type->type);
spa_list_append(&context->export_list, &type->link);
return 0;
}
SPA_EXPORT
const struct pw_export_type *pw_context_find_export_type(struct pw_context *context, uint32_t type)
const struct pw_export_type *pw_context_find_export_type(struct pw_context *context, const char *type)
{
const struct pw_export_type *t;
spa_list_for_each(t, &context->export_list, link) {
if (t->type == type)
if (strcmp(t->type, type) == 0)
return t;
}
return NULL;

View file

@ -148,9 +148,9 @@ struct spa_handle *pw_context_load_spa_handle(struct pw_context *context,
/** data for registering export functions */
struct pw_export_type {
struct spa_list link;
uint32_t type;
const char *type;
struct pw_proxy * (*func) (struct pw_core *core,
uint32_t type, const struct spa_dict *props, void *object,
const char *type, const struct spa_dict *props, void *object,
size_t user_data_size);
};
@ -158,7 +158,7 @@ struct pw_export_type {
* extension modules */
int pw_context_register_export_type(struct pw_context *context, struct pw_export_type *type);
/** find information about registered export type */
const struct pw_export_type *pw_context_find_export_type(struct pw_context *context, uint32_t type);
const struct pw_export_type *pw_context_find_export_type(struct pw_context *context, const char *type);
/** add an object to the context */
int pw_context_set_object(struct pw_context *context, const char *type, void *value);

View file

@ -237,7 +237,7 @@ struct pw_proxy *pw_core_find_proxy(struct pw_core *core, uint32_t id)
SPA_EXPORT
struct pw_proxy *pw_core_export(struct pw_core *core,
uint32_t type, const struct spa_dict *props, void *object,
const char *type, const struct spa_dict *props, void *object,
size_t user_data_size)
{
struct pw_proxy *proxy;
@ -258,7 +258,7 @@ struct pw_proxy *pw_core_export(struct pw_core *core,
return proxy;
error_export_type:
pw_log_error(NAME" %p: can't export type %d: %s", core, type, spa_strerror(res));
pw_log_error(NAME" %p: can't export type %s: %s", core, type, spa_strerror(res));
goto exit;
error_proxy_failed:
pw_log_error(NAME" %p: failed to create proxy: %s", core, spa_strerror(res));

View file

@ -34,6 +34,9 @@ extern "C" {
#include <spa/utils/hook.h>
#define PW_TYPE_INTERFACE_Core PW_TYPE_INFO_INTERFACE_BASE "Core"
#define PW_TYPE_INTERFACE_Registry PW_TYPE_INFO_INTERFACE_BASE "Registry"
#define PW_VERSION_CORE 3
struct pw_core;
#define PW_VERSION_REGISTRY 3
@ -278,7 +281,7 @@ struct pw_core_methods {
*/
void * (*create_object) (void *object,
const char *factory_name,
uint32_t type,
const char *type,
uint32_t version,
const struct spa_dict *props,
size_t user_data_size);
@ -342,7 +345,7 @@ pw_core_get_registry(struct pw_core *core, uint32_t version, size_t user_data_si
static inline void *
pw_core_create_object(struct pw_core *core,
const char *factory_name,
uint32_t type,
const char *type,
uint32_t version,
const struct spa_dict *props,
size_t user_data_size)
@ -410,7 +413,7 @@ struct pw_registry_events {
* \param props extra properties of the global
*/
void (*global) (void *object, uint32_t id,
uint32_t permissions, uint32_t type, uint32_t version,
uint32_t permissions, const char *type, uint32_t version,
const struct spa_dict *props);
/**
* Notify of a global object removal
@ -450,7 +453,7 @@ struct pw_registry_methods {
* \param version the interface version to use
* \returns the new object
*/
void * (*bind) (void *object, uint32_t id, uint32_t type, uint32_t version,
void * (*bind) (void *object, uint32_t id, const char *type, uint32_t version,
size_t use_data_size);
/**
@ -477,7 +480,7 @@ struct pw_registry_methods {
static inline void *
pw_registry_bind(struct pw_registry *registry,
uint32_t id, uint32_t type, uint32_t version,
uint32_t id, const char *type, uint32_t version,
size_t user_data_size)
{
void *res = NULL;
@ -550,7 +553,7 @@ struct pw_proxy *pw_core_find_proxy(struct pw_core *core, uint32_t id);
/** Export an object into the PipeWire instance associated with core */
struct pw_proxy *pw_core_export(struct pw_core *core, /**< the core */
uint32_t type, /**< the type of object */
const char *type, /**< the type of object */
const struct spa_dict *props, /**< extra properties */
void *object, /**< object to export */
size_t user_data_size /**< extra user data */);

View file

@ -34,6 +34,8 @@ extern "C" {
#include <pipewire/proxy.h>
#define PW_TYPE_INTERFACE_Device PW_TYPE_INFO_INTERFACE_BASE "Device"
#define PW_VERSION_DEVICE 3
struct pw_device;

View file

@ -37,14 +37,16 @@ extern "C" {
#include <pipewire/proxy.h>
#define PW_VERSION_FACTORY 3
#define PW_TYPE_INTERFACE_Factory PW_TYPE_INFO_INTERFACE_BASE "Factory"
#define PW_VERSION_FACTORY 3
struct pw_factory;
/** The factory information. Extra information can be added in later versions \memberof pw_introspect */
struct pw_factory_info {
uint32_t id; /**< id of the global */
const char *name; /**< name the factory */
uint32_t type; /**< type of the objects created by this factory */
const char *type; /**< type of the objects created by this factory */
uint32_t version; /**< version of the objects */
#define PW_FACTORY_CHANGE_MASK_PROPS (1 << 0)
#define PW_FACTORY_CHANGE_MASK_ALL ((1 << 1)-1)

View file

@ -65,7 +65,7 @@ uint32_t pw_global_get_permissions(struct pw_global *global, struct pw_impl_clie
SPA_EXPORT
struct pw_global *
pw_global_new(struct pw_context *context,
uint32_t type,
const char *type,
uint32_t version,
struct pw_properties *properties,
pw_global_bind_func_t func,
@ -104,9 +104,7 @@ pw_global_new(struct pw_context *context,
spa_list_init(&this->resource_list);
spa_hook_list_init(&this->listener_list);
pw_log_debug(NAME" %p: new %s %d", this,
spa_debug_type_find_name(pw_type_info(), this->type),
this->id);
pw_log_debug(NAME" %p: new %s %d", this, this->type, this->id);
return this;
@ -190,11 +188,17 @@ struct pw_context *pw_global_get_context(struct pw_global *global)
}
SPA_EXPORT
uint32_t pw_global_get_type(struct pw_global *global)
const char * pw_global_get_type(struct pw_global *global)
{
return global->type;
}
SPA_EXPORT
bool pw_global_is_type(struct pw_global *global, const char *type)
{
return strcmp(global->type, type) == 0;
}
SPA_EXPORT
uint32_t pw_global_get_version(struct pw_global *global)
{

View file

@ -79,8 +79,8 @@ struct pw_global_events {
/** Create a new global object */
struct pw_global *
pw_global_new(struct pw_context *context, /**< the context */
uint32_t type, /**< the interface type of the global */
pw_global_new(struct pw_context *context, /**< the context */
const char *type, /**< the interface type of the global */
uint32_t version, /**< the interface version of the global */
struct pw_properties *properties, /**< extra properties */
pw_global_bind_func_t func, /**< function to bind */
@ -102,7 +102,10 @@ uint32_t pw_global_get_permissions(struct pw_global *global, struct pw_impl_clie
struct pw_context *pw_global_get_context(struct pw_global *global);
/** Get the global type */
uint32_t pw_global_get_type(struct pw_global *global);
const char *pw_global_get_type(struct pw_global *global);
/** Check a global type */
bool pw_global_is_type(struct pw_global *global, const char *type);
/** Get the global version */
uint32_t pw_global_get_version(struct pw_global *global);

Some files were not shown because too many files have changed in this diff Show more