clementine-player/Clementine — pull request #4263 by abika (2014-04-02 14:03:16+00:00)
Title: Load all songs that require disc-read non-blocking.

As mentioned here #4254, there are several problems when songs are loaded async:

- in SongLoader::LoadLocal() the tagreader is started before the finished signal is connected
- the order in which the songloaders are calling back PendingLoadFinished() is not fixed, thus the final order in the playlist might be mixed up
- SongLoader::Load() starts new threads and can slow down the caller (SongLoaderInserter::Load()). Until the caller is done Clementine freezes and
after that most of the songloader threads are already done, making the threading approach meaningless.

I tried to untangle the async load by dividing it into 3 separate steps (Load(), PreLoad(), EffectiveLoad()) without having to keep track of async signal emmisions.

I know a lot changed but this is better than fixing ugly bugs with ugly workarounds.