Skip to content

Commit 2dc6b52

Browse files
committed
Partial revert "[GStreamer] Misc leak fixes"
This partially reverts commit 1981132, regarding the GStreamerCaptureDeviceManager.
1 parent 8f6a732 commit 2dc6b52

2 files changed

Lines changed: 4 additions & 47 deletions

File tree

Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.cpp

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -63,39 +63,10 @@ GStreamerVideoCaptureDeviceManager& GStreamerVideoCaptureDeviceManager::singleto
6363
return manager;
6464
}
6565

66-
void teardownGStreamerCaptureDeviceManagers()
67-
{
68-
auto& audioManager = GStreamerAudioCaptureDeviceManager::singleton();
69-
audioManager.teardown();
70-
71-
auto& videoManager = GStreamerVideoCaptureDeviceManager::singleton();
72-
videoManager.teardown();
73-
}
74-
7566
GStreamerCaptureDeviceManager::~GStreamerCaptureDeviceManager()
7667
{
77-
teardown();
78-
}
79-
80-
void GStreamerCaptureDeviceManager::teardown()
81-
{
82-
GST_DEBUG_OBJECT(m_deviceMonitor.get(), "Tearing down");
83-
m_isTearingDown = true;
84-
stopMonitor();
85-
RealtimeMediaSourceCenter::singleton().removeDevicesChangedObserver(*this);
86-
m_devices.clear();
87-
m_gstreamerDevices.clear();
88-
}
89-
90-
void GStreamerCaptureDeviceManager::stopMonitor()
91-
{
92-
if (!m_deviceMonitor)
93-
return;
94-
95-
auto bus = adoptGRef(gst_device_monitor_get_bus(m_deviceMonitor.get()));
96-
gst_bus_remove_watch(bus.get());
97-
gst_device_monitor_stop(m_deviceMonitor.get());
98-
m_deviceMonitor.clear();
68+
if (m_deviceMonitor)
69+
gst_device_monitor_stop(m_deviceMonitor.get());
9970
}
10071

10172
std::optional<GStreamerCaptureDevice> GStreamerCaptureDeviceManager::gstreamerDeviceWithUID(const String& deviceID)
@@ -116,7 +87,7 @@ const Vector<CaptureDevice>& GStreamerCaptureDeviceManager::captureDevices()
11687
std::call_once(onceFlag, [] {
11788
GST_DEBUG_CATEGORY_INIT(webkitGStreamerCaptureDeviceManagerDebugCategory, "webkitcapturedevicemanager", 0, "WebKit Capture Device Manager");
11889
});
119-
if (m_devices.isEmpty() && !m_isTearingDown)
90+
if (m_devices.isEmpty())
12091
refreshCaptureDevices();
12192

12293
return m_devices;
@@ -158,12 +129,7 @@ void GStreamerCaptureDeviceManager::addDevice(GRefPtr<GstDevice>&& device)
158129

159130
void GStreamerCaptureDeviceManager::refreshCaptureDevices()
160131
{
161-
GST_DEBUG_OBJECT(m_deviceMonitor.get(), "Refreshing capture devices");
162132
m_devices.clear();
163-
m_gstreamerDevices.clear();
164-
if (m_isTearingDown)
165-
return;
166-
167133
if (!m_deviceMonitor) {
168134
m_deviceMonitor = adoptGRef(gst_device_monitor_new());
169135

Source/WebCore/platform/mediastream/gstreamer/GStreamerCaptureDeviceManager.h

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,34 +29,25 @@
2929
#include "GStreamerVideoCapturer.h"
3030
#include "RealtimeMediaSourceFactory.h"
3131

32-
#include <wtf/Noncopyable.h>
33-
3432
namespace WebCore {
3533

3634
using NodeAndFD = GStreamerVideoCapturer::NodeAndFD;
3735

38-
void teardownGStreamerCaptureDeviceManagers();
39-
40-
class GStreamerCaptureDeviceManager : public CaptureDeviceManager
41-
WTF_MAKE_NONCOPYABLE(GStreamerCaptureDeviceManager)
42-
{
36+
class GStreamerCaptureDeviceManager : public CaptureDeviceManager {
4337
public:
4438
~GStreamerCaptureDeviceManager();
4539
std::optional<GStreamerCaptureDevice> gstreamerDeviceWithUID(const String&);
4640

4741
const Vector<CaptureDevice>& captureDevices() final;
4842
virtual CaptureDevice::DeviceType deviceType() = 0;
4943

50-
void teardown();
51-
5244
private:
5345
void addDevice(GRefPtr<GstDevice>&&);
5446
void refreshCaptureDevices();
5547

5648
GRefPtr<GstDeviceMonitor> m_deviceMonitor;
5749
Vector<GStreamerCaptureDevice> m_gstreamerDevices;
5850
Vector<CaptureDevice> m_devices;
59-
bool m_isTearingDown { false };
6051
};
6152

6253
class GStreamerAudioCaptureDeviceManager final : public GStreamerCaptureDeviceManager {

0 commit comments

Comments
 (0)