X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fwayland.hpp;h=f7f9ce5248bfd0da7ae680328ebe06515f70c234;hb=df262c7d3049477a23cde85bdabdcdea7f7eebb0;hp=dc1d7291adeef1c7759f4470c633b9ac1e289e74;hpb=0794731455fbf919882c8a9cc03dd42c66117a93;p=staging%2Fwindowmanager.git diff --git a/src/wayland.hpp b/src/wayland.hpp index dc1d729..f7f9ce5 100644 --- a/src/wayland.hpp +++ b/src/wayland.hpp @@ -46,17 +46,17 @@ namespace wl { // |_| \___|\__, |_|___/\__|_| \__, | // |___/ |___/ struct registry : public wayland_proxy { - typedef std::function binder; - std::unordered_map bindings; + typedef std::function binder; + std::unordered_map bindings; - registry(struct wl_display *d); - ~registry(); + registry(struct wl_display *d); + ~registry(); - void add_global_handler(char const *iface, binder bind); + void add_global_handler(char const *iface, binder bind); - // Events - void global(uint32_t name, char const *iface, uint32_t v); - void global_remove(uint32_t name); + // Events + void global(uint32_t name, char const *iface, uint32_t v); + void global_remove(uint32_t name); }; // _ _ _ @@ -66,8 +66,7 @@ struct registry : public wayland_proxy { // \__,_|_|___/ .__/|_|\__,_|\__, | // |_| |___/ struct display { - std::unique_ptr> - d; + std::unique_ptr d; struct registry r; display(); @@ -86,11 +85,11 @@ struct display { // \___/ \__,_|\__| .__/ \__,_|\__| // |_| struct output : wayland_proxy { - int width; - int height; - int refresh; + int width{}; + int height{}; + int refresh{}; - output(struct wl_registry *registry, uint32_t name, uint32_t version); + output(struct wl_registry *r, uint32_t name, uint32_t v); // Events void geometry(int32_t x, int32_t y, int32_t pw, int32_t ph, int32_t subpel, @@ -125,12 +124,12 @@ struct rect { struct controller; -struct controlled_entity { +struct controller_child { struct controller *parent; uint32_t id; - controlled_entity(struct controller *c, uint32_t i) : parent(c), id(i) {} - virtual ~controlled_entity() {} + controller_child(struct controller *c, uint32_t i) : parent(c), id(i) {} + virtual ~controller_child() {} }; // __ @@ -140,7 +139,7 @@ struct controlled_entity { // |___/\__,_|_| |_| \__,_|\___\___| // struct surface : public wayland_proxy, - controlled_entity { + controller_child { struct rect dst_rect; struct rect src_rect; struct size size; @@ -198,7 +197,7 @@ struct surface : public wayland_proxy, // |_|\__,_|\__, |\___|_| // |___/ struct layer : public wayland_proxy, - controlled_entity { + controller_child { struct rect dst_rect; struct rect src_rect; struct size size; @@ -256,7 +255,7 @@ struct layer : public wayland_proxy, } void set_render_order(std::vector const &ro) { - struct wl_array wlro{ + struct wl_array wlro { .size = ro.size() * sizeof(ro[0]), .alloc = ro.capacity() * sizeof(ro[0]), .data = const_cast(static_cast(ro.data())) @@ -272,7 +271,7 @@ struct layer : public wayland_proxy, // |___/\___|_| \___|\___|_| |_| // struct screen : public wayland_proxy, - controlled_entity { + controller_child { screen(uint32_t i, struct controller *c, struct ivi_controller_screen *p); void clear() { ivi_controller_screen_clear(this->proxy); } @@ -280,7 +279,7 @@ struct screen : public wayland_proxy, ivi_controller_screen_add_layer(this->proxy, l->proxy); } void set_render_order(std::vector const &ro) { - struct wl_array wlro{ + struct wl_array wlro { .size = ro.size() * sizeof(ro[0]), .alloc = ro.capacity() * sizeof(ro[0]), .data = const_cast(static_cast(ro.data())) @@ -296,8 +295,11 @@ struct screen : public wayland_proxy, // \___\___/|_| |_|\__|_| \___/|_|_|\___|_| // struct controller : public wayland_proxy { + std::unordered_map surface_proxy_to_id; std::unordered_map> surfaces; + std::unordered_map layer_proxy_to_id; std::unordered_map> layers; + std::unordered_map screen_proxy_to_id; std::unordered_map> screens; typedef std::pair> @@ -306,6 +308,36 @@ struct controller : public wayland_proxy { size output_size; + void add_proxy_to_id_mapping(struct ivi_controller_surface *p, uint32_t id) { + this->surface_proxy_to_id[uintptr_t(p)] = id; + logdebug("Add surface proxy mapping for %p (%u)", p, id); + } + + void remove_proxy_to_id_mapping(struct ivi_controller_surface *p) { + logdebug("Remove surface proxy mapping for %p", p); + this->surface_proxy_to_id.erase(uintptr_t(p)); + } + + void add_proxy_to_id_mapping(struct ivi_controller_layer *p, uint32_t id) { + logdebug("Add layer proxy mapping for %p (%u)", p, id); + this->layer_proxy_to_id[uintptr_t(p)] = id; + } + + void remove_proxy_to_id_mapping(struct ivi_controller_layer *p) { + logdebug("Remove layer proxy mapping for %p", p); + this->layer_proxy_to_id.erase(uintptr_t(p)); + } + + void add_proxy_to_id_mapping(struct wl_output *p, uint32_t id) { + logdebug("Add screen proxy mapping for %p (%u)", p, id); + this->screen_proxy_to_id[uintptr_t(p)] = id; + } + + void remove_proxy_to_id_mapping(struct wl_output *p) { + logdebug("Remove screen proxy mapping for %p", p); + this->screen_proxy_to_id.erase(uintptr_t(p)); + } + void add_task(char const *name, std::function &&f) { this->pending.emplace_back(std::make_pair(name, f)); @@ -336,8 +368,8 @@ struct controller : public wayland_proxy { void controller_screen(uint32_t id, struct ivi_controller_screen *screen); void controller_layer(uint32_t id); void controller_surface(uint32_t id); - void controller_error(int32_t oid, int32_t otype, int32_t code, - char const *text); + void controller_error(int32_t object_id, int32_t object_type, + int32_t error_code, char const *error_text); // surface void surface_visibility(uint32_t id, int32_t visibility);