On Jul 28, 8:20 am, pjohnsen <[EMAIL PROTECTED]> wrote:
> From what I can see, what happens is this: If there is already a
> message for appshell in the queue when calling PostQuitMessage,
> appshell will eat the WM_QUIT message. One possible workaround is to
> also set a global quit flag when doing the PostQuitMessage and then
> let your message loop break out if this is set. Something like:
>
> while (!gQuit) {
> WaitMessage();
> while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
> if (msg.message == WM_QUIT) {
> gQuit = true;
> break;
> }
> if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
> {
> TranslateMessage(&msg);
> DispatchMessage(&msg);
> }
> }
> }
>
> and:
>
> case WM_DESTROY:
> PostQuitMessage(0);
> gQuit = true;
> break;
>
> Hope this helps,
>
> -Pelle
>
> On Jul 23, 10:59 am, pjohnsen <[EMAIL PROTECTED]> wrote:
>
>
>
> > I am occasionally seeing similar behavior, i.e. that an embedding app
> > hangs during shutdown on win32, though I haven't quite figured out
> > what is going on yet. I will try to look more into this.
>
> > -Pelle- Hide quoted text -
>
> - Show quoted text -
You have to make sure all windows that get created have actually
closed before termination. It is possible to send window terminations
followed too quickly by a WM_QUIT. If this happens and those
window(s) have not completely closed then WM_QUIT severs all ties. If
this happens, then either the app will crash or hang. I corrected the
exact same behavior by waiting and checking to make sure all windows
that are created no longer exist after I request them to terminate.
Then once satisfied I send the final WM_QUIT message. Until I
followed this pattern I received either crash or hang behavior but no
more.
_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding