loop: move to plugin

Move the loop implementation to a plugin.
Organize the hooks in a list so that we can add many.
This commit is contained in:
Wim Taymans 2017-06-14 16:10:07 +02:00
parent f55f1739e1
commit 4a219e81dd
14 changed files with 935 additions and 651 deletions

View file

@ -20,23 +20,28 @@
#include <spa/plugin.h>
#include <spa/node.h>
extern const struct spa_handle_factory spa_logger_factory;
extern const struct spa_handle_factory spa_type_map_factory;
#define MAX_FACTORIES 16
static const struct spa_handle_factory *factories[MAX_FACTORIES];
static int n_factories;
void
spa_handle_factory_register(const struct spa_handle_factory *factory)
{
if (n_factories < MAX_FACTORIES)
factories[n_factories++] = factory;
else
fprintf(stderr, "too many factories\n");
}
int
spa_handle_factory_enum(const struct spa_handle_factory **factory, uint32_t index)
{
spa_return_val_if_fail(factory != NULL, SPA_RESULT_INVALID_ARGUMENTS);
switch (index) {
case 0:
*factory = &spa_type_map_factory;
break;
case 1:
*factory = &spa_logger_factory;
break;
default:
if (index >= n_factories)
return SPA_RESULT_ENUM_END;
}
*factory = factories[index];
return SPA_RESULT_OK;
}