diff --git a/gtk/gtkfixedlayout.c b/gtk/gtkfixedlayout.c index 5363d8e4e5..77e923add0 100644 --- a/gtk/gtkfixedlayout.c +++ b/gtk/gtkfixedlayout.c @@ -301,7 +301,7 @@ gtk_fixed_layout_allocate (GtkLayoutManager *layout_manager, child_req.width, child_req.height, -1, - child_info->position); + gsk_transform_ref (child_info->position)); } } diff --git a/gtk/gtkrevealer.c b/gtk/gtkrevealer.c index 065d1ab1ff..68e4eba828 100644 --- a/gtk/gtkrevealer.c +++ b/gtk/gtkrevealer.c @@ -458,7 +458,6 @@ gtk_revealer_real_size_allocate (GtkWidget *widget, } gtk_widget_allocate (child, child_width, child_height, -1, transform); - gsk_transform_unref (transform); } static void diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 9a393a5bb9..26dbae1197 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -4233,8 +4233,6 @@ gtk_widget_size_allocate (GtkWidget *widget, allocation->height, baseline, transform); - - gsk_transform_unref (transform); } /** @@ -4243,7 +4241,7 @@ gtk_widget_size_allocate (GtkWidget *widget, * @width: New width of @widget * @height: New height of @widget * @baseline: New baseline of @widget, or -1 - * @transform: (transfer none) (allow-none): Transformation to be applied to @widget + * @transform: (transfer full) (allow-none): Transformation to be applied to @widget * * This function is only used by #GtkWidget subclasses, to assign a size, * position and (optionally) baseline to their child widgets. @@ -4303,10 +4301,8 @@ gtk_widget_allocate (GtkWidget *widget, priv->allocated_height != height); transform_changed = !gsk_transform_equal (priv->allocated_transform, transform); - /* order is important, sometimes priv->allocated_transform == transform */ - gsk_transform_ref (transform); gsk_transform_unref (priv->allocated_transform); - priv->allocated_transform = transform; + priv->allocated_transform = gsk_transform_ref (transform); priv->allocated_width = width; priv->allocated_height = height; priv->allocated_size_baseline = baseline; @@ -11435,7 +11431,7 @@ gtk_widget_ensure_allocate (GtkWidget *widget) priv->allocated_width, priv->allocated_height, priv->allocated_size_baseline, - priv->allocated_transform); + gsk_transform_ref (priv->allocated_transform)); } else if (priv->alloc_needed_on_child) { diff --git a/tests/testwidgettransforms.c b/tests/testwidgettransforms.c index 62c99b994a..d8cf78fc6c 100644 --- a/tests/testwidgettransforms.c +++ b/tests/testwidgettransforms.c @@ -128,8 +128,6 @@ gtk_transform_tester_size_allocate (GtkWidget *widget, w, h, -1, global_transform); - - gsk_transform_unref (global_transform); } static void