video: Remove listener's link after checking that comp_data is valid. 76/224076/1
authorSeunghun Lee <shiin.lee@samsung.com>
Thu, 30 Jan 2020 01:39:39 +0000 (10:39 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Thu, 6 Feb 2020 05:56:38 +0000 (14:56 +0900)
Otherwise, it can make memory corrupted.

Change-Id: Iabb5044cd384482db1168def09b5f669700835e4

src/bin/video/iface/e_video_hwc.c

index 93fdcce9cfe1096867ae273f5769b8fc6a525d4c..00572cb2fe3369e5d338f69882c912c7d3da657a 100644 (file)
@@ -1646,8 +1646,11 @@ _e_video_hwc_client_event_init(E_Video_Hwc *evh)
 {
    /* In order to try to redraw video whenever viewport changes. */
    evh->surface_viewport_listener.notify = _e_video_hwc_cb_surface_viewport;
-   wl_signal_add(&evh->ec->comp_data->apply_viewport_signal,
-                 &evh->surface_viewport_listener);
+   if (evh->ec->comp_data)
+     {
+        wl_signal_add(&evh->ec->comp_data->apply_viewport_signal,
+                      &evh->surface_viewport_listener);
+     }
 
    evas_object_event_callback_add(evh->ec->frame, EVAS_CALLBACK_SHOW,
                                   _e_video_hwc_cb_evas_show, evh);
@@ -1665,7 +1668,9 @@ _e_video_hwc_client_event_init(E_Video_Hwc *evh)
 static void
 _e_video_hwc_client_event_deinit(E_Video_Hwc *evh)
 {
-   wl_list_remove(&evh->surface_viewport_listener.link);
+   /* links for listener have to be removed only in case comp_data is valid. */
+   if (evh->ec->comp_data)
+     wl_list_remove(&evh->surface_viewport_listener.link);
 
    evas_object_event_callback_del_full(evh->ec->frame, EVAS_CALLBACK_SHOW,
                                        _e_video_hwc_cb_evas_show, evh);