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