Merge pull request #266 from moreais/master
OpenBSD: fix volume display on some hardware
This commit is contained in:
commit
2cb0ffa01a
@ -211,6 +211,7 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *
|
|||||||
|
|
||||||
#if defined(__OpenBSD__)
|
#if defined(__OpenBSD__)
|
||||||
int oclass_idx = -1, master_idx = -1, master_mute_idx = -1;
|
int oclass_idx = -1, master_idx = -1, master_mute_idx = -1;
|
||||||
|
int master_next = AUDIO_MIXER_LAST;
|
||||||
mixer_devinfo_t devinfo, devinfo2;
|
mixer_devinfo_t devinfo, devinfo2;
|
||||||
mixer_ctrl_t vinfo;
|
mixer_ctrl_t vinfo;
|
||||||
|
|
||||||
@ -228,12 +229,17 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *
|
|||||||
|
|
||||||
devinfo2.index = 0;
|
devinfo2.index = 0;
|
||||||
while (ioctl(mixfd, AUDIO_MIXER_DEVINFO, &devinfo2) >= 0) {
|
while (ioctl(mixfd, AUDIO_MIXER_DEVINFO, &devinfo2) >= 0) {
|
||||||
if ((devinfo2.type == AUDIO_MIXER_VALUE) && (devinfo2.mixer_class == oclass_idx) && (strncmp(devinfo2.label.name, AudioNmaster, MAX_AUDIO_DEV_LEN) == 0))
|
if ((devinfo2.type == AUDIO_MIXER_VALUE) && (devinfo2.mixer_class == oclass_idx) && (strncmp(devinfo2.label.name, AudioNmaster, MAX_AUDIO_DEV_LEN) == 0)) {
|
||||||
master_idx = devinfo2.index;
|
master_idx = devinfo2.index;
|
||||||
|
master_next = devinfo2.next;
|
||||||
|
}
|
||||||
|
|
||||||
if ((devinfo2.type == AUDIO_MIXER_ENUM) && (devinfo2.mixer_class == oclass_idx) && (strncmp(devinfo2.label.name, AudioNmute, MAX_AUDIO_DEV_LEN) == 0))
|
if ((devinfo2.type == AUDIO_MIXER_ENUM) && (devinfo2.mixer_class == oclass_idx) && (strncmp(devinfo2.label.name, AudioNmute, MAX_AUDIO_DEV_LEN) == 0))
|
||||||
master_mute_idx = devinfo2.index;
|
if (master_next == devinfo2.index)
|
||||||
|
master_mute_idx = devinfo2.index;
|
||||||
|
|
||||||
|
if (master_next != AUDIO_MIXER_LAST)
|
||||||
|
master_next = devinfo2.next;
|
||||||
devinfo2.index++;
|
devinfo2.index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,6 +252,7 @@ void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *
|
|||||||
|
|
||||||
vinfo.dev = master_idx;
|
vinfo.dev = master_idx;
|
||||||
vinfo.type = AUDIO_MIXER_VALUE;
|
vinfo.type = AUDIO_MIXER_VALUE;
|
||||||
|
vinfo.un.value.num_channels = devinfo.un.v.num_channels;
|
||||||
if (ioctl(mixfd, AUDIO_MIXER_READ, &vinfo) == -1)
|
if (ioctl(mixfd, AUDIO_MIXER_READ, &vinfo) == -1)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user