aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-07-11 15:18:42 +0200
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-08-08 17:24:00 +0200
commit628df48e0238391658dab54f81dfa1c62dbfb3ec (patch)
tree9f12ca0c00abc5e5d3e201e5052308ca640fe86f /src
parent675184e57e4b1a04f871babc2bc777c6f53e7b6f (diff)
main/app: started to move things to app
Started implementing App, as the actual implementation, that is, to pull out all the stuff that is actually the application and only have glue code reside in main. Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt2
-rw-r--r--src/app.cpp30
-rw-r--r--src/app.hpp52
-rw-r--r--src/main.cpp7
4 files changed, 90 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 62bdc9f..15ecc3c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -13,7 +13,7 @@ add_library(winman MODULE
wayland.hpp
util.cpp
util.hpp
- ${IVI_CON_PROTO} json_helper.cpp json_helper.hpp)
+ ${IVI_CON_PROTO} json_helper.cpp json_helper.hpp app.hpp app.cpp)
target_include_directories(winman
PRIVATE
diff --git a/src/app.cpp b/src/app.cpp
new file mode 100644
index 0000000..5da4f9d
--- /dev/null
+++ b/src/app.cpp
@@ -0,0 +1,30 @@
+//
+// Created by mfritzsc on 7/11/17.
+//
+
+#include "app.hpp"
+
+namespace wm {
+
+ App::App()
+ : api{this}
+ {}
+
+ result<char const *, json> App::API::register_surface(uint32_t appid,
+ uint32_t surfid) {
+ return Err<char const *, json>("not implemented");
+ }
+
+ result<char const *, json> App::API::debug_layers() const {
+ return Err<char const *, json>("not implemented");
+ }
+
+ result<char const *, json> App::API::debug_surfaces() const {
+ return Err<char const *, json>("not implemented");
+ }
+
+ result<char const *, json> App::API::debug_status() const {
+ return Err<char const *, json>("not implemented");
+ }
+
+} // namespace wm \ No newline at end of file
diff --git a/src/app.hpp b/src/app.hpp
new file mode 100644
index 0000000..a3108b3
--- /dev/null
+++ b/src/app.hpp
@@ -0,0 +1,52 @@
+//
+// Created by mfritzsc on 7/11/17.
+//
+
+#ifndef TMCAGLWM_APP_HPP
+#define TMCAGLWM_APP_HPP
+
+#include <json.hpp>
+#include <experimental/optional>
+
+namespace wm {
+
+ using std::experimental::optional;
+ using std::experimental::nullopt;
+
+ template <typename E, typename T>
+ struct result {
+ optional<E> e;
+ optional<T> t;
+
+ bool is_ok() const { return this->t != nullopt; }
+ bool is_err() const { return this->e != nullopt; }
+ T unwrap() { return this->t.value(); }
+ };
+
+ template <typename E, typename T>
+ struct result<E, T> Err(E e) { return result<E, T>{e, nullopt}; }
+
+ template <typename E, typename T>
+ struct result<E, T> Ok(T t) { return result<E, T>{nullopt, t}; }
+
+ using json = nlohmann::json;
+
+ struct App {
+ struct API {
+ struct App *app;
+
+ result<char const *, json> debug_status() const;
+ result<char const *, json> debug_layers() const;
+ result<char const *, json> debug_surfaces() const;
+
+ result<char const *, json> register_surface(uint32_t appid, uint32_t surfid);
+ };
+
+ struct API api;
+
+ App();
+ };
+
+} // namespace wm
+
+#endif //TMCAGLWM_APP_HPP
diff --git a/src/main.cpp b/src/main.cpp
index 4593f22..5c9df33 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,6 +1,7 @@
#include "json_helper.hpp"
#include "util.hpp"
#include "wayland.hpp"
+#include "app.hpp"
#include <algorithm>
#include <json.h>
@@ -211,6 +212,12 @@ void debug_status(struct afb_req req) {
// Quick and dirty, dump current surfaces and layers
AFB_REQ_DEBUG(req, "status");
+ // auto r = g_afb_instance->app.api.debug_status();
+ // if (r.is_err()) {
+ // afb_req_fail(req, "failed", r.e.value());
+ // return;
+ // }
+
auto o = json_object_new_object();
json_object_object_add(o, "surfaces",
to_json(g_afb_instance->controller->sprops));