mirror of
https://git.FreeBSD.org/ports.git
synced 2024-10-31 21:57:12 +00:00
7bfa022f21
to open an audio device with ENXIO (Device not configured). This is likely needed on systems using the pcm sound driver.
75 lines
1.7 KiB
Plaintext
75 lines
1.7 KiB
Plaintext
--- gmix/gmix.c.orig Sun Feb 21 12:10:17 1999
|
|
+++ gmix/gmix.c Mon Mar 8 20:41:05 1999
|
|
@@ -94,6 +94,17 @@
|
|
/*
|
|
* All, that is known about a mixer-device
|
|
*/
|
|
+
|
|
+#if !defined(OPEN_SOUND_SYSTEM)
|
|
+typedef struct mixer_info
|
|
+{
|
|
+ char id[16];
|
|
+ char name[32];
|
|
+ int modify_counter;
|
|
+ int fillers[10];
|
|
+} mixer_info;
|
|
+#endif
|
|
+
|
|
typedef struct device_info {
|
|
int fd;
|
|
mixer_info info;
|
|
@@ -272,11 +283,7 @@
|
|
/*
|
|
* open the mixer-device
|
|
*/
|
|
- if (num==0) {
|
|
- sprintf(device_name, "/dev/mixer");
|
|
- } else {
|
|
- sprintf(device_name, "/dev/mixer%i", num);
|
|
- }
|
|
+ sprintf(device_name, "/dev/mixer%i", num);
|
|
new_device->fd=open(device_name, O_RDWR, 0);
|
|
if (new_device->fd<0) {
|
|
free(new_device);
|
|
@@ -291,6 +298,8 @@
|
|
fprintf(stderr, "Warning: This version of gmix was compiled with a different version of\nsoundcard.h.\n");
|
|
}
|
|
#endif
|
|
+
|
|
+#if defined(OPEN_SOUND_SYSTEM)
|
|
/*
|
|
* mixer-name
|
|
*/
|
|
@@ -301,6 +310,11 @@
|
|
}
|
|
if(!isalpha(new_device->info.name[0]))
|
|
g_snprintf(new_device->info.name, 31, "Card %d", num+1);
|
|
+#else
|
|
+ g_snprintf(new_device->info.id, 15, "mixer%d", num);
|
|
+ g_snprintf(new_device->info.name, 31, "Sound Card %d", num+1);
|
|
+ new_device->info.modify_counter=0;
|
|
+#endif
|
|
/*
|
|
* several bitmasks describing the mixer
|
|
*/
|
|
@@ -386,15 +400,16 @@
|
|
{
|
|
int cnt;
|
|
device_info *new_device;
|
|
- cnt=0; devices=NULL;
|
|
+ cnt=0; num_mixers=0; devices=NULL;
|
|
do {
|
|
new_device=open_device(cnt++);
|
|
if (new_device) {
|
|
new_device->channels=make_channels(new_device);
|
|
devices=g_list_append(devices, new_device);
|
|
+ num_mixers++;
|
|
}
|
|
- } while (new_device);
|
|
- num_mixers=cnt-1;
|
|
+ } while ((errno == EACCES) || (errno == EINVAL) || (errno == ENXIO) \
|
|
+ || new_device);
|
|
}
|
|
|
|
void free_one_device(gpointer a, gpointer b)
|