main: move most of main to app, separate ownership
[staging/windowmanager.git] / src / app.hpp
index 397548a..f6238af 100644 (file)
@@ -6,7 +6,9 @@
 #define TMCAGLWM_APP_HPP
 
 #include <json-c/json.h>
+#include <memory>
 
+#include "wayland.hpp"
 #include "result.hpp"
 #include "afb_api.hpp"
 
@@ -21,10 +23,18 @@ namespace wm {
 
     struct App {
         struct binding_api api;
+
+        // This is the one thing, we do not own.
         struct wl::display *display;
-        struct genivi::controller *controller;
 
-        App();
+        std::unique_ptr<struct genivi::controller> controller;
+        std::vector<std::unique_ptr<struct wl::output>> outputs;
+
+        App(wl::display *d);
+
+        int init();
+        int dispatch_events();
+        int init_layout();
     };
 
 } // namespace wm