Added __WXMAC_OSX__ guards around the CFRunLoop calls, CFRunLoop not available on CFM [ followup on Patch 1160346 ]
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33138 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
08d9e66e01
commit
ec8565f3c5
@ -21,10 +21,8 @@
|
||||
#include "wx/gdicmn.h"
|
||||
#include "wx/event.h"
|
||||
|
||||
#ifdef __DARWIN__
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
#else
|
||||
#include <CoreFoundation.h>
|
||||
#ifdef __WXMAC_OSX__
|
||||
#include <CoreFoundation/CFRunLoop.h>
|
||||
#endif
|
||||
|
||||
class WXDLLEXPORT wxFrame;
|
||||
@ -111,7 +109,9 @@ private:
|
||||
WXEVENTHANDLERREF m_macEventHandler ;
|
||||
WXEVENTHANDLERCALLREF m_macCurrentEventHandlerCallRef ;
|
||||
WXEVENTREF m_macCurrentEvent ;
|
||||
#ifdef __WXMAC_OSX__
|
||||
CFRunLoopSourceRef m_macEventPosted ;
|
||||
#endif
|
||||
|
||||
public:
|
||||
static bool s_macSupportPCMenuShortcuts ;
|
||||
|
@ -607,11 +607,16 @@ pascal static void wxMacAssertOutputHandler(OSType componentSignature, UInt32 op
|
||||
|
||||
#endif //__WXDEBUG__
|
||||
|
||||
#ifdef __WXMAC_OSX__
|
||||
extern "C" {
|
||||
/* m_macEventPosted run loop source callback: */
|
||||
void macPostedEventCallback(void *unused) { wxTheApp->ProcessPendingEvents(); }
|
||||
void macPostedEventCallback(void *unused);
|
||||
}
|
||||
|
||||
void macPostedEventCallback(void *unused) {
|
||||
wxTheApp->ProcessPendingEvents(); }
|
||||
#endif
|
||||
|
||||
bool wxApp::Initialize(int& argc, wxChar **argv)
|
||||
{
|
||||
// Mac-specific
|
||||
@ -679,12 +684,14 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
|
||||
|
||||
wxMacCreateNotifierTable() ;
|
||||
|
||||
#ifdef __WXMAC_OSX__
|
||||
/* connect posted events to common-mode run loop so that wxPostEvent events
|
||||
are handled even while we're in the menu or on a scrollbar */
|
||||
CFRunLoopSourceContext event_posted_context = {0};
|
||||
event_posted_context.perform = macPostedEventCallback;
|
||||
m_macEventPosted = CFRunLoopSourceCreate(NULL,0,&event_posted_context);
|
||||
CFRunLoopAddSource(CFRunLoopGetCurrent(), m_macEventPosted, kCFRunLoopCommonModes);
|
||||
#endif
|
||||
|
||||
UMAShowArrowCursor() ;
|
||||
|
||||
@ -733,11 +740,13 @@ void wxApp::CleanUp()
|
||||
wxToolTip::RemoveToolTips() ;
|
||||
#endif
|
||||
|
||||
#ifdef __WXMAC_OSX__
|
||||
if (m_macEventPosted)
|
||||
{
|
||||
CFRelease(m_macEventPosted);
|
||||
}
|
||||
m_macEventPosted = NULL;
|
||||
#endif
|
||||
|
||||
// One last chance for pending objects to be cleaned up
|
||||
wxTheApp->DeletePendingObjects();
|
||||
@ -871,11 +880,13 @@ bool wxMacConvertEventToRecord( EventRef event , EventRecord *rec)
|
||||
|
||||
wxApp::wxApp()
|
||||
{
|
||||
m_printMode = wxPRINT_WINDOWS;
|
||||
m_printMode = wxPRINT_WINDOWS;
|
||||
|
||||
m_macCurrentEvent = NULL ;
|
||||
m_macCurrentEventHandlerCallRef = NULL ;
|
||||
m_macEventPosted = NULL ;
|
||||
m_macCurrentEvent = NULL ;
|
||||
m_macCurrentEventHandlerCallRef = NULL ;
|
||||
#ifdef __WXMAC_OSX__
|
||||
m_macEventPosted = NULL ;
|
||||
#endif
|
||||
}
|
||||
|
||||
int wxApp::MainLoop()
|
||||
@ -932,10 +943,12 @@ void wxApp::OnIdle(wxIdleEvent& event)
|
||||
|
||||
void wxApp::WakeUpIdle()
|
||||
{
|
||||
#ifdef __WXMAC_OSX__
|
||||
if (m_macEventPosted)
|
||||
{
|
||||
CFRunLoopSourceSignal(m_macEventPosted);
|
||||
}
|
||||
#endif
|
||||
wxMacWakeUp() ;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user