diff --git a/src/xpdev/msg_queue.c b/src/xpdev/msg_queue.c
index f426a1fa92def9606365ededba1146471051e1f3..695fbd71acf048a5a7c01c0a04cd9e3d4b8aa2de 100644
--- a/src/xpdev/msg_queue.c
+++ b/src/xpdev/msg_queue.c
@@ -26,7 +26,7 @@
 #include "threadwrap.h" /* pthread_self */
 #include "msg_queue.h"
 
-msg_queue_t* msgQueueInit(msg_queue_t* q, long flags)
+msg_queue_t* msgQueueInit(msg_queue_t* q, int flags)
 {
 	if (q == NULL) {
 		if ((q = (msg_queue_t*)malloc(sizeof(msg_queue_t))) == NULL)
@@ -69,7 +69,7 @@ bool msgQueueFree(msg_queue_t* q)
 	return true;
 }
 
-long msgQueueAttach(msg_queue_t* q)
+int msgQueueAttach(msg_queue_t* q)
 {
 	if (q == NULL)
 		return -1;
@@ -79,7 +79,7 @@ long msgQueueAttach(msg_queue_t* q)
 	return q->refs;
 }
 
-long msgQueueDetach(msg_queue_t* q)
+int msgQueueDetach(msg_queue_t* q)
 {
 	int refs;
 
@@ -136,12 +136,12 @@ static link_list_t* msgQueueWriteList(msg_queue_t* q)
 	return &q->in;
 }
 
-long msgQueueReadLevel(msg_queue_t* q)
+int msgQueueReadLevel(msg_queue_t* q)
 {
 	return listCountNodes(msgQueueReadList(q));
 }
 
-static bool list_wait(link_list_t* list, long timeout)
+static bool list_wait(link_list_t* list, int timeout)
 {
 #if defined(LINK_LIST_THREADSAFE)
 	if (timeout < 0)   /* infinite */
@@ -152,7 +152,7 @@ static bool list_wait(link_list_t* list, long timeout)
 	return listSemTryWaitBlock(list, timeout);
 #else
 	clock_t start;
-	long    count;
+	int     count;
 
 	start = msclock();
 	while ((count = listCountNodes(list)) == 0) {
@@ -166,7 +166,7 @@ static bool list_wait(link_list_t* list, long timeout)
 #endif
 }
 
-bool msgQueueWait(msg_queue_t* q, long timeout)
+bool msgQueueWait(msg_queue_t* q, int timeout)
 {
 	bool         result;
 	link_list_t* list = msgQueueReadList(q);
@@ -180,7 +180,7 @@ bool msgQueueWait(msg_queue_t* q, long timeout)
 	return result;
 }
 
-void* msgQueueRead(msg_queue_t* q, long timeout)
+void* msgQueueRead(msg_queue_t* q, int timeout)
 {
 	link_list_t* list = msgQueueReadList(q);
 
@@ -189,7 +189,7 @@ void* msgQueueRead(msg_queue_t* q, long timeout)
 	return listShiftNode(list);
 }
 
-void* msgQueuePeek(msg_queue_t* q, long timeout)
+void* msgQueuePeek(msg_queue_t* q, int timeout)
 {
 	link_list_t* list = msgQueueReadList(q);
 
@@ -222,7 +222,7 @@ list_node_t* msgQueueLastNode(msg_queue_t* q)
 	return listLastNode(msgQueueReadList(q));
 }
 
-long msgQueueWriteLevel(msg_queue_t* q)
+int msgQueueWriteLevel(msg_queue_t* q)
 {
 	return listCountNodes(msgQueueWriteList(q));
 }
diff --git a/src/xpdev/msg_queue.h b/src/xpdev/msg_queue.h
index 01b31ce23bb375ae064538b44b8a13a35733840b..4cd8b1ef9cb740a3528c0ed9549aa8fb411a2118 100644
--- a/src/xpdev/msg_queue.h
+++ b/src/xpdev/msg_queue.h
@@ -35,8 +35,8 @@ typedef struct {
 	link_list_t in;
 	link_list_t out;
 	pthread_t owner_thread_id;          /* reads from in, writes to out */
-	long refs;
-	unsigned long flags;                /* private use flags */
+	int refs;
+	unsigned int flags;                /* private use flags */
 	void* private_data;
 } msg_queue_t;
 
@@ -44,21 +44,21 @@ typedef struct {
 #define MSG_QUEUE_BIDIR         (1 << 1)  /* Bi-directional message queue */
 #define MSG_QUEUE_ORPHAN        (1 << 2)  /* Owner has detached */
 
-DLLEXPORT msg_queue_t*  msgQueueInit(msg_queue_t*, long flags);
+DLLEXPORT msg_queue_t*  msgQueueInit(msg_queue_t*, int flags);
 DLLEXPORT bool          msgQueueFree(msg_queue_t*);
 
-DLLEXPORT long          msgQueueAttach(msg_queue_t*);
-DLLEXPORT long          msgQueueDetach(msg_queue_t*);
+DLLEXPORT int           msgQueueAttach(msg_queue_t*);
+DLLEXPORT int           msgQueueDetach(msg_queue_t*);
 DLLEXPORT bool          msgQueueOwner(msg_queue_t*);
 
 /* Get/Set queue private data */
 DLLEXPORT void*         msgQueueSetPrivateData(msg_queue_t*, void*);
 DLLEXPORT void*         msgQueueGetPrivateData(msg_queue_t*);
 
-DLLEXPORT bool          msgQueueWait(msg_queue_t* q, long timeout);
-DLLEXPORT long          msgQueueReadLevel(msg_queue_t*);
-DLLEXPORT void*         msgQueueRead(msg_queue_t*, long timeout);
-DLLEXPORT void*         msgQueuePeek(msg_queue_t*, long timeout);
+DLLEXPORT bool          msgQueueWait(msg_queue_t* q, int timeout);
+DLLEXPORT int           msgQueueReadLevel(msg_queue_t*);
+DLLEXPORT void*         msgQueueRead(msg_queue_t*, int timeout);
+DLLEXPORT void*         msgQueuePeek(msg_queue_t*, int timeout);
 DLLEXPORT void*         msgQueueFind(msg_queue_t*, const void*, size_t length);
 DLLEXPORT list_node_t*  msgQueueFirstNode(msg_queue_t*);
 DLLEXPORT list_node_t*  msgQueueLastNode(msg_queue_t*);
@@ -66,7 +66,7 @@ DLLEXPORT list_node_t*  msgQueueLastNode(msg_queue_t*);
 #define         msgQueuePrevNode(node)          listPrevNode(node)
 #define         msgQueueNodeData(node)          listNodeData(node)
 
-DLLEXPORT long          msgQueueWriteLevel(msg_queue_t*);
+DLLEXPORT int           msgQueueWriteLevel(msg_queue_t*);
 DLLEXPORT bool          msgQueueWrite(msg_queue_t*, const void*, size_t length);
 
 #if defined(__cplusplus)