2 * Copyright (C) 2017 Mentor Graphics Development (Deutschland) GmbH
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "json_helper.hpp"
24 using json = nlohmann::json;
26 #include <json-c/json.h>
30 // | |__ (_)_ __ __| (_)_ __ __ _ __ _ _ __ (_) (_)_ __ ___ _ __ | |
31 // | '_ \| | '_ \ / _` | | '_ \ / _` | / _` | '_ \| | | | '_ ` _ \| '_ \| |
32 // | |_) | | | | | (_| | | | | | (_| | | (_| | |_) | | | | | | | | | |_) | |
33 // |_.__/|_|_| |_|\__,_|_|_| |_|\__, |___\__,_| .__/|_| |_|_| |_| |_| .__/|_|
34 // |___/_____| |_| |_|
35 binding_api::result_type binding_api::request_surface(
36 char const *drawing_name) {
37 auto r = this->app->request_surface(drawing_name);
39 return Err<json_object *>(r.unwrap_err());
41 return Ok(json_object_new_int(r.unwrap()));
44 binding_api::result_type binding_api::activate_surface(
45 char const *drawing_name) {
46 logdebug("%s drawing_name %s", __func__, drawing_name);
47 auto r = this->app->activate_surface(drawing_name);
49 logdebug("%s failed with error: %s", __func__, r);
50 return Err<json_object *>(r);
52 return Ok(json_object_new_object());
55 binding_api::result_type binding_api::deactivate_surface(char const* drawing_name) {
56 logdebug("%s drawing_name %s", __func__, drawing_name);
57 auto r = this->app->deactivate_surface(drawing_name);
59 logdebug("%s failed with error: %s", __func__, r);
60 return Err<json_object *>(r);
62 return Ok(json_object_new_object());
65 binding_api::result_type binding_api::enddraw(char const* drawing_name) {
66 logdebug("%s drawing_name %s", __func__, drawing_name);
67 return Err<json_object*>("not implemented");
70 binding_api::result_type binding_api::list_drawing_names() {
71 logdebug("%s", __func__);
72 json j = this->app->id_alloc.name2id;
73 return Ok(json_tokener_parse(j.dump().c_str()));
76 binding_api::result_type binding_api::debug_layers() {
77 logdebug("%s", __func__);
78 return Ok(json_tokener_parse(this->app->layers.to_json().dump().c_str()));
81 binding_api::result_type binding_api::debug_surfaces() {
82 logdebug("%s", __func__);
83 return Ok(to_json(this->app->controller->sprops));
86 binding_api::result_type binding_api::debug_status() {
87 logdebug("%s", __func__);
88 json_object *jr = json_object_new_object();
89 json_object_object_add(jr, "surfaces",
90 to_json(this->app->controller->sprops));
91 json_object_object_add(jr, "layers", to_json(this->app->controller->lprops));
95 binding_api::result_type binding_api::debug_terminate() {
96 logdebug("%s", __func__);
97 if (getenv("WINMAN_DEBUG_TERMINATE") != nullptr) {
98 raise(SIGKILL); // XXX afb-daemon kills it's pgroup using TERM, which
99 // doesn't play well with perf
101 return Ok(json_object_new_object());
104 binding_api::result_type binding_api::ping() {
105 this->app->dispatch_pending_events();
106 return Ok(json_object_new_object());