SOURCES: mpg123-multi-ao.patch (NEW) - allow multiple outputs (to ...
qboosh
qboosh at pld-linux.org
Thu Jan 24 23:15:01 CET 2008
Author: qboosh Date: Thu Jan 24 22:15:01 2008 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- allow multiple outputs (to fallback if init fails)
---- Files affected:
SOURCES:
mpg123-multi-ao.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/mpg123-multi-ao.patch
diff -u /dev/null SOURCES/mpg123-multi-ao.patch:1.1
--- /dev/null Thu Jan 24 23:15:01 2008
+++ SOURCES/mpg123-multi-ao.patch Thu Jan 24 23:14:56 2008
@@ -0,0 +1,72 @@
+--- mpg123-1.1.0/src/audio.c.orig 2008-01-15 03:27:32.000000000 +0100
++++ mpg123-1.1.0/src/audio.c 2008-01-24 22:47:39.898426268 +0100
+@@ -13,6 +13,7 @@
+ #ifdef HAVE_SYS_WAIT_H
+ #include <sys/wait.h>
+ #endif
++#include <errno.h>
+
+ static int file_write(struct audio_output_struct* ao, unsigned char *bytes, int count)
+ {
+@@ -97,27 +98,40 @@
+ mpg123_module_t *module = NULL;
+ audio_output_t *ao = NULL;
+ int result = 0;
++ char *curmodname, *modnames;
+
+ if(param.usebuffer) return NULL;
+
+ /* Use internal code. */
+ if(param.outmode != DECODE_AUDIO) return open_fake_module();
+
++ modnames = strdup(name);
++ if (modnames == NULL) {
++ error1("Error allocating memory for module name(s): %s", strerror(errno));
++ return NULL;
++ }
++ curmodname = strtok(modnames, ",");
++
++ while (curmodname != NULL) {
++ name = curmodname;
++ curmodname = strtok(NULL, ",");
+ /* Open the module */
+ module = open_module( "output", name );
+- if (module == NULL) return NULL;
++ if (module == NULL) continue;
+
+ /* Check module supports output */
+ if (module->init_output == NULL) {
+ error1("Module '%s' does not support audio output.", name);
+ close_module( module );
+- return NULL;
++ continue;
+ }
+
+ /* Allocation memory for audio output type */
+ ao = alloc_audio_output();
+ if (ao==NULL) {
+ error( "Failed to allocate audio output structure." );
++ close_module( module );
++ free( modnames );
+ return NULL;
+ }
+
+@@ -129,13 +143,16 @@
+ if (result) {
+ error1( "Module's init function failed: %d", result );
+ close_module( module );
+- return NULL;
++ free( ao );
++ continue;
+ }
+
+ /* Store the pointer to the module (so we can close it later) */
+ ao->module = module;
+-
++ free( modnames );
+ return ao;
++ }
++ return NULL;
+ }
+
+
================================================================
More information about the pld-cvs-commit
mailing list