Ce n' “AL lib: alc_cleanup: 1 appareil qui n'est pas fermé” signifie?
Je suis en train de m'engager dans la Libgdx OpenGL cadre. J'ai utilisé LwjglApplication
pour la création de certaines des applications simples qui rendent les boîtes, quelques mailles et certaines textures. Je suis tombé sur Aurelien Ribon de l'application qui crée rigide Box2D corps. Il a utilisé le LwjglCanvas
à intégrer avec Java Swing. J'ai essayé de faire un moi-même, j'ai créé un JFrame
ensuite ajouté la LwjglCanvas
. Définissez ensuite la JFrame
par défaut de fonctionnement sur près de EXIT_ON_CLOSE
.
Cependant à chaque fois que je ferme l'application, il enregistre dans ma console:
AL lib: alc_cleanup: 1 device not closed
.
Je ne sais pas ce que cela signifie et ce n'est pas me faire de mal. Je veux juste savoir ce qu'il signifie. Selon LwjglCanvas
docs:
All OpenGL calls are done on the EDT. This is slightly less efficient then a dedicated thread, but greatly simplifies synchronization. Note that you may need to call stop() or a Swing application may deadlock on System.exit due to how LWJGL and/or Swing deal with shutdown hooks.
Où dois-je lier la LwjglCanvas.stop()
, dois-je l'ajouter à la EventDispatchThread
file d'attente ou devrais-je lier à la JFrame.addWindowListener
?
Et ce n' "AL lib: alc_cleanup: 1 appareil qui n'est pas fermé" signifie vraiment?
Merci beaucoup!
Vous devez vous connecter pour publier un commentaire.
AL lib est la bibliothèque "audio", utilisé par Libgdx (l'un des OpenAL variantes).
Je crois que ce message signifie simplement que la bibliothèque audio est le nettoyage de l' (dans votre cas, un seul) des flux audio/poignées pour vous. Si vous voyez cette sortie, son inoffensif que toutes les ressources seront nettoyés par le système d'exploitation.
Si vous en interne de nettoyage de votre audio avant de quitter, le message devrait disparaître.
Pour plus de détails, regardez pour
alc_cleanup
ici:http://repo.or.cz/w/openal-soft.git/blob/HEAD:/Alc/ALc.c
alc_cleanup
n'est pas invoquée dans certains app trajectoires de sortie (par exemple, siSystem.exit()
est invoquée,alc_cleanup
ne sera pas appelé.AL.destroy();
doit être appelée avant que l'application s'arrête. cet appel est normalement inclus dans un bloc finally, mais si l'application appelleSystem.exit(0)
, enfin les blocs sont plus exécutées.Vous devriez essayer toujours de la fermeture de votre application avec le morceau de code ci-dessous:
J'ai l'habitude de le mettre dans ma pause() méthode, parce qu'il n'y a aucune raison pour que mon application de s'exécuter en arrière-plan.
Cette méthode statique raconte le cadre de votre demande de la planification sur la clôture, et ainsi libérer toutes les ressources de façon efficace. L'erreur que vous obtenez est parce que l'interface JNI a chargé un OpenAL de la bibliothèque, mais le Système est fermé avant que la bibliothèque est bien déchargé et libéré. J'ai eu le même problème que vous avez fait, mais ce résolu. Comme indiqué dans la JavaDoc, la méthode exit ():