diff options
author | Kazumasa Mitsunari <knimitz@witz-inc.co.jp> | 2018-06-25 11:22:00 +0900 |
---|---|---|
committer | Kazumasa Mitsunari <knimitz@witz-inc.co.jp> | 2018-06-27 08:18:41 +0000 |
commit | 847dde9621cef9b9a44eda95c63c0fe3f528468d (patch) | |
tree | 1273830d4ad87614ae7323eb9e338f621494652e /src/wm_client.hpp | |
parent | d1127dd62c25e9c4c7d545de2456c6f4c4d7309f (diff) |
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 <knimitz@witz-inc.co.jp>
Diffstat (limited to 'src/wm_client.hpp')
-rw-r--r-- | src/wm_client.hpp | 76 |
1 files changed, 76 insertions, 0 deletions
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 <vector> +#include <string> +#include <unordered_map> + +extern "C" +{ +#define AFB_BINDING_VERSION 2 +#include <afb/afb-binding.h> +} + +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<std::string, unsigned> role2surface; +#if GTEST_ENABLED + // This is for unit test. afb_make_event occurs sig11 if call not in afb-binding + std::unordered_map<std::string, std::string> event2list; +#else + std::unordered_map<std::string, struct afb_event> event2list; +#endif +}; +} // namespace wm + +#endif
\ No newline at end of file |