[gtk+/gtk-2-24] quartz: fix crashes that sometimes happened on the first key press



commit bbcde7e380c9abeb4083255e7c06d297a6bec8f9
Author: Michael Natterer <mitch gimp org>
Date:   Thu Jul 25 16:34:21 2013 +0200

    quartz: fix crashes that sometimes happened on the first key press
    
    because nobody has called gdk_keymap_get_for_display() before.
    Now we simply make sure the default display's keymap exists
    if somebody calls any gdk_keymap_*() function with a NULL
    keymap (which is an allowed value).

 gdk/quartz/gdkkeys-quartz.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)
---
diff --git a/gdk/quartz/gdkkeys-quartz.c b/gdk/quartz/gdkkeys-quartz.c
index e01f46f..aed5ccd 100644
--- a/gdk/quartz/gdkkeys-quartz.c
+++ b/gdk/quartz/gdkkeys-quartz.c
@@ -537,6 +537,9 @@ gdk_keymap_get_entries_for_keyval (GdkKeymap     *keymap,
   g_return_val_if_fail (n_keys != NULL, FALSE);
   g_return_val_if_fail (keyval != 0, FALSE);
 
+  if (!keymap)
+    keymap = gdk_keymap_get_for_display (gdk_display_get_default ());
+
   *n_keys = 0;
   keys_array = g_array_new (FALSE, FALSE, sizeof (GdkKeymapKey));
 
@@ -575,6 +578,9 @@ gdk_keymap_get_entries_for_keycode (GdkKeymap     *keymap,
   g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE);
   g_return_val_if_fail (n_entries != NULL, FALSE);
 
+  if (!keymap)
+    keymap = gdk_keymap_get_for_display (gdk_display_get_default ());
+
   *n_entries = 0;
 
   if (hardware_keycode > NUM_KEYCODES)
@@ -631,6 +637,9 @@ gdk_keymap_lookup_key (GdkKeymap          *keymap,
   g_return_val_if_fail (key != NULL, 0);
   g_return_val_if_fail (key->group < 4, 0);
 
+  if (!keymap)
+    keymap = gdk_keymap_get_for_display (gdk_display_get_default ());
+
   /* FIXME: Implement */
 
   return 0;
@@ -691,7 +700,10 @@ gdk_keymap_translate_keyboard_state (GdkKeymap       *keymap,
 
   g_return_val_if_fail (keymap == NULL || GDK_IS_KEYMAP (keymap), FALSE);
   g_return_val_if_fail (group >= 0 && group <= 1, FALSE);
-  
+
+  if (!keymap)
+    keymap = gdk_keymap_get_for_display (gdk_display_get_default ());
+
   if (keyval)
     *keyval = 0;
   if (effective_group)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]