From: Inkyun Kil Date: Wed, 12 Feb 2020 01:38:19 +0000 (+0900) Subject: Add functions for getting extra bundle X-Git-Tag: accepted/tizen/unified/20200306.040240~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F29%2F225029%2F9;p=platform%2Fcore%2Fappfw%2Fwidget-viewer.git Add functions for getting extra bundle Change-Id: I0dd849514b38a4adbb7b4eb522f1b9e521d3f0f4 Signed-off-by: Inkyun Kil --- diff --git a/watch-holder/api/watch_holder.h b/watch-holder/api/watch_holder.h index 09d1dd3..62ed809 100644 --- a/watch-holder/api/watch_holder.h +++ b/watch-holder/api/watch_holder.h @@ -18,8 +18,8 @@ #define __WATCH_HOLDER_H__ #include -#include #include +#include #include "watch.h" diff --git a/watch-holder/src/watch.cc b/watch-holder/src/watch.cc index a83d847..5746128 100644 --- a/watch-holder/src/watch.cc +++ b/watch-holder/src/watch.cc @@ -33,7 +33,7 @@ using namespace screen_connector; namespace watch_holder { Watch::Watch(string appid, Evas_Object* viewer_win, Watch::IEvent* listener) - : RemoteSurfaceEvas(appid, RemoteSurface::WATCH, + : RemoteSurfaceEvas(appid, RemoteSurface::WATCH, make_shared(viewer_win, false)), appid_(appid), listener_(listener) { RemoteSurfaceEvas::SetAutoVisibility(false); @@ -46,6 +46,20 @@ Watch::Watch(int rid, string id, string appid, Evas_Object* viewer_win, Watch::I RemoteSurfaceEvas::SetAutoVisibility(false); } +Watch::Watch(string appid, Evas_Object* viewer_win, tizen_base::Bundle extra, Watch::IEvent* listener) + : RemoteSurfaceEvas(appid, RemoteSurface::WATCH, + make_shared(viewer_win, false)), + appid_(appid), listener_(listener), extra_data_(extra) { + RemoteSurfaceEvas::SetAutoVisibility(false); +} + +Watch::Watch(int rid, string id, string appid, Evas_Object* viewer_win, tizen_base::Bundle extra, Watch::IEvent* listener) + : RemoteSurfaceEvas(rid, id, RemoteSurface::WATCH, + make_shared(viewer_win, false)), + appid_(appid), listener_(listener), extra_data_(extra) { + RemoteSurfaceEvas::SetAutoVisibility(false); +} + void Watch::Resume() { RemoteSurfaceEvas::NoRenderPush(200); RemoteSurfaceEvas::SendVisibility(true); @@ -93,11 +107,6 @@ string Watch::GetAppId() const { return appid_; } -Bundle Watch::GetExtra() { - Bundle b; - return b; -} - bool Watch::IsFaulted() { return false; } @@ -118,6 +127,10 @@ Evas_Object* Watch::GetCurrentImage() const { return current_image_; } +Bundle Watch::GetExtra() { + return extra_data_; +} + 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 5cde285..f4adb14 100644 --- a/watch-holder/src/watch.hh +++ b/watch-holder/src/watch.hh @@ -38,11 +38,17 @@ class EXPORT_API Watch : private screen_connector::RemoteSurfaceEvas, virtual void OnUpdated(const Watch& watch) = 0; virtual void OnRemoved(const Watch& watch) = 0; }; + Watch(std::string appid, Evas_Object* viewer_win, IEvent* listener); - Watch(int rid, std::string id, std::string appid, - Evas_Object* viewer_win, Watch::IEvent* listener); + Watch(int rid, std::string id, std::string appid, Evas_Object* viewer_win, + Watch::IEvent* listener); + Watch(std::string appid, Evas_Object* viewer_win, tizen_base::Bundle extra, + IEvent* listener); + Watch(int rid, std::string id, std::string appid, Evas_Object* viewer_win, + tizen_base::Bundle extra, Watch::IEvent* listener); void Resume() override; void Pause() override; + void Terminate(); void Bind(Evas_Object* win); void Unbind(); @@ -71,6 +77,7 @@ class EXPORT_API Watch : private screen_connector::RemoteSurfaceEvas, IEvent* listener_; Evas_Object* current_image_ = nullptr; Evas_Object* bind_win_ = nullptr; + tizen_base::Bundle extra_data_; }; } // namespace watch_holder diff --git a/watch-holder/src/watch_holder.cc b/watch-holder/src/watch_holder.cc index a5ce772..5b91aa6 100644 --- a/watch-holder/src/watch_holder.cc +++ b/watch-holder/src/watch_holder.cc @@ -64,6 +64,7 @@ int WatchHolder::Launch( Evas_Coord x, y, w, h; evas_object_geometry_get(win_, &x, &y, &w, &h); Bundle data; + if (extra != nullptr) data = Bundle(extra, true, true); aul_svc_set_appid(data.GetHandle(), watch_appid.c_str()); @@ -71,6 +72,10 @@ int WatchHolder::Launch( data.Add("WATCH_HEIGHT", std::to_string(h)); data.Add("WATCH_BG_LAUNCH", std::to_string((int)background)); data.Add(AUL_K_WIDGET_VIEWER, appid_); + + if (extra != nullptr) + extra_map_[watch_appid] = Bundle(extra, true, true); + int pid = appsvc_run_service(data.GetHandle(), 0, nullptr, nullptr); if (pid < 0) { LOGE("Fail to run watch (%d)", pid); @@ -107,15 +112,21 @@ int WatchHolder::OnLaunchSignal(const char *endpoint, aul_app_com_result_e res, bundle *envelope, void *user_data) { Bundle launch_data(envelope, false, false); WatchHolder* holder = (WatchHolder*)user_data; - string viewer_appid = launch_data.GetString(AUL_K_WIDGET_VIEWER); if (viewer_appid != holder->appid_) { - LOGE("It's not mine (%s)", viewer_appid.c_str()); + LOGE("It's not mine (%s:%s)", viewer_appid.c_str(), holder->appid_.c_str()); return 0; } string watch_appid = launch_data.GetString(AUL_K_APPID); - holder->stack_.push_back(make_shared(watch_appid, holder->win_, holder)); + + if (holder->extra_map_.find(watch_appid) != holder->extra_map_.end()) { + Bundle extra(holder->extra_map_[watch_appid]); + holder->stack_.push_back(make_shared(watch_appid, holder->win_, extra, holder)); + holder->extra_map_.erase(watch_appid); + } else { + holder->stack_.push_back(make_shared(watch_appid, holder->win_, holder)); + } LOGE("LAUNCH DONE (%s)", viewer_appid.c_str()); return 0; } diff --git a/watch-holder/src/watch_holder.hh b/watch-holder/src/watch_holder.hh index cdf92a5..9be77af 100644 --- a/watch-holder/src/watch_holder.hh +++ b/watch-holder/src/watch_holder.hh @@ -19,10 +19,12 @@ #include #include +#include #include #include #include +#include #include #include "watch.hh" @@ -53,6 +55,7 @@ class EXPORT_API WatchHolder : public Watch::IEvent, public AmbientListener { private: std::string appid_; Evas_Object* win_; + std::map extra_map_; std::list> stack_; aul_app_com_connection_h launch_signal_conn_ = nullptr; aul_app_com_connection_h dead_signal_conn_ = nullptr;