Title: [272646] trunk/Source/WebCore
Revision
272646
Author
calva...@igalia.com
Date
2021-02-10 04:43:20 -0800 (Wed, 10 Feb 2021)

Log Message

[GStreamer] Make m_client WeakPtr in AudioSourceProviderGStreamer
https://bugs.webkit.org/show_bug.cgi?id=217952

Reviewed by Carlos Garcia Campos.

* platform/audio/AudioSourceProviderClient.h: Turned into
CanMakeWeakPtr.
* platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
(WebCore::AudioSourceProviderGStreamer::setClient): Adapt to use
WeakPtr.
* platform/audio/gstreamer/AudioSourceProviderGStreamer.h: Turned
m_client into WeakPtr.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (272645 => 272646)


--- trunk/Source/WebCore/ChangeLog	2021-02-10 12:04:48 UTC (rev 272645)
+++ trunk/Source/WebCore/ChangeLog	2021-02-10 12:43:20 UTC (rev 272646)
@@ -1,3 +1,18 @@
+2021-02-10  Xabier Rodriguez Calvar  <calva...@igalia.com>
+
+        [GStreamer] Make m_client WeakPtr in AudioSourceProviderGStreamer
+        https://bugs.webkit.org/show_bug.cgi?id=217952
+
+        Reviewed by Carlos Garcia Campos.
+
+        * platform/audio/AudioSourceProviderClient.h: Turned into
+        CanMakeWeakPtr.
+        * platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
+        (WebCore::AudioSourceProviderGStreamer::setClient): Adapt to use
+        WeakPtr.
+        * platform/audio/gstreamer/AudioSourceProviderGStreamer.h: Turned
+        m_client into WeakPtr.
+
 2021-02-10  Carlos Garcia Campos  <cgar...@igalia.com>
 
         [SOUP] Simplify ResourceRequest and ResourceResponse

Modified: trunk/Source/WebCore/platform/audio/AudioSourceProviderClient.h (272645 => 272646)


--- trunk/Source/WebCore/platform/audio/AudioSourceProviderClient.h	2021-02-10 12:04:48 UTC (rev 272645)
+++ trunk/Source/WebCore/platform/audio/AudioSourceProviderClient.h	2021-02-10 12:43:20 UTC (rev 272646)
@@ -25,9 +25,11 @@
 #ifndef AudioSourceProviderClient_h
 #define AudioSourceProviderClient_h
 
+#include <wtf/WeakPtr.h>
+
 namespace WebCore {
 
-class AudioSourceProviderClient {
+class AudioSourceProviderClient : public CanMakeWeakPtr<AudioSourceProviderClient, WeakPtrFactoryInitialization::Eager> {
 public:
     virtual void setFormat(size_t numberOfChannels, float sampleRate) = 0;
 protected:

Modified: trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp (272645 => 272646)


--- trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp	2021-02-10 12:04:48 UTC (rev 272645)
+++ trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp	2021-02-10 12:43:20 UTC (rev 272646)
@@ -191,14 +191,14 @@
     return GST_FLOW_OK;
 }
 
-void AudioSourceProviderGStreamer::setClient(AudioSourceProviderClient* client)
+void AudioSourceProviderGStreamer::setClient(AudioSourceProviderClient* newClient)
 {
-    if (m_client == client)
+    if (client() == newClient)
         return;
 
-    GST_DEBUG("Setting up client %p (previous: %p)", client, m_client);
-    bool previousClientWasValid = m_client;
-    m_client = client;
+    GST_DEBUG("Setting up client %p (previous: %p)", newClient, client());
+    bool previousClientWasValid = !!m_client;
+    m_client = makeWeakPtr(newClient);
 
     // The volume element is used to mute audio playback towards the
     // autoaudiosink. This is needed to avoid double playback of audio
@@ -207,7 +207,7 @@
     auto volumeElement = adoptGRef(gst_bin_get_by_name(GST_BIN_CAST(m_audioSinkBin.get()), "volume"));
 
     if (volumeElement) {
-        bool shouldMute = m_client;
+        bool shouldMute = !!m_client;
         g_object_set(volumeElement.get(), "mute", shouldMute, nullptr);
     }
 

Modified: trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.h (272645 => 272646)


--- trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.h	2021-02-10 12:04:48 UTC (rev 272645)
+++ trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.h	2021-02-10 12:43:20 UTC (rev 272646)
@@ -21,6 +21,7 @@
 #if ENABLE(WEB_AUDIO) && ENABLE(VIDEO) && USE(GSTREAMER)
 
 #include "AudioSourceProvider.h"
+#include "AudioSourceProviderClient.h"
 #include "GRefPtrGStreamer.h"
 #include "MainThreadNotifier.h"
 #include <gst/gst.h>
@@ -60,7 +61,7 @@
 
     void provideInput(AudioBus*, size_t framesToProcess) override;
     void setClient(AudioSourceProviderClient*) override;
-    const AudioSourceProviderClient* client() const { return m_client; }
+    const AudioSourceProviderClient* client() const { return m_client.get(); }
 
     void handleNewDeinterleavePad(GstPad*);
     void deinterleavePadsConfigured();
@@ -78,7 +79,7 @@
     };
     Ref<MainThreadNotifier<MainThreadNotification>> m_notifier;
     GRefPtr<GstElement> m_audioSinkBin;
-    AudioSourceProviderClient* m_client { nullptr };
+    WeakPtr<AudioSourceProviderClient> m_client;
     int m_deinterleaveSourcePads { 0 };
     HashMap<int, GRefPtr<GstAdapter>> m_adapters;
     unsigned long m_deinterleavePadAddedHandlerId { 0 };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to