For very short tracks played in succession (example is 339 frames), the GDI frontend spends more time generating the image than the track takes to play, blocking the message pump with update_data work, hanging the player.
For repeated plays of the same track, likely solution is to maintain a small cache of images.
For sequenced plays of different tracks, thread off generation or trigger via idle messages, achieving rate limiting and pre-emption.
For very short tracks played in succession (example is 339 frames), the GDI frontend spends more time generating the image than the track takes to play, blocking the message pump with
update_data
work, hanging the player.For repeated plays of the same track, likely solution is to maintain a small cache of images. For sequenced plays of different tracks, thread off generation or trigger via idle messages, achieving rate limiting and pre-emption.
Or of course, "don't do that".