On Wed, Mar 09, 2016 at 10:35:53AM +0000, Ucan, Emre (ADITG/SW1) wrote: > Hi, > > My apologies. I wrote it wrong. The API is in ivi-layout-private.h. > > Then, it is good: > > Reviewed-by: Emre Ucan <[email protected]>
From a technical review, looks ok to me: Reviewed-by: Bryce Harrington <[email protected]> > Best regards > > Emre Ucan > Software Group I (ADITG/SW1) > > Tel. +49 5121 49 6937 > > > -----Original Message----- > > From: wayland-devel [mailto:wayland-devel- > > [email protected]] On Behalf Of Ucan, Emre (ADITG/SW1) > > Sent: Mittwoch, 9. März 2016 11:23 > > To: [email protected]; [email protected] > > Subject: RE: [PATCH] ivi-shell: Remove all surface transitions when it is > > being > > removed. > > > > Hello Mateusz, > > > > Thank you for your patch. It is good catch. > > > > Why do we need to make this new API public ? > > > > ivi_layout_remove_all_surface_transitions is called only in ivi-layout.c. > > It should be a static function and not a public API. > > > > > > > -----Original Message----- > > > From: wayland-devel [mailto:wayland-devel- > > > [email protected]] On Behalf Of [email protected] > > > Sent: Mittwoch, 9. März 2016 09:57 > > > To: [email protected] > > > Cc: Mateusz Polrola > > > Subject: [PATCH] ivi-shell: Remove all surface transitions when it is > > > being > > > removed. > > > > > > From: Mateusz Polrola <[email protected]> > > > > > > If surface transitions are not removed when surface is being removed, it > > can > > > lead to crash later when transition will finish, as it will try to > > > reference > > already > > > freed memory. > > > This change exposes function that can remove all existing transitions for > > > given surface and it is being called during surface cleanup. > > > > > > Signed-off-by: Mateusz Polrola <[email protected]> > > > --- > > > ivi-shell/ivi-layout-private.h | 3 +++ > > > ivi-shell/ivi-layout-transition.c | 16 ++++++++++++++++ > > > ivi-shell/ivi-layout.c | 2 ++ > > > 3 files changed, 21 insertions(+) > > > > > > diff --git a/ivi-shell/ivi-layout-private.h > > > b/ivi-shell/ivi-layout-private.h index > > > 3a23ef4..8c847e7 100644 > > > --- a/ivi-shell/ivi-layout-private.h > > > +++ b/ivi-shell/ivi-layout-private.h > > > @@ -158,6 +158,9 @@ ivi_layout_transition_fade_layer(struct > > > ivi_layout_layer *layer, int32_t is_surface_transition(struct > > > ivi_layout_surface *surface); > > > > > > +void > > > +ivi_layout_remove_all_surface_transitions(struct ivi_layout_surface > > > +*surface); > > > + > > > /** > > > * methods of interaction between ivi-shell with ivi-layout > > > */ > > > diff --git a/ivi-shell/ivi-layout-transition.c > > > b/ivi-shell/ivi-layout-transition.c > > > index 3b613a5..ed11999 100644 > > > --- a/ivi-shell/ivi-layout-transition.c > > > +++ b/ivi-shell/ivi-layout-transition.c > > > @@ -99,6 +99,22 @@ is_surface_transition(struct ivi_layout_surface > > > *surface) > > > return 0; > > > } > > > > > > +void > > > +ivi_layout_remove_all_surface_transitions(struct ivi_layout_surface > > > +*surface) { > > > + struct ivi_layout *layout = get_instance(); > > > + struct transition_node *node; > > > + struct transition_node *tmp; > > > + struct ivi_layout_transition *tran; > > > + > > > + wl_list_for_each_safe(node, tmp, &layout->transitions- > > > >transition_list, link) { > > > + tran = node->transition; > > > + if (tran->is_transition_func(tran->private_data, surface)) { > > > + layout_transition_destroy(tran); > > > + } > > > + }; > > > +} > > > + > > > static void > > > tick_transition(struct ivi_layout_transition *transition, uint32_t > > > timestamp) > > { > > > diff --git a/ivi-shell/ivi-layout.c b/ivi-shell/ivi-layout.c index > > c324b5e..61897ef > > > 100644 > > > --- a/ivi-shell/ivi-layout.c > > > +++ b/ivi-shell/ivi-layout.c > > > @@ -241,6 +241,8 @@ ivi_layout_surface_destroy(struct > > ivi_layout_surface > > > *ivisurf) > > > > > > wl_signal_emit(&layout->surface_notification.removed, ivisurf); > > > > > > + ivi_layout_remove_all_surface_transitions(ivisurf); > > > + > > > remove_configured_listener(ivisurf); > > > > > > ivi_layout_surface_remove_notification(ivisurf); > > > -- > > > 2.1.0 > > > > > > -------------------------------------------------------------- > > > Intel Research and Development Ireland Limited Registered in Ireland > > > Registered Office: Collinstown Industrial Park, Leixlip, County Kildare > > > Registered Number: 308263 > > > > > > > > > This e-mail and any attachments may contain confidential material for the > > > sole use of the intended recipient(s). Any review or distribution by > > > others > > is > > > strictly prohibited. If you are not the intended recipient, please > > > contact the > > > sender and delete all copies. > > > > > > _______________________________________________ > > > wayland-devel mailing list > > > [email protected] > > > https://lists.freedesktop.org/mailman/listinfo/wayland-devel > > > > Best regards > > > > Emre Ucan > > Software Group I (ADITG/SW1) > > > > Tel. +49 5121 49 6937 > > _______________________________________________ > > wayland-devel mailing list > > [email protected] > > https://lists.freedesktop.org/mailman/listinfo/wayland-devel > _______________________________________________ > wayland-devel mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/wayland-devel
