2011-08-18 7 views
2

Я пытался вызвать плагин pdk из гибридного приложения mojo, а также попробовал то же самое с enyo app. В обоих случаях мой плагин pdk показан как. Интересно, что в случае enyo я получил ответ plugin_ready, который отправляется после завершения регистрации плагина.hp webos, плагин pdk не работает в гибридном приложении.

на веб-сайте 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; 
}