win32: prevent lost wakeups

Prevents lost wakeups causing the soft filters to lockup. The filter loop could signal its condition and then immediately regain the lock and wait on this same condition, causing it to be lost for the main thread waiting on it to finish.

This could possibly still happen if kernel APCs occur, but should not be an issue at the moment.

I tried with blargg's and left it running for about an hour with no lockup.