[PATCH weston 7/9] ivi-shell: allow to set transitions only once
Emre Ucan
eucan at de.adit-jv.com
Wed May 23 08:27:22 UTC 2018
Transitions are only atomically set during commit_changes.
Therefore, it should not be possible to set same type of
transition to same surface/layer more than once.
Signed-off-by: Emre Ucan <eucan at de.adit-jv.com>
---
ivi-shell/ivi-layout-transition.c | 74 +++++----------------------------------
1 file changed, 9 insertions(+), 65 deletions(-)
diff --git a/ivi-shell/ivi-layout-transition.c b/ivi-shell/ivi-layout-transition.c
index cb11a01..13c35f1 100644
--- a/ivi-shell/ivi-layout-transition.c
+++ b/ivi-shell/ivi-layout-transition.c
@@ -416,22 +416,7 @@ ivi_layout_transition_move_resize_view(struct ivi_layout_surface *surface,
transition = get_transition_from_type_and_id(
IVI_LAYOUT_TRANSITION_VIEW_MOVE_RESIZE,
surface);
- if (transition) {
- struct move_resize_view_data *data = transition->private_data;
- transition->time_start = 0;
- transition->time_duration = duration;
-
- data->start_x = start_pos[0];
- data->start_y = start_pos[1];
- data->end_x = dest_x;
- data->end_y = dest_y;
-
- data->start_width = start_size[0];
- data->start_height = start_size[1];
- data->end_width = dest_width;
- data->end_height = dest_height;
- return;
- }
+ assert(!transition);
transition = create_move_resize_view_transition(
surface,
@@ -567,25 +552,11 @@ ivi_layout_transition_visibility_on(struct ivi_layout_surface *surface,
bool is_visible = surface->prop.visibility;
wl_fixed_t dest_alpha = surface->prop.opacity;
struct store_alpha *user_data = NULL;
- wl_fixed_t start_alpha = 0.0;
- struct fade_view_data *data = NULL;
transition = get_transition_from_type_and_id(
IVI_LAYOUT_TRANSITION_VIEW_FADE,
surface);
- if (transition) {
- start_alpha = surface->prop.opacity;
- user_data = transition->user_data;
- data = transition->private_data;
-
- transition->time_start = 0;
- transition->time_duration = duration;
- transition->destroy_func = visibility_on_transition_destroy;
-
- data->start_alpha = wl_fixed_to_double(start_alpha);
- data->end_alpha = user_data->alpha;
- return;
- }
+ assert(!transition);
if (is_visible)
return;
@@ -631,22 +602,11 @@ ivi_layout_transition_visibility_off(struct ivi_layout_surface *surface,
struct ivi_layout_transition *transition;
wl_fixed_t start_alpha = surface->prop.opacity;
struct store_alpha* user_data = NULL;
- struct fade_view_data* data = NULL;
transition =
get_transition_from_type_and_id(IVI_LAYOUT_TRANSITION_VIEW_FADE,
surface);
- if (transition) {
- data = transition->private_data;
-
- transition->time_start = 0;
- transition->time_duration = duration;
- transition->destroy_func = visibility_off_transition_destroy;
-
- data->start_alpha = wl_fixed_to_double(start_alpha);
- data->end_alpha = 0;
- return;
- }
+ assert(!transition);
user_data = malloc(sizeof(*user_data));
if (user_data == NULL) {
@@ -766,6 +726,11 @@ ivi_layout_transition_move_layer(struct ivi_layout_layer *layer,
int32_t start_pos_y = layer->prop.dest_y;
struct ivi_layout_transition *transition = NULL;
+ transition = get_transition_from_type_and_id(
+ IVI_LAYOUT_TRANSITION_LAYER_MOVE,
+ layer);
+ assert(!transition);
+
transition = create_move_layer_transition(
layer,
start_pos_x, start_pos_y,
@@ -843,32 +808,11 @@ ivi_layout_transition_fade_layer(
{
struct ivi_layout_transition *transition;
struct fade_layer_data *data;
- wl_fixed_t fixed_opacity;
- double now_opacity;
- double remain;
transition = get_transition_from_type_and_id(
IVI_LAYOUT_TRANSITION_LAYER_FADE,
layer);
- if (transition) {
- /* transition update */
- data = transition->private_data;
-
- /* FIXME */
- fixed_opacity = layer->prop.opacity;
- now_opacity = wl_fixed_to_double(fixed_opacity);
-
- data->is_fade_in = is_fade_in;
- data->start_alpha = now_opacity;
- data->end_alpha = end_alpha;
-
- remain = is_fade_in? 1.0 - now_opacity : now_opacity;
- transition->time_start = 0;
- transition->time_elapsed = 0;
- transition->time_duration = duration * remain;
-
- return;
- }
+ assert(!transition);
transition = create_layout_transition();
if (transition == NULL)
--
2.7.4
More information about the wayland-devel
mailing list