Remove `ext_blocks` from gif_image_s 72/191172/1
authorjiyong.min <jiyong.min@samsung.com>
Fri, 12 Oct 2018 04:44:55 +0000 (13:44 +0900)
committerjiyong.min <jiyong.min@samsung.com>
Fri, 12 Oct 2018 04:45:35 +0000 (13:45 +0900)
Change-Id: I3a502c1b30196123b5ae3fc64e71f29de1170dff

gif/include/mm_util_gif_private.h
gif/mm_util_gif.c

index 849cb18..c943e59 100644 (file)
@@ -40,9 +40,6 @@ typedef struct {
        unsigned long height;
        void *image_data;
        int delay_time;
-
-       int ext_block_count;
-       ExtensionBlock *ext_blocks;
 } gif_image_s;
 
 typedef struct {
index e4040f0..4b1c7e2 100644 (file)
@@ -503,76 +503,45 @@ int _gif_image_write_image(gif_file_s *gif_file, gif_image_s *gif_image)
        return MM_UTIL_ERROR_NONE;
 }
 
-int _gif_image_alloc_ext_block(gif_image_s *gif_image, int function, int byte_count, ExtensionBlock **ext_block)
+int _gif_image_create_ext_block(gif_image_s *gif_image, int function, int byte_count, ExtensionBlock **ext_block)
 {
-       int i = 0;
        ExtensionBlock *_ext_block = NULL;
 
        mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
        mm_util_retvm_if(byte_count == 0, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
        mm_util_retvm_if(ext_block == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
-       if (gif_image->ext_blocks == NULL) {
-               gif_image->ext_blocks = (ExtensionBlock *)calloc(1, sizeof(ExtensionBlock));
-               if (gif_image->ext_blocks == NULL) {
-                       mm_util_error("Memory allocation failed");
-                       *ext_block = NULL;
-                       return MM_UTIL_ERROR_OUT_OF_MEMORY;
-               }
-       } else {
-               /* check exist function block */
-               for (i = 0; i < gif_image->ext_block_count; i++) {
-                       _ext_block = &gif_image->ext_blocks[i];
-                       if (_ext_block != NULL && _ext_block->Function == function) {
-                               mm_util_error("[Not Error] Ext block has already exist");
-                               *ext_block = _ext_block;
-                               return MM_UTIL_ERROR_NONE;
-                       }
-               }
-               ExtensionBlock *realloc_ptr = (ExtensionBlock *)realloc(gif_image->ext_blocks, (sizeof(ExtensionBlock) * (gif_image->ext_block_count + 1)));
-               if (realloc_ptr == NULL) {
-                       mm_util_error("Memory reallocation failed");
-                       *ext_block = NULL;
-                       return MM_UTIL_ERROR_OUT_OF_MEMORY;
-               }
-               gif_image->ext_blocks = realloc_ptr;
-       }
-
        /* get allocated extention block */
-       _ext_block = &gif_image->ext_blocks[gif_image->ext_block_count];
+       _ext_block = (ExtensionBlock *)calloc(1, sizeof(ExtensionBlock));
+       if (_ext_block == NULL) {
+               mm_util_error("Memory allocation failed");
+               *ext_block = NULL;
+               return MM_UTIL_ERROR_OUT_OF_MEMORY;
+       }
 
        _ext_block->Function = function;
        _ext_block->ByteCount = byte_count;
        _ext_block->Bytes = (GifByteType *)calloc(1, (sizeof(GifByteType) * byte_count));
        if (_ext_block->Bytes == NULL) {
                mm_util_error("Memory allocation failed");
-               /* free all ext_blocks, TODO: free current ext_blocks */
-               for (i = 0; i < gif_image->ext_block_count; i++) {
-                       _ext_block = &gif_image->ext_blocks[i];
-                       MMUTIL_SAFE_FREE(_ext_block->Bytes);
-               }
-               MMUTIL_SAFE_FREE(gif_image->ext_blocks);
-               gif_image->ext_block_count = 0;
+               MMUTIL_SAFE_FREE(_ext_block);
                return MM_UTIL_ERROR_OUT_OF_MEMORY;
        }
 
-       gif_image->ext_block_count++;
-
        *ext_block = _ext_block;
        return MM_UTIL_ERROR_NONE;
 }
 
-int _gif_image_write_ext_blocks(gif_file_s *gif_file, gif_image_s *gif_image)
+int _gif_image_write_ext_block(gif_file_s *gif_file, gif_image_s *gif_image)
 {
        int ret = MM_UTIL_ERROR_NONE;
-       int i = 0;
        ExtensionBlock *_ext_block = NULL;
        GraphicsControlBlock graphic_control_block;
 
        mm_util_retvm_if(gif_file == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
        mm_util_retvm_if(gif_image == NULL, MM_UTIL_ERROR_INVALID_PARAMETER, "Invalid parameter");
 
-       ret = _gif_image_alloc_ext_block(gif_image, GRAPHICS_EXT_FUNC_CODE, GRAPHIC_EXT_BLOCK_SIZE, &_ext_block);
+       ret = _gif_image_create_ext_block(gif_image, GRAPHICS_EXT_FUNC_CODE, GRAPHIC_EXT_BLOCK_SIZE, &_ext_block);
        mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "_gif_image_alloc_ext_block failed");
        mm_util_retvm_if(_ext_block->Bytes == NULL, MM_UTIL_ERROR_OUT_OF_MEMORY, "_gif_image_alloc_ext_block failed");
 
@@ -584,14 +553,15 @@ int _gif_image_write_ext_blocks(gif_file_s *gif_file, gif_image_s *gif_image)
 
        EGifGCBToExtension(&graphic_control_block, _ext_block->Bytes);
 
-       for (i = 0; i < gif_image->ext_block_count; i++) {
-               _ext_block = &gif_image->ext_blocks[i];
-               mm_util_retvm_if(_ext_block == NULL, MM_UTIL_ERROR_INVALID_OPERATION, "extension block is empty");
+       if (EGifPutExtension(gif_file->GifFile, _ext_block->Function, _ext_block->ByteCount, _ext_block->Bytes) == GIF_ERROR) {
+               mm_util_error("EGifPutExtension failed due to %s", GifErrorString(gif_file->GifFile->Error));
+               ret = MM_UTIL_ERROR_INVALID_OPERATION;
+       }
 
-               if (EGifPutExtension(gif_file->GifFile, _ext_block->Function, _ext_block->ByteCount, _ext_block->Bytes) == GIF_ERROR) {
-                       mm_util_error("EGifPutExtension failed due to %s", GifErrorString(gif_file->GifFile->Error));
-                       return MM_UTIL_ERROR_INVALID_OPERATION;
-               }
+       /* release extension blocks */
+       if (_ext_block != NULL) {
+               MMUTIL_SAFE_FREE(_ext_block->Bytes);
+               MMUTIL_SAFE_FREE(_ext_block);
        }
 
        return MM_UTIL_ERROR_NONE;
@@ -702,8 +672,6 @@ int mm_util_gif_image_create(mm_gif_file_h gif_file_h, mm_gif_image_h *gif_image
        /* set default width & height */
        pImage->width = gif_file->width;
        pImage->height = gif_file->height;
-       pImage->ext_block_count = 0;
-       pImage->ext_blocks = NULL;
 
        *gif_image_h = (mm_gif_image_h)pImage;
 
@@ -740,21 +708,10 @@ int mm_util_gif_image_set_image(mm_gif_image_h gif_image_h, const unsigned char
 
 void mm_util_gif_image_destory(mm_gif_image_h gif_image_h)
 {
-       int  i = 0;
-       ExtensionBlock *_ext_block = NULL;
        gif_image_s *gif_image = (gif_image_s *)gif_image_h;
 
        mm_util_retm_if(gif_image == NULL, "Invalid parameter");
 
-       /* release extension blocks */
-       if (gif_image->ext_blocks != NULL) {
-               for (i = 0; i < gif_image->ext_block_count; i++) {
-                       _ext_block = &gif_image->ext_blocks[i];
-                       MMUTIL_SAFE_FREE(_ext_block->Bytes);
-               }
-               MMUTIL_SAFE_FREE(gif_image->ext_blocks);
-       }
-
        MMUTIL_SAFE_FREE(gif_image);
 }
 
@@ -883,13 +840,13 @@ int mm_util_gif_encode_add_image(mm_gif_file_h gif_file_h, mm_gif_image_h gif_im
                mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "mm_util_gif_encode_start failed");
        }
 
-       /* Write extension blocks */
-       ret = _gif_image_write_ext_blocks(gif_file, gif_image);
-       mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "_gif_image_write_ext_blocks failed");
+       /* Write graphic control block */
+       ret = _gif_image_write_ext_block(gif_file, gif_image);
+       mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "_gif_image_write_ext_block failed");
 
        /* Write image description & data */
        ret = _gif_image_write_image(gif_file, gif_image);
-       mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "_gif_image_write_image_desc failed");
+       mm_util_retvm_if(ret != MM_UTIL_ERROR_NONE, ret, "_gif_image_write_image failed");
 
        gif_file->GifFile->ImageCount++;