]> Pileus Git - ~andy/gtk/blobdiff - gdk/gdkevents.c
Fill in string, length and is_modifier for key events. Map some more keys
[~andy/gtk] / gdk / gdkevents.c
index a54abde8a5491cf00066d4f43cf4e7886ecb016c..ac6cd59d2eba6544f0f8d0f90b8e9273899ad327 100644 (file)
@@ -255,7 +255,6 @@ gdk_event_put (GdkEvent *event)
   gdk_display_put_event (display, event);
 }
 
-static GMemChunk *event_chunk = NULL;
 static GHashTable *event_hash = NULL;
 
 /**
@@ -275,17 +274,10 @@ gdk_event_new (GdkEventType type)
   GdkEventPrivate *new_private;
   GdkEvent *new_event;
   
-  if (event_chunk == NULL)
-    {
-      event_chunk = g_mem_chunk_new ("events",
-                                    sizeof (GdkEventPrivate),
-                                    4096,
-                                    G_ALLOC_AND_FREE);
-      event_hash = g_hash_table_new (g_direct_hash, NULL);
-    }
-  
-  new_private = g_chunk_new (GdkEventPrivate, event_chunk);
-  memset (new_private, 0, sizeof (GdkEventPrivate));
+  if (!event_hash)
+    event_hash = g_hash_table_new (g_direct_hash, NULL);
+
+  new_private = g_slice_new0 (GdkEventPrivate);
   
   new_private->flags = 0;
   new_private->screen = NULL;
@@ -446,8 +438,6 @@ gdk_event_free (GdkEvent *event)
 {
   g_return_if_fail (event != NULL);
 
-  g_assert (event_chunk != NULL); /* paranoid */
-  
   if (event->any.window)
     g_object_unref (event->any.window);
   
@@ -498,7 +488,7 @@ gdk_event_free (GdkEvent *event)
     }
 
   g_hash_table_remove (event_hash, event);
-  g_mem_chunk_free (event_chunk, event);
+  g_slice_free (GdkEventPrivate, (GdkEventPrivate*) event);
 }
 
 /**
@@ -561,6 +551,7 @@ gdk_event_get_time (GdkEvent *event)
       case GDK_WINDOW_STATE:
       case GDK_SETTING:
       case GDK_OWNER_CHANGE:
+      case GDK_GRAB_BROKEN:
         /* return current time */
         break;
       }
@@ -637,6 +628,7 @@ gdk_event_get_state (GdkEvent        *event,
       case GDK_WINDOW_STATE:
       case GDK_SETTING:
       case GDK_OWNER_CHANGE:
+      case GDK_GRAB_BROKEN:
         /* no state field */
         break;
       }
@@ -1198,7 +1190,7 @@ gdk_event_get_type (void)
   static GType our_type = 0;
   
   if (our_type == 0)
-    our_type = g_boxed_type_register_static ("GdkEvent",
+    our_type = g_boxed_type_register_static (g_intern_static_string ("GdkEvent"),
                                             (GBoxedCopyFunc)gdk_event_copy,
                                             (GBoxedFreeFunc)gdk_event_free);
   return our_type;