node: the callbacks determine async operation

This commit is contained in:
Wim Taymans 2017-05-11 16:11:08 +02:00
parent 361d2b6a87
commit 6cbf398ad4
7 changed files with 51 additions and 75 deletions

View file

@ -165,7 +165,7 @@ init_buffer (AppData *data, SpaBuffer **bufs, Buffer *ba, int n_buffers, size_t
}
static SpaResult
make_node (AppData *data, SpaNode **node, const char *lib, const char *name, bool async)
make_node (AppData *data, SpaNode **node, const char *lib, const char *name)
{
SpaHandle *handle;
SpaResult res;
@ -173,8 +173,6 @@ make_node (AppData *data, SpaNode **node, const char *lib, const char *name, boo
SpaEnumHandleFactoryFunc enum_func;
unsigned int i;
uint32_t state = 0;
SpaDictItem items[1];
SpaDict dict = SPA_DICT_INIT (1, items);
if ((hnd = dlopen (lib, RTLD_NOW)) == NULL) {
printf ("can't load %s: %s\n", lib, dlerror());
@ -185,9 +183,6 @@ make_node (AppData *data, SpaNode **node, const char *lib, const char *name, boo
return SPA_RESULT_ERROR;
}
items[0].key = "asynchronous";
items[0].value = async ? "1" : "0";
for (i = 0; ;i++) {
const SpaHandleFactory *factory;
void *iface;
@ -201,7 +196,7 @@ make_node (AppData *data, SpaNode **node, const char *lib, const char *name, boo
continue;
handle = calloc (1, factory->size);
if ((res = spa_handle_factory_init (factory, handle, &dict, data->support, data->n_support)) < 0) {
if ((res = spa_handle_factory_init (factory, handle, NULL, data->support, data->n_support)) < 0) {
printf ("can't make factory instance: %d\n", res);
return res;
}
@ -318,7 +313,7 @@ make_nodes (AppData *data, const char *device)
if ((res = make_node (data, &data->sink,
"build/spa/plugins/alsa/libspa-alsa.so",
"alsa-sink", true)) < 0) {
"alsa-sink")) < 0) {
printf ("can't create alsa-sink: %d\n", res);
return res;
}
@ -335,14 +330,14 @@ make_nodes (AppData *data, const char *device)
if ((res = make_node (data, &data->mix,
"build/spa/plugins/audiomixer/libspa-audiomixer.so",
"audiomixer", false)) < 0) {
"audiomixer")) < 0) {
printf ("can't create audiomixer: %d\n", res);
return res;
}
if ((res = make_node (data, &data->source1,
"build/spa/plugins/audiotestsrc/libspa-audiotestsrc.so",
"audiotestsrc", false)) < 0) {
"audiotestsrc")) < 0) {
printf ("can't create audiotestsrc: %d\n", res);
return res;
}
@ -359,7 +354,7 @@ make_nodes (AppData *data, const char *device)
if ((res = make_node (data, &data->source2,
"build/spa/plugins/audiotestsrc/libspa-audiotestsrc.so",
"audiotestsrc", false)) < 0) {
"audiotestsrc")) < 0) {
printf ("can't create audiotestsrc: %d\n", res);
return res;
}

View file

@ -157,7 +157,7 @@ init_buffer (AppData *data, SpaBuffer **bufs, Buffer *ba, int n_buffers, size_t
}
static SpaResult
make_node (AppData *data, SpaNode **node, const char *lib, const char *name, bool async)
make_node (AppData *data, SpaNode **node, const char *lib, const char *name)
{
SpaHandle *handle;
SpaResult res;
@ -165,8 +165,6 @@ make_node (AppData *data, SpaNode **node, const char *lib, const char *name, boo
SpaEnumHandleFactoryFunc enum_func;
unsigned int i;
uint32_t state = 0;
SpaDictItem items[1];
SpaDict dict = SPA_DICT_INIT (1, items);
if ((hnd = dlopen (lib, RTLD_NOW)) == NULL) {
printf ("can't load %s: %s\n", lib, dlerror());
@ -177,9 +175,6 @@ make_node (AppData *data, SpaNode **node, const char *lib, const char *name, boo
return SPA_RESULT_ERROR;
}
items[0].key = "asynchronous";
items[0].value = async ? "1" : "0";
for (i = 0; ;i++) {
const SpaHandleFactory *factory;
void *iface;
@ -193,7 +188,7 @@ make_node (AppData *data, SpaNode **node, const char *lib, const char *name, boo
continue;
handle = calloc (1, factory->size);
if ((res = spa_handle_factory_init (factory, handle, &dict, data->support, data->n_support)) < 0) {
if ((res = spa_handle_factory_init (factory, handle, NULL, data->support, data->n_support)) < 0) {
printf ("can't make factory instance: %d\n", res);
return res;
}
@ -287,7 +282,7 @@ make_nodes (AppData *data, const char *device)
if ((res = make_node (data, &data->sink,
"build/spa/plugins/alsa/libspa-alsa.so",
"alsa-sink", true)) < 0) {
"alsa-sink")) < 0) {
printf ("can't create alsa-sink: %d\n", res);
return res;
}
@ -304,7 +299,7 @@ make_nodes (AppData *data, const char *device)
if ((res = make_node (data, &data->source,
"build/spa/plugins/audiotestsrc/libspa-audiotestsrc.so",
"audiotestsrc", false)) < 0) {
"audiotestsrc")) < 0) {
printf ("can't create audiotestsrc: %d\n", res);
return res;
}

View file

@ -544,12 +544,16 @@ main (int argc, char *argv[])
{
AppData data = { 0 };
SpaResult res;
const char *str;
data.use_buffer = true;
data.map = spa_type_map_get_default ();
data.log = spa_log_get_default ();
if ((str = getenv ("PINOS_DEBUG")))
data.log->level = atoi (str);
data.data_loop.size = sizeof (SpaLoop);
data.data_loop.add_source = do_add_source;
data.data_loop.update_source = do_update_source;