void _gtk_icon_helper_clear (GtkIconHelper *self) { g_clear_pointer (&self->priv->rendered_surface, cairo_surface_destroy); gtk_image_definition_unref (self->priv->def); self->priv->def = gtk_image_definition_new_empty (); self->priv->icon_size = GTK_ICON_SIZE_INVALID; }
static void gtk_icon_helper_finalize (GObject *object) { GtkIconHelper *self = GTK_ICON_HELPER (object); _gtk_icon_helper_clear (self); g_signal_handlers_disconnect_by_func (self->owner, G_CALLBACK (gtk_icon_helper_invalidate), self); gtk_image_definition_unref (self->def); G_OBJECT_CLASS (gtk_icon_helper_parent_class)->finalize (object); }
void _gtk_icon_helper_clear (GtkIconHelper *self) { g_clear_object (&self->paintable); self->texture_is_symbolic = FALSE; if (gtk_image_definition_get_storage_type (self->def) != GTK_IMAGE_EMPTY) { gtk_image_definition_unref (self->def); self->def = gtk_image_definition_new_empty (); gtk_icon_helper_invalidate (self); } }
static void gtk_icon_helper_take_definition (GtkIconHelper *self, GtkImageDefinition *def) { _gtk_icon_helper_clear (self); if (def == NULL) return; gtk_image_definition_unref (self->def); self->def = def; gtk_icon_helper_invalidate (self); }
static void gtk_icon_helper_finalize (GObject *object) { GtkIconHelper *self = GTK_ICON_HELPER (object); GtkWidget *widget; widget = gtk_css_gadget_get_owner (GTK_CSS_GADGET (self)); g_signal_handlers_disconnect_by_func (widget, G_CALLBACK (gtk_icon_helper_invalidate), self); _gtk_icon_helper_clear (self); gtk_image_definition_unref (self->priv->def); G_OBJECT_CLASS (gtk_icon_helper_parent_class)->finalize (object); }