mirror of
https://github.com/isledecomp/isle-portable.git
synced 2024-11-15 03:24:59 -05:00
MxAudioManager: Destructor, LockedReinitialize, Reinitialize (#125)
* MxAudioManager: Destructor, LockedReinitialize * MxAudioManager::Reinitialize, fix LockedReinitialize logic * MxAudioManager cleanup - fix param in LockedReinitialize, mark that function as private/give it a better param name * Match LockedReinitialize, fix function declarations, add/match InitPresenters --------- Co-authored-by: Christian Semmler <mail@csemmler.com>
This commit is contained in:
parent
c67e537508
commit
5617e0e044
6 changed files with 96 additions and 42 deletions
|
@ -93,6 +93,7 @@ add_library(lego1 SHARED
|
|||
LEGO1/motorcycle.cpp
|
||||
LEGO1/mxatomid.cpp
|
||||
LEGO1/mxatomidcounter.cpp
|
||||
LEGO1/mxaudiomanager.cpp
|
||||
LEGO1/mxaudiopresenter.cpp
|
||||
LEGO1/mxautolocker.cpp
|
||||
LEGO1/mxbackgroundaudiomanager.cpp
|
||||
|
@ -159,7 +160,6 @@ add_library(lego1 SHARED
|
|||
LEGO1/mxticklemanager.cpp
|
||||
LEGO1/mxtimer.cpp
|
||||
LEGO1/mxtransitionmanager.cpp
|
||||
LEGO1/mxunknown100dc6e0.cpp
|
||||
LEGO1/mxvariable.cpp
|
||||
LEGO1/mxvariabletable.cpp
|
||||
LEGO1/mxvector.cpp
|
||||
|
|
64
LEGO1/mxaudiomanager.cpp
Normal file
64
LEGO1/mxaudiomanager.cpp
Normal file
|
@ -0,0 +1,64 @@
|
|||
#include "mxaudiomanager.h"
|
||||
|
||||
DECOMP_SIZE_ASSERT(MxAudioManager, 0x30);
|
||||
|
||||
// GLOBAL: LEGO1 0x10102108
|
||||
MxS32 MxAudioManager::g_unkCount = 0;
|
||||
|
||||
// OFFSET: LEGO1 0x100b8d00
|
||||
MxAudioManager::MxAudioManager()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b8d90
|
||||
MxAudioManager::~MxAudioManager()
|
||||
{
|
||||
LockedReinitialize(TRUE);
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b8df0
|
||||
void MxAudioManager::Init()
|
||||
{
|
||||
this->m_unk2c = 100;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b8e00
|
||||
void MxAudioManager::LockedReinitialize(MxBool p_skipDestroy)
|
||||
{
|
||||
this->m_criticalSection.Enter();
|
||||
g_unkCount--;
|
||||
Init();
|
||||
this->m_criticalSection.Leave();
|
||||
|
||||
if (!p_skipDestroy)
|
||||
MxMediaManager::Destroy();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b8e40
|
||||
MxResult MxAudioManager::InitPresenters()
|
||||
{
|
||||
MxResult result = FAILURE;
|
||||
MxBool success = FALSE;
|
||||
|
||||
if (MxMediaManager::InitPresenters() == SUCCESS) {
|
||||
this->m_criticalSection.Enter();
|
||||
success = TRUE;
|
||||
result = SUCCESS;
|
||||
g_unkCount++;
|
||||
}
|
||||
|
||||
if (result)
|
||||
Destroy();
|
||||
|
||||
if (success)
|
||||
this->m_criticalSection.Leave();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b8e90
|
||||
void MxAudioManager::Destroy()
|
||||
{
|
||||
LockedReinitialize(FALSE);
|
||||
}
|
28
LEGO1/mxaudiomanager.h
Normal file
28
LEGO1/mxaudiomanager.h
Normal file
|
@ -0,0 +1,28 @@
|
|||
#ifndef MXAUDIOMANAGER_H
|
||||
#define MXAUDIOMANAGER_H
|
||||
|
||||
#include "decomp.h"
|
||||
#include "mxmediamanager.h"
|
||||
|
||||
// VTABLE 0x100dc6e0
|
||||
class MxAudioManager : public MxMediaManager
|
||||
{
|
||||
public:
|
||||
MxAudioManager();
|
||||
virtual ~MxAudioManager() override;
|
||||
|
||||
virtual MxResult InitPresenters(); // vtable+14
|
||||
virtual void Destroy(); // vtable+18
|
||||
|
||||
private:
|
||||
void LockedReinitialize(MxBool);
|
||||
|
||||
static MxS32 g_unkCount;
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
|
||||
undefined4 m_unk2c;
|
||||
};
|
||||
|
||||
#endif // MXAUDIOMANAGER_H
|
|
@ -1,12 +1,12 @@
|
|||
#ifndef MXSOUNDMANAGER_H
|
||||
#define MXSOUNDMANAGER_H
|
||||
|
||||
#include "mxunknown100dc6e0.h"
|
||||
#include "mxaudiomanager.h"
|
||||
|
||||
// VTABLE 0x100dc128
|
||||
// SIZE 0x3c
|
||||
// Base vtables are: MxCore -> 0x100dc6b0 -> 0x100dc6e0 -> MxSoundManager
|
||||
class MxSoundManager : public MxUnknown100dc6e0
|
||||
// Base vtables are: MxCore -> 0x100dc6b0 -> MxAudioManager -> MxSoundManager
|
||||
class MxSoundManager : public MxAudioManager
|
||||
{
|
||||
public:
|
||||
MxSoundManager();
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
#include "mxunknown100dc6e0.h"
|
||||
|
||||
// OFFSET: LEGO1 0x100b8d00
|
||||
MxUnknown100dc6e0::MxUnknown100dc6e0()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b8d90 STUB
|
||||
MxUnknown100dc6e0::~MxUnknown100dc6e0()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
|
||||
// OFFSET: LEGO1 0x100b8df0
|
||||
void MxUnknown100dc6e0::Init()
|
||||
{
|
||||
this->m_unk2c = 100;
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
#ifndef MXUNKNOWN100DC6E0_H
|
||||
#define MXUNKNOWN100DC6E0_H
|
||||
|
||||
#include "mxmediamanager.h"
|
||||
|
||||
// VTABLE 0x100dc6e0
|
||||
class MxUnknown100dc6e0 : public MxMediaManager
|
||||
{
|
||||
public:
|
||||
MxUnknown100dc6e0();
|
||||
virtual ~MxUnknown100dc6e0() override;
|
||||
|
||||
protected:
|
||||
void Init();
|
||||
|
||||
int m_unk2c;
|
||||
};
|
||||
|
||||
#endif // MXUNKNOWN100DC6E0_H
|
Loading…
Reference in a new issue