]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_alsa.c
no longer sends moves if time is not moving forward, except when paused (this fixes...
[xonotic/darkplaces.git] / snd_alsa.c
index e4a9ffe0897c528f89e8b1a84c2f03c2f4d97a76..173a9f52bb43ffb41308b2ac19515f07e9aa9eba 100644 (file)
@@ -201,7 +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;
-       alsaspeakerlayout = true;
+       if (snd_channellayout.integer == SND_CHANNELLAYOUT_AUTO)
+               Cvar_SetValueQuick (&snd_channellayout, SND_CHANNELLAYOUT_ALSA);
        
        return true;
 
@@ -294,6 +295,11 @@ static snd_pcm_sframes_t SndSys_Write (const unsigned char* buffer, unsigned int
                                                         written, snd_strerror (written));
                }
        }
+       if (written > 0)
+       {
+               snd_renderbuffer->startframe += written;
+               expected_delay += written;
+       }
        
        return written;
 }
@@ -324,12 +330,7 @@ void SndSys_Submit (void)
        if (nbframes > limit)
        {
                written = SndSys_Write (&snd_renderbuffer->ring[startoffset * factor], limit);
-               if (written < 0)
-                       return;
-               snd_renderbuffer->startframe += written;
-               expected_delay += written;
-
-               if ((snd_pcm_uframes_t)written != limit)
+               if (written < 0 || (snd_pcm_uframes_t)written != limit)
                        return;
                
                nbframes -= limit;
@@ -339,9 +340,6 @@ void SndSys_Submit (void)
        written = SndSys_Write (&snd_renderbuffer->ring[startoffset * factor], nbframes);
        if (written < 0)
                return;
-
-       snd_renderbuffer->startframe += written;
-       expected_delay += written;
 }