mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
node: the callbacks determine async operation
This commit is contained in:
parent
361d2b6a87
commit
6cbf398ad4
7 changed files with 51 additions and 75 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue