LMMS/lmms — pull request #1053 by diizy (2014-08-03 19:20:00+00:00)
Title: Banish all locks

More removal of global lock calls: mostly replacing them with local mutexes (eh.. mutices?) which don't block the core rendering function.

A smart (I hope) thing I did was adding "processing locks" to tracks and playhandles. This way, when tracks are busy doing something like loading a plugin, they don't have to block the mixer thread: they just lock their "processing lock", which causes the play function to skip processing in tracks. Playhandles don't skip, they block but only their own rendering thread.

I think I can even notice some performance boost, although I'm not sure about that, haven't benchmarked or anything, but some projects of mine that are very cpu-heavy seem to run a bit smoother in this branch, compared to current master.

@tresf, @softrabbit, @grejppi, some testing of this branch would be nice before merging it.