h = lpWaveHdr + ( snd_sent&WAV_MASK );
snd_sent++;
- /*
- * Now the data block can be sent to the output device. The
- * waveOutWrite function returns immediately and waveform
- * data is sent to the output device in the background.
- */
- wResult = waveOutWrite(hWaveOut, h, sizeof(WAVEHDR));
+ /*
+ * Now the data block can be sent to the output device. The
+ * waveOutWrite function returns immediately and waveform
+ * data is sent to the output device in the background.
+ */
+ wResult = waveOutWrite(hWaveOut, h, sizeof(WAVEHDR));
if (wResult != MMSYSERR_NOERROR)
- {
+ {
Con_SafePrintf ("Failed to write block to device\n");
FreeSound ();
- return;
- }
+ return;
+ }
}
}
FreeSound ();
}
+DWORD dsound_dwSize;
+DWORD dsound_dwSize2;
+DWORD *dsound_pbuf;
+DWORD *dsound_pbuf2;
+void *S_LockBuffer(void)
+{
+ int reps;
+ HRESULT hresult;
+
+ if (pDSBuf)
+ {
+ reps = 0;
+
+ while ((hresult = pDSBuf->lpVtbl->Lock(pDSBuf, 0, gSndBufSize, &dsound_pbuf, &dsound_dwSize, &dsound_pbuf2, &dsound_dwSize2, 0)) != DS_OK)
+ {
+ if (hresult != DSERR_BUFFERLOST)
+ {
+ Con_Printf ("S_LockBuffer: DS::Lock Sound Buffer Failed\n");
+ S_Shutdown ();
+ S_Startup ();
+ return NULL;
+ }
+
+ if (++reps > 10000)
+ {
+ Con_Printf ("S_LockBuffer: DS: couldn't restore buffer\n");
+ S_Shutdown ();
+ S_Startup ();
+ return NULL;
+ }
+ }
+ return dsound_pbuf;
+ }
+ else
+ return shm->buffer;
+}
+
+void S_UnlockBuffer(void)
+{
+ if (pDSBuf)
+ pDSBuf->lpVtbl->Unlock(pDSBuf, dsound_pbuf, dsound_dwSize, dsound_pbuf2, dsound_dwSize2);
+}
+
+void S_Open(void)
+{
+}
+
+void S_Close(void)
+{
+}