pepper: Added a function for querying object type
authorTaekyun Kim <tkq.kim@samsung.com>
Wed, 22 Jul 2015 05:36:26 +0000 (14:36 +0900)
committerTaekyun Kim <tkq.kim@samsung.com>
Wed, 22 Jul 2015 05:36:26 +0000 (14:36 +0900)
Change-Id: I209ce1b581d7ff7ce8670d215ab9732b48a72c70

src/lib/pepper/buffer.c
src/lib/pepper/compositor.c
src/lib/pepper/input.c
src/lib/pepper/object.c
src/lib/pepper/output.c
src/lib/pepper/pepper-internal.h
src/lib/pepper/pepper.h
src/lib/pepper/plane.c
src/lib/pepper/surface.c
src/lib/pepper/view.c

index 64d5b5d..577b6f8 100644 (file)
@@ -24,7 +24,7 @@ pepper_buffer_from_resource(struct wl_resource *resource)
     if (listener)
         return pepper_container_of(listener, pepper_buffer_t, resource_destroy_listener);
 
-    buffer = (pepper_buffer_t *)pepper_object_alloc(sizeof(pepper_buffer_t));
+    buffer = (pepper_buffer_t *)pepper_object_alloc(PEPPER_OBJECT_BUFFER, sizeof(pepper_buffer_t));
     if (!buffer)
         return NULL;
 
