[evince] Fix a crash during the build with introspection enabled
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince] Fix a crash during the build with introspection enabled
- Date: Sun, 30 Mar 2014 10:20:03 +0000 (UTC)
commit a203fc1bf0b6f4f4c920c3144ebae77e41686751
Author: Gustau Perez <gustau perez gmail com>
Date: Fri Mar 28 19:31:08 2014 +0000
Fix a crash during the build with introspection enabled
Using GI_SCANNER_DEBUG=save-temps, the temporal files remained.
It has been suggested that calling gtk_style_context_add_provider_for_screen()
should, inside a g_once_init(), be in the class's _init() (not class_init()) hook.
https://bugzilla.gnome.org/show_bug.cgi?id=726812
libview/ev-view-presentation.c | 28 +++++++++++++++++-----------
1 files changed, 17 insertions(+), 11 deletions(-)
---
diff --git a/libview/ev-view-presentation.c b/libview/ev-view-presentation.c
index 3bdf4e6..678b456 100644
--- a/libview/ev-view-presentation.c
+++ b/libview/ev-view-presentation.c
@@ -1419,7 +1419,6 @@ ev_view_presentation_class_init (EvViewPresentationClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GtkBindingSet *binding_set;
- GtkCssProvider *provider;
klass->change_page = ev_view_presentation_change_page;
@@ -1533,23 +1532,30 @@ ev_view_presentation_class_init (EvViewPresentationClass *klass)
gtk_binding_entry_add_signal (binding_set, GDK_KEY_K, 0,
"change_page", 1,
GTK_TYPE_SCROLL_TYPE, GTK_SCROLL_PAGE_BACKWARD);
-
- provider = gtk_css_provider_new ();
- gtk_css_provider_load_from_data (provider,
- "EvViewPresentation {\n"
- " background-color: black; }",
- -1, NULL);
- gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
- GTK_STYLE_PROVIDER (provider),
- GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
- g_object_unref (provider);
}
static void
ev_view_presentation_init (EvViewPresentation *pview)
{
+ static gsize initialization_value = 0;
+
gtk_widget_set_can_focus (GTK_WIDGET (pview), TRUE);
pview->is_constructing = TRUE;
+
+ if (g_once_init_enter (&initialization_value)) {
+ GtkCssProvider *provider;
+
+ provider = gtk_css_provider_new ();
+ gtk_css_provider_load_from_data (provider,
+ "EvViewPresentation {\n"
+ " background-color: black; }",
+ -1, NULL);
+ gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
+ GTK_STYLE_PROVIDER (provider),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ g_object_unref (provider);
+ g_once_init_leave (&initialization_value, 1);
+ }
}
GtkWidget *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]