[0.0.5] roi api will return error, if roi mode isn't set 42/88642/2 accepted/tizen/common/20160928.163945
authorNAMJEONGYOON <just.nam@samsung.com>
Tue, 20 Sep 2016 05:56:36 +0000 (14:56 +0900)
committerNAMJEONGYOON <just.nam@samsung.com>
Fri, 23 Sep 2016 05:01:43 +0000 (14:01 +0900)
Change-Id: I40dd437d6382475a8e88b439ff6d190b468286f3

packaging/libmm-evas-renderer.spec
src/include/mm_evas_renderer.h
src/mm_evas_renderer.c

index 36dd435..6d3f4b2 100644 (file)
@@ -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
index 179c9f3..87103d8 100644 (file)
@@ -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 */
index c08ea96..dacc006 100644 (file)
@@ -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;
        }