#define TMCAGLWM_APP_HPP
#include <json-c/json.h>
+#include <memory>
+#include "afb_binding_api.hpp"
+#include "controller_hooks.hpp"
+#include "layers.hpp"
+#include "layout.hpp"
#include "result.hpp"
-#include "afb_api.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 wl::display *display;
- struct genivi::controller *controller;
+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;
+
+ App(wl::display *d);
+ ~App();
+
+ App(App const &) = delete;
+ App &operator=(App const &) = delete;
+
+ int init();
+ int dispatch_events();
+ int init_layout();
- App();
- };
+ 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