private void WaitForAllBuffers() { WaveOutBuffer objBuf = objBuffers; while (objBuf.objNextBuffer != objBuffers) { objBuf.WaitFor(); objBuf = objBuf.objNextBuffer; } }
internal static void WaveOutProc(IntPtr objHdrvr, Int32 intMsg, Int32 intDwUser, ref WaveNative.WaveHdr objWavhdr, Int32 intDwParam2) { if (intMsg == WaveNative.MM_WOM_DONE) { try { GCHandle objH = (GCHandle)objWavhdr.objDwUser; WaveOutBuffer objBuf = (WaveOutBuffer)objH.Target; objBuf.OnCompleted(); } catch { } } }
private void FreeBuffers() { objCurrentBuffer = null; if (objBuffers != null) { WaveOutBuffer First = objBuffers; objBuffers = null; WaveOutBuffer Current = First; do { WaveOutBuffer objNext = Current.objNextBuffer; Current.Dispose(); Current = objNext; } while(Current != First); } }
private void AllocateBuffers(Int32 intBufferSize, Int32 intBufferCount) { FreeBuffers(); if (intBufferCount > 0) { objBuffers = new WaveOutBuffer(objWaveOut, intBufferSize); WaveOutBuffer Prev = objBuffers; try { for (Int32 intI = 1; intI < intBufferCount; intI++) { var objBuf = new WaveOutBuffer(objWaveOut, intBufferSize); Prev.objNextBuffer = objBuf; Prev = objBuf; } } finally { Prev.objNextBuffer = objBuffers; } } }
private void Advance() { objCurrentBuffer = objCurrentBuffer == null ? objBuffers : objCurrentBuffer.objNextBuffer; objCurrentBuffer.WaitFor(); }