launcher(nullptr),
__isLaunched(false)
{ }
- void loaderMain(int argc, char* argv[]) override;
+ int loaderMain(int argc, char* argv[]) override;
std::map<int, FdHandler> handlers;
elm_win_precreated_object_set(__win);
}
-void LaunchpadAdapterImpl::loaderMain(int argc, char* argv[])
+int LaunchpadAdapterImpl::loaderMain(int argc, char* argv[])
{
__argc = argc;
__argv = argv;
return 0;
};
callbacks.terminate = [](int argc, char **argv, void* userData) -> int {
- _DBG("Terminate!!");
WITH_SELF(userData) {
if (self->onTerminate != nullptr)
self->onTerminate(self->appInfo, argc, argv);
_DBG("launchpad_loader_main is start");
int r = launchpad_loader_main(argc, argv, &(this->callbacks), &(this->adapter), this);
_DBG("launchpad_loader_main is finished with [%d]", r);
+
+ return r;
}
#undef WITH_SELF
class LaunchpadAdapter
{
public:
- virtual void loaderMain(int argc, char* argv[]) = 0;
+ virtual int loaderMain(int argc, char* argv[]) = 0;
std::function<void()> onCreate = nullptr;
std::function<void(const AppInfo&, int, char**)> onLaunch = nullptr;
std::function<void(const AppInfo&, int, char**)> onTerminate = nullptr;
if (runtime->launch(appInfo.id.c_str(), appInfo.root.c_str(), appInfo.path.c_str(), argc-1, argv+1))
_ERR("Failed to launch");
};
- Launchpad.loaderMain(argc, argv);
+ int ret = Launchpad.loaderMain(argc, argv);
+ if (ret < 0) {
+ _DBG("fail to start loaderMain. candidate process is not created.");
+ return 1;
+ }
}
runtime->dispose();