0

Macbook でメディア キーをリッスンし、それを javascript に渡して、パンドラやサウンドクラウドなどを制御する NPAPI プラグインを作成しようとしています。別のスレッドで実行されている CGEventTap をラップするだけの Spotify の SPMediaKeyTap ライブラリを使用しています。

私の問題は、npn_invoke を使用して javascript にコールバックすることです。これは正常に機能しますが、CGEventTap コールバックからトリガーされると、プラグインがクラッシュします。これはプラグインスレッドから実行する必要があることを認識しており、[NSObject performSelectorOnMainThread] と [NSObject performSelector:onThread] の両方を使用してメインスレッドに戻そうとしました。プラグイン スレッドの create メソッド。これらのソリューションは両方とも、npn 呼び出しで引き続きクラッシュします。NPN ブラウザー インタラクション呼び出しに対して状態を無効にする CGEventTap イベントを処理するときに他に何かありますか?

4

1 に答える 1

0

あなたのようにスレッドを保存して、スレッドモデルを推測しようとしないでください。performSelectorOnMainThread を使用して NPN メソッドを呼び出すだけです。私はこれを常に行っており、うまく機能しているので、クロススレッドマーシャリングの方法で何かが必要な方法で機能していないと推測しています。

于 2012-01-10T16:14:41.097 に答える