00001 00002 // 00003 // Copyright (c) 2006 Audiokinetic Inc. / All Rights Reserved 00004 // 00006 00007 // AkSyncLoader.h 00008 00011 00012 #ifndef _AK_SYNC_CALLER_H_ 00013 #define _AK_SYNC_CALLER_H_ 00014 00015 #include <AK/Tools/Common/AkPlatformFuncs.h> 00016 00017 namespace AK 00018 { 00019 namespace SoundEngine 00020 { 00023 class AkSyncCaller 00024 { 00025 public: 00027 AKRESULT Init() 00028 { 00029 if ( AKPLATFORM::AkCreateEvent( m_hEvent ) != AK_Success ) 00030 { 00031 AKASSERT( !"Could not create synchronization event" ); 00032 return AK_Fail; 00033 } 00034 return AK_Success; 00035 } 00036 00038 AKRESULT Wait( AKRESULT in_eResult ) 00039 { 00040 if ( in_eResult != AK_Success ) 00041 { 00042 AKPLATFORM::AkDestroyEvent( m_hEvent ); 00043 return in_eResult; 00044 } 00045 00046 // Task queueing successful. Block until completion. 00047 AKPLATFORM::AkWaitForEvent( m_hEvent ); 00048 AKPLATFORM::AkDestroyEvent( m_hEvent ); 00049 00050 return m_eResult; 00051 } 00052 00054 inline void Done() { AKPLATFORM::AkSignalEvent( m_hEvent ); } 00055 00056 AKRESULT m_eResult; 00057 00058 private: 00059 AkEvent m_hEvent; 00060 }; 00061 } 00062 } 00063 00064 #endif // _AK_SYNC_CALLER_H_
Questions? Problems? Need more info? Contact us, and we can help!
Visit our Support pageRegister your project and we'll help you get started with no strings attached!
Get started with Wwise