App: remove unused g_app global, make dtor default
[staging/windowmanager.git] / src / app.hpp
index 3319081..9424d9f 100644 (file)
@@ -30,6 +30,7 @@
 #include "controller_hooks.hpp"
 #include "layers.hpp"
 #include "layout.hpp"
+#include "policy.hpp"
 #include "result.hpp"
 #include "wayland.hpp"
 
@@ -46,9 +47,6 @@ namespace wm {
 using std::experimental::optional;
 
 struct id_allocator {
-   constexpr static const unsigned id_shift = 22;
-   constexpr static const unsigned id_mask = (1 << id_shift) - 1;
-
    unsigned next = 1;
 
    // Surfaces that where requested but not yet created
@@ -115,7 +113,6 @@ struct App {
    struct config config;
 
    // track current layouts separately
-   std::map<int, struct LayoutState> layouts;
    layer_map layers;
 
    // ID allocation and proxy methods for lookup
@@ -126,8 +123,10 @@ struct App {
 
    std::vector<int> pending_end_draw;
 
+   Policy policy;
+
    explicit App(wl::display *d);
-   ~App();
+   ~App() = default;
 
    App(App const &) = delete;
    App &operator=(App const &) = delete;
@@ -176,8 +175,12 @@ private:
 
    void activate(int id);
    void deactivate(int id);
+   void deactivate_main_surface();
 
    bool can_split(struct LayoutState const &state, int new_id);
+   void try_layout(struct LayoutState &state,
+                   struct LayoutState const &new_layout,
+                   std::function<void(LayoutState const &nl)> apply);
 };
 
 }  // namespace wm