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