* limitations under the License.
*/
+#include <aul.h>
+#include <dlog.h>
+
#include "watch.hh"
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+
+#define LOG_TAG "WATCH_HOLDER"
+
using namespace std;
using namespace screen_connector;
namespace watch_holder {
}
void Watch::Resume() {
-
+ SendVisibility(true);
}
void Watch::Pause() {
-
+ SendVisibility(false);
}
void Watch::Terminate() {
+ aul_terminate_pid(pid_);
+}
+void Watch::OnAuxMsg(void *data, Evas_Object *o, void *ev_info) {
+ Watch* wa = (Watch*)data;
+ Elm_Win_Aux_Message *msg = (Elm_Win_Aux_Message *)ev_info;
+ const char *key = elm_win_aux_msg_key_get(wa->bind_win_, msg);
+ const char *val = elm_win_aux_msg_val_get(wa->bind_win_, msg);
+
+ if (!strcmp(key, "tz_remote_surface_mng") && !strcmp(val, "prebind")) {
+ wa->listener_->OnBound(*wa);
+ LOGI("Start bind mode !!");
+ evas_object_smart_callback_del(wa->bind_win_,
+ "aux,msg,received", OnAuxMsg);
+ }
}
-void Watch::Bind(Evas_Object* win) {
+int Watch::GetRid() const {
+ return RemoteSurface::GetRid();
+}
+void Watch::Bind(Evas_Object* win) {
+ bind_win_ = win;
+ elm_win_aux_hint_add(win, "wm.policy.win.msg.use", "1");
+ evas_object_smart_callback_add(win, "aux,msg,received",
+ OnAuxMsg, this);
+ RemoteSurfaceEvas::Bind(screen_connector::EvasObject(win, false));
}
void Watch::Unbind() {
-
+ RemoteSurfaceEvas::Unbind();
}
Evas_Object* Watch::GetCurrentImage() const {
void Watch::OnEvasAdded(const std::string& appId, const std::string& instId,
int pid, const screen_connector::EvasObject& image) {
current_image_ = image.GetRaw();
+ pid_ = pid;
listener_->OnAdded(*this);
}
bool IsBound();
std::string GetAppId();
int GetPid();
+ int GetRid() const ;
tizen_base::Bundle GetExtra();
bool IsFaulted();
private:
int pid, const screen_connector::EvasObject& image) override;
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);
private:
+ int pid_;
std::string appid_;
IEvent* listener_;
Evas_Object* current_image_;
+ Evas_Object* bind_win_;
};
} // namespace watch_holder
LOGE("Fail to run watch (%d)", pid);
return -1;
}
- return 0;
+ return pid;
}
void WatchHolder::EnableRendering() {
return stack_;
}
-Watch* WatchHolder::GetCurrent() {
- return nullptr;
+Watch& WatchHolder::GetCurrent() {
+ return *stack_.back();
}
void WatchHolder::OnDead(const Watch& watch) {
string watch_appid = launch_data.GetString(AUL_K_APPID);
holder->stack_.push_back(make_shared<Watch>(watch_appid, holder->win_, holder));
+ LOGE("LAUNCH DONE (%s)", viewer_appid.c_str());
return 0;
}