我一直在尝试从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;
}请建议我如何解决这个问题。我知道这是一个非常简单的任务,我很沮丧,因为它花了这么长时间。
谢谢Shankar
发布于 2011-08-31 01:09:02
在你的插件中,你应该在调用"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;
}https://stackoverflow.com/questions/7115469
复制相似问题