os: fix input_mutex_count off-by-one in input_force_unlock

input_force_unlock was mis-using input_mutex_lock and leaving it set
to -1. As this is  executed from OsInit at each server generation, on
the second time through, the mutex would be left locked (!) due to the
trylock call. This caused input to fail after the first server reset.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Keith Packard 2016-05-29 01:14:59 -07:00
parent de36200659
commit 06bdc3bc1a

View File

@ -109,9 +109,10 @@ void
input_force_unlock(void)
{
if (pthread_mutex_trylock(&input_mutex) == 0) {
input_mutex_count++;
/* unlock +1 times for the trylock */
while (input_mutex_count-- >= 0)
pthread_mutex_unlock(&input_mutex);
while (input_mutex_count > 0)
input_unlock();
}
}