evas/gl_generic: Check for errors when calling tbm 38/52238/2
authorJoogab Yun <joogab.yun@samsung.com>
Fri, 20 Nov 2015 05:56:35 +0000 (14:56 +0900)
committerjoogab yun <joogab.yun@samsung.com>
Wed, 25 Nov 2015 06:15:28 +0000 (22:15 -0800)
 surface map/unmap

tbm_surface_map/unmap might fail and return error, so we need to check
the return value of these APIs.

From 8c2f9a2669b27fcb904205d7422971648f86b246 Mon Sep 17 00:00:00 2001
From: Dongyeon Kim <dy5.kim@samsung.com>

Change-Id: I16bc30434cb72740b0b19b13a7c28ee9b74abad2

src/modules/evas/engines/gl_generic/evas_engine.c

index 3e491dd..b9d83cd 100644 (file)
@@ -738,10 +738,15 @@ eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data, i
         if ((im->gc->shared->info.sec_tbm_surface) && (secsym_tbm_surface_map))
           {
              tbm_surface_info_s info;
-             secsym_tbm_surface_map(im->tex->pt->dyn.buffer,
+             if (secsym_tbm_surface_map(im->tex->pt->dyn.buffer,
                                     TBM_SURF_OPTION_READ|TBM_SURF_OPTION_WRITE,
-                                    &info);
-             *image_data = im->tex->pt->dyn.data = (DATA32 *) info.planes[0].ptr;
+                                    &info))
+               {
+                  ERR("tbm_surface_map failed!");
+                  *image_data = im->tex->pt->dyn.data = NULL;
+               }
+             else
+               *image_data = im->tex->pt->dyn.data = (DATA32 *) info.planes[0].ptr;
           }
         else if ((im->gc->shared->info.sec_image_map) && (secsym_eglMapImageSEC))
           {
@@ -914,7 +919,10 @@ eng_image_data_put(void *data, void *image, DATA32 *image_data)
                  if (im->tex->pt->dyn.checked_out == 0)
                    {
                       if (im->gc->shared->info.sec_tbm_surface)
-                        secsym_tbm_surface_unmap(im->tex->pt->dyn.buffer);
+                        {
+                           if (secsym_tbm_surface_unmap(im->tex->pt->dyn.buffer))
+                             ERR("tbm_surface_unmap failed!");
+                        }
                       else if (im->gc->shared->info.sec_image_map)
                         {
                            void *disp = disp = re->window_egl_display_get(re->software.ob);