diff options
author | KUDr <kudr@openttd.org> | 2007-01-10 18:12:09 +0000 |
---|---|---|
committer | KUDr <kudr@openttd.org> | 2007-01-10 18:12:09 +0000 |
commit | e373ea7096c741a8189f7a480863fd21dd6f6be1 (patch) | |
tree | d9abc3d9810159441bed9f82a52bd1ee52d770dd /src/sound/win32_s.c | |
parent | 001d858b528d78743deaf7dcea46ea8f0736bad9 (diff) | |
download | openttd-e373ea7096c741a8189f7a480863fd21dd6f6be1.tar.xz |
(svn r8033) [cpp] - Prepare for merge from branches/cpp (all .c files renamed to .cpp)
Diffstat (limited to 'src/sound/win32_s.c')
-rw-r--r-- | src/sound/win32_s.c | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/src/sound/win32_s.c b/src/sound/win32_s.c deleted file mode 100644 index a39cee985..000000000 --- a/src/sound/win32_s.c +++ /dev/null @@ -1,87 +0,0 @@ -/* $Id$ */ - -#include "../stdafx.h" -#include "../openttd.h" -#include "../driver.h" -#include "../functions.h" -#include "../mixer.h" -#include "win32_s.h" -#include <windows.h> -#include <mmsystem.h> - -static HWAVEOUT _waveout; -static WAVEHDR _wave_hdr[2]; -static int _bufsize; - -static void PrepareHeader(WAVEHDR *hdr) -{ - hdr->dwBufferLength = _bufsize * 4; - hdr->dwFlags = 0; - hdr->lpData = malloc(_bufsize * 4); - if (hdr->lpData == NULL || - waveOutPrepareHeader(_waveout, hdr, sizeof(WAVEHDR)) != MMSYSERR_NOERROR) - error("waveOutPrepareHeader failed"); -} - -static void FillHeaders(void) -{ - WAVEHDR *hdr; - - for (hdr = _wave_hdr; hdr != endof(_wave_hdr); hdr++) { - if (!(hdr->dwFlags & WHDR_INQUEUE)) { - MxMixSamples(hdr->lpData, hdr->dwBufferLength / 4); - if (waveOutWrite(_waveout, hdr, sizeof(WAVEHDR)) != MMSYSERR_NOERROR) - error("waveOutWrite failed"); - } - } -} - -static void CALLBACK waveOutProc(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance, - DWORD dwParam1, DWORD dwParam2) -{ - switch (uMsg) { - case WOM_DONE: - if (_waveout) FillHeaders(); - break; - - default: - break; - } -} - -static const char *Win32SoundStart(const char* const* parm) -{ - WAVEFORMATEX wfex; - int hz; - - _bufsize = GetDriverParamInt(parm, "bufsize", 1024); - hz = GetDriverParamInt(parm, "hz", 11025); - wfex.wFormatTag = WAVE_FORMAT_PCM; - wfex.nChannels = 2; - wfex.nSamplesPerSec = hz; - wfex.nAvgBytesPerSec = hz * 2 * 2; - wfex.nBlockAlign = 4; - wfex.wBitsPerSample = 16; - if (waveOutOpen(&_waveout, WAVE_MAPPER, &wfex, (DWORD_PTR)&waveOutProc, 0, CALLBACK_FUNCTION) != MMSYSERR_NOERROR) - return "waveOutOpen failed"; - PrepareHeader(&_wave_hdr[0]); - PrepareHeader(&_wave_hdr[1]); - FillHeaders(); - return NULL; -} - -static void Win32SoundStop(void) -{ - HWAVEOUT waveout = _waveout; - - _waveout = NULL; - waveOutReset(waveout); - waveOutUnprepareHeader(waveout, &_wave_hdr[0], sizeof(WAVEHDR)); - waveOutUnprepareHeader(waveout, &_wave_hdr[1], sizeof(WAVEHDR)); - waveOutClose(waveout); -} - -const HalSoundDriver _win32_sound_driver = { - Win32SoundStart, - Win32SoundStop, -}; |