X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=cd_linux.c;h=9d4b447699c48eeeb3751d393e33660d10b6fe4c;hp=6e6525eb9282945f23356bd80ae94b3c1d048cd3;hb=acb576bdab16f8244b87f7c12f85924154e83c5f;hpb=543e06fbc28e7930b50d08c4db9c1b45e48acbc7 diff --git a/cd_linux.c b/cd_linux.c index 6e6525eb..9d4b4476 100644 --- a/cd_linux.c +++ b/cd_linux.c @@ -77,6 +77,38 @@ int CDAudio_SysGetAudioDiskInfo (void) } +float CDAudio_SysGetVolume (void) +{ + struct cdrom_volctrl vol; + + if (cdfile == -1) + return -1.0f; + + if (ioctl (cdfile, CDROMVOLREAD, &vol) == -1) + { + Con_DPrint("ioctl CDROMVOLREAD failed\n"); + return -1.0f; + } + + return (vol.channel0 + vol.channel1) / 2.0f / 255.0f; +} + + +void CDAudio_SysSetVolume (float volume) +{ + struct cdrom_volctrl vol; + + if (cdfile == -1) + return; + + vol.channel0 = vol.channel1 = volume * 255; + vol.channel2 = vol.channel3 = 0; + + if (ioctl (cdfile, CDROMVOLCTRL, &vol) == -1) + Con_DPrint("ioctl CDROMVOLCTRL failed\n"); +} + + int CDAudio_SysPlay (qbyte track) { struct cdrom_tocentry entry; @@ -202,7 +234,7 @@ void CDAudio_SysInit (void) int CDAudio_SysStartup (void) { - if ((cdfile = open(cd_dev, O_RDONLY)) == -1) + if ((cdfile = open(cd_dev, O_RDONLY | O_NONBLOCK)) == -1) { Con_DPrintf("CDAudio_SysStartup: open of \"%s\" failed (%i)\n", cd_dev, errno);