From 5d4a323c36855a6294d25e28b476da1e2118e72d Mon Sep 17 00:00:00 2001 From: Nobuhiko Tanibata Date: Mon, 22 Jun 2015 15:32:14 +0900 Subject: ivi-shell: bugfix, update event_mask when new propertiy is not same as before. In previous code, it sends notification whenever setter calls. This patch fixs that notification will not happens if there is no change of properties by setter. Signed-off-by: Nobuhiko Tanibata Reviewed-by: Pekka Paalanen --- ivi-shell/ivi-layout.c | 80 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 14 deletions(-) (limited to 'ivi-shell') diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c index c39e751b..b4165a82 100644 --- a/ivi-shell/ivi-layout.c +++ b/ivi-shell/ivi-layout.c @@ -1951,7 +1951,10 @@ ivi_layout_layer_set_visibility(struct ivi_layout_layer *ivilayer, prop = &ivilayer->pending.prop; prop->visibility = newVisibility; - ivilayer->event_mask |= IVI_NOTIFICATION_VISIBILITY; + if (ivilayer->prop.visibility != newVisibility) + ivilayer->event_mask |= IVI_NOTIFICATION_VISIBILITY; + else + ivilayer->event_mask &= ~IVI_NOTIFICATION_VISIBILITY; return IVI_SUCCEEDED; } @@ -1983,7 +1986,10 @@ ivi_layout_layer_set_opacity(struct ivi_layout_layer *ivilayer, prop = &ivilayer->pending.prop; prop->opacity = opacity; - ivilayer->event_mask |= IVI_NOTIFICATION_OPACITY; + if (ivilayer->prop.opacity != opacity) + ivilayer->event_mask |= IVI_NOTIFICATION_OPACITY; + else + ivilayer->event_mask &= ~IVI_NOTIFICATION_OPACITY; return IVI_SUCCEEDED; } @@ -2017,7 +2023,12 @@ ivi_layout_layer_set_source_rectangle(struct ivi_layout_layer *ivilayer, prop->source_width = width; prop->source_height = height; - ivilayer->event_mask |= IVI_NOTIFICATION_SOURCE_RECT; + if (ivilayer->prop.source_x != x || ivilayer->prop.source_y != y || + ivilayer->prop.source_width != width || + ivilayer->prop.source_height != height) + ivilayer->event_mask |= IVI_NOTIFICATION_SOURCE_RECT; + else + ivilayer->event_mask &= ~IVI_NOTIFICATION_SOURCE_RECT; return IVI_SUCCEEDED; } @@ -2040,7 +2051,12 @@ ivi_layout_layer_set_destination_rectangle(struct ivi_layout_layer *ivilayer, prop->dest_width = width; prop->dest_height = height; - ivilayer->event_mask |= IVI_NOTIFICATION_DEST_RECT; + if (ivilayer->prop.dest_x != x || ivilayer->prop.dest_y != y || + ivilayer->prop.dest_width != width || + ivilayer->prop.dest_height != height) + ivilayer->event_mask |= IVI_NOTIFICATION_DEST_RECT; + else + ivilayer->event_mask &= ~IVI_NOTIFICATION_DEST_RECT; return IVI_SUCCEEDED; } @@ -2076,7 +2092,11 @@ ivi_layout_layer_set_dimension(struct ivi_layout_layer *ivilayer, prop->dest_width = dest_width; prop->dest_height = dest_height; - ivilayer->event_mask |= IVI_NOTIFICATION_DIMENSION; + if (ivilayer->prop.dest_width != dest_width || + ivilayer->prop.dest_height != dest_height) + ivilayer->event_mask |= IVI_NOTIFICATION_DIMENSION; + else + ivilayer->event_mask &= ~IVI_NOTIFICATION_DIMENSION; return IVI_SUCCEEDED; } @@ -2111,7 +2131,10 @@ ivi_layout_layer_set_position(struct ivi_layout_layer *ivilayer, prop->dest_x = dest_x; prop->dest_y = dest_y; - ivilayer->event_mask |= IVI_NOTIFICATION_POSITION; + if (ivilayer->prop.dest_x != dest_x || ivilayer->prop.dest_y != dest_y) + ivilayer->event_mask |= IVI_NOTIFICATION_POSITION; + else + ivilayer->event_mask &= ~IVI_NOTIFICATION_POSITION; return IVI_SUCCEEDED; } @@ -2130,7 +2153,10 @@ ivi_layout_layer_set_orientation(struct ivi_layout_layer *ivilayer, prop = &ivilayer->pending.prop; prop->orientation = orientation; - ivilayer->event_mask |= IVI_NOTIFICATION_ORIENTATION; + if (ivilayer->prop.orientation != orientation) + ivilayer->event_mask |= IVI_NOTIFICATION_ORIENTATION; + else + ivilayer->event_mask &= ~IVI_NOTIFICATION_ORIENTATION; return IVI_SUCCEEDED; } @@ -2211,7 +2237,10 @@ ivi_layout_surface_set_visibility(struct ivi_layout_surface *ivisurf, prop = &ivisurf->pending.prop; prop->visibility = newVisibility; - ivisurf->event_mask |= IVI_NOTIFICATION_VISIBILITY; + if (ivisurf->prop.visibility != newVisibility) + ivisurf->event_mask |= IVI_NOTIFICATION_VISIBILITY; + else + ivisurf->event_mask &= ~IVI_NOTIFICATION_VISIBILITY; return IVI_SUCCEEDED; } @@ -2243,7 +2272,10 @@ ivi_layout_surface_set_opacity(struct ivi_layout_surface *ivisurf, prop = &ivisurf->pending.prop; prop->opacity = opacity; - ivisurf->event_mask |= IVI_NOTIFICATION_OPACITY; + if (ivisurf->prop.opacity != opacity) + ivisurf->event_mask |= IVI_NOTIFICATION_OPACITY; + else + ivisurf->event_mask &= ~IVI_NOTIFICATION_OPACITY; return IVI_SUCCEEDED; } @@ -2281,7 +2313,12 @@ ivi_layout_surface_set_destination_rectangle(struct ivi_layout_surface *ivisurf, prop->dest_width = width; prop->dest_height = height; - ivisurf->event_mask |= IVI_NOTIFICATION_DEST_RECT; + if (ivisurf->prop.dest_x != x || ivisurf->prop.dest_y != y || + ivisurf->prop.dest_width != width || + ivisurf->prop.dest_height != height) + ivisurf->event_mask |= IVI_NOTIFICATION_DEST_RECT; + else + ivisurf->event_mask &= ~IVI_NOTIFICATION_DEST_RECT; return IVI_SUCCEEDED; } @@ -2301,7 +2338,11 @@ ivi_layout_surface_set_dimension(struct ivi_layout_surface *ivisurf, prop->dest_width = dest_width; prop->dest_height = dest_height; - ivisurf->event_mask |= IVI_NOTIFICATION_DIMENSION; + if (ivisurf->prop.dest_width != dest_width || + ivisurf->prop.dest_height != dest_height) + ivisurf->event_mask |= IVI_NOTIFICATION_DIMENSION; + else + ivisurf->event_mask &= ~IVI_NOTIFICATION_DIMENSION; return IVI_SUCCEEDED; } @@ -2336,7 +2377,10 @@ ivi_layout_surface_set_position(struct ivi_layout_surface *ivisurf, prop->dest_x = dest_x; prop->dest_y = dest_y; - ivisurf->event_mask |= IVI_NOTIFICATION_POSITION; + if (ivisurf->prop.dest_x != dest_x || ivisurf->prop.dest_y != dest_y) + ivisurf->event_mask |= IVI_NOTIFICATION_POSITION; + else + ivisurf->event_mask &= ~IVI_NOTIFICATION_POSITION; return IVI_SUCCEEDED; } @@ -2370,7 +2414,10 @@ ivi_layout_surface_set_orientation(struct ivi_layout_surface *ivisurf, prop = &ivisurf->pending.prop; prop->orientation = orientation; - ivisurf->event_mask |= IVI_NOTIFICATION_ORIENTATION; + if (ivisurf->prop.orientation != orientation) + ivisurf->event_mask |= IVI_NOTIFICATION_ORIENTATION; + else + ivisurf->event_mask &= ~IVI_NOTIFICATION_ORIENTATION; return IVI_SUCCEEDED; } @@ -2644,7 +2691,12 @@ ivi_layout_surface_set_source_rectangle(struct ivi_layout_surface *ivisurf, prop->source_width = width; prop->source_height = height; - ivisurf->event_mask |= IVI_NOTIFICATION_SOURCE_RECT; + if (ivisurf->prop.source_x != x || ivisurf->prop.source_y != y || + ivisurf->prop.source_width != width || + ivisurf->prop.source_height != height) + ivisurf->event_mask |= IVI_NOTIFICATION_SOURCE_RECT; + else + ivisurf->event_mask &= ~IVI_NOTIFICATION_SOURCE_RECT; return IVI_SUCCEEDED; } -- cgit v1.2.3