+/*
+====================
+SndSys_Write
+====================
+*/
+static int SndSys_Write (const unsigned char* buffer, unsigned int nb_bytes)
+{
+ int written;
+ unsigned int factor;
+
+ written = write (audio_fd, buffer, nb_bytes);
+ if (written < 0)
+ {
+ if (errno != EAGAIN)
+ Con_Printf ("SndSys_Write: audio write returned %d! (errno= %d)\n",
+ written, errno);
+ return written;
+ }
+
+ factor = snd_renderbuffer->format.width * snd_renderbuffer->format.channels;
+ if (written % factor != 0)
+ Sys_Error ("SndSys_Write: nb of bytes written (%d) isn't aligned to a frame sample!\n",
+ written);
+
+ snd_renderbuffer->startframe += written / factor;
+
+ if ((unsigned int)written < nb_bytes)
+ {
+ Con_DPrintf("SndSys_Submit: audio can't keep up! (%u < %u)\n",
+ written, nb_bytes);
+ }
+
+ return written;
+}
+
+