wine/dlls/winmm mmsystem.c winemm.h
Michael Stefaniuc
mstefani at redhat.de
Thu May 16 17:16:49 CDT 2002
Hello,
tested the patch and FreeSolitaire works again. You can close the bug
entry.
thanks
bye
michael
On Thu, May 16, 2002 at 10:03:17PM +0200, Eric Pouech wrote:
> Eric Pouech a écrit :
> oops the last hunk of the patch isn't part of the patch
> so Alexandre, please use this file instead
>
> A+
> Name: ps_a2w
> ChangeLog: fixed hangs when playing an ASCII resource
> License: X11
> GenDate: 2002/05/16 19:48:36 UTC
> ModifiedFiles: dlls/winmm/mmsystem.c
> AddedFiles:
> ===================================================================
> RCS file: /home/cvs/cvsroot/wine/wine/dlls/winmm/mmsystem.c,v
> retrieving revision 1.52
> diff -u -u -r1.52 mmsystem.c
> --- dlls/winmm/mmsystem.c 12 May 2002 03:10:26 -0000 1.52
> +++ dlls/winmm/mmsystem.c 16 May 2002 19:39:46 -0000
> @@ -447,6 +447,7 @@
> waveOutUnprepareHeader(hWave, &waveHdr[1], sizeof(WAVEHDR));
>
> errCleanUp:
> + TRACE("Done playing='%s' !\n", debugstr_w(wps->pszSound));
> CloseHandle(s.hEvent);
> HeapFree(GetProcessHeap(), 0, waveHdr);
> HeapFree(GetProcessHeap(), 0, lpWaveFormat);
> @@ -463,6 +464,21 @@
> return bRet;
> }
>
> +static BOOL MULTIMEDIA_IsString(DWORD fdwSound, const void* psz)
> +{
> + /* SND_RESOURCE is 0x40004 while
> + * SND_MEMORY is 0x00004
> + */
> + switch (fdwSound & SND_RESOURCE)
> + {
> + case SND_RESOURCE: return HIWORD(psz) != 0; /* by name or by ID ? */
> + case SND_MEMORY: return FALSE;
> + /* any other case (SND_ALIAS, SND_FILENAME... shall drop into this one) */
> + case 0: return TRUE;
> + default: FIXME("WTF\n"); return FALSE;
> + }
> +}
> +
> static BOOL MULTIMEDIA_PlaySound(LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound, DWORD search)
> {
> WINE_PLAYSOUND* wps = NULL;
> @@ -515,10 +531,9 @@
> } while (InterlockedCompareExchangePointer((void**)&iData->lpPlaySound, wps, NULL) != NULL);
>
> if (fdwSound & SND_ASYNC) {
> - if (!((fdwSound & SND_MEMORY) || ((fdwSound & SND_RESOURCE) &&
> - !((DWORD)pszSound >> 16)) ||
> - !pszSound)) {
> - wps->pszSound = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(pszSound)+1) * sizeof(WCHAR) );
> + if (MULTIMEDIA_IsString(fdwSound, pszSound))
> + {
> + wps->pszSound = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(pszSound)+1) * sizeof(WCHAR));
> lstrcpyW((LPWSTR)wps->pszSound, pszSound);
> }
> wps->bLoop = fdwSound & SND_LOOP;
> @@ -541,16 +556,13 @@
> {
> LPWSTR pszSoundW;
> BOOL bSound;
> +
> + pszSoundW = (MULTIMEDIA_IsString(fdwSound, pszSoundA)) ?
> + HEAP_strdupAtoW(GetProcessHeap(), 0, pszSoundA) : (LPWSTR)pszSoundA;
>
> - if (!((fdwSound & SND_MEMORY) ||
> - ((fdwSound & SND_RESOURCE) && !((DWORD)pszSoundA >> 16)) ||
> - !pszSoundA)) {
> - pszSoundW = HEAP_strdupAtoW(GetProcessHeap(), 0, pszSoundA);
> - bSound = PlaySoundW(pszSoundW, hmod, fdwSound);
> - HeapFree(GetProcessHeap(), 0, pszSoundW);
> - } else
> - bSound = PlaySoundW((LPWSTR)pszSoundA, hmod, fdwSound);
> -
> + bSound = PlaySoundW(pszSoundW, hmod, fdwSound);
> + if ((void*)pszSoundW != (void*)pszSoundA) HeapFree(GetProcessHeap(), 0, pszSoundW);
> +
> return bSound;
> }
>
> @@ -585,14 +597,12 @@
> LPWSTR pszSoundW;
> BOOL bSound;
>
> - if (!((uFlags & SND_MEMORY) ||
> - ((uFlags & SND_RESOURCE) && !((DWORD)pszSoundA >> 16)) ||
> - !pszSoundA)) {
> - pszSoundW = HEAP_strdupAtoW(GetProcessHeap(), 0, pszSoundA);
> - bSound = sndPlaySoundW(pszSoundW, uFlags);
> + pszSoundW = (MULTIMEDIA_IsString(uFlags, pszSoundA)) ?
> + HEAP_strdupAtoW(GetProcessHeap(), 0, pszSoundA) : (LPWSTR)pszSoundA;
> +
> + bSound = sndPlaySoundW(pszSoundW, uFlags);
> + if ((void*)pszSoundW != (void*)pszSoundA)
> HeapFree(GetProcessHeap(), 0, pszSoundW);
> - } else
> - bSound = sndPlaySoundW((LPWSTR)pszSoundA, uFlags);
>
> return bSound;
> }
--
Michael Stefaniuc Tel.: +49-711-96437-199
System Administration Fax.: +49-711-96437-111
Red Hat GmbH Email: mstefani at redhat.com
Hauptstaetterstr. 58 http://www.redhat.de/
D-70178 Stuttgart
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 232 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-devel/attachments/20020517/90675699/attachment.pgp
More information about the wine-devel
mailing list