pursuedpybear
pursuedpybear copied to clipboard
Occasional SdlMixerError for keyboard_and_mouse_controls example
When running the keyboard_and_mouse_controls example, I almost always get an error saying that the Mixer audio device hasn't been opened. Here's the full traceback:
ahurst@d420:~/downloads/pursuedpybear/examples/keyboard_and_mouse_controls$ python3 targets.py
UserWarning: Using SDL2 binaries from pysdl2-dll 2.0.14
INFO:ppb.engine:Entering context
DEBUG:ppb.vfs:Opening laser1.ogg (__main__, laser1.ogg)
DEBUG:ppb.vfs:Opening target.png (__main__, target.png)
DEBUG:ppb.vfs:Opening target.png (__main__, target.png)
DEBUG:ppb.vfs:Opening target.png (__main__, target.png)
DEBUG:ppb.vfs:Opening target.png (__main__, target.png)
DEBUG:ppb.vfs:Opening player.png (__main__, player.png)
DEBUG:ppb.vfs:Opening target.png (__main__, target.png)
INFO:ppb.engine:Exiting context
Traceback (most recent call last):
File "targets.py", line 90, in <module>
log_level=logging.DEBUG,
File "/home/ahurst/.local/lib/python3.7/site-packages/ppb/__init__.py", line 125, in run
eng.run()
File "/home/ahurst/.local/lib/python3.7/site-packages/ppb/engine.py", line 316, in run
self.main_loop()
File "/home/ahurst/.local/lib/python3.7/site-packages/ppb/engine.py", line 345, in main_loop
self.loop_once()
File "/home/ahurst/.local/lib/python3.7/site-packages/ppb/engine.py", line 361, in loop_once
self.publish()
File "/home/ahurst/.local/lib/python3.7/site-packages/ppb/engine.py", line 387, in publish
method(event, self.signal)
File "/home/ahurst/.local/lib/python3.7/site-packages/ppb/systems/sound.py", line 117, in on_play_sound
chunk = event.sound.load()
File "/home/ahurst/.local/lib/python3.7/site-packages/ppb/assetlib.py", line 221, in load
return self._future.result(timeout)
File "/usr/lib/python3.7/concurrent/futures/_base.py", line 425, in result
return self.__get_result()
File "/usr/lib/python3.7/concurrent/futures/_base.py", line 384, in __get_result
raise self._exception
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/home/ahurst/.local/lib/python3.7/site-packages/ppb/assetlib.py", line 304, in _background
return self.background_parse(raw)
File "/home/ahurst/.local/lib/python3.7/site-packages/ppb/systems/sound.py", line 35, in background_parse
_check_error=lambda rv: not rv
File "/home/ahurst/.local/lib/python3.7/site-packages/ppb/systems/sdl_utils.py", line 94, in mix_call
raise SdlMixerError(f"Error calling {func.__name__}: {err.decode('utf-8')}")
ppb.systems.sdl_utils.SdlMixerError: Error calling Mix_LoadWAV_RW: Audio device hasn't been opened
However, on one of my 4 attempts to run the demo, it loaded and seemed to work as expected, which probably means there's a race condition of some sort.