2011-08-18 45 views
2

我一直在嘗試從mojo混合應用程序調用pdk插件,並且也嘗試過使用enyo應用程序。在這兩種情況下,我的pdk插件顯示爲,有趣的事情是在enyo的情況下,我收到插件註冊完成後發送的plugin_ready響應。hp webos,pdk插件在混合應用程序中停用。

在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; 
} 

請建議我如何來解決這個問題。我知道這是一個非常簡單的任務,很遺憾它花了很長時間。

感謝 桑卡

回答

2

在你的插件,你所說的「準備就緒」功能後,你應該進入一個事件循環,並調用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; 
}