diff --git a/lib-src/portmidi/pm_win/pmwinmm.c b/lib-src/portmidi/pm_win/pmwinmm.c index 2de8109a0..22961d5a0 100644 --- a/lib-src/portmidi/pm_win/pmwinmm.c +++ b/lib-src/portmidi/pm_win/pmwinmm.c @@ -37,16 +37,16 @@ #define MIDI_EOX 0xf7 /* callback routines */ -static void CALLBACK winmm_in_callback(HMIDIIN hMidiIn, - WORD wMsg, DWORD dwInstance, - DWORD dwParam1, DWORD dwParam2); -static void CALLBACK winmm_streamout_callback(HMIDIOUT hmo, UINT wMsg, - DWORD dwInstance, DWORD dwParam1, - DWORD dwParam2); +static void CALLBACK winmm_in_callback( + HMIDIIN hMidiIn, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, + DWORD_PTR dwParam2); +static void CALLBACK winmm_streamout_callback( + HMIDIOUT hmo, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, + DWORD_PTR dwParam2); #ifdef USE_SYSEX_BUFFERS -static void CALLBACK winmm_out_callback(HMIDIOUT hmo, UINT wMsg, - DWORD dwInstance, DWORD dwParam1, - DWORD dwParam2); +static void CALLBACK winmm_out_callback( + HMIDIOUT hmo, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, + DWORD_PTR dwParam2); #endif extern pm_fns_node pm_winmm_in_dictionary; @@ -666,10 +666,10 @@ static PmError winmm_in_close(PmInternal *midi) /* Callback function executed via midiInput SW interrupt (via midiInOpen). */ static void FAR PASCAL winmm_in_callback( HMIDIIN hMidiIn, /* midiInput device Handle */ - WORD wMsg, /* midi msg */ - DWORD dwInstance, /* application data */ - DWORD dwParam1, /* MIDI data */ - DWORD dwParam2) /* device timestamp (wrt most recent midiInStart) */ + UINT wMsg, /* midi msg */ + DWORD_PTR dwInstance, /* application data */ + DWORD_PTR dwParam1, /* MIDI data */ + DWORD_PTR dwParam2) /* device timestamp (wrt most recent midiInStart) */ { static int entry = 0; PmInternal *midi = (PmInternal *) dwInstance; @@ -688,7 +688,6 @@ static void FAR PASCAL winmm_in_callback( * hardware interrupt? -- but I've seen reentrant behavior * using a debugger, so it happens. */ - long new_driver_time; EnterCriticalSection(&m->lock); /* dwParam1 is MIDI data received, packed into DWORD w/ 1st byte of @@ -697,8 +696,6 @@ static void FAR PASCAL winmm_in_callback( in [ms] from when midiInStart called. each message is expanded to include the status byte */ - new_driver_time = dwParam2; - if ((dwParam1 & 0x80) == 0) { /* not a status byte -- ignore it. This happened running the sysex.c test under Win2K with MidiMan USB 1x1 interface, @@ -709,8 +706,8 @@ static void FAR PASCAL winmm_in_callback( PmEvent event; if (midi->time_proc) dwParam2 = (*midi->time_proc)(midi->time_info); - event.timestamp = dwParam2; - event.message = dwParam1; + event.timestamp = (PmTimestamp)dwParam2; + event.message = (PmMessage)dwParam1; pm_read_short(midi, &event); } LeaveCriticalSection(&m->lock); @@ -731,7 +728,7 @@ static void FAR PASCAL winmm_in_callback( /* assume yes and iterate through them */ while (remaining > 0) { unsigned int amt = pm_read_bytes(midi, data + processed, - remaining, dwParam2); + remaining, (PmTimestamp)dwParam2); remaining -= amt; processed += amt; } @@ -1327,8 +1324,9 @@ static void CALLBACK winmm_out_callback(HMIDIOUT hmo, UINT wMsg, #endif /* winmm_streamout_callback -- unprepare (free) buffer header */ -static void CALLBACK winmm_streamout_callback(HMIDIOUT hmo, UINT wMsg, - DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) +static void CALLBACK winmm_streamout_callback( + HMIDIOUT hmo, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, + DWORD_PTR dwParam2) { PmInternal *midi = (PmInternal *) dwInstance; midiwinmm_type m = (midiwinmm_type) midi->descriptor;