2

mojo ハイブリッド アプリから pdk プラグインを呼び出そうとしていましたが、enyo アプリでも同じことを試しました。どちらの場合も、私の pdk プラグインは として表示されます。興味深いのは、enyo の場合です。プラグインの登録が完了した後に送信される plugin_ready 応答を受け取りました。

web-os サイトでは、機能していないように見えるのは pdk プラグインの問題であると述べています。

しかし、それを解決する方法が見つかりませんでした。

これが私のプラグインの外観です。

PDL_bool powerCall(PDL_JSParameters *params) {
    runsine();
  char *reply = "Done";
    PDL_JSReply(params, reply);
 return PDL_TRUE; 


}

int main(){
     int result = SDL_Init(SDL_INIT_VIDEO);


    PDL_Init(0);

    PDL_RegisterJSHandler("pawar", powerCall);

    PDL_JSRegistrationComplete();

    PDL_CallJS("ready", NULL, 0); // this is for enyo
    PDL_Quit();
    SDL_Quit();
return 0;
}

この問題を解決する方法を教えてください。私はそれが非常に単純な作業であることを知っていますが、これほど時間がかかることに不満を感じています.

ありがとうシャンカール

4

1 に答える 1

2

プラグインでは、「ready」関数を呼び出した後、PDL_Quit() と SDL_Quit() を呼び出す前に、イベント ループに入る必要があります。イベント ループがないと、プラグイン プロセスがすぐに終了します。

PDK に同梱されている「単純な」アプリに基づく例を次に示します。

int main(){
    int result = SDL_Init(SDL_INIT_VIDEO);
    PDL_Init(0);
    PDL_RegisterJSHandler("pawar", powerCall);
    PDL_JSRegistrationComplete();
    PDL_CallJS("ready", NULL, 0); // this is for enyo

    atexit(SDL_Quit);
    atexit(PDL_Quit);

    SDL_Event Event;
    bool paused = false;

    while (1) {
        bool gotEvent;
        if (paused) {
            SDL_WaitEvent(&Event);
            gotEvent = true;
        }
        else {
            gotEvent = SDL_PollEvent(&Event);
        }

        while (gotEvent) {
            switch (Event.type) {
                case SDL_ACTIVEEVENT:
                    if (Event.active.state == SDL_APPACTIVE) {
                        paused = !Event.active.gain;
                    }
                    break;

                case SDL_QUIT:
                    // We exit anytime we get a request to quit the app
                    // all shutdown code is registered via atexit() so this is clean.
                    exit(0);
                    break;

                // handle any other events interesting to your plugin here

                default:
                    break;
            }
            gotEvent = SDL_PollEvent(&Event);
        }
    }
    return 0;
}
于 2011-08-30T17:09:02.037 に答える