Tweak MxOmni::Destroy and add more beta annotations (#887)

* Fix long function name

* Omni getter beta annotations

* MxMisc asserts and beta annotations

* Helper function for MxNotificationManager list
This commit is contained in:
MS 2024-05-07 13:00:16 -04:00 committed by GitHub
parent bac891cb0c
commit 4b386fe738
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 62 additions and 8 deletions

View file

@ -118,9 +118,10 @@ class MxAtomId {
// _Tree<MxAtom *,MxAtom *,set<MxAtom *,MxAtomCompare,allocator<MxAtom *> >::_Kfn,MxAtomCompare,allocator<MxAtom *> >::_Insert
// clang-format on
// clang-format off
// TEMPLATE: BETA10 0x101237a0
// _Tree<MxAtom *,MxAtom *,set<MxAtom *,MxAtomCompare,allocator<MxAtom *> >::_Kfn,MxAtomCompare,allocator<MxAtom *>
// >::const_iterator::operator*
// _Tree<MxAtom *,MxAtom *,set<MxAtom *,MxAtomCompare,allocator<MxAtom *> >::_Kfn,MxAtomCompare,allocator<MxAtom *> >::const_iterator::operator*
// clang-format on
// clang-format off
// TEMPLATE: LEGO1 0x100af6d0

View file

@ -47,8 +47,13 @@ class MxNotificationManager : public MxCore {
MxResult Send(MxCore* p_listener, const MxNotificationParam& p_param);
inline MxNotificationPtrList* GetQueue() { return m_queue; }
// FUNCTION: BETA10 0x10132270
inline void SetActive(MxBool p_active) { m_active = p_active; }
// FUNCTION: BETA10 0x10132230
inline MxBool IsEmpty() const { return m_queue ? m_queue->empty() : TRUE; }
// SYNTHETIC: LEGO1 0x100ac390
// MxNotificationManager::`scalar deleting destructor'
@ -86,4 +91,7 @@ class MxNotificationManager : public MxCore {
// SYNTHETIC: LEGO1 0x100accd0
// MxNotificationPtrList::~MxNotificationPtrList
// TEMPLATE: BETA10 0x10129670
// list<MxNotification *,allocator<MxNotification *> >::empty
#endif // MXNOTIFICATIONMANAGER_H

View file

@ -59,17 +59,40 @@ class MxOmni : public MxCore {
static MxBool ActionSourceEquals(MxDSAction* p_action, const char* p_name);
HWND GetWindowHandle() const { return this->m_windowHandle; }
// FUNCTION: BETA10 0x10125100
MxObjectFactory* GetObjectFactory() const { return this->m_objectFactory; }
// FUNCTION: BETA10 0x10125120
MxNotificationManager* GetNotificationManager() const { return this->m_notificationManager; }
// FUNCTION: BETA10 0x10125140
MxTickleManager* GetTickleManager() const { return this->m_tickleManager; }
// FUNCTION: BETA10 0x10125160
MxTimer* GetTimer() const { return this->m_timer; }
// FUNCTION: BETA10 0x101251a0
MxStreamer* GetStreamer() const { return this->m_streamer; }
// FUNCTION: BETA10 0x100e5250
MxSoundManager* GetSoundManager() const { return this->m_soundManager; }
// FUNCTION: BETA10 0x1009e860
MxVideoManager* GetVideoManager() const { return this->m_videoManager; }
// FUNCTION: BETA10 0x101251c0
MxVariableTable* GetVariableTable() const { return this->m_variableTable; }
// FUNCTION: BETA10 0x101251e0
MxMusicManager* GetMusicManager() const { return this->m_musicManager; }
// FUNCTION: BETA10 0x10125200
MxEventManager* GetEventManager() const { return this->m_eventManager; }
// FUNCTION: BETA10 0x10125180
MxAtomSet* GetAtomSet() const { return this->m_atomSet; }
MxLong HandleEndAction(MxParam& p_param);
// SYNTHETIC: LEGO1 0x100aefd0

View file

@ -5,26 +5,34 @@
#include <assert.h>
// FUNCTION: LEGO1 0x100acea0
// FUNCTION: BETA10 0x10124d30
MxObjectFactory* ObjectFactory()
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->GetObjectFactory();
}
// FUNCTION: LEGO1 0x100aceb0
// FUNCTION: BETA10 0x10124d77
MxNotificationManager* NotificationManager()
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->GetNotificationManager();
}
// FUNCTION: LEGO1 0x100acec0
// FUNCTION: BETA10 0x10124dbe
MxTickleManager* TickleManager()
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->GetTickleManager();
}
// FUNCTION: LEGO1 0x100aced0
// FUNCTION: BETA10 0x10124e05
MxTimer* Timer()
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->GetTimer();
}
@ -37,49 +45,65 @@ MxAtomSet* AtomSet()
}
// FUNCTION: LEGO1 0x100acef0
// FUNCTION: BETA10 0x10124e93
MxStreamer* Streamer()
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->GetStreamer();
}
// FUNCTION: LEGO1 0x100acf00
// FUNCTION: BETA10 0x10124eda
MxSoundManager* MSoundManager()
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->GetSoundManager();
}
// FUNCTION: LEGO1 0x100acf10
// FUNCTION: BETA10 0x10124f21
MxVideoManager* MVideoManager()
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->GetVideoManager();
}
// FUNCTION: LEGO1 0x100acf20
// FUNCTION: BETA10 0x10124f68
MxVariableTable* VariableTable()
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->GetVariableTable();
}
// FUNCTION: LEGO1 0x100acf30
// FUNCTION: BETA10 0x10124faf
MxMusicManager* MusicManager()
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->GetMusicManager();
}
// FUNCTION: LEGO1 0x100acf40
// FUNCTION: BETA10 0x10124ff6
MxEventManager* EventManager()
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->GetEventManager();
}
// FUNCTION: LEGO1 0x100acf50
// FUNCTION: BETA10 0x1012503d
MxResult Start(MxDSAction* p_dsAction)
{
assert(MxOmni::GetInstance());
return MxOmni::GetInstance()->Start(p_dsAction);
}
// FUNCTION: LEGO1 0x100acf70
// FUNCTION: BETA10 0x10125098
void DeleteObject(MxDSAction& p_dsAction)
{
assert(MxOmni::GetInstance());
MxOmni::GetInstance()->DeleteObject(p_dsAction);
}

View file

@ -188,12 +188,8 @@ void MxOmni::Destroy()
DeleteObject(action);
}
// TODO: private members
if (m_notificationManager) {
while (m_notificationManager->GetQueue()) {
if (m_notificationManager->GetQueue()->size() == 0) {
break;
}
while (!m_notificationManager->IsEmpty()) {
m_notificationManager->Tickle();
}
@ -211,7 +207,6 @@ void MxOmni::Destroy()
delete m_notificationManager;
delete m_tickleManager;
// There could be a tree/iterator function that does this inline
if (m_atomSet) {
while (m_atomSet->size() != 0) {
// Pop each node and delete its value
@ -220,8 +215,10 @@ void MxOmni::Destroy()
m_atomSet->erase(begin);
delete value;
}
delete m_atomSet;
}
Init();
}

View file

@ -26,6 +26,7 @@ MxNotification::~MxNotification()
}
// FUNCTION: LEGO1 0x100ac250
// FUNCTION: BETA10 0x10125805
MxNotificationManager::MxNotificationManager() : MxCore(), m_lock(), m_listenerIds()
{
m_unk0x2c = 0;