From: Nobuhiko Tanibata <nobuhiko_tanib...@xddp.denso.co.jp> 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_tanib...@xddp.denso.co.jp> Reviewed-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> --- ivi-shell/ivi-layout.c | 80 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 14 deletions(-) diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c index c39e751..b4165a8 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; } -- 1.8.3.1 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel