app: use config to determine json config file names
[staging/windowmanager.git] / src / app.hpp
index 0fb929d..5bbd2db 100644 (file)
@@ -8,35 +8,53 @@
 #include <json-c/json.h>
 #include <memory>
 
-#include "wayland.hpp"
-#include "result.hpp"
 #include "afb_binding_api.hpp"
+#include "controller_hooks.hpp"
+#include "layers.hpp"
+#include "layout.hpp"
+#include "result.hpp"
+#include "wayland.hpp"
+#include "config.hpp"
 
 namespace wl {
-    struct display;
+struct display;
 }
+
 namespace genivi {
-    struct controller;
+struct controller;
 }
 
 namespace wm {
 
-    struct App {
-        struct binding_api api;
+struct App {
+   struct binding_api api;
+   struct controller_hooks chooks;
+
+   // This is the one thing, we do not own.
+   struct wl::display *display;
+
+   std::unique_ptr<struct genivi::controller> controller;
+   std::vector<std::unique_ptr<struct wl::output>> outputs;
+
+   struct config config;
+
+   layouts_type layouts;
+   layer_map layers;
 
-        // This is the one thing, we do not own.
-        struct wl::display *display;
+   App(wl::display *d);
+   ~App();
 
-        std::unique_ptr<struct genivi::controller> controller;
-        std::vector<std::unique_ptr<struct wl::output>> outputs;
+   App(App const &) = delete;
+   App &operator=(App const &) = delete;
 
-        App(wl::display *d);
+   int init();
+   int dispatch_events();
+   int init_layout();
 
-        int init();
-        int dispatch_events();
-        int init_layout();
-    };
+   void surface_created(uint32_t surface_id);
+   void surface_removed(uint32_t surface_id);
+};
 
-} // namespace wm
+}  // namespace wm
 
-#endif //TMCAGLWM_APP_HPP
+#endif  // TMCAGLWM_APP_HPP