diff options
author | Marcus Fritzsch <marcus_fritzsch@mentor.com> | 2017-08-01 12:19:14 +0200 |
---|---|---|
committer | Marcus Fritzsch <marcus_fritzsch@mentor.com> | 2017-08-08 17:24:00 +0200 |
commit | c03004341a31971fcc926675a6ba306867721e15 (patch) | |
tree | a2f9a9c32a7f63b8833a7401fe150a6e0cffbb0c | |
parent | 9642c1098a3b3326c2213b5f791dfa84c6352625 (diff) |
app: handle failure to load layout.json gracefully
Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
-rw-r--r-- | TODO | 14 | ||||
-rw-r--r-- | src/app.cpp | 11 |
2 files changed, 24 insertions, 1 deletions
@@ -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; } |