X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwayland.hpp;h=b5e2d517177470974703125b069bf2a63655d8b7;hb=ca53e70e58714286798a071fbe2316295334ac7b;hp=7e005f13daba2f6fe6f80d683c1e117a1fcef428;hpb=9dfa6b9427115e7402ce25e40e4d78b20d559c93;p=staging%2Fwindowmanager.git diff --git a/src/wayland.hpp b/src/wayland.hpp index 7e005f1..b5e2d51 100644 --- a/src/wayland.hpp +++ b/src/wayland.hpp @@ -1,8 +1,8 @@ #ifndef WM_WAYLAND_HPP #define WM_WAYLAND_HPP +#include "controller_hooks.hpp" #include "ivi-controller-client-protocol.h" - #include "util.hpp" #include @@ -76,6 +76,11 @@ struct display { void flush(); int get_fd() const; int get_error(); + + // Lets just proxy this for the registry + inline void add_global_handler(char const *iface, registry::binder bind) { + this->r.add_global_handler(iface, bind); + } }; // _ _ @@ -120,7 +125,7 @@ struct size { }; struct rect { - uint32_t w, h; + int32_t w, h; int32_t x, y; }; @@ -136,6 +141,16 @@ struct controller_child { virtual ~controller_child() {} }; +struct surface_properties { + uint32_t id; // let's just save an ID here too + struct rect dst_rect; + struct rect src_rect; + struct size size; + int32_t orientation; + int32_t visibility; + float opacity; +}; + // __ // ___ _ _ _ __ / _| __ _ ___ ___ // / __| | | | '__| |_ / _` |/ __/ _ \ @@ -144,13 +159,6 @@ struct controller_child { // struct surface : public wayland_proxy, controller_child { - struct rect dst_rect; - struct rect src_rect; - struct size size; - int32_t orientation; - int32_t visibility; - float opacity; - surface(surface const &) = delete; surface &operator=(surface const &) = delete; surface(uint32_t i, struct controller *c); @@ -177,13 +185,6 @@ struct surface : public wayland_proxy, // |___/ struct layer : public wayland_proxy, controller_child { - struct rect dst_rect; - struct rect src_rect; - struct size size; - int32_t orientation; - int32_t visibility; - float opacity; - layer(layer const &) = delete; layer &operator=(layer const &) = delete; layer(uint32_t i, struct controller *c); @@ -236,6 +237,8 @@ struct controller : public wayland_proxy { typedef std::unordered_map> screen_map_type; + typedef std::unordered_map props_map; + // HACK: // The order of these member is mandatory, as when objects are destroyed // they will call their parent (that's us right here!) and remove their @@ -247,6 +250,9 @@ struct controller : public wayland_proxy { proxy_to_id_map_type layer_proxy_to_id; proxy_to_id_map_type screen_proxy_to_id; + props_map sprops; + props_map lprops; + surface_map_type surfaces; layer_map_type layers; screen_map_type screens; @@ -257,7 +263,7 @@ struct controller : public wayland_proxy { size output_size; - void debug_dump_current_status(); + wm::controller_hooks *chooks; void add_proxy_to_id_mapping(struct ivi_controller_surface *p, uint32_t id); void remove_proxy_to_id_mapping(struct ivi_controller_surface *p);