asset: Fix asset cache for CLips and TrackElement with same ID
authorThibault Saunier <tsaunier@igalia.com>
Wed, 21 Aug 2019 18:41:46 +0000 (14:41 -0400)
committerThibault Saunier <tsaunier@gnome.org>
Wed, 28 Aug 2019 13:51:02 +0000 (13:51 +0000)
We clearly uniquely identify assets by both their IDs and their
extractable type, and we should make sure that you can have a
TrackElement and a Clip with the same ID.

There is one exception in our implementation which is GESFormatter
because we treat their subclasses as 1 type with different IDs.

ges/ges-asset.c

index 5cb77fe..5971b48 100644 (file)
@@ -458,16 +458,14 @@ ges_asset_init (GESAsset * self)
 
 /* Internal methods */
 
-/* Find the type that implemented the GESExtractable interface */
 static inline const gchar *
 _extractable_type_name (GType type)
 {
-  while (1) {
-    if (g_type_is_a (g_type_parent (type), GES_TYPE_EXTRACTABLE))
-      type = g_type_parent (type);
-    else
-      return g_type_name (type);
-  }
+  /* We can use `ges_asset_request (GES_TYPE_FORMATTER);` */
+  if (g_type_is_a (type, GES_TYPE_FORMATTER))
+    return g_type_name (GES_TYPE_FORMATTER);
+
+  return g_type_name (type);
 }
 
 static void