pepper: Add pepper_object_init() for internal use
authorTaekyun Kim <tkq.kim@samsung.com>
Mon, 10 Aug 2015 09:30:40 +0000 (18:30 +0900)
committerTaekyun Kim <tkq.kim@samsung.com>
Mon, 10 Aug 2015 09:30:40 +0000 (18:30 +0900)
Change-Id: Icca954d44305e7a037567f6c3cb71d5c095e78a8

src/lib/pepper/object.c
src/lib/pepper/pepper-internal.h

index c7b51b0..56e2bf4 100644 (file)
@@ -31,25 +31,25 @@ pepper_object_alloc(pepper_object_type_t type, size_t size)
     if (!object)
         return NULL;
 
-    object->type = type;
-    object->user_data_map = pepper_map_create(5, user_data_hash, user_data_key_length,
-                                              user_data_key_compare);
-
-    if (!object->user_data_map)
-    {
-        pepper_free(object);
-        return NULL;
-    }
+    pepper_object_init(object, type);
+    return object;
+}
 
+void
+pepper_object_init(pepper_object_t *object, pepper_object_type_t type)
+{
+    object->type = type;
     pepper_list_init(&object->event_listener_list);
-    return object;
+    pepper_map_init(&object->user_data_map, PEPPER_OBJECT_BUCKET_BITS,
+                    user_data_hash, user_data_key_length, user_data_key_compare,
+                    &object->buckets[0]);
 }
 
 void
 pepper_object_fini(pepper_object_t *object)
 {
     pepper_object_emit_event(object, PEPPER_EVENT_OBJECT_DESTROY, NULL);
-    pepper_map_destroy(object->user_data_map);
+    pepper_map_fini(&object->user_data_map);
 }
 
 PEPPER_API pepper_object_type_t
@@ -62,13 +62,13 @@ PEPPER_API void
 pepper_object_set_user_data(pepper_object_t *object, const void *key, void *data,
                             pepper_free_func_t free_func)
 {
-    pepper_map_set(object->user_data_map, key, data, free_func);
+    pepper_map_set(&object->user_data_map, key, data, free_func);
 }
 
 PEPPER_API void *
 pepper_object_get_user_data(pepper_object_t *object, const void *key)
 {
-    return pepper_map_get(object->user_data_map, key);
+    return pepper_map_get(&object->user_data_map, key);
 }
 
 static void
index 57ab5ab..bb2e2d1 100644 (file)
@@ -8,7 +8,8 @@
 #include "pepper-output-backend.h"
 #include "pepper-input-backend.h"
 
-#define PEPPER_MAX_OUTPUT_COUNT 32
+#define PEPPER_OBJECT_BUCKET_BITS   5
+#define PEPPER_MAX_OUTPUT_COUNT     32
 
 typedef struct pepper_region        pepper_region_t;
 typedef struct pepper_surface_state pepper_surface_state_t;
@@ -20,7 +21,8 @@ typedef struct pepper_data_offer    pepper_data_offer_t;
 struct pepper_object
 {
     pepper_object_type_t    type;
-    pepper_map_t           *user_data_map;
+    pepper_map_t            user_data_map;
+    pepper_map_entry_t     *buckets[1 << PEPPER_OBJECT_BUCKET_BITS];
     pepper_list_t           event_listener_list;
 };
 
@@ -28,6 +30,9 @@ pepper_object_t *
 pepper_object_alloc(pepper_object_type_t type, size_t size);
 
 void
+pepper_object_init(pepper_object_t *object, pepper_object_type_t type);
+
+void
 pepper_object_fini(pepper_object_t *object);
 
 /* compositor */