mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-20 16:51:10 +00:00
asset-uri: Create a specific discoverer when discovering sync
To allow 'reintrancy'.
This was a 'regression' introduced in bad64296d9
Fixes https://gitlab.gnome.org/GNOME/pitivi/issues/2278
This commit is contained in:
parent
ce94db774d
commit
85f0e76566
1 changed files with 17 additions and 0 deletions
|
@ -568,6 +568,9 @@ ges_uri_clip_asset_request_sync (const gchar * uri, GError ** error)
|
||||||
GError *lerror = NULL;
|
GError *lerror = NULL;
|
||||||
GESUriClipAsset *asset;
|
GESUriClipAsset *asset;
|
||||||
RequestSyncData data = { 0, };
|
RequestSyncData data = { 0, };
|
||||||
|
GESUriClipAssetClass *klass = g_type_class_peek (GES_TYPE_URI_CLIP_ASSET);
|
||||||
|
GstClockTime timeout;
|
||||||
|
GstDiscoverer *previous_discoverer = klass->discoverer;
|
||||||
|
|
||||||
asset = GES_URI_CLIP_ASSET (ges_asset_request (GES_TYPE_URI_CLIP, uri,
|
asset = GES_URI_CLIP_ASSET (ges_asset_request (GES_TYPE_URI_CLIP, uri,
|
||||||
&lerror));
|
&lerror));
|
||||||
|
@ -576,11 +579,25 @@ ges_uri_clip_asset_request_sync (const gchar * uri, GError ** error)
|
||||||
return asset;
|
return asset;
|
||||||
|
|
||||||
data.ml = g_main_loop_new (NULL, TRUE);
|
data.ml = g_main_loop_new (NULL, TRUE);
|
||||||
|
g_object_get (previous_discoverer, "timeout", &timeout, NULL);
|
||||||
|
klass->discoverer = gst_discoverer_new (timeout, error);
|
||||||
|
if (!klass->discoverer) {
|
||||||
|
klass->discoverer = previous_discoverer;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_signal_connect (klass->discoverer, "discovered",
|
||||||
|
G_CALLBACK (klass->discovered), NULL);
|
||||||
|
gst_discoverer_start (klass->discoverer);
|
||||||
ges_asset_request_async (GES_TYPE_URI_CLIP, uri, NULL,
|
ges_asset_request_async (GES_TYPE_URI_CLIP, uri, NULL,
|
||||||
(GAsyncReadyCallback) asset_ready_cb, &data);
|
(GAsyncReadyCallback) asset_ready_cb, &data);
|
||||||
g_main_loop_run (data.ml);
|
g_main_loop_run (data.ml);
|
||||||
g_main_loop_unref (data.ml);
|
g_main_loop_unref (data.ml);
|
||||||
|
|
||||||
|
gst_object_unref (klass->discoverer);
|
||||||
|
klass->discoverer = previous_discoverer;
|
||||||
|
|
||||||
if (data.error) {
|
if (data.error) {
|
||||||
GST_ERROR ("Got an error requesting asset: %s", data.error->message);
|
GST_ERROR ("Got an error requesting asset: %s", data.error->message);
|
||||||
if (error != NULL)
|
if (error != NULL)
|
||||||
|
|
Loading…
Reference in a new issue