Wait until the thread has created its message queue before posting a

message otherwise it will be lost.
This commit is contained in:
Christian Costa 2005-01-11 15:07:30 +00:00 committed by Alexandre Julliard
parent 88d049d102
commit fed06be797
1 changed files with 10 additions and 0 deletions

View File

@ -145,10 +145,20 @@ outofthread:
static BOOL PostMessageToProcessMsgThread(IDirectMusicPerformance8Impl* This, UINT iMsg) {
if (FALSE == This->procThreadTicStarted && PROCESSMSG_EXIT != iMsg) {
BOOL res;
This->procThread = CreateThread(NULL, 0, ProcessMsgThread, This, 0, &This->procThreadId);
if (NULL == This->procThread) return FALSE;
SetThreadPriority(This->procThread, THREAD_PRIORITY_TIME_CRITICAL);
This->procThreadTicStarted = TRUE;
while(1) {
res = PostThreadMessageA(This->procThreadId, iMsg, 0, 0);
/* Let the thread creates its message queue (with MsgWaitForMultipleObjects call) by yielding and retrying */
if (!res && (GetLastError() == ERROR_INVALID_THREAD_ID))
Sleep(0);
else
break;
}
return res;
}
return PostThreadMessageA(This->procThreadId, iMsg, 0, 0);
}