* Add debian/patches/git_stylecontext-make-sure-valid.patch

- patch from upstream git to fix crash with some themes (Closes: #800911)
This commit is contained in:
Andreas Henriksson
2015-10-10 23:21:57 +00:00
parent 585714f90a
commit 7f247f0449
4 changed files with 36 additions and 96 deletions

9
debian/changelog vendored
View File

@ -1,10 +1,9 @@
gtk+3.0 (3.18.1-2) UNRELEASED; urgency=medium gtk+3.0 (3.18.1-2) unstable; urgency=medium
* Add d/p/0001-Revert-stylecontext-Clear-style-property-more-freque.patch * Add debian/patches/git_stylecontext-make-sure-valid.patch
- temporarily revert commit causing regression while waiting for - patch from upstream git to fix crash with some themes (Closes: #800911)
upstream to comment on proper solution. (Closes: #800911)
-- Andreas Henriksson <andreas@fatal.se> Sat, 10 Oct 2015 18:10:30 +0200 -- Andreas Henriksson <andreas@fatal.se> Sun, 11 Oct 2015 01:21:46 +0200
gtk+3.0 (3.18.1-1) unstable; urgency=medium gtk+3.0 (3.18.1-1) unstable; urgency=medium

View File

@ -1,90 +0,0 @@
From fb803ef386d1fe0da96eb57b5ce19ca90a3d360d Mon Sep 17 00:00:00 2001
From: Andreas Henriksson <andreas@fatal.se>
Date: Sat, 10 Oct 2015 17:29:44 +0200
Subject: [PATCH] Revert "stylecontext: Clear style property more frequently"
This reverts commit 3e5280ae4dfd1950dbd56a781dcdcf34a26d4294.
https://bugzilla.gnome.org/show_bug.cgi?id=756338
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800911
---
gtk/gtkcsswidgetnode.c | 19 -------------------
gtk/gtkstylecontext.c | 4 +++-
gtk/gtkstylecontextprivate.h | 1 -
3 files changed, 3 insertions(+), 21 deletions(-)
diff --git a/gtk/gtkcsswidgetnode.c b/gtk/gtkcsswidgetnode.c
index 5e93101..fbd9fbb 100644
--- a/gtk/gtkcsswidgetnode.c
+++ b/gtk/gtkcsswidgetnode.c
@@ -74,24 +74,6 @@ gtk_css_widget_node_queue_callback (GtkWidget *widget,
return G_SOURCE_CONTINUE;
}
-static GtkCssStyle *
-gtk_css_widget_node_update_style (GtkCssNode *cssnode,
- GtkCssChange change,
- gint64 timestamp,
- GtkCssStyle *style)
-{
- GtkCssWidgetNode *widget_node = GTK_CSS_WIDGET_NODE (cssnode);
-
- if (widget_node->widget != NULL)
- {
- GtkStyleContext *context = _gtk_widget_peek_style_context (widget_node->widget);
- if (context)
- gtk_style_context_clear_property_cache (context);
- }
-
- return GTK_CSS_NODE_CLASS (gtk_css_widget_node_parent_class)->update_style (cssnode, change, timestamp, style);
-}
-
static void
gtk_css_widget_node_queue_validate (GtkCssNode *node)
{
@@ -271,7 +253,6 @@ gtk_css_widget_node_class_init (GtkCssWidgetNodeClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = gtk_css_widget_node_finalize;
- node_class->update_style = gtk_css_widget_node_update_style;
node_class->validate = gtk_css_widget_node_validate;
node_class->queue_validate = gtk_css_widget_node_queue_validate;
node_class->dequeue_validate = gtk_css_widget_node_dequeue_validate;
diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c
index 9a5587d..c658cff 100644
--- a/gtk/gtkstylecontext.c
+++ b/gtk/gtkstylecontext.c
@@ -257,7 +257,7 @@ gtk_style_context_class_init (GtkStyleContextClass *klass)
g_object_class_install_properties (object_class, LAST_PROP, properties);
}
-void
+static void
gtk_style_context_clear_property_cache (GtkStyleContext *context)
{
GtkStyleContextPrivate *priv = context->priv;
@@ -2422,6 +2422,8 @@ gtk_style_context_validate (GtkStyleContext *context,
{
if (!_gtk_bitmask_is_empty (changes))
gtk_style_context_do_invalidate (context, changes);
+
+ gtk_style_context_clear_property_cache (context);
}
/**
diff --git a/gtk/gtkstylecontextprivate.h b/gtk/gtkstylecontextprivate.h
index 4ba27fe..c1faaba 100644
--- a/gtk/gtkstylecontextprivate.h
+++ b/gtk/gtkstylecontextprivate.h
@@ -47,7 +47,6 @@ const GValue * _gtk_style_context_peek_style_property (GtkStyleContext *c
GParamSpec *pspec);
void gtk_style_context_validate (GtkStyleContext *context,
const GtkBitmask*changes);
-void gtk_style_context_clear_property_cache (GtkStyleContext *context);
gboolean _gtk_style_context_check_region_name (const gchar *str);
gboolean _gtk_style_context_resolve_color (GtkStyleContext *context,
--
2.6.1

View File

@ -0,0 +1,31 @@
From bddc524cd84b76d1c25c7700eca9d3a25db30cf6 Mon Sep 17 00:00:00 2001
From: Benjamin Otte <otte@redhat.com>
Date: Sat, 10 Oct 2015 23:21:45 +0200
Subject: stylecontext: Make sure style is valid when looking up style
properties
Otherwise, the validation may happen vey automatically some time during
the style property and that will most likely cause a crash.
https://bugzilla.gnome.org/show_bug.cgi?id=756338
---
gtk/gtkstylecontext.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c
index 0217d55..5d059a0 100644
--- a/gtk/gtkstylecontext.c
+++ b/gtk/gtkstylecontext.c
@@ -1557,6 +1557,9 @@ _gtk_style_context_peek_style_property (GtkStyleContext *context,
priv = context->priv;
+ /* ensure the style cache is valid by forcing a validation */
+ gtk_style_context_lookup_style (context);
+
key.widget_type = widget_type;
key.pspec = pspec;
--
cgit v0.11.2

View File

@ -7,4 +7,4 @@
060_ignore-random-icons.patch 060_ignore-random-icons.patch
071_fix-installation-of-HTML-images.patch 071_fix-installation-of-HTML-images.patch
reftest-known-fail.patch reftest-known-fail.patch
0001-Revert-stylecontext-Clear-style-property-more-freque.patch git_stylecontext-make-sure-valid.patch