+
+/*
+====================
+SndSys_GetSoundTime
+
+Returns the number of sample frames consumed since the sound started
+====================
+*/
+unsigned int SndSys_GetSoundTime (void)
+{
+ snd_pcm_sframes_t delay, timediff;
+ int err;
+
+ if (pcm_handle == NULL)
+ return 0;
+
+ err = snd_pcm_delay (pcm_handle, &delay);
+ if (err < 0)
+ {
+ if (developer_insane.integer && vid_activewindow)
+ Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay (%s)\n",
+ snd_strerror (err));
+
+ if (! SndSys_Recover (err))
+ return 0;
+
+ err = snd_pcm_delay (pcm_handle, &delay);
+ if (err < 0)
+ {
+ Con_DPrintf ("SndSys_GetSoundTime: can't get playback delay, again (%s)\n",
+ snd_strerror (err));
+ return 0;
+ }
+ }
+
+ if (expected_delay < delay)
+ {
+ Con_DPrintf ("SndSys_GetSoundTime: expected_delay(%ld) < delay(%ld)\n",
+ expected_delay, delay);
+ timediff = 0;
+ }
+ else
+ timediff = expected_delay - delay;
+ expected_delay = delay;
+
+ alsasoundtime += (unsigned int)timediff;
+
+ return alsasoundtime;
+}
+
+
+/*
+====================
+SndSys_LockRenderBuffer
+
+Get the exclusive lock on "snd_renderbuffer"
+====================
+*/
+qboolean SndSys_LockRenderBuffer (void)
+{
+ // Nothing to do
+ return true;
+}
+
+
+/*
+====================
+SndSys_UnlockRenderBuffer
+
+Release the exclusive lock on "snd_renderbuffer"
+====================
+*/
+void SndSys_UnlockRenderBuffer (void)