diff options
author | notaz | 2012-07-30 21:29:29 +0300 |
---|---|---|
committer | notaz | 2012-07-31 01:31:34 +0300 |
commit | 07c13dfd11cbd45e96a5c21cd88ccd44601678ea (patch) | |
tree | 8d9713246288c00ff5edb6e6301d710ed36bfa10 /plugins/dfsound/out.c | |
parent | f05d6ca255c80170e4e5fc61cc48d87e013b8807 (diff) | |
download | pcsx_rearmed-07c13dfd11cbd45e96a5c21cd88ccd44601678ea.tar.gz pcsx_rearmed-07c13dfd11cbd45e96a5c21cd88ccd44601678ea.tar.bz2 pcsx_rearmed-07c13dfd11cbd45e96a5c21cd88ccd44601678ea.zip |
allow multiple sound drivers to be compiled
Diffstat (limited to 'plugins/dfsound/out.c')
-rw-r--r-- | plugins/dfsound/out.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/plugins/dfsound/out.c b/plugins/dfsound/out.c new file mode 100644 index 0000000..150d718 --- /dev/null +++ b/plugins/dfsound/out.c @@ -0,0 +1,51 @@ +#include <stdio.h> +#include <stdlib.h> +#include "out.h" + +#define MAX_OUT_DRIVERS 5 + +static struct out_driver out_drivers[MAX_OUT_DRIVERS]; +struct out_driver *out_current; +static int driver_count; + +#define REGISTER_DRIVER(d) { \ + extern void out_register_##d(struct out_driver *drv); \ + out_register_##d(&out_drivers[driver_count++]); \ +} + +void SetupSound(void) +{ + int i; + + if (driver_count == 0) { +#ifdef HAVE_OSS + REGISTER_DRIVER(oss); +#endif +#ifdef HAVE_ALSA + REGISTER_DRIVER(alsa); +#endif +#ifdef HAVE_SDL + REGISTER_DRIVER(sdl); +#endif +#ifdef HAVE_PULSE + REGISTER_DRIVER(pulse); +#endif +#ifdef HAVE_LIBRETRO + REGISTER_DRIVER(libretro); +#endif + REGISTER_DRIVER(none); + } + + for (i = 0; i < driver_count; i++) + if (out_drivers[i].init() == 0) + break; + + if (i < 0 || i >= driver_count) { + printf("the impossible happened\n"); + abort(); + } + + out_current = &out_drivers[i]; + printf("selected sound output driver: %s\n", out_current->name); +} + |