uri-asset: Ensure that the discoverer stops on deinit.
authorYeongjin Jeong <yeongjin.jeong@navercorp.com>
Mon, 15 Apr 2019 09:37:58 +0000 (18:37 +0900)
committerYeongjin Jeong <yeongjin.jeong@navercorp.com>
Mon, 15 Apr 2019 09:37:58 +0000 (18:37 +0900)
Discoverer maintain a referernce on the discoverer object while
the async timeout callback is alive to prevent a potential crash
if the object is freed while the callback is pending.

But if g_main_context is released before calling the timeout callback,
the discoverer pointer which was weak referenced from GESUriClipAssetClass
will not be disposed because the discoverer object is not finalized.

ges/ges-uri-asset.c

index 18f1470..e5cf547 100644 (file)
@@ -773,6 +773,8 @@ ges_uri_source_asset_get_filesource_asset (GESUriSourceAsset * asset)
 void
 _ges_uri_asset_cleanup (void)
 {
+  if (discoverer)
+    gst_discoverer_stop (discoverer);
   g_clear_object (&discoverer);
   if (parent_newparent_table) {
     g_hash_table_destroy (parent_newparent_table);