From 80fbe8a788b7007deb2e42178c857e504207aa50 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 5 Jun 2010 19:33:06 -0700 Subject: [PATCH] Allow prepending backend names with - to remove them from the available devices --- Alc/ALc.c | 29 +++++++++++++++++++++-------- alsoftrc.sample | 3 ++- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/Alc/ALc.c b/Alc/ALc.c index 2a03765b..8156b272 100644 --- a/Alc/ALc.c +++ b/Alc/ALc.c @@ -436,13 +436,16 @@ static void alc_init(void) int n; size_t len; const char *next = devs; - int endlist; + int endlist, delitem; i = 0; do { devs = next; next = strchr(devs, ','); + delitem = (devs[0] == '-'); + if(devs[0] == '-') devs++; + if(!devs[0] || devs[0] == ',') { endlist = 0; @@ -456,15 +459,25 @@ static void alc_init(void) if(len == strlen(BackendList[n].name) && strncmp(BackendList[n].name, devs, len) == 0) { - BackendInfo Bkp = BackendList[n]; - while(n > i) + if(delitem) { - BackendList[n] = BackendList[n-1]; - --n; + do { + BackendList[n] = BackendList[n+1]; + ++n; + } while(BackendList[n].Init); + } + else + { + BackendInfo Bkp = BackendList[n]; + while(n > i) + { + BackendList[n] = BackendList[n-1]; + --n; + } + BackendList[n] = Bkp; + + i++; } - BackendList[n] = Bkp; - - i++; break; } } diff --git a/alsoftrc.sample b/alsoftrc.sample index f9714dd3..e5f0203d 100644 --- a/alsoftrc.sample +++ b/alsoftrc.sample @@ -116,7 +116,8 @@ # duplicated names are ignored. Unlisted backends won't be considered for use # unless the list is ended with a comma (eg. 'oss,' will list OSS first # followed by all other available backends, while 'oss' will list OSS only). -# An empty list means the default. +# Backends prepended with - won't be available for use (eg. '-oss,' will allow +# all available backends except OSS). An empty list means the default. #drivers = pulse,alsa,oss,solaris,dsound,winmm,port,null,wave ## excludefx: -- 2.11.4.GIT