aboutsummaryrefslogtreecommitdiffstats
path: root/src/wm_client.hpp
diff options
context:
space:
mode:
authorKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-06-25 11:22:00 +0900
committerKazumasa Mitsunari <knimitz@witz-inc.co.jp>2018-06-27 08:18:41 +0000
commit847dde9621cef9b9a44eda95c63c0fe3f528468d (patch)
tree1273830d4ad87614ae7323eb9e338f621494652e /src/wm_client.hpp
parentd1127dd62c25e9c4c7d545de2456c6f4c4d7309f (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.hpp76
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