diff --git a/src/kernel/message.c b/src/kernel/message.c index 7937927b..7dbcc2a8 100644 --- a/src/kernel/message.c +++ b/src/kernel/message.c @@ -953,6 +953,14 @@ checkagain: sem_wait (&pMsgQueue->wait); } + goto checkagain; + } + else { + /* no message, wait again. */ + if (pMsgQueue->OnIdle && !pMsgQueue->OnIdle (pMsgQueue, FALSE)) { + handle_idle_message (pMsgQueue); + } + goto checkagain; } #else /* defined _MGHAVE_VIRTUAL_WINDOW */ @@ -964,6 +972,11 @@ checkagain: } goto checkagain; } + else { + if (!pMsgQueue->OnIdle (pMsgQueue, TRUE)) { + handle_idle_message (pMsgQueue); + } + } #endif /* not defined _MGHAVE_VIRTUAL_WINDOW */ /* no message */