diff options
author | zheng_wenlong <wenlong_zheng@nexty-ele.com> | 2017-09-29 21:06:22 +0900 |
---|---|---|
committer | Yuta Doi <yuta-d@witz-inc.co.jp> | 2017-10-09 01:48:59 +0900 |
commit | 074d058a7a483a66af7f8c0b928b321ad483f47c (patch) | |
tree | eb89aacd178a7b99850cbdc528976e97d35d37bf /src/afb_binding_api.cpp | |
parent | 7204e00b05cab896df48abf6a355be69a0f57f80 (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.cpp | 114 |
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 |