From bd8dfdbb5a44f2767131e6efdd11320e8a4c393c Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Tue, 14 Nov 2017 13:43:06 +0900 Subject: [PATCH] Remove remained idle callback when destroy handle The crash could be occurred if idle callback is called after so is unloaded. To avoid it, remove not-called idle event when destroy handle. [Version] 0.3.11 [Profile] Common [Issue Type] Bug fix [Dependency module] N/A [Test] [M(T) - Boot=(OK), sdb=(OK), Home=(OK), Touch=(OK), Version=tizen-unified_20171107.4] Change-Id: Icecce81cc7e8217beffd112733bc68e6170f0240 Signed-off-by: Jeongmo Yang --- packaging/capi-media-camera.spec | 2 +- src/camera.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/packaging/capi-media-camera.spec b/packaging/capi-media-camera.spec index b2b5775..b7fa839 100644 --- a/packaging/capi-media-camera.spec +++ b/packaging/capi-media-camera.spec @@ -1,6 +1,6 @@ Name: capi-media-camera Summary: A Camera API -Version: 0.3.10 +Version: 0.3.11 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/camera.c b/src/camera.c index e5c2403..2ef7034 100644 --- a/src/camera.c +++ b/src/camera.c @@ -1841,6 +1841,20 @@ static void _camera_deactivate_idle_event_all(camera_cb_info_s *cb_info) continue; } + if (g_idle_remove_by_data(cam_idle_event)) { + LOGW("remove idle event %p done", cam_idle_event); + + cb_info->idle_event_list = g_list_remove(cb_info->idle_event_list, (gpointer)cam_idle_event); + + g_mutex_clear(&cam_idle_event->event_mutex); + g_free(cam_idle_event); + cam_idle_event = NULL; + + continue; + } + + LOGW("remove idle event %p failed", cam_idle_event); + if (!g_mutex_trylock(&cam_idle_event->event_mutex)) { LOGW("lock failed, %p event is calling now", cam_idle_event); @@ -2762,6 +2776,8 @@ int camera_destroy(camera_h camera) pc = NULL; } + LOGD("ret : 0x%x", ret); + return ret; } -- 2.7.4