[Scummvm-cvs-logs] SF.net SVN: scummvm:[43126] scummvm/trunk/sound/midiparser_xmidi.cpp

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sat Aug 8 15:57:22 CEST 2009


Revision: 43126
          http://scummvm.svn.sourceforge.net/scummvm/?rev=43126&view=rev
Author:   lordhoto
Date:     2009-08-08 13:57:21 +0000 (Sat, 08 Aug 2009)

Log Message:
-----------
Fix XMIDI looping implementation. Now for example the music in the ferret village of ITE plays fine.

Modified Paths:
--------------
    scummvm/trunk/sound/midiparser_xmidi.cpp

Modified: scummvm/trunk/sound/midiparser_xmidi.cpp
===================================================================
--- scummvm/trunk/sound/midiparser_xmidi.cpp	2009-08-08 12:31:49 UTC (rev 43125)
+++ scummvm/trunk/sound/midiparser_xmidi.cpp	2009-08-08 13:57:21 UTC (rev 43126)
@@ -115,6 +115,8 @@
 				byte *pos = _position._play_pos;
 				if (_loopCount < ARRAYSIZE(_loop) - 1)
 					_loopCount++;
+				else
+					warning("XMIDI: Exceeding maximum loop count %d", ARRAYSIZE(_loop));
 
 				_loop[_loopCount].pos = pos;
 				_loop[_loopCount].repeat = info.basic.param2;
@@ -127,11 +129,14 @@
 					// End the current loop.
 					_loopCount--;
 				} else {
-					_position._play_pos = _loop[_loopCount].pos;
 					// Repeat 0 means "loop forever".
 					if (_loop[_loopCount].repeat) {
 						if (--_loop[_loopCount].repeat == 0)
 							_loopCount--;
+						else
+							_position._play_pos = _loop[_loopCount].pos;
+					} else {
+						_position._play_pos = _loop[_loopCount].pos;
 					}
 				}
 			}
@@ -155,7 +160,6 @@
 				warning("Unsupported XMIDI controller %d (0x%2x)",
 					info.basic.param1, info.basic.param1);
 			}
-			break;
 		}
 
 		// Should we really keep passing the XMIDI controller events to


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list