e_hwc_video_hwc_windows: check commit data is changed 84/219784/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Mon, 9 Dec 2019 11:15:30 +0000 (20:15 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Tue, 10 Dec 2019 04:18:49 +0000 (13:18 +0900)
Change-Id: I9ef07e909faab70ddd0b0fffcae56d3ea236a6dc

src/bin/video/iface/e_video_hwc_windows.c

index fc2057f049c510553e97111af6fef920f57e2401..c5ce0b5f873e2bb4ceb4defbadf058a9967f10a6 100644 (file)
@@ -22,9 +22,27 @@ struct _E_Video_Hwc_Windows
      } commit_data;
 };
 
-static void
+static Eina_Bool
 _e_video_hwc_windows_commit_data_set(E_Video_Hwc_Windows *evhw, E_Comp_Wl_Video_Buf *vbuf)
 {
+   if ((evhw->commit_data.info.src_config.size.h == vbuf->width_from_pitch) &&
+       (evhw->commit_data.info.src_config.size.v == vbuf->height_from_size) &&
+       (evhw->commit_data.info.src_config.pos.x == vbuf->content_r.x) &&
+       (evhw->commit_data.info.src_config.pos.y == vbuf->content_r.y) &&
+       (evhw->commit_data.info.src_config.pos.w == vbuf->content_r.w) &&
+       (evhw->commit_data.info.src_config.pos.h == vbuf->content_r.h) &&
+       (evhw->commit_data.info.src_config.format == vbuf->tbmfmt) &&
+       (evhw->commit_data.info.dst_pos.x == evhw->base.geo.tdm.output_r.x) &&
+       (evhw->commit_data.info.dst_pos.y == evhw->base.geo.tdm.output_r.y) &&
+       (evhw->commit_data.info.dst_pos.w == evhw->base.geo.tdm.output_r.w) &&
+       (evhw->commit_data.info.dst_pos.h == evhw->base.geo.tdm.output_r.h) &&
+       (evhw->commit_data.info.transform == vbuf->content_t) &&
+       (evhw->commit_data.buffer == vbuf->tbm_surface))
+     {
+        WRN("commit data ins't changed");
+        return EINA_FALSE;
+     }
+
    CLEAR(evhw->commit_data.info);
 
    /* Set src_config */
@@ -68,6 +86,8 @@ _e_video_hwc_windows_commit_data_set(E_Video_Hwc_Windows *evhw, E_Comp_Wl_Video_
        evhw->commit_data.info.dst_pos.x, evhw->commit_data.info.dst_pos.y,
        evhw->commit_data.info.dst_pos.w, evhw->commit_data.info.dst_pos.h,
        evhw->commit_data.info.transform);
+
+   return EINA_TRUE;
 }
 
 static void
@@ -180,6 +200,7 @@ static Eina_Bool
 _e_video_hwc_windows_iface_buffer_commit(E_Video_Hwc *evh, E_Comp_Wl_Video_Buf *vbuf)
 {
    E_Video_Hwc_Windows *evhw;
+   Eina_Bool ret;
 
    evhw = (E_Video_Hwc_Windows *)evh;
 
@@ -187,14 +208,14 @@ _e_video_hwc_windows_iface_buffer_commit(E_Video_Hwc *evh, E_Comp_Wl_Video_Buf *
 
    if (!vbuf) return EINA_TRUE;
 
-   _e_video_hwc_windows_commit_data_set(evhw, vbuf);
+   ret = _e_video_hwc_windows_commit_data_set(evhw, vbuf);
 
    // TODO:: this logic move to the hwc windows after hwc commit
 #if 1
    e_video_hwc_client_mask_update((E_Video_Hwc *)evhw);
 #endif
 
-   return EINA_TRUE;
+   return ret;
 }
 
 static Eina_Bool