From 14fc7eb426cc05fd3016ad309997bdebcd44dc67 Mon Sep 17 00:00:00 2001 From: David Elliott Date: Wed, 6 Aug 2003 03:42:25 +0000 Subject: [PATCH] Don't install idle event handler in secondary threads. I've not seen this happen yet, but it can, and I'm taking this precaution. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22625 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/cocoa/app.h | 1 + src/cocoa/app.mm | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/include/wx/cocoa/app.h b/include/wx/cocoa/app.h index ac4078563f..8f4eb674f0 100644 --- a/include/wx/cocoa/app.h +++ b/include/wx/cocoa/app.h @@ -34,6 +34,7 @@ public: inline void CocoaRequestIdle() { m_isIdle = true; } protected: WX_NSApplication m_cocoaApp; + WX_NSThread m_cocoaMainThread; void CocoaInstallIdleHandler(); bool m_isIdle; diff --git a/src/cocoa/app.mm b/src/cocoa/app.mm index 89a375eb1a..fc253712db 100644 --- a/src/cocoa/app.mm +++ b/src/cocoa/app.mm @@ -41,6 +41,7 @@ #import #import #import +#import // ---------------------------------------------------------------------------- // globals @@ -133,6 +134,7 @@ END_EVENT_TABLE() bool wxApp::Initialize(int& argc, wxChar **argv) { wxAutoNSAutoreleasePool pool; + m_cocoaMainThread = [NSThread currentThread]; // Mac OS X passes a process serial number command line argument when // the application is launched from the Finder. This argument must be // removed from the command line arguments before being handled by the @@ -181,6 +183,12 @@ wxApp::wxApp() void wxApp::CocoaInstallIdleHandler() { + // If we're not the main thread, don't install the idle handler + if(m_cocoaMainThread != [NSThread currentThread]) + { + wxLogDebug("Attempt to install idle handler from secondary thread"); + return; + } // If we're supposed to be stopping, don't add more idle events if(![m_cocoaApp isRunning]) return; -- 2.45.2