初步修复
This commit is contained in:
parent
8fc4357cc6
commit
e4714f3f0e
46705 changed files with 12004901 additions and 0 deletions
196
Common/FMODEngine/FMOD_static/src/fmod_output_emulated.cpp
Normal file
196
Common/FMODEngine/FMOD_static/src/fmod_output_emulated.cpp
Normal file
|
|
@ -0,0 +1,196 @@
|
|||
#include "fmod_settings.h"
|
||||
|
||||
#include "fmod_channel_emulated.h"
|
||||
#include "fmod_channelpool.h"
|
||||
#include "fmod_memory.h"
|
||||
#include "fmod_output_emulated.h"
|
||||
#include "fmod_soundi.h"
|
||||
#include "fmod_string.h"
|
||||
|
||||
namespace FMOD
|
||||
{
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
OutputEmulated::OutputEmulated()
|
||||
{
|
||||
FMOD_memset(&mDescription, 0, sizeof(FMOD_OUTPUT_DESCRIPTION_EX));
|
||||
|
||||
mChannel = 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT OutputEmulated::init(int maxchannels)
|
||||
{
|
||||
FMOD_RESULT result;
|
||||
|
||||
if (!mSystem)
|
||||
{
|
||||
return FMOD_ERR_UNINITIALIZED;
|
||||
}
|
||||
|
||||
/*
|
||||
Create Emulated channels
|
||||
*/
|
||||
if (maxchannels)
|
||||
{
|
||||
int count;
|
||||
|
||||
mChannelPool = mChannelPool3D = FMOD_Object_Alloc(ChannelPool);
|
||||
if (!mChannelPool)
|
||||
{
|
||||
return FMOD_ERR_MEMORY;
|
||||
}
|
||||
|
||||
result = mChannelPool->init(mSystem, this, maxchannels);
|
||||
if (result != FMOD_OK)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
mChannel = (ChannelEmulated *)FMOD_Memory_Calloc(sizeof(ChannelEmulated) * maxchannels);
|
||||
if (!mChannel)
|
||||
{
|
||||
return FMOD_ERR_MEMORY;
|
||||
}
|
||||
|
||||
for (count = 0; count < maxchannels; count++)
|
||||
{
|
||||
new (&mChannel[count]) ChannelEmulated;
|
||||
CHECK_RESULT(mChannelPool->setChannel(count, &mChannel[count]));
|
||||
}
|
||||
}
|
||||
|
||||
return FMOD_OK;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT OutputEmulated::release()
|
||||
{
|
||||
if (mChannelPool)
|
||||
{
|
||||
mChannelPool->release();
|
||||
mChannelPool = 0;
|
||||
}
|
||||
if (mChannel)
|
||||
{
|
||||
FMOD_Memory_Free(mChannel);
|
||||
mChannel = 0;
|
||||
}
|
||||
|
||||
return Output::release();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT OutputEmulated::update()
|
||||
{
|
||||
return FMOD_OK;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
|
||||
#ifdef FMOD_SUPPORT_MEMORYTRACKER
|
||||
|
||||
FMOD_RESULT OutputEmulated::getMemoryUsedImpl(MemoryTracker *tracker)
|
||||
{
|
||||
tracker->add(false, FMOD_MEMBITS_OUTPUT, sizeof(*this));
|
||||
|
||||
if (mChannel)
|
||||
{
|
||||
int numchannels = 0;
|
||||
|
||||
if (mChannelPool)
|
||||
{
|
||||
CHECK_RESULT(mChannelPool->getNumChannels(&numchannels));
|
||||
}
|
||||
|
||||
tracker->add(false, FMOD_MEMBITS_CHANNEL, sizeof(ChannelEmulated) * numchannels);
|
||||
}
|
||||
|
||||
return Output::getMemoryUsedImpl(tracker);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue