[GStreamer] Set TrackPrivateBaseGStreamer metadata information even if no client...
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Apr 2018 16:01:56 +0000 (16:01 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 16 Apr 2018 16:01:56 +0000 (16:01 +0000)
https://bugs.webkit.org/show_bug.cgi?id=184651

Patch by Thibault Saunier <tsaunier@igalia.com> on 2018-04-16
Reviewed by Philippe Normand.

We can't notify the client if none is connected, but still we need to fill our metadatas from
the provided GstTagList, especially in the case of playbin3 where the client is not set yet
at construct time but the metadata might already be preset (and won't be updated later on).

No new tests are added as we already have a few ones that are currently disabled in
the mediastream testsuite. This patch is part of the work to enable them.

* platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
(WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230669 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp

index 94e6472..2688b6a 100644 (file)
@@ -1,3 +1,20 @@
+2018-04-16  Thibault Saunier  <tsaunier@igalia.com>
+
+        [GStreamer] Set TrackPrivateBaseGStreamer metadata information even if no client is avalaible
+        https://bugs.webkit.org/show_bug.cgi?id=184651
+
+        Reviewed by Philippe Normand.
+
+        We can't notify the client if none is connected, but still we need to fill our metadatas from
+        the provided GstTagList, especially in the case of playbin3 where the client is not set yet
+        at construct time but the metadata might already be preset (and won't be updated later on).
+
+        No new tests are added as we already have a few ones that are currently disabled in
+        the mediastream testsuite. This patch is part of the work to enable them.
+
+        * platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
+        (WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged):
+
 2018-04-16  Antoine Quint  <graouts@apple.com>
 
         [Web Animations] Ensure we never return -0 through the API
index 254da78..05ba1e5 100644 (file)
@@ -172,18 +172,17 @@ bool TrackPrivateBaseGStreamer::getTag(GstTagList* tags, const gchar* tagName, S
 void TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged()
 {
     TrackPrivateBaseClient* client = m_owner->client();
-    if (!client)
-        return;
 
     GRefPtr<GstTagList> tags;
     {
         LockHolder lock(m_tagMutex);
         tags.swap(m_tags);
     }
+
     if (!tags)
         return;
 
-    if (getTag(tags.get(), GST_TAG_TITLE, m_label))
+    if (getTag(tags.get(), GST_TAG_TITLE, m_label) && client)
         client->labelChanged(m_label);
 
     AtomicString language;
@@ -194,7 +193,8 @@ void TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged()
         return;
 
     m_language = language;
-    client->languageChanged(m_language);
+    if (client)
+        client->languageChanged(m_language);
 }
 
 } // namespace WebCore