WP8: PlaySound crashes in some cases
Monkey Forums/Monkey Bug Reports/WP8: PlaySound crashes in some cases
| ||
| Playsound crashes when there was some resource loading in between. To be exact, it crashes at StopChannel, because the pointer to the channel "voice" has become invalid. Commenting out StopChannel in PlaySound solves it. It's a bit hard to reproduce, doesn't happen with small test projects, but I can send you my full project if you like, Mark? It crashes then all the time and the same place. |
| ||
| Send me the project. |
| ||
| Done. |
| ||
| Great that this is getting looked into, because I have the same problem, but I haven't been able to make a small runnable example. I get the error the exact same place on both Windows Phone and Windows 8 target. |
| ||
| Difference a quick fix is to comment out the StopChannel call in PlaySound in MonkeyGame.cpp |
| ||
| Well Mark, Sorry for the huge project, I managed to strip it down to the bug itself, here's the code. Looks like a Discard call screws up your GC?
Strict
Import mojo
Function Main:Int()
New Test()
Return 0
End Function
Class Test Extends App
Field _counter:Int
Field _lastPlayTime:Int
Field _sound:Sound
Field _sfxLoaded:Bool = False
Method OnCreate:Int()
SetUpdateRate(30)
_sound = LoadSound( "click.wav" )
_sfxLoaded = True
Return 0
End Method
Method OnUpdate:Int()
Return 0
End Method
Method OnSuspend:Int()
Return 0
End Method
Method OnResume:Int()
Return 0
End Method
Method OnRender:Int()
Cls()
Local dt:Int = Millisecs() - _lastPlayTime
If( dt > 1000 And _sfxLoaded )
_lastPlayTime = Millisecs()
PlaySound( _sound )
End If
'Every 2nd update we discard all images
If( _counter Mod 2 = 0 )
_sound.Discard()
_sfxLoaded = False
Else
_sound = LoadSound( "click.wav" )
_sfxLoaded = True
End If
_counter += 1
Return 0
End Method
Method OnBack:Int()
Return 0
End Method
End Class
Whole project: http://www.leidel.net/dl/monkey/wp8test.zip |
| ||
| Thanks for the much reduced demo! I've just uploaded v77e which includes a fix for this. |
| ||
| Thanks Mark, you did a marvellous job! :) |
| ||
| Wow..you cant beat customer service like that...good on ya Mark...gonna buy soon. |