e_comp_wl_capture: fix transform buffer format when source buffer is shm 77/296577/2
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 1 Aug 2023 07:29:38 +0000 (16:29 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Tue, 1 Aug 2023 23:40:42 +0000 (23:40 +0000)
if source buffer is shm, tbm_surface of td is null.

Change-Id: I149146e62e3ee784486108cc1d0966fa8968ceb0

src/bin/e_comp_wl_capture.c

index ab9ab99c1af8ffee545f70323f146f258bcefae9..eba2583d6169f2227bea7bfb1ed078aa840fe828 100644 (file)
@@ -706,6 +706,19 @@ _e_capture_image_data_pixman_format_get_from_tbm_surface(tbm_format format)
      }
 }
 
+static tbm_format
+_e_capture_image_data_tbm_format_get_from_pixman_format(pixman_format_code_t format)
+{
+   switch(format)
+     {
+      case PIXMAN_a8r8g8b8 : return TBM_FORMAT_ARGB8888;
+      case PIXMAN_x8r8g8b8 : return TBM_FORMAT_XRGB8888;
+      case PIXMAN_a8b8g8r8 : return TBM_FORMAT_ABGR8888;
+      case PIXMAN_x8b8g8r8 : return TBM_FORMAT_XBGR8888;
+      default:               return TBM_FORMAT_XRGB8888;
+     }
+}
+
 static pixman_format_code_t
 _e_capture_image_data_pixman_format_get_from_shm_buffer(uint32_t format)
 {
@@ -859,7 +872,7 @@ _e_capture_image_data_transform(Thread_Data *td, int w, int h)
         tw = w, th = h;
      }
 
-   transform_surface = tbm_surface_create(tw, th, tbm_surface_get_format(td->tbm_surface));
+   transform_surface = tbm_surface_create(tw, th, _e_capture_image_data_tbm_format_get_from_pixman_format(dst_format));
    EINA_SAFETY_ON_NULL_GOTO(transform_surface, clean_up);
 
    res = tbm_surface_map(transform_surface, TBM_SURF_OPTION_WRITE, &info);