[WINESYNC][WINMM] PlaySound: Formatting only

- Indent with spaces
- complies with Wine
This commit is contained in:
Thamatip Chitpong 2023-06-14 12:06:44 +07:00 committed by Stanislav Motylkov
parent b30a8a0868
commit a9580fb95c

View file

@ -37,7 +37,7 @@ typedef struct tagWINE_PLAYSOUND
static WINE_PLAYSOUND *PlaySoundCurrent; static WINE_PLAYSOUND *PlaySoundCurrent;
static BOOL bPlaySoundStop; static BOOL bPlaySoundStop;
static HMMIO get_mmioFromFile(LPCWSTR lpszName) static HMMIO get_mmioFromFile(LPCWSTR lpszName)
{ {
HMMIO ret; HMMIO ret;
WCHAR buf[256]; WCHAR buf[256];
@ -308,37 +308,37 @@ Quit:
struct playsound_data struct playsound_data
{ {
HANDLE hEvent; HANDLE hEvent;
LONG dwEventCount; LONG dwEventCount;
}; };
static void CALLBACK PlaySound_Callback(HWAVEOUT hwo, UINT uMsg, static void CALLBACK PlaySound_Callback(HWAVEOUT hwo, UINT uMsg,
DWORD_PTR dwInstance, DWORD_PTR dwInstance,
DWORD_PTR dwParam1, DWORD_PTR dwParam2) DWORD_PTR dwParam1, DWORD_PTR dwParam2)
{ {
struct playsound_data* s = (struct playsound_data*)dwInstance; struct playsound_data* s = (struct playsound_data*)dwInstance;
switch (uMsg) { switch (uMsg) {
case WOM_OPEN: case WOM_OPEN:
case WOM_CLOSE: case WOM_CLOSE:
break; break;
case WOM_DONE: case WOM_DONE:
InterlockedIncrement(&s->dwEventCount); InterlockedIncrement(&s->dwEventCount);
TRACE("Returning waveHdr=%lx\n", dwParam1); TRACE("Returning waveHdr=%lx\n", dwParam1);
SetEvent(s->hEvent); SetEvent(s->hEvent);
break; break;
default: default:
ERR("Unknown uMsg=%d\n", uMsg); ERR("Unknown uMsg=%d\n", uMsg);
} }
} }
static void PlaySound_WaitDone(struct playsound_data* s) static void PlaySound_WaitDone(struct playsound_data* s)
{ {
for (;;) { for (;;) {
if (InterlockedDecrement(&s->dwEventCount) >= 0) break; if (InterlockedDecrement(&s->dwEventCount) >= 0) break;
InterlockedIncrement(&s->dwEventCount); InterlockedIncrement(&s->dwEventCount);
WaitForSingleObject(s->hEvent, INFINITE); WaitForSingleObject(s->hEvent, INFINITE);
} }
} }
@ -420,70 +420,70 @@ static WINE_PLAYSOUND* PlaySound_AllocAndGetMMIO(const void* pszSound, HMODULE h
static BOOL proc_PlaySound(WINE_PLAYSOUND *wps) static BOOL proc_PlaySound(WINE_PLAYSOUND *wps)
{ {
BOOL bRet = FALSE; BOOL bRet = FALSE;
MMCKINFO ckMainRIFF; MMCKINFO ckMainRIFF;
MMCKINFO mmckInfo; MMCKINFO mmckInfo;
LPWAVEFORMATEX lpWaveFormat = NULL; LPWAVEFORMATEX lpWaveFormat = NULL;
HWAVEOUT hWave = 0; HWAVEOUT hWave = 0;
LPWAVEHDR waveHdr = NULL; LPWAVEHDR waveHdr = NULL;
INT count, bufsize, left, index; INT count, bufsize, left, index;
struct playsound_data s; struct playsound_data s;
LONG r; LONG r;
s.hEvent = 0; s.hEvent = 0;
if (mmioDescend(wps->hmmio, &ckMainRIFF, NULL, 0)) if (mmioDescend(wps->hmmio, &ckMainRIFF, NULL, 0))
goto errCleanUp; goto errCleanUp;
TRACE("ParentChunk ckid=%.4s fccType=%.4s cksize=%08X\n", TRACE("ParentChunk ckid=%.4s fccType=%.4s cksize=%08X\n",
(LPSTR)&ckMainRIFF.ckid, (LPSTR)&ckMainRIFF.fccType, ckMainRIFF.cksize); (LPSTR)&ckMainRIFF.ckid, (LPSTR)&ckMainRIFF.fccType, ckMainRIFF.cksize);
if ((ckMainRIFF.ckid != FOURCC_RIFF) || if ((ckMainRIFF.ckid != FOURCC_RIFF) ||
(ckMainRIFF.fccType != mmioFOURCC('W', 'A', 'V', 'E'))) (ckMainRIFF.fccType != mmioFOURCC('W', 'A', 'V', 'E')))
goto errCleanUp; goto errCleanUp;
mmckInfo.ckid = mmioFOURCC('f', 'm', 't', ' '); mmckInfo.ckid = mmioFOURCC('f', 'm', 't', ' ');
if (mmioDescend(wps->hmmio, &mmckInfo, &ckMainRIFF, MMIO_FINDCHUNK)) if (mmioDescend(wps->hmmio, &mmckInfo, &ckMainRIFF, MMIO_FINDCHUNK))
goto errCleanUp; goto errCleanUp;
TRACE("Chunk Found ckid=%.4s fccType=%08x cksize=%08X\n", TRACE("Chunk Found ckid=%.4s fccType=%08x cksize=%08X\n",
(LPSTR)&mmckInfo.ckid, mmckInfo.fccType, mmckInfo.cksize); (LPSTR)&mmckInfo.ckid, mmckInfo.fccType, mmckInfo.cksize);
lpWaveFormat = HeapAlloc(GetProcessHeap(), 0, mmckInfo.cksize); lpWaveFormat = HeapAlloc(GetProcessHeap(), 0, mmckInfo.cksize);
if (!lpWaveFormat) if (!lpWaveFormat)
goto errCleanUp; goto errCleanUp;
r = mmioRead(wps->hmmio, (HPSTR)lpWaveFormat, mmckInfo.cksize); r = mmioRead(wps->hmmio, (HPSTR)lpWaveFormat, mmckInfo.cksize);
if (r < 0 || r < sizeof(PCMWAVEFORMAT)) if (r < 0 || r < sizeof(PCMWAVEFORMAT))
goto errCleanUp; goto errCleanUp;
TRACE("wFormatTag=%04X !\n", lpWaveFormat->wFormatTag); TRACE("wFormatTag=%04X !\n", lpWaveFormat->wFormatTag);
TRACE("nChannels=%d\n", lpWaveFormat->nChannels); TRACE("nChannels=%d\n", lpWaveFormat->nChannels);
TRACE("nSamplesPerSec=%d\n", lpWaveFormat->nSamplesPerSec); TRACE("nSamplesPerSec=%d\n", lpWaveFormat->nSamplesPerSec);
TRACE("nAvgBytesPerSec=%d\n", lpWaveFormat->nAvgBytesPerSec); TRACE("nAvgBytesPerSec=%d\n", lpWaveFormat->nAvgBytesPerSec);
TRACE("nBlockAlign=%d\n", lpWaveFormat->nBlockAlign); TRACE("nBlockAlign=%d\n", lpWaveFormat->nBlockAlign);
TRACE("wBitsPerSample=%u !\n", lpWaveFormat->wBitsPerSample); TRACE("wBitsPerSample=%u !\n", lpWaveFormat->wBitsPerSample);
/* move to end of 'fmt ' chunk */ /* move to end of 'fmt ' chunk */
mmioAscend(wps->hmmio, &mmckInfo, 0); mmioAscend(wps->hmmio, &mmckInfo, 0);
mmckInfo.ckid = mmioFOURCC('d', 'a', 't', 'a'); mmckInfo.ckid = mmioFOURCC('d', 'a', 't', 'a');
if (mmioDescend(wps->hmmio, &mmckInfo, &ckMainRIFF, MMIO_FINDCHUNK)) if (mmioDescend(wps->hmmio, &mmckInfo, &ckMainRIFF, MMIO_FINDCHUNK))
goto errCleanUp; goto errCleanUp;
TRACE("Chunk Found ckid=%.4s fccType=%08x cksize=%08X\n", TRACE("Chunk Found ckid=%.4s fccType=%08x cksize=%08X\n",
(LPSTR)&mmckInfo.ckid, mmckInfo.fccType, mmckInfo.cksize); (LPSTR)&mmckInfo.ckid, mmckInfo.fccType, mmckInfo.cksize);
s.hEvent = CreateEventW(NULL, FALSE, FALSE, NULL); s.hEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
if (!s.hEvent || bPlaySoundStop) if (!s.hEvent || bPlaySoundStop)
goto errCleanUp; goto errCleanUp;
if (waveOutOpen(&hWave, WAVE_MAPPER, lpWaveFormat, (DWORD_PTR)PlaySound_Callback, if (waveOutOpen(&hWave, WAVE_MAPPER, lpWaveFormat, (DWORD_PTR)PlaySound_Callback,
(DWORD_PTR)&s, CALLBACK_FUNCTION) != MMSYSERR_NOERROR) (DWORD_PTR)&s, CALLBACK_FUNCTION) != MMSYSERR_NOERROR)
goto errCleanUp; goto errCleanUp;
/* make it so that 3 buffers per second are needed */ /* make it so that 3 buffers per second are needed */
bufsize = (((lpWaveFormat->nAvgBytesPerSec / 3) - 1) / lpWaveFormat->nBlockAlign + 1) * bufsize = (((lpWaveFormat->nAvgBytesPerSec / 3) - 1) / lpWaveFormat->nBlockAlign + 1) *
lpWaveFormat->nBlockAlign; lpWaveFormat->nBlockAlign;
waveHdr = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(WAVEHDR) + 2 * bufsize); waveHdr = HeapAlloc(GetProcessHeap(), 0, 2 * sizeof(WAVEHDR) + 2 * bufsize);
if (!waveHdr) if (!waveHdr)
goto errCleanUp; goto errCleanUp;
@ -494,8 +494,8 @@ static BOOL proc_PlaySound(WINE_PLAYSOUND *wps)
waveHdr[0].dwFlags = waveHdr[1].dwFlags = 0L; waveHdr[0].dwFlags = waveHdr[1].dwFlags = 0L;
waveHdr[0].dwBufferLength = waveHdr[1].dwBufferLength = bufsize; waveHdr[0].dwBufferLength = waveHdr[1].dwBufferLength = bufsize;
if (waveOutPrepareHeader(hWave, &waveHdr[0], sizeof(WAVEHDR)) || if (waveOutPrepareHeader(hWave, &waveHdr[0], sizeof(WAVEHDR)) ||
waveOutPrepareHeader(hWave, &waveHdr[1], sizeof(WAVEHDR))) { waveOutPrepareHeader(hWave, &waveHdr[1], sizeof(WAVEHDR))) {
goto errCleanUp; goto errCleanUp;
} }
wps->hWave = hWave; wps->hWave = hWave;
@ -503,21 +503,21 @@ static BOOL proc_PlaySound(WINE_PLAYSOUND *wps)
index = 0; index = 0;
do { do {
left = mmckInfo.cksize; left = mmckInfo.cksize;
mmioSeek(wps->hmmio, mmckInfo.dwDataOffset, SEEK_SET); mmioSeek(wps->hmmio, mmckInfo.dwDataOffset, SEEK_SET);
while (left) while (left)
{ {
if (bPlaySoundStop) if (bPlaySoundStop)
{ {
wps->bLoop = FALSE; wps->bLoop = FALSE;
break; break;
} }
count = mmioRead(wps->hmmio, waveHdr[index].lpData, min(bufsize, left)); count = mmioRead(wps->hmmio, waveHdr[index].lpData, min(bufsize, left));
if (count < 1) break; if (count < 1) break;
left -= count; left -= count;
waveHdr[index].dwBufferLength = count; waveHdr[index].dwBufferLength = count;
if (waveOutWrite(hWave, &waveHdr[index], sizeof(WAVEHDR)) == MMSYSERR_NOERROR) { if (waveOutWrite(hWave, &waveHdr[index], sizeof(WAVEHDR)) == MMSYSERR_NOERROR) {
index ^= 1; index ^= 1;
PlaySound_WaitDone(&s); PlaySound_WaitDone(&s);
} }
@ -526,8 +526,8 @@ static BOOL proc_PlaySound(WINE_PLAYSOUND *wps)
wps->bLoop = FALSE; wps->bLoop = FALSE;
break; break;
} }
} }
bRet = TRUE; bRet = TRUE;
} while (wps->bLoop); } while (wps->bLoop);
PlaySound_WaitDone(&s); /* to balance first buffer */ PlaySound_WaitDone(&s); /* to balance first buffer */
@ -589,11 +589,11 @@ static BOOL MULTIMEDIA_PlaySound(const void* pszSound, HMODULE hmod, DWORD fdwSo
WINE_PLAYSOUND* wps = NULL; WINE_PLAYSOUND* wps = NULL;
TRACE("pszSound='%p' hmod=%p fdwSound=%08X\n", TRACE("pszSound='%p' hmod=%p fdwSound=%08X\n",
pszSound, hmod, fdwSound); pszSound, hmod, fdwSound);
/* SND_NOWAIT is ignored in w95/2k/xp. */ /* SND_NOWAIT is ignored in w95/2k/xp. */
if ((fdwSound & SND_NOSTOP) && PlaySoundCurrent != NULL) if ((fdwSound & SND_NOSTOP) && PlaySoundCurrent != NULL)
return FALSE; return FALSE;
/* alloc internal structure, if we need to play something */ /* alloc internal structure, if we need to play something */
if (pszSound && !(fdwSound & SND_PURGE)) if (pszSound && !(fdwSound & SND_PURGE))