]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_oss.c
Removed some debug printings, and made some others requiring developer >= 100. Reset...
[xonotic/darkplaces.git] / snd_oss.c
index 8980069181404aea89782a2669dd2c83b43fd51a..2693e51b0c4e3ba1863f1dff0a9f3a1ddef5a112 100644 (file)
--- a/snd_oss.c
+++ b/snd_oss.c
@@ -89,6 +89,8 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested)
        }
        else
                Con_Print("SndSys_Init: fcntl(F_GETFL) failed!\n");
+       
+       ioctl(audio_fd, SNDCTL_DSP_RESET, NULL);
 
        // Set the fragment size (up to "NB_FRAGMENTS" fragments of "fragmentsize" bytes)
        fragmentsize = requested->speed * requested->channels * requested->width / 5;
@@ -161,6 +163,12 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested)
                return false;
        }
        
+#ifdef __linux__
+       alsaspeakerlayout = true;
+#else
+       alsaspeakerlayout = false;
+#endif
+
        old_osstime = 0;
        osssoundtime = 0;
        snd_renderbuffer = Snd_CreateRingBuffer(requested, 0, NULL);
@@ -180,7 +188,7 @@ void SndSys_Shutdown (void)
        // Stop the sound and close the device
        if (audio_fd >= 0)
        {
-               ioctl(audio_fd, SNDCTL_DSP_RESET, 0);
+               ioctl(audio_fd, SNDCTL_DSP_RESET, NULL);
                close(audio_fd);
                audio_fd = -1;
        }
@@ -228,9 +236,9 @@ void SndSys_Submit (void)
 
                snd_renderbuffer->startframe += written / factor;
 
-               if ((unsigned int)written < nbframes * factor)
+               if ((unsigned int)written < limit * factor)
                {
-                       Con_Printf("SndSys_Submit: audio can't keep up! (%d < %u)\n", written, nbframes * factor);
+                       Con_Printf("SndSys_Submit: audio can't keep up! (%u < %u)\n", written, limit * factor);
                        return;
                }
                
@@ -244,7 +252,14 @@ void SndSys_Submit (void)
                Con_Printf("SndSys_Submit: audio write returned %d!\n", written);
                return;
        }
+
+       if (written % factor != 0)
+               Sys_Error("SndSys_Submit: nb of bytes written (%d) isn't aligned to a frame sample!\n", written);
+
        snd_renderbuffer->startframe += written / factor;
+
+       if ((unsigned int)written < nbframes * factor)
+               Con_Printf("SndSys_Submit: audio can't keep up! (%u < %u)\n", written, nbframes * factor);
 }