Mixer fallback for broken sound-drivers

git-svn-id: svn://svn.code.sf.net/p/rdesktop/code/trunk/rdesktop@508 423420c4-83ab-492f-b58f-81f9feb106b5
This commit is contained in:
Michael Gernoth 2003-10-22 12:16:03 +00:00
parent 0affa3f3ff
commit a1b061098d

View File

@ -116,13 +116,34 @@ wave_out_set_format(WAVEFORMATEX * pwfx)
void void
wave_out_volume(uint16 left, uint16 right) wave_out_volume(uint16 left, uint16 right)
{ {
static BOOL use_dev_mixer = False;
uint32 volume; uint32 volume;
int fd_mix = -1;
volume = left / (65536 / 100); volume = left / (65536 / 100);
volume |= right / (65536 / 100) << 8; volume |= right / (65536 / 100) << 8;
if (use_dev_mixer)
{
if ((fd_mix = open( "/dev/mixer", O_RDWR|O_NONBLOCK )) == -1 )
{
perror("open /dev/mixer");
return;
}
if (ioctl(fd_mix, MIXER_WRITE(SOUND_MIXER_PCM), &volume) == -1)
{
perror("MIXER_WRITE(SOUND_MIXER_PCM)");
return;
}
close(fd_mix);
}
if (ioctl(g_dsp_fd, MIXER_WRITE(SOUND_MIXER_PCM), &volume) == -1) if (ioctl(g_dsp_fd, MIXER_WRITE(SOUND_MIXER_PCM), &volume) == -1)
{ {
perror("MIXER_WRITE(SOUND_MIXER_PCM)"); perror("MIXER_WRITE(SOUND_MIXER_PCM)");
use_dev_mixer = True;
return; return;
} }
} }