Fix use of read/write to write-only for sound, and whitespace cleanup.

This commit is contained in:
Ragnvald Maartmann-Moe IV 2000-12-08 00:04:44 +00:00
parent 75971a4fed
commit c44715fe21

View file

@ -54,10 +54,10 @@ qboolean SNDDMA_Init(void)
{ {
int rc; int rc;
int fmt; int fmt;
int tmp; int tmp;
int i; int i;
char *s; char *s;
struct audio_buf_info info; struct audio_buf_info info;
int caps; int caps;
@ -65,16 +65,17 @@ qboolean SNDDMA_Init(void)
// open /dev/dsp, confirm capability to mmap, and get size of dma buffer // open /dev/dsp, confirm capability to mmap, and get size of dma buffer
audio_fd = open("/dev/dsp", O_RDWR); // audio_fd = open("/dev/dsp", O_RDWR);
if (audio_fd < 0) audio_fd = open("/dev/dsp", O_WRONLY);
if (audio_fd < 0)
{ {
perror("/dev/dsp"); perror("/dev/dsp");
Con_Printf("Could not open /dev/dsp\n"); Con_Printf("Could not open /dev/dsp\n");
return 0; return 0;
} }
rc = ioctl(audio_fd, SNDCTL_DSP_RESET, 0); rc = ioctl(audio_fd, SNDCTL_DSP_RESET, 0);
if (rc < 0) if (rc < 0)
{ {
perror("/dev/dsp"); perror("/dev/dsp");
Con_Printf("Could not reset /dev/dsp\n"); Con_Printf("Could not reset /dev/dsp\n");
@ -97,48 +98,48 @@ qboolean SNDDMA_Init(void)
return 0; return 0;
} }
if (ioctl(audio_fd, SNDCTL_DSP_GETOSPACE, &info)==-1) if (ioctl(audio_fd, SNDCTL_DSP_GETOSPACE, &info)==-1)
{ {
perror("GETOSPACE"); perror("GETOSPACE");
Con_Printf("Um, can't do GETOSPACE?\n"); Con_Printf("Um, can't do GETOSPACE?\n");
close(audio_fd); close(audio_fd);
return 0; return 0;
} }
shm = &sn; shm = &sn;
shm->splitbuffer = 0; shm->splitbuffer = 0;
// set sample bits & speed // set sample bits & speed
s = getenv("QUAKE_SOUND_SAMPLEBITS"); s = getenv("QUAKE_SOUND_SAMPLEBITS");
if (s) shm->samplebits = atoi(s); if (s) shm->samplebits = atoi(s);
else if ((i = COM_CheckParm("-sndbits")) != 0) else if ((i = COM_CheckParm("-sndbits")) != 0)
shm->samplebits = atoi(com_argv[i+1]); shm->samplebits = atoi(com_argv[i+1]);
if (shm->samplebits != 16 && shm->samplebits != 8) if (shm->samplebits != 16 && shm->samplebits != 8)
{ {
ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &fmt); ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &fmt);
if (fmt & AFMT_S16_LE) shm->samplebits = 16; if (fmt & AFMT_S16_LE) shm->samplebits = 16;
else if (fmt & AFMT_U8) shm->samplebits = 8; else if (fmt & AFMT_U8) shm->samplebits = 8;
} }
s = getenv("QUAKE_SOUND_SPEED"); s = getenv("QUAKE_SOUND_SPEED");
if (s) shm->speed = atoi(s); if (s) shm->speed = atoi(s);
else if ((i = COM_CheckParm("-sndspeed")) != 0) else if ((i = COM_CheckParm("-sndspeed")) != 0)
shm->speed = atoi(com_argv[i+1]); shm->speed = atoi(com_argv[i+1]);
else else
{ {
for (i=0 ; i<sizeof(tryrates)/4 ; i++) for (i=0 ; i<sizeof(tryrates)/4 ; i++)
if (!ioctl(audio_fd, SNDCTL_DSP_SPEED, &tryrates[i])) break; if (!ioctl(audio_fd, SNDCTL_DSP_SPEED, &tryrates[i])) break;
shm->speed = tryrates[i]; shm->speed = tryrates[i];
} }
s = getenv("QUAKE_SOUND_CHANNELS"); s = getenv("QUAKE_SOUND_CHANNELS");
if (s) shm->channels = atoi(s); if (s) shm->channels = atoi(s);
else if ((i = COM_CheckParm("-sndmono")) != 0) else if ((i = COM_CheckParm("-sndmono")) != 0)
shm->channels = 1; shm->channels = 1;
else if ((i = COM_CheckParm("-sndstereo")) != 0) else if ((i = COM_CheckParm("-sndstereo")) != 0)
shm->channels = 2; shm->channels = 2;
else shm->channels = 2; else shm->channels = 2;
shm->samples = info.fragstotal * info.fragsize / (shm->samplebits/8); shm->samples = info.fragstotal * info.fragsize / (shm->samplebits/8);
shm->submission_chunk = 1; shm->submission_chunk = 1;
@ -158,52 +159,52 @@ qboolean SNDDMA_Init(void)
tmp = 0; tmp = 0;
if (shm->channels == 2) if (shm->channels == 2)
tmp = 1; tmp = 1;
rc = ioctl(audio_fd, SNDCTL_DSP_STEREO, &tmp); rc = ioctl(audio_fd, SNDCTL_DSP_STEREO, &tmp);
if (rc < 0) if (rc < 0)
{ {
perror("/dev/dsp"); perror("/dev/dsp");
Con_Printf("Could not set /dev/dsp to stereo=%d", shm->channels); Con_Printf("Could not set /dev/dsp to stereo=%d", shm->channels);
close(audio_fd); close(audio_fd);
return 0; return 0;
} }
if (tmp) if (tmp)
shm->channels = 2; shm->channels = 2;
else else
shm->channels = 1; shm->channels = 1;
rc = ioctl(audio_fd, SNDCTL_DSP_SPEED, &shm->speed); rc = ioctl(audio_fd, SNDCTL_DSP_SPEED, &shm->speed);
if (rc < 0) if (rc < 0)
{ {
perror("/dev/dsp"); perror("/dev/dsp");
Con_Printf("Could not set /dev/dsp speed to %d", shm->speed); Con_Printf("Could not set /dev/dsp speed to %d", shm->speed);
close(audio_fd); close(audio_fd);
return 0; return 0;
} }
if (shm->samplebits == 16) if (shm->samplebits == 16)
{ {
rc = AFMT_S16_LE; rc = AFMT_S16_LE;
rc = ioctl(audio_fd, SNDCTL_DSP_SETFMT, &rc); rc = ioctl(audio_fd, SNDCTL_DSP_SETFMT, &rc);
if (rc < 0) if (rc < 0)
{ {
perror("/dev/dsp"); perror("/dev/dsp");
Con_Printf("Could not support 16-bit data. Try 8-bit.\n"); Con_Printf("Could not support 16-bit data. Try 8-bit.\n");
close(audio_fd); close(audio_fd);
return 0; return 0;
} }
} }
else if (shm->samplebits == 8) else if (shm->samplebits == 8)
{ {
rc = AFMT_U8; rc = AFMT_U8;
rc = ioctl(audio_fd, SNDCTL_DSP_SETFMT, &rc); rc = ioctl(audio_fd, SNDCTL_DSP_SETFMT, &rc);
if (rc < 0) if (rc < 0)
{ {
perror("/dev/dsp"); perror("/dev/dsp");
Con_Printf("Could not support 8-bit data.\n"); Con_Printf("Could not support 8-bit data.\n");
close(audio_fd); close(audio_fd);
return 0; return 0;
} }
} }
else else
{ {
perror("/dev/dsp"); perror("/dev/dsp");
@ -214,8 +215,8 @@ qboolean SNDDMA_Init(void)
// toggle the trigger & start her up // toggle the trigger & start her up
tmp = 0; tmp = 0;
rc = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp); rc = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp);
if (rc < 0) if (rc < 0)
{ {
perror("/dev/dsp"); perror("/dev/dsp");
@ -223,8 +224,8 @@ qboolean SNDDMA_Init(void)
close(audio_fd); close(audio_fd);
return 0; return 0;
} }
tmp = PCM_ENABLE_OUTPUT; tmp = PCM_ENABLE_OUTPUT;
rc = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp); rc = ioctl(audio_fd, SNDCTL_DSP_SETTRIGGER, &tmp);
if (rc < 0) if (rc < 0)
{ {
perror("/dev/dsp"); perror("/dev/dsp");
@ -282,4 +283,3 @@ Send sound to device if buffer isn't really the dma buffer
void SNDDMA_Submit(void) void SNDDMA_Submit(void)
{ {
} }