media_editor_private: Clear event source not fired before overwriting it 61/275361/1 accepted/tizen/unified/20220525.010133 submit/tizen/20220524.064107
authorSangchul Lee <sc11.lee@samsung.com>
Mon, 23 May 2022 08:08:31 +0000 (17:08 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Mon, 23 May 2022 08:12:41 +0000 (17:12 +0900)
It is similar with a9e2382ff2be2d2ddf13bdd8bbb261a208c03f82 commit
of capi-media-webrtc.

[Version] 0.1.7
[Issue Type] Improvement

Change-Id: I61d5836af104e785a9f9e2318f5637ce35f34a92
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
include/media_editor_private.h
packaging/capi-media-editor.spec
src/media_editor_private.c

index a6e9c85857d5f1a66bb5ab2ffb31a133287b9498..88f04bde623ef1441ec4cfa02b0093f76bb35a86 100644 (file)
@@ -145,6 +145,15 @@ do { \
     g_free(dot_name); \
 } while (0)
 
+#define CLEAR_IDLE_CB_EVENT_SOURCE_ID(x_mediaeditor, x_idx) \
+do { \
+    if (x_mediaeditor->idle_cb_event_source_ids[x_idx] == 0) break; \
+    g_source_remove(x_mediaeditor->idle_cb_event_source_ids[x_idx]); \
+    LOG_DEBUG("mediaeditor[%p] idle_cb_event_source_ids[%d] source id[%u] is removed", \
+        x_mediaeditor, x_idx, x_mediaeditor->idle_cb_event_source_ids[x_idx]); \
+    x_mediaeditor->idle_cb_event_source_ids[x_idx] = 0; \
+} while (0)
+
 #define URI_TO_PATH_OFFSET 7
 
 #define MILLI_TO_NANO(x) ((guint64)((x) * G_GUINT64_CONSTANT(1000000)))
index fd4ade3e0e0cfe173d6376b979934122537a5976..e07c1f8dabe1ba244b194fde818173578c0df6d8 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-editor
 Summary:    A Tizen Media Editor API
-Version:    0.0.6
+Version:    0.0.7
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 6ef3d9a0f816ef6fd8e2c1ace234259342aa21da..f0f6d9fe3ce4df53f40d74e7c768391fde78e9ec 100644 (file)
@@ -382,6 +382,7 @@ static void __post_state_cb_in_idle(mediaeditor_s *editor, mediaeditor_state_e n
     editor->pend_state = new_state;
 
     locker = g_mutex_locker_new(&editor->event_src_mutex);
+    CLEAR_IDLE_CB_EVENT_SOURCE_ID(editor, data->type);
     editor->idle_cb_event_source_ids[data->type] = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, __idle_cb, data, g_free);
 
     LOG_DEBUG("state will be changed [%s] -> [%s]", __state_str[editor->state], __state_str[new_state]);
@@ -400,6 +401,7 @@ void _post_error_cb_in_idle(mediaeditor_s *editor, mediaeditor_error_e error)
     data->new.error = error;
 
     locker = g_mutex_locker_new(&editor->event_src_mutex);
+    CLEAR_IDLE_CB_EVENT_SOURCE_ID(editor, data->type);
     editor->idle_cb_event_source_ids[data->type] = g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, __idle_cb, data, g_free);
 
     LOG_DEBUG("error will occur [0x%x]", error);