aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/ALc.c
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2010-06-05 19:33:06 -0700
committerChris Robinson <[email protected]>2010-06-05 19:33:06 -0700
commit80fbe8a788b7007deb2e42178c857e504207aa50 (patch)
tree97204574e484a7c649aaea06a15e32aa77e86fc2 /Alc/ALc.c
parent0fdec056facefe2dc8a58889651fd5c859d303b7 (diff)
Allow prepending backend names with - to remove them from the available devices
Diffstat (limited to 'Alc/ALc.c')
-rw-r--r--Alc/ALc.c29
1 files changed, 21 insertions, 8 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;
}
}