diff --git a/gdk/gdkdisplaymanager.c b/gdk/gdkdisplaymanager.c index e29fa511b5..b15aeb0afb 100644 --- a/gdk/gdkdisplaymanager.c +++ b/gdk/gdkdisplaymanager.c @@ -267,6 +267,8 @@ gdk_set_allowed_backends (const gchar *backends) allowed_backends = g_strdup (backends); } +static GdkDisplayManager *manager = NULL; + /** * gdk_display_manager_get: * @@ -287,8 +289,6 @@ gdk_set_allowed_backends (const gchar *backends) GdkDisplayManager* gdk_display_manager_get (void) { - static GdkDisplayManager *manager = NULL; - if (manager == NULL) { const gchar *backend_list; @@ -381,6 +381,15 @@ gdk_display_manager_get (void) return manager; } +/* Used for cases where we don't actually want to instantiate a + * display manager if none exists. Internal only. + */ +GdkDisplayManager * +_gdk_display_manager_get_nocreate (void) +{ + return manager; +} + /** * gdk_display_manager_get_default_display: * @manager: a #GdkDisplayManager diff --git a/gdk/gdkdisplaymanagerprivate.h b/gdk/gdkdisplaymanagerprivate.h index f915f60b6b..fade4d6a7c 100644 --- a/gdk/gdkdisplaymanagerprivate.h +++ b/gdk/gdkdisplaymanagerprivate.h @@ -64,6 +64,9 @@ struct _GdkDisplayManagerClass GdkDisplay *display); }; +GdkDisplayManager * +_gdk_display_manager_get_nocreate (void); + G_END_DECLS #endif diff --git a/gdk/gdkkeys.c b/gdk/gdkkeys.c index 6b46dbf7df..9194d7f5cb 100644 --- a/gdk/gdkkeys.c +++ b/gdk/gdkkeys.c @@ -203,9 +203,12 @@ gdk_keyval_convert_case (guint symbol, guint *lower, guint *upper) { - GdkDisplayManager *manager = gdk_display_manager_get (); + GdkDisplayManager *manager = _gdk_display_manager_get_nocreate (); - GDK_DISPLAY_MANAGER_GET_CLASS (manager)->keyval_convert_case (manager, symbol, lower, upper); + if (manager) + GDK_DISPLAY_MANAGER_GET_CLASS (manager)->keyval_convert_case (manager, symbol, lower, upper); + else + _gdk_display_manager_real_keyval_convert_case (NULL, symbol, lower, upper); } /**