From: Benjamin Otte Date: Sun, 22 Apr 2018 00:46:00 +0000 (+0200) Subject: widget: Position changes don't require a redraw X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~22^2~433 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=7a09cd4cdaff9c5643ad0e3e212cb2acb8ba9fde;p=gtk4.git 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. --- 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)