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;