diff --git a/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp b/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp index 70652a3eecbf0..443cfc378aac7 100644 --- a/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp +++ b/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp @@ -351,13 +351,17 @@ void PeerConnectionBackend::setRemoteDescriptionSucceeded(std::optionalsetShouldFireMuteEventImmediately(true); track->source().setMuted(true); track->setShouldFireMuteEventImmediately(false); - if (m_peerConnection.isClosed()) + if (m_peerConnection.isClosed()) { + DEBUG_LOG(LOGIDENTIFIER, "PeerConnection closed while processing muted tracks"); return; + } } + DEBUG_LOG(LOGIDENTIFIER, "Removing ", removeList.size(), " tracks"); for (auto& pair : removeList) { pair.stream->privateStream().removeTrack(pair.track->privateTrack()); - if (m_peerConnection.isClosed()) + if (m_peerConnection.isClosed()) { + DEBUG_LOG(LOGIDENTIFIER, "PeerConnection closed while removing tracks"); return; + } } + DEBUG_LOG(LOGIDENTIFIER, "Adding ", addList.size(), " tracks"); for (auto& pair : addList) { pair.stream->addTrackFromPlatform(pair.track.copyRef()); - if (m_peerConnection.isClosed()) + if (m_peerConnection.isClosed()) { + DEBUG_LOG(LOGIDENTIFIER, "PeerConnection closed while adding tracks"); return; + } } + DEBUG_LOG(LOGIDENTIFIER, "Dispatching ", trackEventList.size(), " track events"); for (auto& event : trackEventList) { RefPtr track = event->track(); m_peerConnection.dispatchEvent(event); - if (m_peerConnection.isClosed()) + if (m_peerConnection.isClosed()) { + DEBUG_LOG(LOGIDENTIFIER, "PeerConnection closed while dispatching track events"); return; + } track->source().setMuted(false); } diff --git a/Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp b/Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp index 6b719b518a2f3..6ba3fc99b4cc5 100644 --- a/Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp +++ b/Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.cpp @@ -69,9 +69,26 @@ GStreamerPeerConnectionBackend::GStreamerPeerConnectionBackend(RTCPeerConnection , m_endpoint(GStreamerMediaEndpoint::create(*this)) { disableICECandidateFiltering(); + logger().addObserver(*this); } -GStreamerPeerConnectionBackend::~GStreamerPeerConnectionBackend() = default; +GStreamerPeerConnectionBackend::~GStreamerPeerConnectionBackend() +{ + logger().removeObserver(*this); +} + +void GStreamerPeerConnectionBackend::didLogMessage(const WTFLogChannel&, WTFLogLevel, Vector&& values) +{ +#ifndef GST_DISABLE_GST_DEBUG + StringBuilder builder; + for (auto& [_, value] : values) + builder.append(value); + + GST_DEBUG_OBJECT(m_endpoint->pipeline(), "%s", builder.toString().utf8().data()); +#else + UNUSED_PARAM(values); +#endif +} void GStreamerPeerConnectionBackend::suspend() { diff --git a/Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h b/Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h index 33920c274ce16..47fb1d5487dda 100644 --- a/Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h +++ b/Source/WebCore/Modules/mediastream/gstreamer/GStreamerPeerConnectionBackend.h @@ -58,12 +58,14 @@ struct GStreamerIceCandidate { String candidate; }; -class GStreamerPeerConnectionBackend final : public PeerConnectionBackend { +class GStreamerPeerConnectionBackend final : public PeerConnectionBackend, public Logger::Observer { WTF_MAKE_FAST_ALLOCATED; public: explicit GStreamerPeerConnectionBackend(RTCPeerConnection&); ~GStreamerPeerConnectionBackend(); + void didLogMessage(const WTFLogChannel&, WTFLogLevel, Vector&&) final; + private: void close() final; void doCreateOffer(RTCOfferOptions&&) final;