From 3c6bb9794e53aa9708173f7fe5be84209c5b812e Mon Sep 17 00:00:00 2001 From: NAMJEONGYOON Date: Tue, 20 Sep 2016 14:56:36 +0900 Subject: [PATCH] [0.0.5] roi api will return error, if roi mode isn't set Change-Id: I40dd437d6382475a8e88b439ff6d190b468286f3 --- packaging/libmm-evas-renderer.spec | 2 +- src/include/mm_evas_renderer.h | 2 +- src/mm_evas_renderer.c | 31 +++++++++++++++++++++---------- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/packaging/libmm-evas-renderer.spec b/packaging/libmm-evas-renderer.spec index 36dd435..6d3f4b2 100644 --- a/packaging/libmm-evas-renderer.spec +++ b/packaging/libmm-evas-renderer.spec @@ -1,6 +1,6 @@ Name: libmm-evas-renderer Summary: Multimedia Framework Evas Renderer Library -Version: 0.0.4 +Version: 0.0.5 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/include/mm_evas_renderer.h b/src/include/mm_evas_renderer.h index 179c9f3..87103d8 100644 --- a/src/include/mm_evas_renderer.h +++ b/src/include/mm_evas_renderer.h @@ -146,7 +146,7 @@ int mm_evas_renderer_get_rotation(MMHandleType handle, int *rotate); int mm_evas_renderer_set_geometry(MMHandleType handle, int mode); int mm_evas_renderer_get_geometry(MMHandleType handle, int *mode); /* set and get coordinate and resolution value for the destination */ -/* it would be better not to call set_geometry for DISP_GEO_METHOD_CUSTOM_ROI */ +/* DISP_GEO_METHOD_CUSTOM_ROI should be set before */ int mm_evas_renderer_set_roi_area(MMHandleType handle, int x, int y, int w, int h); int mm_evas_renderer_get_roi_area(MMHandleType handle, int *x, int *y, int *w, int *h); /* set and get flip value */ diff --git a/src/mm_evas_renderer.c b/src/mm_evas_renderer.c index c08ea96..dacc006 100644 --- a/src/mm_evas_renderer.c +++ b/src/mm_evas_renderer.c @@ -1038,7 +1038,14 @@ static int _mm_evas_renderer_make_flush_buffer(mm_evas_info *evas_info) goto ERROR; } - LOGD("src size(%d), dst size(%d)", src_info.size, dst_info.size); + if (src_info.size != dst_info.size) { + LOGE("src size(%d), dst size(%d)!!!", src_info.size, dst_info.size); + if (tbm_surface_unmap(src_tbm_surf)) + LOGW("[src] unmap is failed"); + if (tbm_surface_unmap(flush_buffer->tbm_surf)) + LOGW("[dst] unmap is failed"); + goto ERROR; + } /* copy buffer */ switch (src_info.format) { @@ -1521,18 +1528,22 @@ int mm_evas_renderer_set_roi_area(MMHandleType handle, int x, int y, int w, int return MM_ERROR_RESOURCE_NOT_INITIALIZED; } if (!w || !h) { - LOGW("invalid resolution"); + LOGE("invalid resolution"); + return MM_ERROR_INVALID_ARGUMENT; + } + if (evas_info->display_geometry_method != DISP_GEO_METHOD_CUSTOM_ROI) { + LOGE("invalid mode"); return MM_ERROR_INVALID_ARGUMENT; } - /* display mode is set to DISP_GEO_METHOD_CUSTOM_ROI internally */ - if (evas_info->display_geometry_method != DISP_GEO_METHOD_CUSTOM_ROI) + if (evas_info->dst_roi.x != x || evas_info->dst_roi.y != y + || evas_info->dst_roi.w != w || evas_info->dst_roi.h != h) { evas_info->update_needed = TRUE; - evas_info->display_geometry_method = DISP_GEO_METHOD_CUSTOM_ROI; - evas_info->dst_roi.x = x; - evas_info->dst_roi.y = y; - evas_info->dst_roi.w = w; - evas_info->dst_roi.h = h; + evas_info->dst_roi.x = x; + evas_info->dst_roi.y = y; + evas_info->dst_roi.w = w; + evas_info->dst_roi.h = h; + } /* pipe_write could be needed because ratio can be changed on pause state */ if (evas_info->epipe) { @@ -1563,7 +1574,7 @@ int mm_evas_renderer_get_roi_area(MMHandleType handle, int *x, int *y, int *w, i return MM_ERROR_RESOURCE_NOT_INITIALIZED; } if (evas_info->display_geometry_method != DISP_GEO_METHOD_CUSTOM_ROI) { - LOGW("invalid mode"); + LOGE("invalid mode"); return MM_ERROR_INVALID_ARGUMENT; } -- 2.7.4