]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_alsa.c
check vid_activewindow in several spammy prints that occur when the client is running...
[xonotic/darkplaces.git] / snd_alsa.c
index 2e6b8f3755857c07de02b4cfe6946138aa63bbfa..a1d0c26241017091478e190c78ce93aa75c45cea 100644 (file)
@@ -201,6 +201,8 @@ qboolean SndSys_Init (const snd_format_t* requested, snd_format_t* suggested)
        snd_renderbuffer = Snd_CreateRingBuffer(requested, 0, NULL);
        expected_delay = 0;
        alsasoundtime = 0;
+       if (snd_channellayout.integer == SND_CHANNELLAYOUT_AUTO)
+               Cvar_SetValueQuick (&snd_channellayout, SND_CHANNELLAYOUT_ALSA);
        
        return true;
 
@@ -264,8 +266,6 @@ static qboolean SndSys_Recover (int err_num)
 
                return false;
        }
-       
-       Con_DPrint ("SndSys_Recover: recovered successfully\n");
 
        return true;
 }
@@ -283,17 +283,23 @@ static snd_pcm_sframes_t SndSys_Write (const unsigned char* buffer, unsigned int
        written = snd_pcm_writei (pcm_handle, buffer, nbframes);
        if (written < 0)
        {
-               Con_Printf ("SndSys_Write: audio write returned %ld (%s)!\n",
-                                       written, snd_strerror (written));
+               if (developer.integer >= 1000 && vid_activewindow)
+                       Con_Printf ("SndSys_Write: audio write returned %ld (%s)!\n",
+                                                written, snd_strerror (written));
 
                if (SndSys_Recover (written))
                {
                        written = snd_pcm_writei (pcm_handle, buffer, nbframes);
                        if (written < 0)
-                               Con_Printf ("SndSys_Write: audio write failed again (error %ld: %s)!\n",
-                                                       written, snd_strerror (written));
+                               Con_DPrintf ("SndSys_Write: audio write failed again (error %ld: %s)!\n",
+                                                        written, snd_strerror (written));
                }
        }
+       if (written > 0)
+       {
+               snd_renderbuffer->startframe += written;
+               expected_delay += written;
+       }
        
        return written;
 }
@@ -320,34 +326,20 @@ void SndSys_Submit (void)
        factor = snd_renderbuffer->format.width * snd_renderbuffer->format.channels;
        limit = snd_renderbuffer->maxframes - startoffset;
        nbframes = snd_renderbuffer->endframe - snd_renderbuffer->startframe;
-//Con_DPrintf(">> SndSys_Submit: startframe=%u, endframe=%u (%u frames), maxframes=%u, startoffset=%u\n",
-//                     snd_renderbuffer->startframe, snd_renderbuffer->endframe,
-//                     nbframes, snd_renderbuffer->maxframes, startoffset);
 
        if (nbframes > limit)
        {
-//Con_DPrintf(">> SndSys_Submit: 2 phases-submit\n");
                written = SndSys_Write (&snd_renderbuffer->ring[startoffset * factor], limit);
-               if (written < 0)
-                       return;
-               snd_renderbuffer->startframe += written;
-               expected_delay += written;
-
-//Con_DPrintf(">> SndSys_Submit: %ld/%ld frames written\n", written, limit);
-               if ((snd_pcm_uframes_t)written != limit)
+               if (written < 0 || (snd_pcm_uframes_t)written != limit)
                        return;
                
                nbframes -= limit;
                startoffset = 0;
        }
-//else Con_DPrintf(">> SndSys_Submit: 1 phase-submit\n");
 
        written = SndSys_Write (&snd_renderbuffer->ring[startoffset * factor], nbframes);
        if (written < 0)
                return;
-//Con_DPrintf(">> SndSys_Submit: %ld/%ld frames written\n", written, nbframes);
-       snd_renderbuffer->startframe += written;
-       expected_delay += written;
 }
 
 
@@ -369,8 +361,9 @@ unsigned int SndSys_GetSoundTime (void)
        err = snd_pcm_delay (pcm_handle, &delay);
        if (err != 0)
        {
-               Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay (%s)\n",
-                                        snd_strerror (err));
+               if (developer.integer >= 1000 && vid_activewindow)
+                       Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay (%s)\n",
+                                                snd_strerror (err));
 
                if (! SndSys_Recover (err))
                        return 0;
@@ -384,12 +377,10 @@ unsigned int SndSys_GetSoundTime (void)
                }
        }
 
-//Con_DPrintf(">> SndSys_GetSoundTime: expected_delay=%ld, delay=%ld\n",
-//                     expected_delay, delay);
        if (expected_delay < delay)
        {
-               Con_Printf ("SndSys_GetSoundTime: expected_delay(%ld) < delay(%ld)\n",
-                                       expected_delay, delay);
+               Con_DPrintf ("SndSys_GetSoundTime: expected_delay(%ld) < delay(%ld)\n",
+                                        expected_delay, delay);
                timediff = 0;
        }
        else