Yeah. I'll do a destroy fade out animation in orbital now that this is in. Giulio
2013/8/14 Kristian Høgsberg <[email protected]> > On Tue, Aug 13, 2013 at 11:10:14PM +0200, Giulio Camuffo wrote: > > this allows a surface to live on after its resource has been > > destroyed if the ref-count was increased by some code that needs > > to use the surface after the end of its life, like a destroy > > animation. > > That looks fine. If you're up for it, it would be interesting to see > a window destroy animation for weston that uses this. I broke the > commit message into a couple of sentences, otherwise applied as is. > > Kristian > > > --- > > src/compositor.c | 8 ++++++-- > > src/compositor.h | 1 + > > 2 files changed, 7 insertions(+), 2 deletions(-) > > > > diff --git a/src/compositor.c b/src/compositor.c > > index 3213a7b..8da348a 100644 > > --- a/src/compositor.c > > +++ b/src/compositor.c > > @@ -287,6 +287,7 @@ weston_surface_create(struct weston_compositor > *compositor) > > > > surface->compositor = compositor; > > surface->alpha = 1.0; > > + surface->ref_count = 1; > > > > if (compositor->renderer->create_surface(surface) < 0) { > > free(surface); > > @@ -1003,11 +1004,14 @@ struct weston_frame_callback { > > WL_EXPORT void > > weston_surface_destroy(struct weston_surface *surface) > > { > > - wl_signal_emit(&surface->destroy_signal, &surface->resource); > > - > > struct weston_compositor *compositor = surface->compositor; > > struct weston_frame_callback *cb, *next; > > > > + if (--surface->ref_count > 0) > > + return; > > + > > + wl_signal_emit(&surface->destroy_signal, &surface->resource); > > + > > assert(wl_list_empty(&surface->geometry.child_list)); > > assert(wl_list_empty(&surface->subsurface_list_pending)); > > assert(wl_list_empty(&surface->subsurface_list)); > > diff --git a/src/compositor.h b/src/compositor.h > > index 7600ce3..6db3c61 100644 > > --- a/src/compositor.h > > +++ b/src/compositor.h > > @@ -709,6 +709,7 @@ struct weston_surface { > > struct wl_list layer_link; > > float alpha; /* part of geometry, see below */ > > struct weston_plane *plane; > > + int32_t ref_count; > > > > void *renderer_state; > > > > -- > > 1.8.3.4 > > > > _______________________________________________ > > wayland-devel mailing list > > [email protected] > > http://lists.freedesktop.org/mailman/listinfo/wayland-devel >
_______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
