From 87d5f3125648ea21f338613a8d27aba7f2db34fb Mon Sep 17 00:00:00 2001 From: Kazumasa Mitsunari Date: Thu, 9 Aug 2018 10:36:54 +0900 Subject: Temporary: setRole cherry-picked from sandbox/knimitz/set_role Change-Id: I1b8bdde593a757eb52526bed6c87a9e0eb96b3b3 Signed-off-by: Kazumasa Mitsunari --- src/libwindowmanager.cpp | 25 ++++++++++++++++++++++++- src/libwindowmanager.h | 2 ++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/libwindowmanager.cpp b/src/libwindowmanager.cpp index 515fea1..0127405 100644 --- a/src/libwindowmanager.cpp +++ b/src/libwindowmanager.cpp @@ -56,6 +56,7 @@ class LibWindowmanager::Impl { // WM API int requestSurface(json_object *object); int requestSurfaceXDG(json_object *object); + int setRole(json_object *object); int activateWindow(json_object *object); int deactivateWindow(json_object *object); int endDraw(json_object *object); @@ -305,7 +306,7 @@ int LibWindowmanager::Impl::requestSurfaceXDG(json_object *object) { return -EINVAL; } - // DrawingName in "object" is overwrited in api_call("RequestSurface") + // DrawingName in "object" is overwritten in api_call("RequestSurface") // So it is neccesary to copy it. const char *label = std::string(tmp_label).c_str(); @@ -337,6 +338,18 @@ int LibWindowmanager::Impl::requestSurfaceXDG(json_object *object) { return rc; } +int LibWindowmanager::Impl::setRole(json_object *object) { + HMI_DEBUG("libwm", "called"); + return this->api_call("setRole", object, [](bool ok, json_object *j) { + if (!ok) { + HMI_ERROR("libwm", "API Call setRole() failed: %s", + j != nullptr ? json_object_to_json_string_ext( + j, JSON_C_TO_STRING_PRETTY) + : "no-info"); + } + }); +} + int LibWindowmanager::Impl::activateWindow(json_object *object) { TRACE(); HMI_DEBUG("libwm", "called"); @@ -927,6 +940,16 @@ int LibWindowmanager::requestSurfaceXDG(const char* role, unsigned ivi_id) { return this->d->requestSurfaceXDG(object); } +int LibWindowmanager::setRole(const char* role) +{ + pid_t pid = getpid(); // need surface rendering process + json_object* object = json_object_new_object(); + json_object_object_add(object, "role", json_object_new_string(role)); + json_object_object_add(object, "pid", json_object_new_int(pid)); + + return this->d->setRole(object); +} + int LibWindowmanager::activateWindow(json_object *object) { return this->d->activateWindow(object); } diff --git a/src/libwindowmanager.h b/src/libwindowmanager.h index cc65136..dcd7416 100644 --- a/src/libwindowmanager.h +++ b/src/libwindowmanager.h @@ -92,6 +92,7 @@ public: const char *kKeyDrawingName = "drawing_name"; const char *kKeyDrawingArea = "drawing_area"; const char *kKeyDrawingRect = "drawing_rect"; + const char *kKeyRole = "role"; const char *kKeyIviId = "ivi_id"; enum EventType { @@ -117,6 +118,7 @@ public: // WM API int requestSurface(const char* role); int requestSurfaceXDG(const char* role, unsigned ivi_id); + int setRole(const char* role); int activateWindow(const char* role, const char* area); int activateWindow(const char* role); int deactivateWindow(const char* role); -- cgit 1.2.3-korg