From 7a09cd4cdaff9c5643ad0e3e212cb2acb8ba9fde Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sun, 22 Apr 2018 02:46:00 +0200 Subject: [PATCH] widget: Position changes don't require a redraw Well, they don't require a redraw of the widget, because the widget itself didn't change. They require a redraw of the parent, because that now displays the widget in a different position. And this means we can keep the cache of the widget's render node. My fishbowl numbers are through the roof^W water surface. Vulkan gets 4000 now. --- gtk/gtkwidget.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index a2ec1fe369..9dc5dd55ff 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -4355,8 +4355,10 @@ gtk_widget_size_allocate (GtkWidget *widget, gtk_widget_invalidate_paintable_size (widget); check_clip: - if (position_changed || size_changed || baseline_changed) + if (size_changed || baseline_changed) gtk_widget_queue_draw (widget); + else if (position_changed && priv->parent) + gtk_widget_queue_draw (priv->parent); out: if (priv->alloc_needed_on_child)