summaryrefslogtreecommitdiff
path: root/gtk/gtkmodules.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2013-03-23 19:41:39 -0400
committerMatthias Clasen <mclasen@redhat.com>2013-03-23 19:41:39 -0400
commit65cd2a59c3c8e46e6baa7a6f0cb73dae22f2fd37 (patch)
tree6b24ec45be3be1c9fcc2e26fec28e124c6c9fccd /gtk/gtkmodules.c
parent48d8af85d08b8937f4105535d88302c7a20909aa (diff)
downloadgtk+-65cd2a59c3c8e46e6baa7a6f0cb73dae22f2fd37.tar.gz
Make gtk_init_check work as expected
When no GDK backend can be initialized (either because GDK_BACKEND has been set to the wrong value, or the backends are simply not included), the expectation is that gtk_init_check should return FALSE, not error out. This commit makes it so, by using gdk_display_manager_peek instead of gdk_display_manager_get in code paths that are used during initialization.
Diffstat (limited to 'gtk/gtkmodules.c')
-rw-r--r--gtk/gtkmodules.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/gtk/gtkmodules.c b/gtk/gtkmodules.c
index 5a15925993..ecbe88fd83 100644
--- a/gtk/gtkmodules.c
+++ b/gtk/gtkmodules.c
@@ -517,8 +517,8 @@ display_opened_cb (GdkDisplayManager *display_manager,
}
void
-_gtk_modules_init (gint *argc,
- gchar ***argv,
+_gtk_modules_init (gint *argc,
+ gchar ***argv,
const gchar *gtk_modules_args)
{
GdkDisplayManager *display_manager;
@@ -526,7 +526,7 @@ _gtk_modules_init (gint *argc,
g_assert (gtk_argv == NULL);
- if (argc && argv)
+ if (argc && argv)
{
/* store argc and argv for later use in mod initialization */
gtk_argc = *argc;
@@ -536,22 +536,26 @@ _gtk_modules_init (gint *argc,
gtk_argv [*argc] = NULL;
}
- display_manager = gdk_display_manager_get ();
- default_display_opened = gdk_display_get_default () != NULL;
- g_signal_connect (display_manager, "notify::default-display",
- G_CALLBACK (default_display_notify_cb),
- NULL);
- g_signal_connect (display_manager, "display-opened",
- G_CALLBACK (display_opened_cb),
- NULL);
-
- if (gtk_modules_args) {
- /* Modules specified in the GTK_MODULES environment variable
- * or on the command line are always loaded, so we'll just leak
- * the refcounts.
- */
- g_slist_free (load_modules (gtk_modules_args));
- }
+ display_manager = gdk_display_manager_peek ();
+ if (display_manager != NULL)
+ {
+ default_display_opened = gdk_display_get_default () != NULL;
+ g_signal_connect (display_manager, "notify::default-display",
+ G_CALLBACK (default_display_notify_cb),
+ NULL);
+ g_signal_connect (display_manager, "display-opened",
+ G_CALLBACK (display_opened_cb),
+ NULL);
+ }
+
+ if (gtk_modules_args)
+ {
+ /* Modules specified in the GTK_MODULES environment variable
+ * or on the command line are always loaded, so we'll just leak
+ * the refcounts.
+ */
+ g_slist_free (load_modules (gtk_modules_args));
+ }
}
static void