From 847dde9621cef9b9a44eda95c63c0fe3f528468d Mon Sep 17 00:00:00 2001 From: Kazumasa Mitsunari Date: Mon, 25 Jun 2018 11:22:00 +0900 Subject: Rework: Window Manager handles by application To manage role, surface, layer ... and other info more easily, Window Manager handles info by application. WMClient class holds infomation of application. WMRequest class holds the request from application(trigger) and the action list judged by policy manager. The above info is in applist. *applist Hold client list. And hold request list which comes from application to get the right of displaying. *request The request from application and the Action judged from Policy Manager *client Application information which has surface, role and so on. *error Error code and error message. Integration patch is going to be pushed after this commit. Bug-AGL: SPEC-1509 Change-Id: I52b161701e22e316137dc42f073b118d164c1e28 Signed-off-by: Kazumasa Mitsunari --- src/wm_client.hpp | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/wm_client.hpp (limited to 'src/wm_client.hpp') diff --git a/src/wm_client.hpp b/src/wm_client.hpp new file mode 100644 index 0000000..0d6faeb --- /dev/null +++ b/src/wm_client.hpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2017 TOYOTA MOTOR CORPORATION + * + * 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. + */ + +#ifndef WINDOWMANAGER_CLIENT_HPP +#define WINDOWMANAGER_CLIENT_HPP + +#include +#include +#include + +extern "C" +{ +#define AFB_BINDING_VERSION 2 +#include +} + +namespace wm +{ + +enum WM_CLIENT_ERROR_EVENT +{ + UNKNOWN_ERROR +}; + +class WMClient +{ + public: + WMClient(); + WMClient(const std::string &appid, unsigned layer, + unsigned surface, const std::string &role); + WMClient(const std::string &appid, const std::string &role); + virtual ~WMClient(); + + std::string appID() const; + unsigned surfaceID(const std::string &role) const; + unsigned layerID() const; + std::string role(unsigned surface) const; + void registerLayer(unsigned layer); + bool addSurface(const std::string& role, unsigned surface); + bool removeSurfaceIfExist(unsigned surface); + bool removeRole(const std::string& role); + +#ifndef GTEST_ENABLED + bool subscribe(afb_req req, const std::string &event_name); + void emitError(WM_CLIENT_ERROR_EVENT ev); +#endif + + void dumpInfo(); + + private: + std::string id; + unsigned layer; + std::unordered_map role2surface; +#if GTEST_ENABLED + // This is for unit test. afb_make_event occurs sig11 if call not in afb-binding + std::unordered_map event2list; +#else + std::unordered_map event2list; +#endif +}; +} // namespace wm + +#endif \ No newline at end of file -- cgit 1.2.3-korg