summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-08-09 10:36:54 +0900
committerKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-10-22 15:39:56 +0900
commit87d5f3125648ea21f338613a8d27aba7f2db34fb (patch)
tree36f3b383593669db84cead64afa0c48bf1ca6054
parentf427515b412094b7feb09838793ce2e48118839d (diff)
Temporary: setRole
cherry-picked from sandbox/knimitz/set_role Change-Id: I1b8bdde593a757eb52526bed6c87a9e0eb96b3b3 Signed-off-by: Kazumasa Mitsunari <knimitz@witz-inc.co.jp>
-rw-r--r--src/libwindowmanager.cpp25
-rw-r--r--src/libwindowmanager.h2
2 files changed, 26 insertions, 1 deletions
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);