- g_return_if_fail (image != NULL);
-
- image->ref_count--;
-
- if (image->ref_count == 0)
- {
- if (image->source != NULL)
- cairo_pattern_destroy (image->source);
-
- if (image->source_boxed != NULL)
- g_boxed_free (image->boxed_type, image->source_boxed);
-
- if (image->width != NULL)
- gtk_border_free (image->width);
-
- g_slice_free (GtkBorderImage, image);
- }
-}
-
-GParameter *
-_gtk_border_image_unpack (const GValue *value,
- guint *n_params)
-{
- GParameter *parameter = g_new0 (GParameter, 4);
- GtkBorderImage *image = g_value_get_boxed (value);
-
- parameter[0].name = "border-image-source";
-
- if ((image != NULL) &&
- (image->source_boxed != NULL))
- g_value_init (¶meter[0].value, image->boxed_type);
- else
- g_value_init (¶meter[0].value, CAIRO_GOBJECT_TYPE_PATTERN);
-
- parameter[1].name = "border-image-slice";
- g_value_init (¶meter[1].value, GTK_TYPE_BORDER);
-
- parameter[2].name = "border-image-repeat";
- g_value_init (¶meter[2].value, GTK_TYPE_CSS_BORDER_IMAGE_REPEAT);
-
- parameter[3].name = "border-image-width";
- g_value_init (¶meter[3].value, GTK_TYPE_BORDER);
-
- if (image != NULL)
- {
- if (image->source_boxed != NULL)
- g_value_set_boxed (¶meter[0].value, image->source_boxed);
- else
- g_value_set_boxed (¶meter[0].value, image->source);
-
- g_value_set_boxed (¶meter[1].value, &image->slice);
- g_value_set_boxed (¶meter[2].value, &image->repeat);
- g_value_set_boxed (¶meter[3].value, image->width);
- }