assets: Avoid deadlock when done initialising asset

Avoid to hold the CACHE lock when setting the GTasks return values.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=752300
This commit is contained in:
Thibault Saunier 2015-07-13 13:48:40 +02:00
parent 50f26f1269
commit 724418b75d

View file

@ -474,7 +474,6 @@ ges_asset_cache_set_loaded (GType extractable_type, const gchar * id,
GList *tmp;
GESAsset *asset;
GESAssetCacheEntry *entry = NULL;
LOCK_CACHE;
if ((entry = _lookup_entry (extractable_type, id)) == NULL) {
UNLOCK_CACHE;
@ -509,12 +508,15 @@ ges_asset_cache_set_loaded (GType extractable_type, const gchar * id,
g_list_free (results);
return TRUE;
} else {
asset->priv->state = ASSET_INITIALIZED;
GList *results;
g_list_foreach (entry->results, (GFunc) _gtask_return_true, NULL);
g_list_free_full (entry->results, gst_object_unref);
asset->priv->state = ASSET_INITIALIZED;
results = entry->results;
entry->results = NULL;
UNLOCK_CACHE;
g_list_foreach (results, (GFunc) _gtask_return_true, NULL);
g_list_free_full (results, gst_object_unref);
}
return TRUE;