⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 272646 in webkit


Ignore:
Timestamp:
Feb 10, 2021, 4:43:20 AM (6 years ago)
Author:
calvaris@igalia.com
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.

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r272641 r272646  
     12021-02-10  Xabier Rodriguez Calvar  <calvaris@igalia.com>
     2
     3        [GStreamer] Make m_client WeakPtr in AudioSourceProviderGStreamer
     4        https://bugs.webkit.org/show_bug.cgi?id=217952
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        * platform/audio/AudioSourceProviderClient.h: Turned into
     9        CanMakeWeakPtr.
     10        * platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
     11        (WebCore::AudioSourceProviderGStreamer::setClient): Adapt to use
     12        WeakPtr.
     13        * platform/audio/gstreamer/AudioSourceProviderGStreamer.h: Turned
     14        m_client into WeakPtr.
     15
    1162021-02-10  Carlos Garcia Campos  <cgarcia@igalia.com>
    217
  • trunk/Source/WebCore/platform/audio/AudioSourceProviderClient.h

    r223728 r272646  
    2626#define AudioSourceProviderClient_h
    2727
     28#include <wtf/WeakPtr.h>
     29
    2830namespace WebCore {
    2931
    30 class AudioSourceProviderClient {
     32class AudioSourceProviderClient : public CanMakeWeakPtr<AudioSourceProviderClient, WeakPtrFactoryInitialization::Eager> {
    3133public:
    3234    virtual void setFormat(size_t numberOfChannels, float sampleRate) = 0;
  • trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp

    r271290 r272646  
    192192}
    193193
    194 void AudioSourceProviderGStreamer::setClient(AudioSourceProviderClient* client)
    195 {
    196     if (m_client == client)
     194void AudioSourceProviderGStreamer::setClient(AudioSourceProviderClient* newClient)
     195{
     196    if (client() == newClient)
    197197        return;
    198198
    199     GST_DEBUG("Setting up client %p (previous: %p)", client, m_client);
    200     bool previousClientWasValid = m_client;
    201     m_client = client;
     199    GST_DEBUG("Setting up client %p (previous: %p)", newClient, client());
     200    bool previousClientWasValid = !!m_client;
     201    m_client = makeWeakPtr(newClient);
    202202
    203203    // The volume element is used to mute audio playback towards the
    … …  
    208208
    209209    if (volumeElement) {
    210         bool shouldMute = m_client;
     210        bool shouldMute = !!m_client;
    211211        g_object_set(volumeElement.get(), "mute", shouldMute, nullptr);
    212212    }
  • trunk/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.h

    r268727 r272646  
    2222
    2323#include "AudioSourceProvider.h"
     24#include "AudioSourceProviderClient.h"
    2425#include "GRefPtrGStreamer.h"
    2526#include "MainThreadNotifier.h"
    … …  
    6162    void provideInput(AudioBus*, size_t framesToProcess) override;
    6263    void setClient(AudioSourceProviderClient*) override;
    63     const AudioSourceProviderClient* client() const { return m_client; }
     64    const AudioSourceProviderClient* client() const { return m_client.get(); }
    6465
    6566    void handleNewDeinterleavePad(GstPad*);
    … …  
    7980    Ref<MainThreadNotifier<MainThreadNotification>> m_notifier;
    8081    GRefPtr<GstElement> m_audioSinkBin;
    81     AudioSourceProviderClient* m_client { nullptr };
     82    WeakPtr<AudioSourceProviderClient> m_client;
    8283    int m_deinterleaveSourcePads { 0 };
    8384    HashMap<int, GRefPtr<GstAdapter>> m_adapters;
Note: See TracChangeset for help on using the changeset viewer.