Fix MIDI playback on Windows, broken in r5817.

The main fix here is GET_NEXT_EVENT.

git-svn-id: https://svn.eduke32.com/eduke32@5855 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2016-09-09 03:12:15 +00:00
parent 07cbae15c9
commit 750ceb932c
2 changed files with 8 additions and 7 deletions

View file

@ -70,9 +70,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#define MIDI_MONO_MODE_ON 0x7E
#define MIDI_SYSTEM_RESET 0xFF
#define GET_NEXT_EVENT( track, data ) \
( data ) = *( track )->pos; \
( track )->pos += 1
#define GET_NEXT_EVENT( track, data ) do { \
( data ) = *( track )->pos; \
( track )->pos += 1; \
} while (0)
#define GET_MIDI_CHANNEL( event ) ( ( event ) & 0xf )
#define GET_MIDI_COMMAND( event ) ( ( event ) >> 4 )

View file

@ -218,11 +218,11 @@ static void _MIDI_MetaEvent(track *Track)
_MIDI_BeatsPerMeasure = (int32_t)*Track->pos;
int32_t denominator = (int32_t) * (Track->pos + 1);
do
while (denominator > 0)
{
_MIDI_TimeBase += _MIDI_TimeBase;
denominator--;
} while (denominator > 0);
}
_MIDI_TicksPerBeat = tabledivide32_noinline(_MIDI_Division * 4, _MIDI_TimeBase);
break;
@ -397,6 +397,8 @@ static void _MIDI_ServiceRoutine(void)
track *Track = _MIDI_TrackPtr;
int32_t tracknum = 0;
int32_t TimeSet = FALSE;
int32_t c1 = 0;
int32_t c2 = 0;
while (tracknum < _MIDI_NumTracks)
{
@ -429,8 +431,6 @@ static void _MIDI_ServiceRoutine(void)
int const channel = GET_MIDI_CHANNEL(event);
int const command = GET_MIDI_COMMAND(event);
int32_t c1 = 0;
int32_t c2 = 0;
if (_MIDI_CommandLengths[ command ] > 0)
{