summaryrefslogtreecommitdiff
path: root/ivi-shell
diff options
context:
space:
mode:
authorNobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>2015-06-22 15:32:14 +0900
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2015-06-23 15:57:15 +0300
commit5d4a323c36855a6294d25e28b476da1e2118e72d (patch)
tree1ddec660e60b3a4b7cbc4f506ea38206ce3968e7 /ivi-shell
parent6ce3ef864d46a951d7baf01b87b4cf4fa99b937b (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.c80
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;
}