mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2025-01-13 14:00:09 +00:00
gsk: Add GskRenderNodeClass.finalize()
This commit is contained in:
parent
a97b819b81
commit
be8b9406e5
@ -74,8 +74,8 @@ gsk_render_node_finalize (GskRenderNode *self)
|
|||||||
{
|
{
|
||||||
self->is_mutable = TRUE;
|
self->is_mutable = TRUE;
|
||||||
|
|
||||||
g_clear_pointer (&self->surface, cairo_surface_destroy);
|
self->node_class->finalize (self);
|
||||||
g_clear_pointer (&self->texture, gsk_texture_unref);
|
|
||||||
g_clear_pointer (&self->name, g_free);
|
g_clear_pointer (&self->name, g_free);
|
||||||
|
|
||||||
while (self->first_child)
|
while (self->first_child)
|
||||||
|
@ -24,9 +24,16 @@
|
|||||||
|
|
||||||
/*** GSK_TEXTURE_NODE ***/
|
/*** GSK_TEXTURE_NODE ***/
|
||||||
|
|
||||||
|
static void
|
||||||
|
gsk_texture_node_finalize (GskRenderNode *node)
|
||||||
|
{
|
||||||
|
gsk_texture_unref (node->texture);
|
||||||
|
}
|
||||||
|
|
||||||
static const GskRenderNodeClass GSK_TEXTURE_NODE_CLASS = {
|
static const GskRenderNodeClass GSK_TEXTURE_NODE_CLASS = {
|
||||||
GSK_TEXTURE_NODE,
|
GSK_TEXTURE_NODE,
|
||||||
"GskTextureNode"
|
"GskTextureNode",
|
||||||
|
gsk_texture_node_finalize
|
||||||
};
|
};
|
||||||
|
|
||||||
GskTexture *
|
GskTexture *
|
||||||
@ -68,9 +75,17 @@ gsk_texture_node_new (GskTexture *texture,
|
|||||||
|
|
||||||
/*** GSK_CAIRO_NODE ***/
|
/*** GSK_CAIRO_NODE ***/
|
||||||
|
|
||||||
|
static void
|
||||||
|
gsk_cairo_node_finalize (GskRenderNode *node)
|
||||||
|
{
|
||||||
|
if (node->surface)
|
||||||
|
cairo_surface_destroy (node->surface);
|
||||||
|
}
|
||||||
|
|
||||||
static const GskRenderNodeClass GSK_CAIRO_NODE_CLASS = {
|
static const GskRenderNodeClass GSK_CAIRO_NODE_CLASS = {
|
||||||
GSK_CAIRO_NODE,
|
GSK_CAIRO_NODE,
|
||||||
"GskCairoNode"
|
"GskCairoNode",
|
||||||
|
gsk_cairo_node_finalize
|
||||||
};
|
};
|
||||||
|
|
||||||
/*< private >
|
/*< private >
|
||||||
@ -203,9 +218,15 @@ gsk_cairo_node_get_draw_context (GskRenderNode *node,
|
|||||||
|
|
||||||
/**** GSK_CONTAINER_NODE ***/
|
/**** GSK_CONTAINER_NODE ***/
|
||||||
|
|
||||||
|
static void
|
||||||
|
gsk_container_node_finalize (GskRenderNode *node)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static const GskRenderNodeClass GSK_CONTAINER_NODE_CLASS = {
|
static const GskRenderNodeClass GSK_CONTAINER_NODE_CLASS = {
|
||||||
GSK_CONTAINER_NODE,
|
GSK_CONTAINER_NODE,
|
||||||
"GskContainerNode"
|
"GskContainerNode",
|
||||||
|
gsk_container_node_finalize
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,6 +67,7 @@ struct _GskRenderNodeClass
|
|||||||
{
|
{
|
||||||
GskRenderNodeType node_type;
|
GskRenderNodeType node_type;
|
||||||
const char *type_name;
|
const char *type_name;
|
||||||
|
void (* finalize) (GskRenderNode *node);
|
||||||
};
|
};
|
||||||
|
|
||||||
GskRenderNode *gsk_render_node_new (const GskRenderNodeClass *node_class);
|
GskRenderNode *gsk_render_node_new (const GskRenderNodeClass *node_class);
|
||||||
|
Loading…
Reference in New Issue
Block a user