From: hyunho Date: Thu, 5 Mar 2020 23:13:30 +0000 (+0900) Subject: Handling dead/launch process X-Git-Tag: submit/tizen_5.5/20200306.033842~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1e0823d510b302922ff7307d3be0f03d25f576c1;p=platform%2Fcore%2Fappfw%2Fwidget-viewer.git Handling dead/launch process Change-Id: Iff7cdece000e17c0c4b47c04de8924cc62d2caa1 Signed-off-by: hyunho --- diff --git a/watch-holder/api/watch_holder.cc b/watch-holder/api/watch_holder.cc index 9e35fe9b..a4b841c0 100644 --- a/watch-holder/api/watch_holder.cc +++ b/watch-holder/api/watch_holder.cc @@ -33,7 +33,7 @@ struct watch_holder_s : public WatchHolder { void OnLaunched(const Watch& watch) override { Watch& w = const_cast(watch); - cb_.watch_holder_lifecycle_added_cb(reinterpret_cast(&w), cb_data_); + cb_.watch_holder_lifecycle_launched_cb(reinterpret_cast(&w), cb_data_); } void OnDead(const Watch& watch) override { diff --git a/watch-holder/src/watch.cc b/watch-holder/src/watch.cc index 8d450eb1..73e3012e 100644 --- a/watch-holder/src/watch.cc +++ b/watch-holder/src/watch.cc @@ -135,6 +135,10 @@ Bundle Watch::GetExtra() { return extra_data_; } +void Watch::SetFaulted(bool faulted) { + is_faulted = faulted; +} + void Watch::OnEvasAdded(const std::string& appId, const std::string& instId, int pid, const screen_connector::EvasObject& image) { current_image_ = image.GetRaw(); diff --git a/watch-holder/src/watch.hh b/watch-holder/src/watch.hh index 9dd9b9f8..366dde39 100644 --- a/watch-holder/src/watch.hh +++ b/watch-holder/src/watch.hh @@ -64,6 +64,7 @@ class EXPORT_API Watch : private screen_connector::RemoteSurfaceEvas, void BlockUpdate(bool enable); private: + friend class WatchHolder; void OnEvasAdded(const std::string& appId, const std::string& instId, int pid, const screen_connector::EvasObject& image) override; void OnEvasRemoved(const std::string& appId, const std::string& instId, @@ -71,6 +72,7 @@ class EXPORT_API Watch : private screen_connector::RemoteSurfaceEvas, void OnEvasChanged(const std::string& appId, const std::string& instId, int pid, const screen_connector::EvasObject& image) override; static void OnAuxMsg(void *data, Evas_Object *o, void *ev_info); + void SetFaulted(bool is_faulted); private: int pid_ = 0; @@ -79,6 +81,7 @@ class EXPORT_API Watch : private screen_connector::RemoteSurfaceEvas, Evas_Object* current_image_ = nullptr; Evas_Object* bind_win_ = nullptr; tizen_base::Bundle extra_data_; + bool is_faulted = false; }; } // namespace watch_holder diff --git a/watch-holder/src/watch_holder.cc b/watch-holder/src/watch_holder.cc index b6369b3d..391a1db9 100644 --- a/watch-holder/src/watch_holder.cc +++ b/watch-holder/src/watch_holder.cc @@ -109,6 +109,22 @@ void WatchHolder::OnAmbientEvent(EventType ev, std::string sender, int WatchHolder::OnDeadSignal(const char *endpoint, aul_app_com_result_e e, bundle *envelope, void *user_data) { + WatchHolder* holder = (WatchHolder*)user_data; + Bundle data(envelope, false, false); + string appid = data.GetString(AUL_K_APPID); + string pid = data.GetString(AUL_K_PID); + string is_faulted = data.GetString(AUL_K_IS_FAULT); + list>::iterator it; + for (it = holder->stack_.begin(); it != holder->stack_.end(); ++it) { + if ((*it)->GetAppId() == appid && + pid == to_string((*it)->GetPid())) { + (*it)->SetFaulted(is_faulted == "true"); + holder->OnDead(**it); + break; + } + } + holder->stack_.erase(it); + LOGW("DEAD DONE (%s)", appid.c_str()); return 0; } @@ -131,7 +147,8 @@ int WatchHolder::OnLaunchSignal(const char *endpoint, } else { holder->stack_.push_back(make_shared(watch_appid, holder->win_, holder)); } - LOGE("LAUNCH DONE (%s)", viewer_appid.c_str()); + holder->OnLaunched(*holder->GetCurrent()); + LOGI("LAUNCH DONE (%s)", viewer_appid.c_str()); return 0; } diff --git a/widget_viewer_sdk/src/main.c b/widget_viewer_sdk/src/main.c index 6aba3ed2..318d7a52 100644 --- a/widget_viewer_sdk/src/main.c +++ b/widget_viewer_sdk/src/main.c @@ -770,11 +770,15 @@ static char *__get_pkgid_by_appid(char *appid) } static void __watch_launched_cb(watch_h watch, void *data) { - DbgPrint("watch launched"); + char* appid = NULL; + watch_get_appid(watch, &appid); + DbgPrint("watch(%s) launched", appid); } static void __watch_dead_cb(watch_h watch, bool is_faulted, void *data) { - DbgPrint("watch dead"); + char* appid = NULL; + watch_get_appid(watch, &appid); + DbgPrint("watch(%s) dead (%d)", appid, is_faulted); } static void __watch_added_cb(watch_h watch, void *data) { @@ -874,6 +878,9 @@ static void _app_control(app_control_h service, void *data) lifecycle.watch_holder_lifecycle_ambient_changed_cb = __watch_ambient_changed_cb; lifecycle.watch_holder_lifecycle_ambient_event_cb = __watch_ambient_event_cb; + if (__watch_holder != NULL) + watch_holder_destroy(__watch_holder); + ret = watch_holder_create(s_info.win, lifecycle, &s_info, &__watch_holder); if (ret != WATCH_HOLDER_ERROR_NONE) { ErrPrint("Watch Holder Error:%d", ret);