Changed location of ref/unref media format 85/74985/1 accepted/tizen/common/20160620.163306 accepted/tizen/ivi/20160620.082458 accepted/tizen/mobile/20160620.082334 accepted/tizen/tv/20160620.082359 accepted/tizen/wearable/20160620.082431 submit/tizen/20160617.072816
authorSejun Park <sejun79.park@samsung.com>
Thu, 16 Jun 2016 08:05:01 +0000 (17:05 +0900)
committerSejun Park <sejun79.park@samsung.com>
Thu, 16 Jun 2016 08:05:01 +0000 (17:05 +0900)
Change-Id: Id7f4de57e4a5b9eda843d92a4c5f2733938d27e5

src/media_packet_pool.c

index 6b1fb64d8b2c5a163c176cbd4d964b512d0884a6..43db29063aa2e1c2e5148dd6df1597d31db4eab0 100755 (executable)
@@ -75,11 +75,6 @@ int media_packet_pool_set_media_format(media_packet_pool_h pool, media_format_h
 
        pool_handle = (media_packet_pool_s *)pool;
 
-       /* increase format reference count */
-       if (media_format_ref(fmt) != MEDIA_FORMAT_ERROR_NONE) {
-               LOGE("failed to increase ref count");
-               return MEDIA_PACKET_ERROR_INVALID_OPERATION;
-       }
        pool_handle->fmt_h = fmt;
 
        return ret;
@@ -178,6 +173,13 @@ int media_packet_pool_allocate(media_packet_pool_h pool)
                LOGD("[%d]%p queued", i, pool_handle->packet[i]);
                pool_handle->curr_pool_size++;
        }
+
+       /* increase format reference count */
+       if (media_format_ref(pool_handle->fmt_h) != MEDIA_FORMAT_ERROR_NONE) {
+               LOGE("failed to increase ref count");
+               return MEDIA_PACKET_ERROR_INVALID_OPERATION;
+       }
+
        g_atomic_int_set(&pool_handle->pool_allocated, 1);
 
        return ret;
@@ -344,6 +346,14 @@ int media_packet_pool_deallocate(media_packet_pool_h pool)
                        return ret;
                }
        }
+
+       /* unreference media_format */
+       if (media_format_unref(pool_handle->fmt_h) != MEDIA_FORMAT_ERROR_NONE) {
+               LOGE("failed to decrease ref count");
+               g_mutex_unlock(&pool_handle->mutex);
+               return MEDIA_PACKET_ERROR_INVALID_OPERATION;
+       }
+
        g_mutex_unlock(&pool_handle->mutex);
 
        return ret;
@@ -371,12 +381,6 @@ int media_packet_pool_destroy(media_packet_pool_h pool)
                return MEDIA_PACKET_ERROR_INVALID_OPERATION;
        }
 
-       /* unreference media_format */
-       if (media_format_unref(pool_handle->fmt_h) != MEDIA_FORMAT_ERROR_NONE) {
-               LOGE("failed to decrease ref count");
-               return MEDIA_PACKET_ERROR_INVALID_OPERATION;
-       }
-
        g_queue_free(pool_handle->queue);
        LOGI("The packet pool handle(%p) will be destroyed..", pool_handle);
        free(pool_handle);