add lock to avoid to decode 8k video in two thread 24/197424/1
authorchengyj1985 <yujie.cheng@samsung.com>
Fri, 11 Jan 2019 05:59:09 +0000 (13:59 +0800)
committerchengyj1985 <yujie.cheng@samsung.com>
Fri, 11 Jan 2019 06:05:06 +0000 (14:05 +0800)
Change-Id: I82b1fa7740fe48d8230d9f12f2775d4449179dde

src/scanner-v2/media-scanner-extract-v2.c

index a5d7aa5..a2a883c 100755 (executable)
@@ -52,6 +52,8 @@ bool g_directory_extract_processing;
 int stg_extract_status;
 
 GMutex extract_item_mutex;
+GMutex decode_mutex;
+
 s_extract_item* cancel_extract_item = NULL;
 s_extract_item* cur_extract_item = NULL;
 
@@ -85,6 +87,7 @@ int msc_init_extract_thread()
        g_mutex_init(&extract_data_mutex);
 
        g_mutex_init(&extract_item_mutex);
+       g_mutex_init(&decode_mutex);
 
        g_cond_init(&extract_data_cond);
 
@@ -101,6 +104,7 @@ int msc_deinit_extract_thread()
        g_mutex_clear(&extract_data_mutex);
 
        g_mutex_clear(&extract_item_mutex);
+       g_mutex_clear(&decode_mutex);
 
        g_cond_clear(&extract_data_cond);
 
@@ -141,7 +145,9 @@ int __msc_folder_bulk_extract(sqlite3 *handle, const char* storage_id, int stora
                db_data = g_array_index(data_array, ms_item_info_s*, 0);
                g_array_remove_index(data_array, 0);
 
-               tmp_ret = ms_update_one_extract_item(handle, storage_id, storage_type, db_data);
+               g_mutex_lock(&decode_mutex);
+               tmp_ret = ms_update_one_extract_item(handle, storage_id, storage_type, db_data, burst);
+               g_mutex_unlock(&decode_mutex);
                if (tmp_ret == MS_MEDIA_ERR_NONE)
                        extract_count++;
                else if (tmp_ret == MS_MEDIA_ERR_FILE_IO)