Files
@ r2563:3e19f473caed
Branch filter:
Location: cpp/openttd-patchpack/source/sound/win32_s.c - annotation
r2563:3e19f473caed
2.0 KiB
text/x-c
(svn r3100) -Codechange [Clone vehicles] Major change to clone vehicles
removed duplicated code and added DoCommand, which used the define build commands added with autoreplace
This should not affect gameplay at all
removed duplicated code and added DoCommand, which used the define build commands added with autoreplace
This should not affect gameplay at all
r2186:5ee653b1b5e1 r2186:5ee653b1b5e1 r2189:2faee8988cf3 r2189:2faee8988cf3 r2189:2faee8988cf3 r2189:2faee8988cf3 r2189:2faee8988cf3 r2189:2faee8988cf3 r2174:494188320cb1 r2189:2faee8988cf3 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2449:aacd9822e85d r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2449:aacd9822e85d r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 r2174:494188320cb1 | /* $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(_mixer, 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,
};
|