video: Do not process rendering in a handler for EVAS_CALLBACK_SHOW. 63/222463/3
authorSeunghun Lee <shiin.lee@samsung.com>
Thu, 2 Jan 2020 07:45:38 +0000 (16:45 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Thu, 16 Jan 2020 02:08:48 +0000 (02:08 +0000)
Rendering for video client in a handler for EVAS_CALLBACK_SHOW caused
making unintended information to be passed to TDM. This information has
to be made after collecting all client information, such as viewport.

Change-Id: Ife86dd2098148122af13e62a1076c1f6c592bc87

src/bin/video/iface/e_video_hwc.c
src/bin/video/iface/e_video_hwc.h

index 90fa4ad2ee40ee3e424481d0a42c0ed23243fad8..cfaeeea8ebc67c254b631ec582476b55d449fbb7 100644 (file)
@@ -1109,9 +1109,9 @@ _e_video_hwc_render_job(void *data)
         render = EINA_TRUE;
      }
 
-   if ((render) || (evh->render.buffer_change))
+   if ((render) || (evh->render.redraw))
      {
-        evh->render.buffer_change = EINA_FALSE;
+        evh->render.redraw = EINA_FALSE;
         _e_video_hwc_render(evh, __FUNCTION__);
      }
 
@@ -1608,7 +1608,7 @@ _e_video_hwc_cb_client_buffer_change(void *data, int type, void *event)
    if (e_object_is_del(E_OBJECT(ec)))
      return ECORE_CALLBACK_PASS_ON;
 
-   evh->render.buffer_change = EINA_TRUE;
+   evh->render.redraw = EINA_TRUE;
    _e_video_hwc_render_queue(evh);
 
    return ECORE_CALLBACK_PASS_ON;
@@ -1628,7 +1628,8 @@ _e_video_hwc_cb_evas_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA
    if (evh->need_force_render)
      {
         VIN("video forcely rendering..", evh->ec);
-        _e_video_hwc_render(evh, __FUNCTION__);
+        evh->render.redraw = EINA_TRUE;
+        _e_video_hwc_render_queue(evh);
      }
 
    /* if stand_alone is true, not show */
index ea36e6e2bc0d7ecbaf4223b9e1fcae28e1277025..8dfe00fa033c7bce4730e7322fe88fc12859efa3 100644 (file)
@@ -94,7 +94,7 @@ struct _E_Video_Hwc
      {
         Ecore_Job *job;
         Eina_Bool map;
-        Eina_Bool buffer_change;
+        Eina_Bool redraw;
         Eina_Bool topmost_viewport;
      } render;