summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/afb_binding_api.cpp102
-rw-r--r--src/app.cpp73
3 files changed, 103 insertions, 73 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 606192c..0ef0eb5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -24,6 +24,7 @@ add_library(winman MODULE
json_helper.cpp
json_helper.hpp
app.hpp app.cpp
+ afb_binding_api.cpp
result.hpp
afb_binding_api.hpp
afb_binding_glue.inl layers.cpp layers.hpp controller_hooks.hpp config.cpp config.hpp)
diff --git a/src/afb_binding_api.cpp b/src/afb_binding_api.cpp
new file mode 100644
index 0000000..d0df3b6
--- /dev/null
+++ b/src/afb_binding_api.cpp
@@ -0,0 +1,102 @@
+/*
+ * 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::request_surface(
+ char const *drawing_name) {
+ auto r = this->app->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::activate_surface(
+ char const *drawing_name) {
+ logdebug("%s drawing_name %s", __func__, drawing_name);
+ auto r = this->app->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::deactivate_surface(char const* drawing_name) {
+ logdebug("%s drawing_name %s", __func__, drawing_name);
+ auto r = this->app->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);
+ return Err<json_object*>("not implemented");
+}
+
+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__);
+ raise(SIGKILL); // XXX afb-daemon kills it's pgroup using TERM, which
+ // doesn't play well with perf
+ return Ok(json_object_new_object());
+}
+
+} // namespace wm
diff --git a/src/app.cpp b/src/app.cpp
index 2bb74b4..1c7382d 100644
--- a/src/app.cpp
+++ b/src/app.cpp
@@ -517,79 +517,6 @@ void App::deactivate(unsigned id) {
}
}
-// _ _ _ _ _ _ _
-// | |__ (_)_ __ __| (_)_ __ __ _ __ _ _ __ (_) (_)_ __ ___ _ __ | |
-// | '_ \| | '_ \ / _` | | '_ \ / _` | / _` | '_ \| | | | '_ ` _ \| '_ \| |
-// | |_) | | | | | (_| | | | | | (_| | | (_| | |_) | | | | | | | | | |_) | |
-// |_.__/|_|_| |_|\__,_|_|_| |_|\__, |___\__,_| .__/|_| |_|_| |_| |_| .__/|_|
-// |___/_____| |_| |_|
-binding_api::result_type binding_api::request_surface(
- char const *drawing_name) {
- auto r = this->app->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::activate_surface(
- char const *drawing_name) {
- logdebug("%s drawing_name %s", __func__, drawing_name);
- auto r = this->app->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::deactivate_surface(char const* drawing_name) {
- logdebug("%s drawing_name %s", __func__, drawing_name);
- auto r = this->app->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);
- return Err<json_object*>("not implemented");
-}
-
-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__);
- raise(SIGKILL); // XXX afb-daemon kills it's pgroup using TERM, which
- // doesn't play well with perf
- return Ok(json_object_new_object());
-}
-
// _ _ _ _ _
// ___ ___ _ __ | |_ _ __ ___ | | | ___ _ __ | |__ ___ ___ | | _____
// / __/ _ \| '_ \| __| '__/ _ \| | |/ _ \ '__|| '_ \ / _ \ / _ \| |/ / __|