video: Fix segfaults running render job with deleted E_Client 16/251416/1 accepted/tizen/6.0/unified/20210114.040248 submit/tizen_6.0/20210113.111350
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 13 Jan 2021 10:05:33 +0000 (19:05 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Wed, 13 Jan 2021 10:34:29 +0000 (10:34 +0000)
Rendering job relies on 'comp_data' field of E_Client, and 'comp_data'
gets invalid at some point after E_Client is deleted.
Since there is no way to know when 'comp_data' gets invalid exactly,
it checks if E_Client is deleted whenever render job is needed.

Change-Id: I472abb606795540fbd79f55cf2323596a244c4e2

src/bin/video/iface/e_video_hwc.c

index a28ac107e558c0830dd2d075bf00f480b0153b2b..f27a6d5b8c471654750e0c49b7dbd034a083ff61 100644 (file)
@@ -1176,6 +1176,9 @@ _e_video_hwc_render_job(void *data)
    evh = data;
    evh->render.job = NULL;
 
+   if (e_object_is_del(E_OBJECT(evh->ec)))
+     return;
+
    if (evh->render.map)
      {
         evh->render.map = EINA_FALSE;