mirror of
https://github.com/brl/mutter.git
synced 2025-02-02 14:53:03 +00:00
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 <neil@linux.intel.com> Reviewed-by: Emmanuele Bassi <ebassi@linux.intel.com>
This commit is contained in:
parent
c7e10024d8
commit
862eebceb6
@ -168,12 +168,29 @@ clutter_wayland_surface_init (ClutterWaylandSurface *self)
|
|||||||
g_signal_connect (self, "notify::opacity", G_CALLBACK (opacity_change_cb), NULL);
|
g_signal_connect (self, "notify::opacity", G_CALLBACK (opacity_change_cb), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
static void
|
||||||
clutter_wayland_surface_dispose (GObject *object)
|
clutter_wayland_surface_dispose (GObject *object)
|
||||||
{
|
{
|
||||||
ClutterWaylandSurface *self = CLUTTER_WAYLAND_SURFACE (object);
|
ClutterWaylandSurface *self = CLUTTER_WAYLAND_SURFACE (object);
|
||||||
ClutterWaylandSurfacePrivate *priv = self->priv;
|
ClutterWaylandSurfacePrivate *priv = self->priv;
|
||||||
|
|
||||||
|
free_pipeline (self);
|
||||||
|
free_surface_buffers (self);
|
||||||
|
priv->surface = NULL;
|
||||||
|
|
||||||
G_OBJECT_CLASS (clutter_wayland_surface_parent_class)->dispose (object);
|
G_OBJECT_CLASS (clutter_wayland_surface_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -424,19 +441,6 @@ clutter_wayland_surface_new (struct wl_surface *surface)
|
|||||||
return actor;
|
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:
|
* clutter_wayland_surface_attach_buffer:
|
||||||
* @self: A #ClutterWaylandSurface actor
|
* @self: A #ClutterWaylandSurface actor
|
||||||
|
Loading…
x
Reference in New Issue
Block a user