Este é um bug realmente difícil de reproduzir. Dos relatórios de travamento que recebo dos jogadores, ele aparece aleatoriamente se alguém pausa (), setPosition (), play () ou descarte () repetidamente. Não tenho certeza se o hardware está relacionado ou devido a algum problema de tempo. Embora eu possa reproduzi-lo consistentemente com um código semelhante a #5316 , tenho certeza de que não está relacionado.
Apenas o render() de um ApplicationListener vazio:
Music music = null;
<strong i="9">@Override</strong>
public void render() {
int frameNumber = (int)Gdx.graphics.getFrameId();
Gdx.app.log("CRASH", "Frame " + frameNumber);
switch (frameNumber) {
case 0:
// Frame 1
music = Gdx.audio.newMusic(Gdx.files.external("any_audio_file.ogg"));
music.play();
break;
case 1:
// Frame 2
music.setPosition(26.300f); // must be within at least 200ms from the end
break;
case 2:
// Frame 3
music.setPosition(26.300f); // must be within at least 200ms from the end
break;
case 3:
// Frame 4
music.dispose();
break;
case 4:
// Frame 5
music = Gdx.audio.newMusic(Gdx.files.external("any_audio_file.ogg"));
music.play(); // Crashes here
break;
}
}
1.9.9-INSTANTÂNEO
com.badlogic.gdx.utils.GdxRuntimeException: Unable to allocate audio buffers. AL Error: 40963
at com.badlogic.gdx.backends.lwjgl.audio.OpenALMusic.play(OpenALMusic.java:83)
at game27.DesktopMain$2.render(DesktopMain.java:270)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)
eu sou capaz de reproduzir com o MusicTest libgdx.
Primeiro caso:
Segundo caso:
Unable to allocate audio buffers. AL Error: 40963
O código libgdx desencadeia corretamente os buffers, mas de acordo com OpenAL doc : The unqueue operation will only take place if all n buffers can be removed from the queue.
talvez o OpenAL não possa cancelar alguns buffers em execução que levam a um tipo de acumulação devido à alocação/frequência livre.
Talvez esse tipo de uso seja extremo e talvez o som deva ser usado.
Eu tenho exatamente o mesmo erro no Windows :( - Alguma notícia sobre isso?
Cenário:
Também acontece com LWJGL3, não encontrei uma solução até agora.
Comentários muito úteis
eu sou capaz de reproduzir com o MusicTest libgdx.
Primeiro caso:
Segundo caso:
Unable to allocate audio buffers. AL Error: 40963
O código libgdx desencadeia corretamente os buffers, mas de acordo com OpenAL doc :
The unqueue operation will only take place if all n buffers can be removed from the queue.
talvez o OpenAL não possa cancelar alguns buffers em execução que levam a um tipo de acumulação devido à alocação/frequência livre.Talvez esse tipo de uso seja extremo e talvez o som deva ser usado.