diff options
author | Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp> | 2015-06-22 15:32:14 +0900 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2015-06-23 15:57:15 +0300 |
commit | 5d4a323c36855a6294d25e28b476da1e2118e72d (patch) | |
tree | 1ddec660e60b3a4b7cbc4f506ea38206ce3968e7 /ivi-shell | |
parent | 6ce3ef864d46a951d7baf01b87b4cf4fa99b937b (diff) |
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 <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Diffstat (limited to 'ivi-shell')
-rw-r--r-- | ivi-shell/ivi-layout.c | 80 |
1 files changed, 66 insertions, 14 deletions
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; } |