X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fwayland.hpp;h=f7f9ce5248bfd0da7ae680328ebe06515f70c234;hb=df262c7d3049477a23cde85bdabdcdea7f7eebb0;hp=fbb9704e55ad0d343c70c818aa75d0c4284a282c;hpb=7ffa858f1f3bdd4823ed2834186ceea010d6dd33;p=staging%2Fwindowmanager.git diff --git a/src/wayland.hpp b/src/wayland.hpp index fbb9704..f7f9ce5 100644 --- a/src/wayland.hpp +++ b/src/wayland.hpp @@ -6,8 +6,8 @@ #include "util.h" #include -#include #include +#include #include // _ _ @@ -66,7 +66,7 @@ struct registry : public wayland_proxy { // \__,_|_|___/ .__/|_|\__,_|\__, | // |_| |___/ struct display { - std::unique_ptr d; + std::unique_ptr d; struct registry r; display(); @@ -85,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, @@ -295,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> @@ -305,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)); @@ -335,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);