summaryrefslogtreecommitdiffstats
path: root/src/wayland.hpp
diff options
context:
space:
mode:
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-06-09 17:13:43 +0200
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>2017-08-08 17:24:00 +0200
commita0eba6dbbf675a45f744fb8d6f4fb3cc1c901713 (patch)
treec1ce3e29a93a567730775e846fcbd62274878db8 /src/wayland.hpp
parentfdc1e4622d8aae5bf380e4b197ab616fed7efd34 (diff)
wayland: refactored genivi object events
Events are now delivered to surface_* and layer_* methods of the controller. The genivi object wrappers still are needed to hold wl_proxy objects, their id and a reference/pointer to the controller. Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
Diffstat (limited to 'src/wayland.hpp')
-rw-r--r--src/wayland.hpp85
1 files changed, 47 insertions, 38 deletions
diff --git a/src/wayland.hpp b/src/wayland.hpp
index da01eb3..889b722 100644
--- a/src/wayland.hpp
+++ b/src/wayland.hpp
@@ -150,6 +150,16 @@ struct notifier {
};
}
+struct controller;
+
+struct controlled_entity {
+ struct controller *parent;
+ uint32_t id;
+
+ controlled_entity(struct controller *c, uint32_t i) : parent(c), id(i) {}
+ virtual ~controlled_entity() {}
+};
+
// __
// ___ _ _ _ __ / _| __ _ ___ ___
// / __| | | | '__| |_ / _` |/ __/ _ \
@@ -157,27 +167,10 @@ struct notifier {
// |___/\__,_|_| |_| \__,_|\___\___|
//
struct surface : public wayland_proxy<struct ivi_controller_surface>,
- notify::notifier<struct surface> {
- uint32_t id;
-
- surface(uint32_t i, struct ivi_controller *c);
+ controlled_entity {
+ surface(uint32_t i, struct controller *c);
~surface() override;
- // Events
- void visibility(int32_t visibility);
- void opacity(float opacity);
- void source_rectangle(int32_t x, int32_t y, int32_t width, int32_t height);
- void destination_rectangle(int32_t x, int32_t y, int32_t width,
- int32_t height);
- void configuration(int32_t width, int32_t height);
- void orientation(int32_t orientation);
- void pixelformat(int32_t pixelformat);
- void layer(struct ivi_controller_layer *layer);
- void stats(uint32_t redraw_count, uint32_t frame_count,
- uint32_t update_count, uint32_t pid, const char *process_name);
- void destroyed();
- void content(int32_t content_state);
-
// Requests
inline void set_visibility(uint32_t visibility) {
ivi_controller_surface_set_visibility(this->proxy, visibility);
@@ -225,23 +218,10 @@ struct surface : public wayland_proxy<struct ivi_controller_surface>,
// |_|\__,_|\__, |\___|_|
// |___/
struct layer : public wayland_proxy<struct ivi_controller_layer>,
- notify::notifier<struct layer> {
- uint32_t id;
-
- layer(uint32_t i, struct ivi_controller *c);
+ controlled_entity {
+ layer(uint32_t i, struct controller *c);
~layer() override;
- // Events
- void visibility(int32_t visibility);
- void opacity(float opacity);
- void source_rectangle(int32_t x, int32_t y, int32_t width, int32_t height);
- void destination_rectangle(int32_t x, int32_t y, int32_t width,
- int32_t height);
- void configuration(int32_t width, int32_t height);
- void orientation(int32_t orientation);
- void screen(struct wl_output *screen);
- void destroyed();
-
// Requests
inline void set_visibility(uint32_t visibility) {
ivi_controller_layer_set_visibility(this->proxy, visibility);
@@ -298,10 +278,9 @@ struct layer : public wayland_proxy<struct ivi_controller_layer>,
// \__ \ (__| | | __/ __/ | | |
// |___/\___|_| \___|\___|_| |_|
//
-struct screen : public wayland_proxy<struct ivi_controller_screen> {
- uint32_t id;
-
- screen(uint32_t i, struct ivi_controller_screen *p);
+struct screen : public wayland_proxy<struct ivi_controller_screen>,
+ controlled_entity {
+ screen(uint32_t i, struct controller *c, struct ivi_controller_screen *p);
};
// _ _ _
@@ -319,10 +298,40 @@ struct controller : public wayland_proxy<struct ivi_controller> {
~controller() override;
// Events
+ // controller
void screen(uint32_t id, struct ivi_controller_screen *screen);
void layer(uint32_t id);
void surface(uint32_t id);
void error(int32_t oid, int32_t otype, int32_t code, char const *text);
+
+ // surface
+ void surface_visibility(uint32_t id, int32_t visibility);
+ void surface_opacity(uint32_t id, float opacity);
+ void surface_source_rectangle(uint32_t id, int32_t x, int32_t y,
+ int32_t width, int32_t height);
+ void surface_destination_rectangle(uint32_t id, int32_t x, int32_t y,
+ int32_t width, int32_t height);
+ void surface_configuration(uint32_t id, int32_t width, int32_t height);
+ void surface_orientation(uint32_t id, int32_t orientation);
+ void surface_pixelformat(uint32_t id, int32_t pixelformat);
+ void surface_layer(uint32_t id, struct ivi_controller_layer *layer);
+ void surface_stats(uint32_t id, uint32_t redraw_count, uint32_t frame_count,
+ uint32_t update_count, uint32_t pid,
+ const char *process_name);
+ void surface_destroyed(uint32_t id);
+ void surface_content(uint32_t id, int32_t content_state);
+
+ // layer
+ void layer_visibility(uint32_t id, int32_t visibility);
+ void layer_opacity(uint32_t id, float opacity);
+ void layer_source_rectangle(uint32_t id, int32_t x, int32_t y, int32_t width,
+ int32_t height);
+ void layer_destination_rectangle(uint32_t id, int32_t x, int32_t y,
+ int32_t width, int32_t height);
+ void layer_configuration(uint32_t id, int32_t width, int32_t height);
+ void layer_orientation(uint32_t id, int32_t orientation);
+ void layer_screen(uint32_t id, struct wl_output *screen);
+ void layer_destroyed(uint32_t id);
};
}