diff options
Diffstat (limited to 'ivi-shell/ivi-layout.c')
-rw-r--r-- | ivi-shell/ivi-layout.c | 111 |
1 files changed, 24 insertions, 87 deletions
diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c index 32a87a85..3152a911 100644 --- a/ivi-shell/ivi-layout.c +++ b/ivi-shell/ivi-layout.c @@ -55,6 +55,7 @@ #include "compositor.h" #include "ivi-layout.h" #include "ivi-layout-export.h" +#include "ivi-layout-private.h" enum ivi_layout_surface_orientation { IVI_LAYOUT_SURFACE_ORIENTATION_0_DEGREES = 0, @@ -130,70 +131,6 @@ struct link_surfaceConfigureNotification { struct ivi_layout; -struct ivi_layout_surface { - struct wl_list link; - struct wl_list list_notification; - struct wl_list list_layer; - uint32_t update_count; - uint32_t id_surface; - - struct ivi_layout *layout; - struct weston_surface *surface; - struct weston_view *view; - - uint32_t buffer_width; - uint32_t buffer_height; - - struct wl_listener surface_destroy_listener; - struct weston_transform surface_rotation; - struct weston_transform layer_rotation; - struct weston_transform surface_pos; - struct weston_transform layer_pos; - struct weston_transform scaling; - struct ivi_layout_SurfaceProperties prop; - int32_t pixelformat; - uint32_t event_mask; - - struct { - struct ivi_layout_SurfaceProperties prop; - struct wl_list link; - } pending; - - struct { - struct wl_list link; - struct wl_list list_layer; - } order; - - struct { - ivi_controller_surface_content_callback callback; - void* userdata; - } content_observer; -}; - -struct ivi_layout_layer { - struct wl_list link; - struct wl_list list_notification; - struct wl_list list_screen; - struct wl_list link_to_surface; - uint32_t id_layer; - - struct ivi_layout *layout; - - struct ivi_layout_LayerProperties prop; - uint32_t event_mask; - - struct { - struct ivi_layout_LayerProperties prop; - struct wl_list list_surface; - struct wl_list link; - } pending; - - struct { - struct wl_list list_surface; - struct wl_list link; - } order; -}; - struct ivi_layout_screen { struct wl_list link; struct wl_list link_to_layer; @@ -215,30 +152,9 @@ struct ivi_layout_screen { } order; }; -struct ivi_layout { - struct weston_compositor *compositor; - - struct wl_list list_surface; - struct wl_list list_layer; - struct wl_list list_screen; - - struct { - struct wl_list list_create; - struct wl_list list_remove; - } layer_notification; - - struct { - struct wl_list list_create; - struct wl_list list_remove; - struct wl_list list_configure; - } surface_notification; - - struct weston_layer layout_layer; -}; - static struct ivi_layout ivilayout = {0}; -static struct ivi_layout * +struct ivi_layout * get_instance(void) { return &ivilayout; @@ -708,7 +624,7 @@ update_surface_position(struct ivi_layout_surface *ivisurf) weston_view_update_transform(view); #if 0 - /* disable zoom animation */ + /* disable zoom transition */ weston_zoom_run(es, 0.0, 1.0, NULL, NULL); #endif @@ -968,6 +884,21 @@ commit_list_screen(struct ivi_layout *layout) } static void +commit_transition(struct ivi_layout* layout) +{ + if(wl_list_empty(&layout->pending_transition_list)){ + return; + } + + wl_list_insert_list(&layout->transitions->transition_list, + &layout->pending_transition_list); + + wl_list_init(&layout->pending_transition_list); + + wl_event_source_timer_update(layout->transitions->event_source, 1); +} + +static void send_surface_prop(struct ivi_layout_surface *ivisurf) { struct link_surfacePropertyNotification *notification = NULL; @@ -2700,6 +2631,8 @@ ivi_layout_commitChanges(void) commit_list_layer(layout); commit_list_screen(layout); + commit_transition(layout); + commit_changes(layout); send_prop(layout); weston_compositor_schedule_repaint(layout->compositor); @@ -2955,6 +2888,10 @@ ivi_layout_initWithCompositor(struct weston_compositor *ec) else wl_list_remove(&ec->cursor_layer.link); weston_config_destroy(config); + + layout->transitions = ivi_layout_transition_set_create(ec); + wl_list_init(&layout->pending_transition_list); + } |