summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Bloomfield <PeterBloomfield@bellsouth.net>2022-04-30 12:59:48 -0400
committerPeter Bloomfield <PeterBloomfield@bellsouth.net>2022-04-30 13:09:04 -0400
commit54d319bc32bc2c6ac6c77671bfd419bdeff6edcb (patch)
treecb4816475fec7e49c71c23471542031d46d42453
parenta5d208adafec044b2c9e36ec5eb0f43db8be0564 (diff)
downloadgtk+-54d319bc32bc2c6ac6c77671bfd419bdeff6edcb.tar.gz
gtkimagedefinition: Extend commit b38266c0
Similarly, uses casts in `gtk_image_definition_unref()`. Compilation succeeds without them, unlike in `gtk_image_definition_ref()`, because `gtk_image_definition_unref()` is not called internally, unlike `gtk_image_definition_ref()`. But the build would fail if some function defined in the module were changed in the future to call `gtk_image_definition_unref()`, and we can future-proof it now. This also removes an inconsistency in how we access the members of the union.
-rw-r--r--gtk/gtkimagedefinition.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/gtk/gtkimagedefinition.c b/gtk/gtkimagedefinition.c
index 9ef8223911..a26d6eb15c 100644
--- a/gtk/gtkimagedefinition.c
+++ b/gtk/gtkimagedefinition.c
@@ -265,9 +265,19 @@ gtk_image_definition_ref (GtkImageDefinition *def)
void
gtk_image_definition_unref (GtkImageDefinition *def)
{
- def->empty.ref_count--;
+ GtkImageDefinitionEmpty *empty_def;
+ GtkImageDefinitionPixbuf *pixbuf_def;
+ GtkImageDefinitionAnimation *animation_def;
+ GtkImageDefinitionSurface *surface_def;
+ GtkImageDefinitionStock *stock_def;
+ GtkImageDefinitionIconSet *icon_set_def;
+ GtkImageDefinitionIconName *icon_name_def;
+ GtkImageDefinitionGIcon *gicon_def;
+
+ empty_def = (GtkImageDefinitionEmpty *) def;
+ empty_def->ref_count--;
- if (def->empty.ref_count > 0)
+ if (empty_def->ref_count > 0)
return;
switch (def->type)
@@ -277,27 +287,34 @@ gtk_image_definition_unref (GtkImageDefinition *def)
g_assert_not_reached ();
break;
case GTK_IMAGE_PIXBUF:
- g_object_unref (def->pixbuf.pixbuf);
+ pixbuf_def = (GtkImageDefinitionPixbuf *) def;
+ g_object_unref (pixbuf_def->pixbuf);
break;
case GTK_IMAGE_ANIMATION:
- g_object_unref (def->animation.animation);
+ animation_def = (GtkImageDefinitionAnimation *) def;
+ g_object_unref (animation_def->animation);
break;
case GTK_IMAGE_SURFACE:
- cairo_surface_destroy (def->surface.surface);
+ surface_def = (GtkImageDefinitionSurface *) def;
+ cairo_surface_destroy (surface_def->surface);
break;
case GTK_IMAGE_STOCK:
- g_free (def->stock.id);
+ stock_def = (GtkImageDefinitionStock *) def;
+ g_free (stock_def->id);
break;
case GTK_IMAGE_ICON_SET:
+ icon_set_def = (GtkImageDefinitionIconSet *) def;
G_GNUC_BEGIN_IGNORE_DEPRECATIONS;
- gtk_icon_set_unref (def->icon_set.icon_set);
+ gtk_icon_set_unref (icon_set_def->icon_set);
G_GNUC_END_IGNORE_DEPRECATIONS;
break;
case GTK_IMAGE_ICON_NAME:
- g_free (def->icon_name.icon_name);
+ icon_name_def = (GtkImageDefinitionIconName *) def;
+ g_free (icon_name_def->icon_name);
break;
case GTK_IMAGE_GICON:
- g_object_unref (def->gicon.gicon);
+ gicon_def = (GtkImageDefinitionGIcon *) def;
+ g_object_unref (gicon_def->gicon);
break;
}