From: Robert Bragg Date: Mon, 9 Jan 2012 19:11:43 +0000 (+0000) Subject: wayland-surface: Cleanup properly in _dispose X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=862eebceb6f0a3faa407e953e69eeb9ccc133036;p=profile%2Fivi%2Fclutter.git wayland-surface: Cleanup properly in _dispose When disposing a ClutterWaylandSurface we now make sure to unref any pipeline we created and unref any surface buffer textures we created. Reviewed-by: Neil Roberts Reviewed-by: Emmanuele Bassi --- diff --git a/clutter/wayland/clutter-wayland-surface.c b/clutter/wayland/clutter-wayland-surface.c index 667f117..9a163cd 100644 --- a/clutter/wayland/clutter-wayland-surface.c +++ b/clutter/wayland/clutter-wayland-surface.c @@ -169,11 +169,28 @@ clutter_wayland_surface_init (ClutterWaylandSurface *self) } static void +free_surface_buffers (ClutterWaylandSurface *self) +{ + ClutterWaylandSurfacePrivate *priv = self->priv; + + if (priv->buffer) + { + cogl_object_unref (priv->buffer); + priv->buffer = NULL; + free_pipeline (self); + } +} + +static void clutter_wayland_surface_dispose (GObject *object) { ClutterWaylandSurface *self = CLUTTER_WAYLAND_SURFACE (object); ClutterWaylandSurfacePrivate *priv = self->priv; + free_pipeline (self); + free_surface_buffers (self); + priv->surface = NULL; + G_OBJECT_CLASS (clutter_wayland_surface_parent_class)->dispose (object); } @@ -424,19 +441,6 @@ clutter_wayland_surface_new (struct wl_surface *surface) return actor; } -static void -free_surface_buffers (ClutterWaylandSurface *self) -{ - ClutterWaylandSurfacePrivate *priv = self->priv; - - if (priv->buffer) - { - cogl_object_unref (priv->buffer); - priv->buffer = NULL; - free_pipeline (self); - } -} - /** * clutter_wayland_surface_attach_buffer: * @self: A #ClutterWaylandSurface actor