Merge pull request #917 from jamesu/fix_audio_print

Fix bug where console stack was incorrectly used to print audio devices
This commit is contained in:
Daniel Buckmaster 2014-11-12 09:37:16 +11:00
commit 1f0209db78

View file

@ -1253,8 +1253,11 @@ DefineEngineFunction( sfxGetAvailableDevices, const char*, (),,
"@ref SFX_devices\n" "@ref SFX_devices\n"
"@ingroup SFX" ) "@ingroup SFX" )
{ {
char* deviceList = Con::getReturnBuffer( 2048 ); const S32 bufferSize = 2048;
deviceList[0] = 0; char* deviceList = Con::getReturnBuffer( bufferSize );
S32 len = bufferSize;
char *ptr = deviceList;
*ptr = 0;
SFXProvider* provider = SFXProvider::getFirstProvider(); SFXProvider* provider = SFXProvider::getFirstProvider();
while ( provider ) while ( provider )
@ -1264,16 +1267,15 @@ DefineEngineFunction( sfxGetAvailableDevices, const char*, (),,
for ( S32 d=0; d < deviceInfo.size(); d++ ) for ( S32 d=0; d < deviceInfo.size(); d++ )
{ {
const SFXDeviceInfo* info = deviceInfo[d]; const SFXDeviceInfo* info = deviceInfo[d];
dStrcat( deviceList, provider->getName() ); const char *providerName = provider->getName().c_str();
dStrcat( deviceList, "\t" ); const char *infoName = info->name.c_str();
dStrcat( deviceList, info->name ); dSprintf(ptr, len, "%s\t%s\t%s\t%i\n", providerName, infoName, info->hasHardware ? "1" : "0", info->maxBuffers);
dStrcat( deviceList, "\t" );
dStrcat( deviceList, info->hasHardware ? "1" : "0" ); ptr += dStrlen(ptr);
dStrcat( deviceList, "\t" ); len = bufferSize - (ptr - deviceList);
dStrcat( deviceList, Con::getIntArg( info->maxBuffers ) );
dStrcat( deviceList, "\n" ); if (len <= 0)
return deviceList;
//TODO: caps
} }
provider = provider->getNextProvider(); provider = provider->getNextProvider();