2011-08-18 61 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; 
} 
相关问题