diff --git a/base/messagequeue.cpp b/base/messagequeue.cpp index 7116c9d..1d3fb5b 100644 --- a/base/messagequeue.cpp +++ b/base/messagequeue.cpp @@ -135,9 +135,9 @@ bool MessageQueue::Get(Message *pmsg, long64 ctWait) return false; } -void MessageQueue::Post(Message *pmsg, int idCoalesce) +void MessageQueue::Post(Message *pmsg, int idCoalesce, bool fEvenIfStopping) { - if (stop_) + if (stop_ && !fEvenIfStopping) return; // Copy message before putting in queue diff --git a/base/messagequeue.h b/base/messagequeue.h index 2fe9f34..1a477a6 100644 --- a/base/messagequeue.h +++ b/base/messagequeue.h @@ -60,7 +60,7 @@ public: virtual void Stop(); virtual bool IsStopping(); virtual bool Get(Message *pmsg, long64 ctWait = kctForever); - virtual void Post(Message *pmsg, int idCoalesce = -1); + virtual void Post(Message *pmsg, int idCoalesce = -1, bool fEvenIfStopping = false); virtual void Post(int id, MessageHandler *handler, MessageData *data = NULL) { Message msg; diff --git a/game/iphone/host.cpp b/game/iphone/host.cpp index 84ff3de..ab0c924 100644 --- a/game/iphone/host.cpp +++ b/game/iphone/host.cpp @@ -89,7 +89,7 @@ void HostSuspendModalLoop(DibBitmap *pbm) break; } if (msg.id == kidmAppTerminate) { - thread.Post(&msg); + thread.Post(&msg, -1, true); break; } thread.Dispatch(&msg); @@ -129,8 +129,8 @@ bool ProcessMessage(base::Message *pmsg, Event *pevt) case kidmMouseMove2: pevt->eType = penMoveEvent2; pevt->ff = kfEvtFinger; - break; - + break; + case kidmAppTerminate: pevt->eType = appStopEvent; pevt->ff = 0;