diff --git a/src/xpdev/rwlockwrap.c b/src/xpdev/rwlockwrap.c
index 5015c1a9703dc9f12d2d07306a18690982987ca5..e1fcd3eba757bde31c067c44011a4a209f2755bc 100644
--- a/src/xpdev/rwlockwrap.c
+++ b/src/xpdev/rwlockwrap.c
@@ -6,7 +6,7 @@
 
 #elif defined(_WIN32)
 
-bool
+BOOL
 rwlock_init(rwlock_t *lock)
 {
 	InitializeCriticalSection(&lock->lk);
@@ -17,7 +17,7 @@ rwlock_init(rwlock_t *lock)
 	writer = (DWORD)-1;
 }
 
-bool
+BOOL
 rwlock_rdlock(rwlock_t *lock)
 {
 	DWORD obj;
@@ -43,29 +43,29 @@ rwlock_rdlock(rwlock_t *lock)
 			lock->readers++;
 			LeaveCriticalSection(&lock->lk);
 			LeaveCriticalSection(&lock->wlk);
-			return true;
+			return TRUE;
 		}
 	}
 	lock->readers++;
 	LeaveCriticalSection(&lock->lk);
-	return true;
+	return TRUE;
 }
 
-bool
+BOOL
 rwlock_tryrdlock(rwlock_t *lock)
 {
-	bool ret = false;
+	BOOL ret = FALSE;
 
 	EnterCriticalSection(&lock->lk);
 	if (lock->writers == 0 && lock->writers_waiting == 0) {
 		lock->readers++;
-		ret = true;
+		ret = TRUE;
 	}
 	LeaveCriticalSection(&lock->lk);
 	return ret;
 }
 
-bool
+BOOL
 rwlock_wrlock(rwlock_t *lock)
 {
 	EnterCriticalSection(&lock->lk);
@@ -80,14 +80,14 @@ rwlock_wrlock(rwlock_t *lock)
 		lock->writer = GetCurrentThreadId();
 		LeaveCriticalSection(&lock->lk);
 		// Keep holding wlk
-		return true;
+		return TRUE;
 	}
 	LeaveCriticalSection(&lock->lk);
 	LeaveCriticalSection(&lock->wlk);
-	return false;
+	return FALSE;
 }
 
-bool
+BOOL
 rwlock_trywrlock(rwlock_t *lock)
 {
 	if (TryEnterCriticalSection(&lock->wlk)) {
@@ -97,35 +97,35 @@ rwlock_trywrlock(rwlock_t *lock)
 			lock->writers++;
 			lock->writer = GetCurrentThreadId();
 			LeaveCriticalSection(&lock->lk);
-			return true;
+			return TRUE;
 		}
 		LeaveCriticalSection(&lock->lk);
 		LeaveCriticalSection(&lock->wlk);
-		return false;
+		return FALSE;
 	}
-	return false;
+	return FALSE;
 }
 
-bool
+BOOL
 rwlock_unlock(rwlock_t *lock)
 {
-	bool ret = false;
+	BOOL ret = FALSE;
 	EnterCriticalSection(&lock->lk);
 	if (lock->writers) {
 		if (lock->writer == GetCurrentThreadId()) {
 			lock->writers--;
 			LeaveCriticalSection(&lock->lk);
 			LeaveCriticalSection(&lock->wlk);
-			return true;
+			return TRUE;
 		}
 		LeaveCriticalSection(&lock->lk);
-		return false;
+		return FALSE;
 	}
 	if (lock->readers) {
 		lock->readers--;
-		return true;
+		return TRUE;
 	}
-	return false;
+	return FALSE;
 }
 
 #elif defined(__unix__)
diff --git a/src/xpdev/rwlockwrap.h b/src/xpdev/rwlockwrap.h
index c9058e7ac7d63864257e512733a7ff976aa6856c..12cea2e14b1970df17967d10513ceb02f340a1f8 100644
--- a/src/xpdev/rwlockwrap.h
+++ b/src/xpdev/rwlockwrap.h
@@ -4,7 +4,6 @@
 #if defined(__unix__)
 
 #include <pthread.h>
-#include <stdbool.h>
 typedef pthread_rwlock_t rwlock_t;
 
 #define rwlock_init(lock) (pthread_rwlock_init(lock, NULL) == 0)
@@ -20,11 +19,7 @@ typedef pthread_rwlock_t rwlock_t;
 
 #elif defined(_WIN32)
 
-#ifdef __MINGW32__
-#include <stdbool.h>
-#endif
-
-#include "gen_defs.h"	// For windows.h and bool :(
+#include "gen_defs.h"	// For windows.h and BOOL!! :(
 #include "threadwrap.h"
 
 typedef struct {
@@ -36,12 +31,12 @@ typedef struct {
 	DWORD writer;
 } rwlock_t;
 
-bool rwlock_init(rwlock_t *lock);
-bool rwlock_rdlock(rwlock_t *lock);
-bool rwlock_tryrdlock(rwlock_t *lock);
-bool rwlock_wrlock(rwlock_t *lock);
-bool rwlock_trywrlock(rwlock_t *lock);
-bool rwlock_unlock(rwlock_t *lock);
+BOOL rwlock_init(rwlock_t *lock);
+BOOL rwlock_rdlock(rwlock_t *lock);
+BOOL rwlock_tryrdlock(rwlock_t *lock);
+BOOL rwlock_wrlock(rwlock_t *lock);
+BOOL rwlock_trywrlock(rwlock_t *lock);
+BOOL rwlock_unlock(rwlock_t *lock);
 
 #else
 #error Not implemented