Revision: 39984
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39984
Author: nexyon
Date: 2011-09-06 21:02:26 +0000 (Tue, 06 Sep 2011)
Log Message:
-----------
BGE fix: ignore sounds that cannot be opened instead of crashing. ;-)
Modified Paths:
--------------
trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
trunk/blender/source/gameengine/Ketsji/KX_SoundActuator.cpp
Modified: trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
2011-09-06 18:15:34 UTC (rev 39983)
+++ trunk/blender/source/gameengine/Converter/KX_ConvertActuators.cpp
2011-09-06 21:02:26 UTC (rev 39984)
@@ -413,15 +413,22 @@
// if sound shall be 3D but
isn't mono, we have to make it mono!
if(is3d)
{
-
AUD_Reference<AUD_IReader> reader = snd_sound->createReader();
-
if(reader->getSpecs().channels != AUD_CHANNELS_MONO)
+ try
{
- AUD_DeviceSpecs
specs;
- specs.channels
= AUD_CHANNELS_MONO;
- specs.rate =
AUD_RATE_INVALID;
- specs.format =
AUD_FORMAT_INVALID;
- snd_sound = new
AUD_ChannelMapperFactory(snd_sound, specs);
+
AUD_Reference<AUD_IReader> reader = snd_sound->createReader();
+
if(reader->getSpecs().channels != AUD_CHANNELS_MONO)
+ {
+
AUD_DeviceSpecs specs;
+
specs.channels = AUD_CHANNELS_MONO;
+
specs.rate = AUD_RATE_INVALID;
+
specs.format = AUD_FORMAT_INVALID;
+
snd_sound = new AUD_ChannelMapperFactory(snd_sound, specs);
+ }
}
+ catch(AUD_Exception&)
+ {
+ // sound cannot
be played... ignore
+ }
}
}
KX_SoundActuator* tmpsoundact =
Modified: trunk/blender/source/gameengine/Ketsji/KX_SoundActuator.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_SoundActuator.cpp 2011-09-06
18:15:34 UTC (rev 39983)
+++ trunk/blender/source/gameengine/Ketsji/KX_SoundActuator.cpp 2011-09-06
21:02:26 UTC (rev 39984)
@@ -108,7 +108,15 @@
break;
}
- m_handle = AUD_getDevice()->play(sound, 0);
+ try
+ {
+ m_handle = AUD_getDevice()->play(sound, 0);
+ }
+ catch(AUD_Exception&)
+ {
+ // cannot play back, ignore
+ return;
+ }
AUD_Reference<AUD_I3DHandle> handle3d =
AUD_Reference<AUD_I3DHandle>(m_handle);
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs