summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-08-01 12:19:14 +0200
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-08-08 17:24:00 +0200
commitc03004341a31971fcc926675a6ba306867721e15 (patch)
treea2f9a9c32a7f63b8833a7401fe150a6e0cffbb0c
parent9642c1098a3b3326c2213b5f791dfa84c6352625 (diff)
app: handle failure to load layout.json gracefully
Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
-rw-r--r--TODO14
-rw-r--r--src/app.cpp11
2 files changed, 24 insertions, 1 deletions
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..1323ce8
--- /dev/null
+++ b/TODO
@@ -0,0 +1,14 @@
+* WM client lib that implements afb calls to the WM
+* Most of the API
+X Application structure, whereas controller events should be forwarded to it?
+ Decorator? Proxy?
+X Loose coupling between API calls and the actual handler in the appliation,
+ perhaps convert the verb's json input into a nlohmann::json and pass it to
+ some app method which then in turn can return a Result<error, json> kind
+ of thing. The verb's entry point would then construct a reply accordingly
+X Design a sensible and lightweight representation of a Layout inside the WM
+ Appication.
+* Wm Objects (Layers, Screen, Surface, Areas?) Should be handled with IDs, only
+ Upon making the concrete calls shall the actual objects be resolved.
+* Implement an application configuration, possibly in /etc, must contain:
+ - json configuration names
diff --git a/src/app.cpp b/src/app.cpp
index 5ddcb8c..0bf4529 100644
--- a/src/app.cpp
+++ b/src/app.cpp
@@ -99,11 +99,20 @@ App::App(wl::display *d)
display{d},
controller{},
outputs(),
- layouts(load_layout("../layout.json").unwrap()),
+ layouts(), //load_layout("../layout.json").unwrap()),
surface2layer(load_layer_ids("../ids.json").unwrap()) {
// layouts(load_layout("../layout.json").unwrap()) {
assert(g_app == nullptr);
g_app = this;
+
+ try {
+ auto l = load_layout("../layout.json");
+ if (l.is_err()) {
+ logerror("Coult not load layout configuration: %s", l.err().value());
+ }
+ } catch (std::exception &e) {
+ logerror("Coult not load layout configuration: %s", e.what());
+ }
}
App::~App() { g_app = nullptr; }