ivi-shell: introduce ivi_layout_view
This patch introduces ivi_layout_view data struct,
which is a wrapper of weston_view.
There is always only one ivi_layout_view for an
ivi_layout_surface and ivi_layout_layer pair.
A surface could have many views with different
geometry and transformations, so that a surface
can be shown on:
1. On many screens
2. On the same screen with different positions
The geometry of a view is modified, when properties of
its layer are changed through ivi_layout_interface.
Users of ivi_layout_interface does not have direct access
to ivi_layout_view structure.
v2 changes:
1. Use ivi_view_is_rendered function instead of
active member
2. Add descriptions to introduced members of
structs
Signed-off-by: Emre Ucan <eucan@de.adit-jv.com>
[Natsume: add empty line]
Reviewed-by: Wataru Natsume <wnatsume@jp.adit-jv.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
diff --git a/ivi-shell/ivi-layout-private.h b/ivi-shell/ivi-layout-private.h
index 8fca68f..66b19f6 100644
--- a/ivi-shell/ivi-layout-private.h
+++ b/ivi-shell/ivi-layout-private.h
@@ -29,6 +29,19 @@
#include "compositor.h"
#include "ivi-layout-export.h"
+struct ivi_layout_view {
+ struct wl_list link; /* ivi_layout::view_list */
+ struct wl_list surf_link; /*ivi_layout_surface::view_list */
+ struct wl_list pending_link; /* ivi_layout_layer::pending.view_list */
+ struct wl_list order_link; /* ivi_layout_layer::order.view_list */
+
+ struct weston_view *view;
+ struct weston_transform transform;
+
+ struct ivi_layout_surface *ivisurf;
+ struct ivi_layout_layer *on_layer;
+};
+
struct ivi_layout_surface {
struct wl_list link;
struct wl_signal property_changed;
@@ -36,11 +49,8 @@
uint32_t id_surface;
struct ivi_layout *layout;
- struct ivi_layout_layer *on_layer;
struct weston_surface *surface;
- struct weston_transform transform;
-
struct ivi_layout_surface_properties prop;
struct {
@@ -52,6 +62,8 @@
struct wl_list link;
struct wl_list layer_list;
} order;
+
+ struct wl_list view_list; /* ivi_layout_view::surf_link */
};
struct ivi_layout_layer {
@@ -66,13 +78,13 @@
struct {
struct ivi_layout_layer_properties prop;
- struct wl_list surface_list;
+ struct wl_list view_list; /* ivi_layout_view::pending_link */
struct wl_list link;
} pending;
struct {
int dirty;
- struct wl_list surface_list;
+ struct wl_list view_list; /* ivi_layout_view::order_link */
struct wl_list link;
} order;
@@ -85,6 +97,7 @@
struct wl_list surface_list;
struct wl_list layer_list;
struct wl_list screen_list;
+ struct wl_list view_list; /* ivi_layout_view::link */
struct {
struct wl_signal created;