context = nullptr;
}
-void LaunchpadLoader::Run(loader_lifecycle_callback_s* callback,
+int LaunchpadLoader::Run(loader_lifecycle_callback_s* callback,
loader_adapter_s* adapter, void* user_data) {
if (callback == nullptr || adapter == nullptr) {
_E("Invalid argument");
- THROW(-EINVAL);
+ return -EINVAL;
}
if (adapter->loop_begin == nullptr || adapter->loop_quit == nullptr ||
adapter->add_fd == nullptr || adapter->remove_fd == nullptr) {
_E("Invalid argument. adapter callback is nullptr");
- THROW(-EINVAL);
+ return -EINVAL;
}
callback_ = *callback;
if (!OnCreate()) {
_E("OnCreate() returns false");
- THROW(-1);
+ return -1;
}
SchedPriority::Set(0);
OnAdapterLoopBegin();
- OnTerminate();
+ return OnTerminate();
}
void LaunchpadLoader::Quit() {
app_info->GetPkgType().c_str(), user_data_);
}
-void LaunchpadLoader::OnTerminate() {
+int LaunchpadLoader::OnTerminate() {
_D("Terminating...");
region_format_config_.reset();
language_config_.reset();
- if (callback_.terminate != nullptr) {
- int ret = callback_.terminate(app_argc_, app_argv_, user_data_);
- if (ret != 0)
- exit(ret);
- }
+ if (callback_.terminate != nullptr)
+ return callback_.terminate(app_argc_, app_argv_, user_data_);
+
+ return -1;
}
void LaunchpadLoader::OnAdapterLoopBegin() {
extern "C" EXPORT_API int launchpad_loader_main(int argc, char** argv,
loader_lifecycle_callback_s* callback, loader_adapter_s* adapter,
void* user_data) {
+ int ret = -1;
try {
LaunchpadLoader loader(argc, argv);
- loader.Run(callback, adapter, user_data);
+ ret = loader.Run(callback, adapter, user_data);
} catch (const Exception& e) {
_E("Exception occurs. error: %s", e.what());
return e.GetErrorCode();
}
- return 0;
+ return ret;
}
extern "C" EXPORT_API int launchpad_loader_set_priority(int prio) {
LaunchpadLoader(int argc, char** argv);
virtual ~LaunchpadLoader();
- void Run(loader_lifecycle_callback_s* callback, loader_adapter_s* adapter,
+ int Run(loader_lifecycle_callback_s* callback, loader_adapter_s* adapter,
void* user_data);
void Quit();
const tizen_base::Bundle& GetBundle() const;
bool OnCreate();
void OnPrelaunch(int argc, char** argv, AppInfo* app_info);
int OnLaunch(int argc, char** argv, AppInfo* app_info);
- void OnTerminate();
+ int OnTerminate();
void OnAdapterLoopBegin();
void OnAdapterLoopQuit();