From c26cccbe4bf82138b3e299aa458013f725ffb31d Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Mon, 27 Sep 1999 13:37:28 +0000 Subject: [PATCH] Got rid of hack on WAVEHDR's & MIDIHDR's reserved field for 16/32 bit discrimination. Fixed a few segptr/linear address bugs in WAVEHDR/MIDIHDR handling. --- multimedia/mmsystem.c | 45 +++++++++++---------------------------------- 1 file changed, 11 insertions(+), 34 deletions(-) diff --git a/multimedia/mmsystem.c b/multimedia/mmsystem.c index 7e62a62404a..cefe1a6e31d 100644 --- a/multimedia/mmsystem.c +++ b/multimedia/mmsystem.c @@ -2143,8 +2143,6 @@ UINT WINAPI midiOutPrepareHeader(HMIDIOUT hMidiOut, if ((wmld = MMDRV_Get(hMidiOut, MMDRV_MIDIOUT, FALSE)) == NULL) return MMSYSERR_INVALHANDLE; - /* FIXME: this should disapear */ - lpMidiOutHdr->reserved = (DWORD)lpMidiOutHdr; return MMDRV_Message(wmld, MODM_PREPARE, (DWORD)lpMidiOutHdr, uSize, TRUE); } @@ -2163,8 +2161,6 @@ UINT16 WINAPI midiOutPrepareHeader16(HMIDIOUT16 hMidiOut, if ((wmld = MMDRV_Get(hMidiOut, MMDRV_MIDIOUT, FALSE)) == NULL) return MMSYSERR_INVALHANDLE; - /* FIXME: this should disapear */ - lpMidiOutHdr->reserved = (DWORD)lpsegMidiOutHdr; return MMDRV_Message(wmld, MODM_PREPARE, (DWORD)lpMidiOutHdr, uSize, FALSE); } @@ -2207,7 +2203,7 @@ UINT16 WINAPI midiOutUnprepareHeader16(HMIDIOUT16 hMidiOut, if ((wmld = MMDRV_Get(hMidiOut, MMDRV_MIDIOUT, FALSE)) == NULL) return MMSYSERR_INVALHANDLE; - return MMDRV_Message(wmld, MODM_UNPREPARE, (DWORD)lpMidiOutHdr, uSize, FALSE); + return MMDRV_Message(wmld, MODM_UNPREPARE, (DWORD)lpsegMidiOutHdr, uSize, FALSE); } /************************************************************************** @@ -2660,8 +2656,6 @@ UINT WINAPI midiInPrepareHeader(HMIDIIN hMidiIn, if ((wmld = MMDRV_Get(hMidiIn, MMDRV_MIDIIN, FALSE)) == NULL) return MMSYSERR_INVALHANDLE; - /* FIXME: should disapear */ - lpMidiInHdr->reserved = (DWORD)lpMidiInHdr; return MMDRV_Message(wmld, MIDM_PREPARE, (DWORD)lpMidiInHdr, uSize, TRUE); } @@ -2673,16 +2667,13 @@ UINT16 WINAPI midiInPrepareHeader16(HMIDIIN16 hMidiIn, UINT16 uSize) { LPWINE_MLD wmld; - LPMIDIHDR16 lpMidiInHdr = PTR_SEG_TO_LIN(lpsegMidiInHdr); TRACE("(%04X, %p, %d)\n", hMidiIn, lpsegMidiInHdr, uSize); if ((wmld = MMDRV_Get(hMidiIn, MMDRV_MIDIIN, FALSE)) == NULL) return MMSYSERR_INVALHANDLE; - /* FIXME: should disapear */ - lpMidiInHdr->reserved = (DWORD)lpsegMidiInHdr; - return MMDRV_Message(wmld, MIDM_PREPARE, (DWORD)lpMidiInHdr, uSize, FALSE); + return MMDRV_Message(wmld, MIDM_PREPARE, (DWORD)lpsegMidiInHdr, uSize, FALSE); } /************************************************************************** @@ -2757,7 +2748,7 @@ UINT16 WINAPI midiInAddBuffer16(HMIDIIN16 hMidiIn, if ((wmld = MMDRV_Get(hMidiIn, MMDRV_MIDIIN, FALSE)) == NULL) return MMSYSERR_INVALHANDLE; - return MMDRV_Message(wmld, MIDM_ADDBUFFER, (DWORD)lpsegMidiInHdr, uSize, TRUE); + return MMDRV_Message(wmld, MIDM_ADDBUFFER, (DWORD)lpsegMidiInHdr, uSize, FALSE); } /************************************************************************** @@ -3001,7 +2992,7 @@ static BOOL MMSYSTEM_MidiStream_MessageHandler(WINE_MIDIStream* lpMidiStrm, LPWI lpMidiHdr->dwFlags &= ~MHDR_INQUEUE; DriverCallback(lpwm->mod.dwCallback, lpMidiStrm->wFlags, lpMidiStrm->hDevice, - MM_MOM_DONE, lpwm->mod.dwInstance, lpMidiHdr->reserved, 0L); + MM_MOM_DONE, lpwm->mod.dwInstance, (DWORD)lpMidiHdr, 0L); } lpMidiStrm->lpMidiHdr = 0; SetEvent(lpMidiStrm->hEvent); @@ -3039,11 +3030,10 @@ static BOOL MMSYSTEM_MidiStream_MessageHandler(WINE_MIDIStream* lpMidiStrm, LPWI * 3b 4c 00 99 23 5e 04 89 3b 00 00 89 23 00 7c 99 ;L..#^..;...#.|. */ lpMidiHdr = (LPMIDIHDR)msg->lParam; - lpData = ((DWORD)lpMidiHdr == lpMidiHdr->reserved) ? - (LPBYTE)lpMidiHdr->lpData : (LPBYTE)PTR_SEG_TO_LIN(lpMidiHdr->lpData); + lpData = lpMidiHdr->lpData; TRACE("Adding %s lpMidiHdr=%p [lpData=0x%08lx dwBufferLength=%lu/%lu dwFlags=0x%08lx size=%u]\n", (lpMidiHdr->dwFlags & MHDR_ISSTRM) ? "stream" : "regular", lpMidiHdr, - lpMidiHdr->reserved, lpMidiHdr->dwBufferLength, lpMidiHdr->dwBytesRecorded, + (DWORD)lpMidiHdr, lpMidiHdr->dwBufferLength, lpMidiHdr->dwBytesRecorded, lpMidiHdr->dwFlags, msg->wParam); #if 0 /* dumps content of lpMidiHdr->lpData @@ -3075,7 +3065,7 @@ static BOOL MMSYSTEM_MidiStream_MessageHandler(WINE_MIDIStream* lpMidiStrm, LPWI lpMidiHdr->dwFlags &= ~MHDR_INQUEUE; DriverCallback(lpwm->mod.dwCallback, lpMidiStrm->wFlags, lpMidiStrm->hDevice, - MM_MOM_DONE, lpwm->mod.dwInstance, lpMidiHdr->reserved, 0L); + MM_MOM_DONE, lpwm->mod.dwInstance, (DWORD)lpMidiHdr, 0L); break; } @@ -3145,13 +3135,8 @@ static DWORD CALLBACK MMSYSTEM_MidiStream_Player(LPVOID pmt) continue; } - /* - * midiOutPrepareHeader(), in Wine, sets the 'reserved' field of MIDIHDR to the - * 16 or 32 bit address of lpMidiHdr (depending if called from 16 to 32 bit code) - */ if (!lpData) - lpData = ((DWORD)lpMidiHdr == lpMidiHdr->reserved) ? - (LPBYTE)lpMidiHdr->lpData : (LPBYTE)PTR_SEG_TO_LIN(lpMidiHdr->lpData); + lpData = lpMidiHdr->lpData; me = (LPMIDIEVENT)(lpData + lpMidiHdr->dwOffset); @@ -3213,7 +3198,7 @@ static DWORD CALLBACK MMSYSTEM_MidiStream_Player(LPVOID pmt) lpMidiStrm->lpMidiHdr = (LPMIDIHDR)lpMidiHdr->lpNext; DriverCallback(lpwm->mod.dwCallback, lpMidiStrm->wFlags, lpMidiStrm->hDevice, - MM_MOM_DONE, lpwm->mod.dwInstance, lpMidiHdr->reserved, 0L); + MM_MOM_DONE, lpwm->mod.dwInstance, (DWORD)lpMidiHdr, 0L); lpData = 0; } } @@ -3868,9 +3853,6 @@ UINT WINAPI waveOutPrepareHeader(HWAVEOUT hWaveOut, if ((wmld = MMDRV_Get(hWaveOut, MMDRV_WAVEOUT, FALSE)) == NULL) return MMSYSERR_INVALHANDLE; - /* FIXME: this should disapear */ - lpWaveOutHdr->reserved = (DWORD)lpWaveOutHdr; - return MMDRV_Message(wmld, WODM_PREPARE, (DWORD)lpWaveOutHdr, uSize, TRUE); } @@ -3884,16 +3866,13 @@ UINT16 WINAPI waveOutPrepareHeader16(HWAVEOUT16 hWaveOut, LPWINE_MLD wmld; LPWAVEHDR lpWaveOutHdr = (LPWAVEHDR)PTR_SEG_TO_LIN(lpsegWaveOutHdr); - TRACE("(%04X, %p, %u);\n", hWaveOut, lpWaveOutHdr, uSize); + TRACE("(%04X, %p, %u);\n", hWaveOut, lpsegWaveOutHdr, uSize); if (lpWaveOutHdr == NULL) return MMSYSERR_INVALPARAM; if ((wmld = MMDRV_Get(hWaveOut, MMDRV_WAVEOUT, FALSE)) == NULL) return MMSYSERR_INVALHANDLE; - /* FIXME: this should disapear */ - lpWaveOutHdr->reserved = (DWORD)lpsegWaveOutHdr; - return MMDRV_Message(wmld, WODM_PREPARE, (DWORD)lpsegWaveOutHdr, uSize, FALSE); } @@ -4309,7 +4288,6 @@ UINT WINAPI waveInPrepareHeader(HWAVEIN hWaveIn, WAVEHDR* lpWaveInHdr, return MMSYSERR_INVALHANDLE; lpWaveInHdr->dwBytesRecorded = 0; - lpWaveInHdr->reserved = (DWORD)lpWaveInHdr; return MMDRV_Message(wmld, WIDM_PREPARE, (DWORD)lpWaveInHdr, uSize, TRUE); } @@ -4332,9 +4310,8 @@ UINT16 WINAPI waveInPrepareHeader16(HWAVEIN16 hWaveIn, return MMSYSERR_INVALHANDLE; lpWaveInHdr->dwBytesRecorded = 0; - lpWaveInHdr->reserved = (DWORD)lpsegWaveInHdr; - ret = MMDRV_Message(wmld, WIDM_PREPARE, (DWORD)lpWaveInHdr, uSize, FALSE); + ret = MMDRV_Message(wmld, WIDM_PREPARE, (DWORD)lpsegWaveInHdr, uSize, FALSE); return ret; } -- 2.11.4.GIT