[gtk+] widget: Stop invalidating recursively
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] widget: Stop invalidating recursively
- Date: Mon, 24 Jul 2017 12:50:49 +0000 (UTC)
commit 3f9bcf3b31c77a861d25afc1fb93d1af02bfb484
Author: Timm Bäder <mail baedert org>
Date: Sun Jul 23 21:39:38 2017 +0200
widget: Stop invalidating recursively
gtk/gtkwidget.c | 60 ++++--------------------------------------------------
1 files changed, 5 insertions(+), 55 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index ac726ab..a0da34d 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -693,8 +693,6 @@ static void gtk_widget_real_state_flags_changed (GtkWidget
static AtkObject* gtk_widget_real_get_accessible (GtkWidget *widget);
static void gtk_widget_accessible_interface_init (AtkImplementorIface *iface);
static AtkObject* gtk_widget_ref_accessible (AtkImplementor *implementor);
-static void gtk_widget_invalidate_widget_windows (GtkWidget *widget,
- cairo_region_t *region);
static GdkScreen * gtk_widget_get_screen_unchecked (GtkWidget *widget);
static gboolean gtk_widget_real_can_activate_accel (GtkWidget *widget,
guint signal_id);
@@ -5181,43 +5179,6 @@ gtk_widget_get_frame_clock (GtkWidget *widget)
}
}
-static gboolean
-invalidate_predicate (GdkWindow *window,
- gpointer data)
-{
- gpointer user_data;
-
- gdk_window_get_user_data (window, &user_data);
-
- return (user_data == data);
-}
-
-/* Invalidate @region in widget->window and all children
- * of widget->window owned by widget. @region is in the
- * same coordinates as widget->allocation and will be
- * modified by this call.
- */
-static void
-gtk_widget_invalidate_widget_windows (GtkWidget *widget,
- cairo_region_t *region)
-{
- GtkWidgetPrivate *priv = widget->priv;
-
- if (!_gtk_widget_get_realized (widget))
- return;
-
- if (_gtk_widget_get_has_window (widget) && priv->parent)
- {
- int x, y;
-
- gdk_window_get_position (priv->window, &x, &y);
- cairo_region_translate (region, -x, -y);
- }
-
- gdk_window_invalidate_maybe_recurse (priv->window, region,
- invalidate_predicate, widget);
-}
-
static gint
get_number (GtkCssStyle *style,
guint property)
@@ -5607,27 +5568,16 @@ check_clip:
if (_gtk_widget_get_mapped (widget) && priv->redraw_on_alloc)
{
- if (!_gtk_widget_get_has_window (widget) && position_changed)
- {
- /* Invalidate union(old_clip,priv->clip) in priv->window
- */
- cairo_region_t *invalidate = cairo_region_create_rectangle (&priv->clip);
- cairo_region_union_rectangle (invalidate, &old_clip);
-
- gtk_widget_queue_draw_region (widget, invalidate);
- cairo_region_destroy (invalidate);
- }
-
- if (size_changed || baseline_changed)
- {
- /* Invalidate union(old_clip,priv->clip) in priv->window and descendants owned by widget
+ if (position_changed || size_changed || baseline_changed)
+ {
+ /* Invalidate union(old_clip,priv->clip) in the toplevel's window
*/
cairo_region_t *invalidate = cairo_region_create_rectangle (&priv->clip);
cairo_region_union_rectangle (invalidate, &old_clip);
- gtk_widget_invalidate_widget_windows (widget, invalidate);
+ gtk_widget_queue_draw_region (widget, invalidate);
cairo_region_destroy (invalidate);
- }
+ }
}
out:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]