1. ホーム
  2. java

[解決済み] AL lib: alc_cleanup "とは何ですか?1 device not closed "とはどういう意味ですか?

2022-02-10 18:50:52

質問

Libgdx OpenGLフレームワークに関わろうとしています。私は LwjglApplication ボックス、メッシュ、テクスチャをレンダリングする簡単なアプリケーションを作成するために使用します。Aurelien Ribon氏のBox2Dのリジッドボディを作成するアプリに出会いました。彼は LwjglCanvas を使い、JavaのSwingと連携させた。自分でも作ってみた。 JFrame を追加し、さらに LwjglCanvas . 次に JFrame のクローズ時のデフォルト操作を EXIT_ON_CLOSE .

しかし、アプリケーションを閉じるたびに、コンソールにこのようなログが記録されます。

AL lib: alc_cleanup: 1 device not closed .

意味がわからないし、何の害もない。ただ、その意味を知りたいだけなんです。によると LwjglCanvas のドキュメントを参照してください。

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.

をどこにバインドすればよいのでしょうか? LwjglCanvas.stop() に追加する必要があります。 EventDispatchThread キューにバインドする必要があります。 JFrame.addWindowListener ?

また、"AL lib: alc_cleanup は何を意味するのでしょうか。1 device not closed" は本当に意味があるのでしょうか?

ありがとうございました。

解決方法は?

AL lib は Libgdx (OpenAL の亜種の一つ) で使用される "audio library" です。

このメッセージは、オーディオライブラリがあなたのためにいくつかの(あなたの場合は1つだけの)オーディオストリームやハンドルをクリーンアップしていることを意味していると思います。 終了時にこのメッセージが表示されても、すべてのリソースはOSによってクリーンアップされるため、無害です。

終了する前に内部的にオーディオをクリーンアップすれば、このメッセージは消えるはずです。

詳細については alc_cleanup をこの中に入れてください。 http://repo.or.cz/w/openal-soft.git/blob/HEAD:/Alc/ALc.c