| 1368 | } |
| 1369 | |
| 1370 | void doRenderSamples(modAudioOut out) |
| 1371 | { |
| 1372 | LPBYTE p1, p2; |
| 1373 | DWORD b1, b2; |
| 1374 | HRESULT hr; |
| 1375 | DWORD bytesWritten = out->samplesNeeded * out->bytesPerFrame; |
| 1376 | |
| 1377 | EnterCriticalSection(&out->cs); |
| 1378 | |
| 1379 | audioMix(out, out->samplesNeeded, (OUTPUTSAMPLETYPE*)out->buffer); |
| 1380 | |
| 1381 | hr = IDirectSoundBuffer_Lock(out->dSBuffer, (DWORD)(out->bytesWritten % out->bufferSize), bytesWritten, |
| 1382 | (LPVOID *)&p1, &b1, (LPVOID *)&p2, &b2, 0); |
| 1383 | if (FAILED(hr)) |
| 1384 | goto bail; |
| 1385 | |
| 1386 | if (NULL != p1) { |
| 1387 | c_memcpy(p1, out->buffer, b1); |
| 1388 | if (NULL != p2) |
| 1389 | c_memcpy(p2, b1 + out->buffer, b2); |
| 1390 | out->bytesWritten += bytesWritten; |
| 1391 | out->samplesNeeded = 0; |
| 1392 | } |
| 1393 | |
| 1394 | IDirectSoundBuffer_Unlock(out->dSBuffer, p1, b1, p2, b2); |
| 1395 | |
| 1396 | bail: |
| 1397 | LeaveCriticalSection(&out->cs); |
| 1398 | } |
| 1399 | |
| 1400 | LRESULT CALLBACK modAudioWindowProc(HWND window, UINT message, WPARAM wParam, LPARAM lParam) |
| 1401 | { |
no test coverage detected