Fix timer problems on shutdown

Change-Id: I697081cb62445a143029d22875afac7307189fd0
diff --git a/framework/delibs/deutil/deTimer.c b/framework/delibs/deutil/deTimer.c
index 1218d7f..320e44f 100644
--- a/framework/delibs/deutil/deTimer.c
+++ b/framework/delibs/deutil/deTimer.c
@@ -336,14 +336,14 @@
 		if (sleepTime > 0)
 			deSleep(sleepTime);
 
+		if (thread->state == TIMERSTATE_DISABLED)
+			break;
+
 		lastCallback = (deInt64)deGetMicroseconds();
 		thread->callback(thread->callbackArg);
 		numCallbacks += 1;
 	}
 
-	/* State lock is held when loop is exited. */
-	deMutex_unlock(thread->lock);
-
 	if (destroy)
 	{
 		/* Destroy thread except thread->thread. */