-1

この投稿 check-for-similar-controllers は、コントローラーの接続/切断機能が存在しないことを示しているようです。私たちの GUI には、デバイスが取り外されたとき (ケーブルを引っ張るなど) を検出する必要があります。現在、タイマー (1 秒に 1 回) で DirectAndRawInputEnvironmentPlugin オブジェクトを割り当てることによってこれを行っています。

ただし、デバイスを 9 時間以上プラグを抜いたままにしておくと、アプリがフリーズし、OOME がスローされます。jvisualvm のメモリ サンプラーは、アプリが閉じるまで解放されない大量のメモリ チャンクを占有するかなりの数のインスタンスが DIDeviceObject にあることを示しました。DirectInputEnvironmentPlugin のコンストラクターを確認した後、特権アクションとして ShutdownHook が追加されていることに気付きました。ShutdownHook コードをコメント アウトした後、メモリ リークは解決されましたが、ライブラリが win32 デバイスの列挙に必要なダミー ウィンドウを作成できないため、コードは (別の方法で) 失敗します。dll をデバッグするために jinput ライブラリを構築しようとしましたが、これまでに失敗しました。

上記のいずれかに関するアイデアは、感謝して受け取りました。

4

1 に答える 1

0

新しいプラグインの割り当ては、実行すべきことではありません。プラグインまたは削除されたコントローラーを検出する必要がある場合は、既に存在するインターフェイスを実装してください。以前、ボランティアに実装をお願いしたことがあるのですが、急に優先順位が下がってしまいました。JInput の支援とインターフェースの実装を希望する場合は、javagaming.org フォーラムでお気軽にお問い合わせください。

于 2012-02-22T13:59:29.537 に答える