aboutsummaryrefslogtreecommitdiffstats
path: root/src/afb_binding_api.cpp
diff options
context:
space:
mode:
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>2017-09-29 21:06:22 +0900
committerYuta Doi <yuta-d@witz-inc.co.jp>2017-10-09 01:48:59 +0900
commit074d058a7a483a66af7f8c0b928b321ad483f47c (patch)
treeeb89aacd178a7b99850cbdc528976e97d35d37bf /src/afb_binding_api.cpp
parent7204e00b05cab896df48abf6a355be69a0f57f80 (diff)
Add agl-service-windowmanager-2017
Add a new binding agl-service-windowmanager-2017. A image about this see JIRA SPEC-915. [PatchSet2] Use aglwgt make package. [PatchSet3] Modify to wait until wayland compositor starts up. Bug-AGL: SPEC-925 Change-Id: I8729bb71b5e91d5b009a5bab77232d92605c43ea Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
Diffstat (limited to 'src/afb_binding_api.cpp')
-rw-r--r--src/afb_binding_api.cpp114
1 files changed, 114 insertions, 0 deletions
diff --git a/src/afb_binding_api.cpp b/src/afb_binding_api.cpp
new file mode 100644
index 0000000..9311700
--- /dev/null
+++ b/src/afb_binding_api.cpp
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2017 Mentor Graphics Development (Deutschland) GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "app.hpp"
+#include "json_helper.hpp"
+
+#include <csignal>
+
+#include <json.hpp>
+
+using json = nlohmann::json;
+
+#include <json-c/json.h>
+
+namespace wm {
+// _ _ _ _ _ _ _
+// | |__ (_)_ __ __| (_)_ __ __ _ __ _ _ __ (_) (_)_ __ ___ _ __ | |
+// | '_ \| | '_ \ / _` | | '_ \ / _` | / _` | '_ \| | | | '_ ` _ \| '_ \| |
+// | |_) | | | | | (_| | | | | | (_| | | (_| | |_) | | | | | | | | | |_) | |
+// |_.__/|_|_| |_|\__,_|_|_| |_|\__, |___\__,_| .__/|_| |_|_| |_| |_| .__/|_|
+// |___/_____| |_| |_|
+binding_api::result_type binding_api::requestsurface(
+ char const *drawing_name) {
+ auto r = this->app->api_request_surface(drawing_name);
+ if (r.is_err()) {
+ return Err<json_object *>(r.unwrap_err());
+ }
+ return Ok(json_object_new_int(r.unwrap()));
+}
+
+binding_api::result_type binding_api::activatesurface(
+ char const *drawing_name) {
+ logdebug("%s drawing_name %s", __func__, drawing_name);
+ auto r = this->app->api_activate_surface(drawing_name);
+ if (r != nullptr) {
+ logdebug("%s failed with error: %s", __func__, r);
+ return Err<json_object *>(r);
+ }
+ return Ok(json_object_new_object());
+}
+
+binding_api::result_type binding_api::deactivatesurface(char const* drawing_name) {
+ logdebug("%s drawing_name %s", __func__, drawing_name);
+ auto r = this->app->api_deactivate_surface(drawing_name);
+ if (r != nullptr) {
+ logdebug("%s failed with error: %s", __func__, r);
+ return Err<json_object *>(r);
+ }
+ return Ok(json_object_new_object());
+}
+
+binding_api::result_type binding_api::enddraw(char const* drawing_name) {
+ logdebug("%s drawing_name %s", __func__, drawing_name);
+ auto r = this->app->api_enddraw(drawing_name);
+ if (r != nullptr) {
+ logdebug("%s failed with error: %s", __func__, r);
+ return Err<json_object *>(r);
+ }
+ return Ok(json_object_new_object());
+}
+
+binding_api::result_type binding_api::list_drawing_names() {
+ logdebug("%s", __func__);
+ json j = this->app->id_alloc.name2id;
+ return Ok(json_tokener_parse(j.dump().c_str()));
+}
+
+binding_api::result_type binding_api::debug_layers() {
+ logdebug("%s", __func__);
+ return Ok(json_tokener_parse(this->app->layers.to_json().dump().c_str()));
+}
+
+binding_api::result_type binding_api::debug_surfaces() {
+ logdebug("%s", __func__);
+ return Ok(to_json(this->app->controller->sprops));
+}
+
+binding_api::result_type binding_api::debug_status() {
+ logdebug("%s", __func__);
+ json_object *jr = json_object_new_object();
+ json_object_object_add(jr, "surfaces",
+ to_json(this->app->controller->sprops));
+ json_object_object_add(jr, "layers", to_json(this->app->controller->lprops));
+ return Ok(jr);
+}
+
+binding_api::result_type binding_api::debug_terminate() {
+ logdebug("%s", __func__);
+ if (getenv("WINMAN_DEBUG_TERMINATE") != nullptr) {
+ raise(SIGKILL); // XXX afb-daemon kills it's pgroup using TERM, which
+ // doesn't play well with perf
+ }
+ return Ok(json_object_new_object());
+}
+
+binding_api::result_type binding_api::ping() {
+ this->app->api_ping();
+ return Ok(json_object_new_object());
+}
+
+} // namespace wm