mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-30 03:31:15 +00:00
Fixes
This commit is contained in:
parent
5f4b991901
commit
12c3f084f6
@ -24,8 +24,11 @@ class LegoSoundManager : public MxSoundManager {
|
|||||||
void Init();
|
void Init();
|
||||||
void Destroy(MxBool p_fromDestructor);
|
void Destroy(MxBool p_fromDestructor);
|
||||||
|
|
||||||
IDirectSound3DListener* m_listener; // 0x3c
|
LPDIRECTSOUND3DLISTENER m_listener; // 0x3c
|
||||||
LegoUnknown100d6b4c* m_unk0x40; // 0x40
|
LegoUnknown100d6b4c* m_unk0x40; // 0x40
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// GLOBAL: LEGO1 0x100db6d0
|
||||||
|
// IID_IDirectSound3DListener
|
||||||
|
|
||||||
#endif // LEGOSOUNDMANAGER_H
|
#endif // LEGOSOUNDMANAGER_H
|
||||||
|
|||||||
@ -13,9 +13,12 @@ class LegoUnknown100d6b4c {
|
|||||||
LegoUnknown100d6b4c();
|
LegoUnknown100d6b4c();
|
||||||
~LegoUnknown100d6b4c();
|
~LegoUnknown100d6b4c();
|
||||||
|
|
||||||
virtual MxResult Tickle(); // vtable+0x0
|
virtual MxResult Tickle(); // vtable+0x00
|
||||||
|
|
||||||
void FUN_1003dc40(LegoCacheSound** p_und);
|
void FUN_1003dc40(LegoCacheSound** p_und);
|
||||||
|
|
||||||
|
private:
|
||||||
|
undefined m_pad[0x1c];
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LEGOUNKNOWN100D6B4C_H
|
#endif // LEGOUNKNOWN100D6B4C_H
|
||||||
|
|||||||
@ -37,30 +37,36 @@ MxResult LegoSoundManager::Create(MxU32 p_frequencyMS, MxBool p_createThread)
|
|||||||
{
|
{
|
||||||
MxBool locked = FALSE;
|
MxBool locked = FALSE;
|
||||||
MxResult result = FAILURE;
|
MxResult result = FAILURE;
|
||||||
|
|
||||||
if (MxSoundManager::Create(10, FALSE) == SUCCESS) {
|
if (MxSoundManager::Create(10, FALSE) == SUCCESS) {
|
||||||
m_criticalSection.Enter();
|
m_criticalSection.Enter();
|
||||||
locked = TRUE;
|
locked = TRUE;
|
||||||
if (MxOmni::IsSound3D()) {
|
|
||||||
if (m_dsBuffer->QueryInterface(IID_IDirectSound3DListener, (LPVOID*) &m_listener) == S_OK) {
|
|
||||||
MxOmni* omni = MxOmni::GetInstance();
|
|
||||||
IDirectSound* sound;
|
|
||||||
if (omni && omni->GetSoundManager() && (sound = omni->GetSoundManager()->GetDirectSound())) {
|
|
||||||
DSCAPS caps;
|
|
||||||
memset(&caps, 0, sizeof(DSCAPS));
|
|
||||||
caps.dwSize = sizeof(DSCAPS);
|
|
||||||
|
|
||||||
if (sound->GetCaps(&caps) == S_OK && caps.dwMaxHw3DAllBuffers == 0) {
|
if (MxOmni::IsSound3D()) {
|
||||||
m_listener->SetDistanceFactor(0.026315790f, 0);
|
if (m_dsBuffer->QueryInterface(IID_IDirectSound3DListener, (LPVOID*) &m_listener) != S_OK) {
|
||||||
m_listener->SetRolloffFactor(10, 0);
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MxOmni* omni = MxOmni::GetInstance();
|
||||||
|
LPDIRECTSOUND sound;
|
||||||
|
|
||||||
|
if (omni && omni->GetSoundManager() && (sound = omni->GetSoundManager()->GetDirectSound())) {
|
||||||
|
DSCAPS caps;
|
||||||
|
memset(&caps, 0, sizeof(DSCAPS));
|
||||||
|
caps.dwSize = sizeof(DSCAPS);
|
||||||
|
|
||||||
|
if (sound->GetCaps(&caps) == S_OK && caps.dwMaxHw3DAllBuffers == 0) {
|
||||||
|
m_listener->SetDistanceFactor(0.026315790f, 0);
|
||||||
|
m_listener->SetRolloffFactor(10, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_unk0x40 = new LegoUnknown100d6b4c();
|
m_unk0x40 = new LegoUnknown100d6b4c;
|
||||||
result = SUCCESS;
|
result = SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:
|
||||||
if (result != SUCCESS) {
|
if (result != SUCCESS) {
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
@ -68,6 +74,7 @@ MxResult LegoSoundManager::Create(MxU32 p_frequencyMS, MxBool p_createThread)
|
|||||||
if (locked) {
|
if (locked) {
|
||||||
m_criticalSection.Leave();
|
m_criticalSection.Leave();
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,7 +88,7 @@ void LegoSoundManager::Destroy()
|
|||||||
MxResult LegoSoundManager::Tickle()
|
MxResult LegoSoundManager::Tickle()
|
||||||
{
|
{
|
||||||
MxMediaManager::Tickle();
|
MxMediaManager::Tickle();
|
||||||
MxAutoLocker lock(&this->m_criticalSection);
|
|
||||||
|
|
||||||
|
MxAutoLocker lock(&m_criticalSection);
|
||||||
return m_unk0x40->Tickle();
|
return m_unk0x40->Tickle();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user