index a5a6512..1f15656 100644 (file)
@@ -59,7 +59,8 @@ PEPPER_API pepper_compositor_t *
 pepper_compositor_create(const char *socket_name)
 {
     pepper_compositor_t *compositor =
-        (pepper_compositor_t *)pepper_object_alloc(sizeof(pepper_compositor_t));
+        (pepper_compositor_t *)pepper_object_alloc(PEPPER_OBJECT_COMPOSITOR,
+                                                   sizeof(pepper_compositor_t));
 
     if (!compositor)
         return NULL;
index 790eaf2..6daec92 100644 (file)
@@ -145,7 +145,8 @@ pointer_create(pepper_seat_t *seat)
 {
     pepper_pointer_t *pointer;
 
-    pointer = (pepper_pointer_t *)pepper_object_alloc(sizeof(pepper_pointer_t));
+    pointer = (pepper_pointer_t *)pepper_object_alloc(PEPPER_OBJECT_POINTER,
+                                                      sizeof(pepper_pointer_t));
     if (!pointer)
     {
         PEPPER_ERROR("Failed to allocate memory in %s\n", __FUNCTION__);
@@ -174,7 +175,8 @@ keyboard_create(pepper_seat_t *seat)
 {
     pepper_keyboard_t   *keyboard;
 
-    keyboard = (pepper_keyboard_t *)pepper_object_alloc(sizeof(pepper_keyboard_t));
+    keyboard = (pepper_keyboard_t *)pepper_object_alloc(PEPPER_OBJECT_KEYBOARD,
+                                                        sizeof(pepper_keyboard_t));
     if (!keyboard)
     {
         PEPPER_ERROR("Failed to allocate memory in %s\n", __FUNCTION__);
@@ -203,7 +205,7 @@ touch_create(pepper_seat_t *seat)
 {
     pepper_touch_t *touch;
 
-    touch = (pepper_touch_t *)pepper_object_alloc(sizeof(pepper_touch_t));
+    touch = (pepper_touch_t *)pepper_object_alloc(PEPPER_OBJECT_TOUCH, sizeof(pepper_touch_t));
     if (!touch)
     {
         PEPPER_ERROR("Failed to allocate memory in %s\n", __FUNCTION__);
@@ -315,7 +317,8 @@ pepper_compositor_add_seat(pepper_compositor_t *compositor,
                            const pepper_seat_backend_t *backend,
                            void *data)
 {
-    pepper_seat_t *seat = (pepper_seat_t *)pepper_object_alloc(sizeof(pepper_seat_t));
+    pepper_seat_t *seat = (pepper_seat_t *)pepper_object_alloc(PEPPER_OBJECT_SEAT,
+                                                               sizeof(pepper_seat_t));
     if (!seat)
     {
         PEPPER_ERROR("Failed to allocate memory in %s\n", __FUNCTION__);
index cf4e46f..f963201 100644 (file)
@@ -25,12 +25,13 @@ user_data_key_compare(const void *key0, int key0_length, const void *key1, int k
 }
 
 pepper_object_t *
-pepper_object_alloc(size_t size)
+pepper_object_alloc(pepper_object_type_t type, size_t size)
 {
     pepper_object_t *object = pepper_calloc(1, size);
     if (!object)
         return NULL;
 
+    object->type = type;
     wl_signal_init(&object->destroy_signal);
     object->user_data_map = pepper_map_create(5, user_data_hash, user_data_key_length,
                                               user_data_key_compare);
@@ -51,6 +52,12 @@ pepper_object_fini(pepper_object_t *object)
     pepper_map_destroy(object->user_data_map);
 }
 
+PEPPER_API pepper_object_type_t
+pepper_object_get_type(pepper_object_t *object)
+{
+    return object->type;
+}
+
 PEPPER_API void
 pepper_object_set_user_data(pepper_object_t *object, const void *key, void *data,
                             pepper_free_func_t free_func)
index c66e83f..ae08875 100644 (file)
@@ -253,7 +253,7 @@ pepper_compositor_add_output(pepper_compositor_t *compositor,
 
     id = id - 1;
 
-    output = (pepper_output_t *)pepper_object_alloc(sizeof(pepper_output_t));
+    output = (pepper_output_t *)pepper_object_alloc(PEPPER_OBJECT_OUTPUT, sizeof(pepper_output_t));
     if (!output)
         return NULL;
 
index 7073b46..152a8ff 100644 (file)
@@ -19,12 +19,13 @@ typedef struct pepper_data_offer    pepper_data_offer_t;
 
 struct pepper_object
 {
-    struct wl_signal    destroy_signal;
-    pepper_map_t       *user_data_map;
+    pepper_object_type_t    type;
+    struct wl_signal        destroy_signal;
+    pepper_map_t           *user_data_map;
 };
 
 pepper_object_t *
-pepper_object_alloc(size_t size);
+pepper_object_alloc(pepper_object_type_t type, size_t size);
 
 void
 pepper_object_fini(pepper_object_t *object);
index c144433..2c554d1 100644 (file)
@@ -46,7 +46,24 @@ struct pepper_output_mode
     int32_t     refresh;
 };
 
+typedef enum pepper_object_type
+{
+    PEPPER_OBJECT_COMPOSITOR,
+    PEPPER_OBJECT_OUTPUT,
+    PEPPER_OBJECT_SURFACE,
+    PEPPER_OBJECT_BUFFER,
+    PEPPER_OBJECT_VIEW,
+    PEPPER_OBJECT_SEAT,
+    PEPPER_OBJECT_POINTER,
+    PEPPER_OBJECT_KEYBOARD,
+    PEPPER_OBJECT_TOUCH,
+    PEPPER_OBJECT_PLANE,
+} pepper_object_type_t;
+
 /* Generic object functions. */
+PEPPER_API pepper_object_type_t
+pepper_object_get_type(pepper_object_t *object);
+
 PEPPER_API void
 pepper_object_set_user_data(pepper_object_t *object, const void *key, void *data,
                             pepper_free_func_t free_func);
index be01006..5a096df 100644 (file)
@@ -68,7 +68,7 @@ pepper_output_add_plane(pepper_output_t *output, pepper_plane_t *above)
     if (above && above->output != output)
         return NULL;
 
-    plane = (pepper_plane_t *)pepper_object_alloc(sizeof(pepper_plane_t));
+    plane = (pepper_plane_t *)pepper_object_alloc(PEPPER_OBJECT_PLANE, sizeof(pepper_plane_t));
     if (!plane)
         return NULL;
 
index f31bb4b..9b521c4 100644 (file)
@@ -223,7 +223,8 @@ pepper_surface_create(pepper_compositor_t *compositor,
                       struct wl_resource *resource,
                       uint32_t id)
 {
-    pepper_surface_t *surface = (pepper_surface_t *)pepper_object_alloc(sizeof(pepper_surface_t));
+    pepper_surface_t *surface = (pepper_surface_t *)pepper_object_alloc(PEPPER_OBJECT_SURFACE,
+                                                                        sizeof(pepper_surface_t));
     if (!surface)
     {
         PEPPER_ERROR("Surface memory allocation failed\n");
index 26214c5..9eb2918 100644 (file)
@@ -280,7 +280,8 @@ view_init(pepper_view_t *view, pepper_compositor_t *compositor)
 PEPPER_API pepper_view_t *
 pepper_compositor_add_surface_view(pepper_compositor_t *compositor, pepper_surface_t *surface)
 {
-    pepper_view_t *view = (pepper_view_t *)pepper_object_alloc(sizeof(pepper_view_t));
+    pepper_view_t *view = (pepper_view_t *)pepper_object_alloc(PEPPER_OBJECT_VIEW,
+                                                               sizeof(pepper_view_t));
     if (!view)
     {
         PEPPER_ERROR("Failed to allocate a pepper object.\n");