changes, request all of its assets that we need be loaded. Once each
piece finishes, load it from cache. We still take a skip to decode graphics
(banners in particular), but not from disk seeks, which is an issue on hard
drives and fatal on CDs.
This also handles fading banners much more precisely: we fade to the
high res banner once the music wheel has settled. Before, it was approximate;
we'd often load the banner before we settled. It still skips, but it's much less
prominent to skip when the music wheel is completely settled, than to skip
just before it settles.
Some more work is necessary to resolve lock contention; currently, you'll
still see frequent skips off a CD (but not constant as before). I'm working
on that, but I'm not sure if I want to put that in before the release, since
it's caused some crashes that I havn't tracked down.
The actual background work is disabled, and may not be enabled for the
release. I'm committing this to get the basic API work ironed out. It still
gives perceptual skip improvements even without the background thread.
ScreenSelectMusic. (If we want simpler screens to use low res banners,
we can create an AutoFadingBanner to do what this logic did.) It's ugly
to have music wheel metrics, etc. in here.
make the music selection screen playable when music is being read
off a CD. This is actually disabled; I'm adding it so I can shift
ScreenSelectMusic to use the API.