2011-10-28 6 views

答えて

1

ええ、FireBreathでSafari 5.1と同じ問題がありました(これはよく慣れていないと間違いなく見えます)。 NPN_PluginThreadAsyncCallは動作しなくなりました。どのプラットフォームを使用しているのかを指定していないので、MacとWindowsの両方で使用していることを示します。

ウィンドウでは、HWNDというメッセージを作成し、イベントデータにvoid *を渡してそのHWNDにメッセージをLPARAMとして送信します。 void *は、通常はプラグインスレッドが呼び出すparamsを保持するデータ構造体へのポインタに変換され、呼び出しが行われ、データ構造体は解放されます。 message window class we use is hereおよびhere is where the call is made。 (IEでクロススレッド呼び出しに同じメカニズムを使用していることに注意してください)

Macでは、基本的にobjective-c performSelectorOnMainThreadを使用します。私たちはそれをC++から使いやすくするためのクラスにまとめました。 scheduler class we use is hereおよびhere is where the call is made。あなたは本当に注意する必要があることに注意してください。なぜならこれらは可能な競争条件がたくさんあり、時にはリエントラントコードで終わることがあるからです。 FireBreathには、クロススレッドコールを完成させるために数十時間の作業が必要です。それは信じられないほどトリッキーな問題です。

うまくいけば、これが役に立ちます。

+0

もう一度お手数をおかけします。私はperformSelectorOnMainThreadを使用して終了しました。これはうまく動作するようです:) –

関連する問題