I've been working on a port of TiMidity++ to android and discovered with certain mod files, loops are incorrectly detected and total time is reported to be on the upwards of 177 minutes.
As a temporary solution to prevent TiMidity++ from entirely hanging and consuming all the RAM of the host device, I changed
if ((!pf) || (mp.sngpos >= pf->numpos))
to
if ((!pf) || (mp.sngpos >= pf->numpos) || readmidi_error_flag)
in the first if statement of HandleTick(). This allows TiMidity++ to play what it can of the "gigantic" mod file (and not kill itself in the process).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I've been working on a port of TiMidity++ to android and discovered with certain mod files, loops are incorrectly detected and total time is reported to be on the upwards of 177 minutes.
As a temporary solution to prevent TiMidity++ from entirely hanging and consuming all the RAM of the host device, I changed
to
in the first if statement of HandleTick(). This allows TiMidity++ to play what it can of the "gigantic" mod file (and not kill itself in the process).