Commit 5e8d55da authored by eucan's avatar eucan Committed by Pekka Paalanen

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
Signed-off-by: eucan's avatarEmre Ucan <>
[Natsume: add empty line]
Reviewed-by: wnatsume's avatarWataru Natsume <>
Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <>
parent d97f1008
......@@ -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 @@ struct ivi_layout_surface {
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 ivi_layout_surface {
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 ivi_layout_layer {
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 ivi_layout {
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;
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment