From: Boram Park Date: Thu, 3 Dec 2015 00:04:16 +0000 (+0900) Subject: get tdm_buffer from buffer_list X-Git-Tag: accepted/tizen/mobile/20151207.123550^2~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=26f8e18028fd98d11d33e4b81af6d827dd108bdd;p=platform%2Fcore%2Fuifw%2Flibtdm.git get tdm_buffer from buffer_list Change-Id: I0eaaa91ba97a44ee4ad6bad8f8c0c3467cc5b9a8 --- diff --git a/src/tdm_buffer.c b/src/tdm_buffer.c index 3f4d466..784c6ec 100644 --- a/src/tdm_buffer.c +++ b/src/tdm_buffer.c @@ -60,13 +60,23 @@ typedef struct _tdm_buffer_info int backend_ref_count; struct list_head release_funcs; + struct list_head link; } tdm_buffer_info; +static int buffer_list_init; +static struct list_head buffer_list; + EXTERN tdm_buffer* tdm_buffer_create(tbm_surface_h buffer, tdm_error *error) { tdm_buffer_info *buf_info; + if (!buffer_list_init) + { + LIST_INITHEAD(&buffer_list); + buffer_list_init = 1; + } + if (!buffer) { if (error) @@ -94,6 +104,7 @@ tdm_buffer_create(tbm_surface_h buffer, tdm_error *error) buf_info->buffer = buffer; LIST_INITHEAD(&buf_info->release_funcs); + LIST_ADDTAIL(&buf_info->link, &buffer_list); if (error) *error = TDM_ERROR_NONE; @@ -238,14 +249,24 @@ tdm_buffer_get_surface(tdm_buffer *buffer) return buf_info->buffer; } -#undef container_of -#define container_of(ptr, type, member) \ - (type *)((char *)(ptr) - offsetof(type, member)) - INTERN tdm_buffer* tdm_buffer_get(tbm_surface_h buffer) { + tdm_buffer_info *found; + TDM_RETURN_VAL_IF_FAIL(buffer != NULL, NULL); - return container_of(buffer, tdm_buffer_info, buffer); + if (!buffer_list_init) + { + LIST_INITHEAD(&buffer_list); + buffer_list_init = 1; + } + + LIST_FOR_EACH_ENTRY(found, &buffer_list, link) + { + if (found->buffer == buffer) + return found; + } + + return NULL; }