From 8c2c44f0c256a153a4ae517e9e11feee1faf846e Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 21 Jan 2007 03:09:11 +0000 Subject: [PATCH] end-sesion detect window must not be instrumented for 3m svn: r5421 --- src/wxwindow/src/msw/wx_pdf.cxx | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/wxwindow/src/msw/wx_pdf.cxx b/src/wxwindow/src/msw/wx_pdf.cxx index d0aadee2c1..7fd29e0ecf 100644 --- a/src/wxwindow/src/msw/wx_pdf.cxx +++ b/src/wxwindow/src/msw/wx_pdf.cxx @@ -168,6 +168,10 @@ static volatile int waiting_for_cancel = 0, qes_answer = 0; static HANDLE cs_lock; extern void wxPostQueryEndSession(); +#ifdef MZ_PRECISE_GC +START_XFORM_SKIP; +#endif + static int ResetCancelSema() { int qa; @@ -187,17 +191,17 @@ LRESULT APIENTRY wxEndSessionWatcherWndProc(HWND hWnd, UINT message, WPARAM wPar end session or exit. */ int qa; - WaitForSingleObject(cs_lock, INFINITE); + WaitForSingleObject(cs_lock, INFINITE); qa = qes_answer; - waiting_for_cancel = 1; + waiting_for_cancel = 1; ReleaseMutex(cs_lock); - if (!qa) { + if (!qa) { wxPostQueryEndSession(); WaitForSingleObject(cancel_sema, INFINITE); qa = ResetCancelSema(); - } - return qa; + } + return qa; } return ::DefWindowProcW(hWnd, message, wParam, lParam); @@ -219,6 +223,10 @@ static long DoEndSessionWin(void *data) return 0; } +#ifdef MZ_PRECISE_GC +END_XFORM_SKIP; +#endif + void wxEndEndSessionThread() { } @@ -240,11 +248,11 @@ void notify_cancel() ReleaseMutex(cs_lock); if (wfc) { - wxNotifyCancelEndSession(); - /* Block until the qes window can handle a random message */ + wxNotifyCancelEndSession(); + /* Block until the qes window can handle a random message */ SendMessage(qes_win, - RegisterWindowMessage("MrEd_Done_B2261834-D535-44dd-8511-A26FC8F97DD0"), - 0, 0); + RegisterWindowMessage("MrEd_Done_B2261834-D535-44dd-8511-A26FC8F97DD0"), + 0, 0); } }