00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifdef MACOSX_SKINS
00025
00026 #include <Carbon/Carbon.h>
00027 #include "macosx_loop.hpp"
00028
00029
00030 MacOSXLoop::MacOSXLoop( intf_thread_t *pIntf ):
00031 OSLoop( pIntf ), m_exit( false )
00032 {
00033 }
00034
00035
00036 MacOSXLoop::~MacOSXLoop()
00037 {
00038 }
00039
00040
00041 OSLoop *MacOSXLoop::instance( intf_thread_t *pIntf )
00042 {
00043 if( pIntf->p_sys->p_osLoop == NULL )
00044 {
00045 OSLoop *pOsLoop = new MacOSXLoop( pIntf );
00046 pIntf->p_sys->p_osLoop = pOsLoop;
00047 }
00048 return pIntf->p_sys->p_osLoop;
00049 }
00050
00051
00052 void MacOSXLoop::destroy( intf_thread_t *pIntf )
00053 {
00054 if( pIntf->p_sys->p_osLoop )
00055 {
00056 delete pIntf->p_sys->p_osLoop;
00057 pIntf->p_sys->p_osLoop = NULL;
00058 }
00059 }
00060
00061
00062 void MacOSXLoop::run()
00063 {
00064
00065 while( !m_exit )
00066 {
00067 EventRef pEvent;
00068 OSStatus err = ReceiveNextEvent( 0, NULL, kEventDurationForever, true,
00069 &pEvent );
00070 if( err != noErr )
00071 {
00072
00073 UInt32 evClass = GetEventClass( pEvent );
00074
00075 switch( evClass )
00076 {
00077 case kEventClassMouse:
00078 {
00079 break;
00080 }
00081
00082 case kEventClassKeyboard:
00083 {
00084 break;
00085 }
00086
00087 case kEventClassWindow:
00088 {
00089 handleWindowEvent( pEvent );
00090 break;
00091 }
00092
00093 default:
00094 {
00095 EventTargetRef pTarget;
00096 pTarget = GetEventDispatcherTarget();
00097 SendEventToEventTarget( pEvent, pTarget );
00098 ReleaseEvent( pEvent );
00099 }
00100 }
00101 }
00102 }
00103 }
00104
00105
00106 void MacOSXLoop::exit()
00107 {
00108 m_exit = true;
00109 }
00110
00111
00112 void MacOSXLoop::handleWindowEvent( EventRef pEvent )
00113 {
00114 UInt32 evKind = GetEventKind( pEvent );
00115
00116 }
00117
00118
00119 #endif