in threaded programming, condition signaling must only be done from within a context that has a lock on the associated mutex (see http://wiki.libsdl.org/SDL_CondWait for an example). this PR fixes fastevents.c to obey that rule.
Oops, sorry, I just merged it. I would guess that it fixes a race condition that may be very unlikely to come up in practice. The examples in the SDL wiki seem pretty clear that these functions are used with the lock. Travis is happy with it: https://travis-ci.org/illume/pygame/builds/128611522
In practice there is already some sort of locking going on in those python macros where the race would never possibly happen when called by python code. Also there is the overhead of calling the python functions which just by itself makes this VERY unlikely too. Of course I can't prove that. I only know there have been no reported failures (doesn't mean they don't happen). Just looking at the SDL code without considering the python parts wrapping it is not the full story.
Races like this are also a very hard thing to test (especially on so many platforms), and I'd rather not mess with this unless it's proven broken.