31 class AutoLock :
private ut::NonCopyable
36 AutoLock() { SoundThread::GetInstance().Lock(); }
37 ~AutoLock() { SoundThread::GetInstance().Unlock(); }
54 virtual void at_0x08();
55 virtual void at_0x0c();
56 virtual void at_0x10();
74 virtual void OnUpdateFrameSoundThread() {}
75 virtual void OnUpdateVoiceSoundThread() {}
76 virtual void OnShutdownSoundThread() {}
82 static SoundThread &GetInstance();
85 bool Create(s32 priority,
void *stack, ulong stackSize);
88 void Lock() { OSLockMutex(&mMutex); }
89 void Unlock() { OSUnlockMutex(&mMutex); }
91 void RegisterPlayerCallback(PlayerCallback *callback);
92 void UnregisterPlayerCallback(PlayerCallback *callback);
99 static void AxCallbackFunc();
100 void AxCallbackProc();
102 static void *SoundThreadFunc(
void *arg);
103 void SoundThreadProc();
108 static int const MESSAGE_SHUTDOWN = 1 << 1;
109 static int const MESSAGE_AX_CALLBACK = 1 << 0;
110 static int const THREAD_MESSAGE_BUFSIZE = 4;
117 OSMessage mMsgBuffer[THREAD_MESSAGE_BUFSIZE];
120 AxManager::CallbackListNode mAxCallbackNode;
121 SoundFrameCallback::LinkList mSoundFrameCallbackList;
122 PlayerCallback::LinkList mPlayerCallbackList;