diff options
author | Christian Hergert <christian@hergert.me> | 2016-04-27 17:45:01 -0700 |
---|---|---|
committer | Christian Hergert <christian@hergert.me> | 2016-04-27 17:45:01 -0700 |
commit | 88d02583974659d1d37d825df78c79bee4c95d0e (patch) | |
tree | d315b3d5c7238d5f8504c4530232ce6edd1dfb01 /gtk/gtkiconhelper.c | |
parent | 055ce9f095fa66d4ea247ec24d8366d5080c9ebc (diff) | |
download | gtk+-88d02583974659d1d37d825df78c79bee4c95d0e.tar.gz |
iconhelper: check if surface was invalidated
Fetching the style may cause the surface to be invalidated.
Diffstat (limited to 'gtk/gtkiconhelper.c')
-rw-r--r-- | gtk/gtkiconhelper.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c index b8737e7aa4..7baccb0ae3 100644 --- a/gtk/gtkiconhelper.c +++ b/gtk/gtkiconhelper.c @@ -892,15 +892,21 @@ _gtk_icon_helper_draw (GtkIconHelper *self, gdouble x, gdouble y) { + GtkCssStyle *style; + gtk_icon_helper_ensure_surface (self); + /* + * Get the style first as the rendered surface maybe cleared if the style + * must be recomputed + */ + style = gtk_css_node_get_style (gtk_css_gadget_get_node (GTK_CSS_GADGET (self))); + if (self->priv->rendered_surface != NULL) - { - gtk_css_style_render_icon_surface (gtk_css_node_get_style (gtk_css_gadget_get_node (GTK_CSS_GADGET (self))), - cr, - self->priv->rendered_surface, - x, y); - } + gtk_css_style_render_icon_surface (style, + cr, + self->priv->rendered_surface, + x, y); } gboolean |