Modified: trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp (277437 => 277438)
--- trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp 2021-05-13 16:18:32 UTC (rev 277437)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp 2021-05-13 17:03:39 UTC (rev 277438)
@@ -301,7 +301,7 @@
priv->minimumBlocksize = gst_base_src_get_blocksize(GST_BASE_SRC_CAST(src));
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(priv->dataMutex);
+ auto members = holdLock(priv->dataMutex);
members->adapter = adoptGRef(gst_adapter_new());
webkitWebSrcReset(src, members, ResetType::Hard);
@@ -346,7 +346,7 @@
g_value_set_string(value, priv->originalURI.data());
break;
case PROP_RESOLVED_LOCATION: {
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(priv->dataMutex);
+ auto members = holdLock(priv->dataMutex);
g_value_set_string(value, members->redirectedURI.isNull() ? priv->originalURI.data() : members->redirectedURI.data());
break;
}
@@ -376,7 +376,7 @@
GST_DEBUG_OBJECT(src, "context type: %s", gst_context_get_context_type(context));
if (gst_context_has_context_type(context, WEBKIT_WEB_SRC_PLAYER_CONTEXT_TYPE_NAME)) {
const GValue* value = gst_structure_get_value(gst_context_get_structure(context), "player");
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(priv->dataMutex);
+ auto members = holdLock(priv->dataMutex);
members->player = reinterpret_cast<MediaPlayer*>(g_value_get_pointer(value));
}
GST_ELEMENT_CLASS(parent_class)->set_context(element, context);
@@ -459,7 +459,7 @@
GstBaseSrc* baseSrc = GST_BASE_SRC_CAST(pushSrc);
WebKitWebSrc* src = ""
WebKitWebSrcPrivate* priv = src->priv;
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(priv->dataMutex);
+ auto members = holdLock(priv->dataMutex);
// We need members->player to make requests. There are two mechanisms for this.
//
@@ -689,7 +689,7 @@
ASSERT(!isMainThread());
RunLoop::main().dispatch([protector = WTF::ensureGRef(src), request = WTFMove(request), requestNumber = members->requestNumber] {
WebKitWebSrcPrivate* priv = protector->priv;
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(priv->dataMutex);
+ auto members = holdLock(priv->dataMutex);
// Ignore this task (not making any HTTP request) if by now WebKitWebSrc streaming thread is already waiting
// for a different request. There is no point anymore in sending this one.
if (members->requestNumber != requestNumber) {
@@ -716,7 +716,7 @@
{
WebKitWebSrc* src = ""
// basesrc will always call unLock() and unLockStop() before calling this. See gst_base_src_stop().
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
webkitWebSrcReset(src, members, ResetType::Hard);
GST_DEBUG_OBJECT(src, "Stopped WebKitWebSrc");
return TRUE;
@@ -725,7 +725,7 @@
static gboolean webKitWebSrcGetSize(GstBaseSrc* baseSrc, guint64* size)
{
WebKitWebSrc* src = ""
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
GST_DEBUG_OBJECT(src, "haveSize: %s, size: %" G_GUINT64_FORMAT, boolForPrinting(members->haveSize), members->size);
if (members->haveSize) {
@@ -739,7 +739,7 @@
static gboolean webKitWebSrcIsSeekable(GstBaseSrc* baseSrc)
{
WebKitWebSrc* src = ""
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
GST_DEBUG_OBJECT(src, "isSeekable: %s", boolForPrinting(members->isSeekable));
return members->isSeekable;
}
@@ -756,7 +756,7 @@
ASSERT(GST_ELEMENT(baseSrc)->current_state < GST_STATE_PAUSED || webKitWebSrcIsSeekable(baseSrc));
WebKitWebSrc* src = ""
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
GST_DEBUG_OBJECT(src, "Seek segment: (%" G_GUINT64_FORMAT "-%" G_GUINT64_FORMAT ") Position previous to seek: %" G_GUINT64_FORMAT, segment->start, segment->stop, members->readPosition);
@@ -786,7 +786,7 @@
if (GST_QUERY_TYPE(query) == GST_QUERY_URI) {
gst_query_set_uri(query, priv->originalURI.data());
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
if (!members->redirectedURI.isNull())
gst_query_set_uri_redirection(query, members->redirectedURI.data());
result = TRUE;
@@ -809,7 +809,7 @@
static gboolean webKitWebSrcUnLock(GstBaseSrc* baseSrc)
{
WebKitWebSrc* src = ""
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
GST_DEBUG_OBJECT(src, "Unlock");
members->isFlushing = true;
@@ -840,7 +840,7 @@
static gboolean webKitWebSrcUnLockStop(GstBaseSrc* baseSrc)
{
WebKitWebSrc* src = ""
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
GST_DEBUG_OBJECT(src, "Unlock stop");
members->isFlushing = false;
webkitWebSrcReset(src, members, ResetType::Soft);
@@ -926,7 +926,7 @@
void webKitWebSrcSetMediaPlayer(WebKitWebSrc* src, WebCore::MediaPlayer* player, const String& referrer)
{
ASSERT(player);
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
members->player = player;
members->referrer = referrer;
}
@@ -933,7 +933,7 @@
bool webKitSrcPassedCORSAccessCheck(WebKitWebSrc* src)
{
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
return members->didPassAccessControlCheck;
}
@@ -988,7 +988,7 @@
ASSERT(isMainThread());
WebKitWebSrc* src = ""
WebKitWebSrcPrivate* priv = src->priv;
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(priv->dataMutex);
+ auto members = holdLock(priv->dataMutex);
if (members->requestNumber != m_requestNumber) {
completionHandler(ShouldContinuePolicyCheck::No);
return;
@@ -1094,7 +1094,7 @@
WebKitWebSrc* src = ""
WebKitWebSrcPrivate* priv = src->priv;
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(priv->dataMutex);
+ auto members = holdLock(priv->dataMutex);
if (members->requestNumber != m_requestNumber)
return;
@@ -1130,7 +1130,7 @@
{
ASSERT(isMainThread());
WebKitWebSrc* src = ""
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
if (members->requestNumber != m_requestNumber)
return;
@@ -1143,7 +1143,7 @@
{
ASSERT(isMainThread());
WebKitWebSrc* src = ""
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
if (members->requestNumber != m_requestNumber)
return;
@@ -1160,7 +1160,7 @@
{
ASSERT(isMainThread());
WebKitWebSrc* src = ""
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
if (members->requestNumber != m_requestNumber)
return;
@@ -1170,7 +1170,7 @@
bool webKitSrcWouldTaintOrigin(WebKitWebSrc* src, const SecurityOrigin& origin)
{
- DataMutex<WebKitWebSrcPrivate::StreamingMembers>::LockedWrapper members(src->priv->dataMutex);
+ auto members = holdLock(src->priv->dataMutex);
auto* cachedResourceStreamingClient = reinterpret_cast<CachedResourceStreamingClient*>(members->resource->client());
for (auto& responseOrigin : cachedResourceStreamingClient->securityOrigins()) {
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceTrackGStreamer.cpp (277437 => 277438)
--- trunk/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceTrackGStreamer.cpp 2021-05-13 16:18:32 UTC (rev 277437)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourceTrackGStreamer.cpp 2021-05-13 17:03:39 UTC (rev 277438)
@@ -61,7 +61,7 @@
bool MediaSourceTrackGStreamer::isReadyForMoreSamples()
{
ASSERT(isMainThread());
- WTF::DataMutex<TrackQueue>::LockedWrapper queue(m_queueDataMutex);
+ auto queue = holdLock(m_queueDataMutex);
return !queue->isFull();
}
@@ -68,7 +68,7 @@
void MediaSourceTrackGStreamer::notifyWhenReadyForMoreSamples(TrackQueue::LowLevelHandler&& handler)
{
ASSERT(isMainThread());
- WTF::DataMutex<TrackQueue>::LockedWrapper queue(m_queueDataMutex);
+ auto queue = holdLock(m_queueDataMutex);
queue->notifyWhenLowLevel(WTFMove(handler));
}
@@ -75,7 +75,7 @@
void MediaSourceTrackGStreamer::enqueueObject(GRefPtr<GstMiniObject>&& object)
{
ASSERT(isMainThread());
- WTF::DataMutex<TrackQueue>::LockedWrapper queue(m_queueDataMutex);
+ auto queue = holdLock(m_queueDataMutex);
queue->enqueueObject(WTFMove(object));
}
@@ -82,7 +82,7 @@
void MediaSourceTrackGStreamer::clearQueue()
{
ASSERT(isMainThread());
- WTF::DataMutex<TrackQueue>::LockedWrapper queue(m_queueDataMutex);
+ auto queue = holdLock(m_queueDataMutex);
queue->clear();
}
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp (277437 => 277438)
--- trunk/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp 2021-05-13 16:18:32 UTC (rev 277437)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp 2021-05-13 17:03:39 UTC (rev 277438)
@@ -344,7 +344,7 @@
// Unblock the streaming thread.
RefPtr<Stream>& stream = WEBKIT_MEDIA_SRC_PAD(pad)->priv->stream;
{
- DataMutex<Stream::StreamingMembers>::LockedWrapper streamingMembers(stream->streamingMembersDataMutex);
+ auto streamingMembers = holdLock(stream->streamingMembersDataMutex);
streamingMembers->isFlushing = true;
streamingMembers->padLinkedOrFlushedCondition.notifyOne();
streamingMembers->queueChangedOrFlushedCondition.notifyOne();
@@ -354,7 +354,7 @@
// Otherwise a deadlock would occur as the next function tries to join the thread.
gst_pad_stop_task(pad);
{
- DataMutex<Stream::StreamingMembers>::LockedWrapper streamingMembers(stream->streamingMembersDataMutex);
+ auto streamingMembers = holdLock(stream->streamingMembersDataMutex);
streamingMembers->isFlushing = false;
}
}
@@ -364,7 +364,7 @@
static void webKitMediaSrcPadLinked(GstPad* pad, GstPad*, void*)
{
RefPtr<Stream>& stream = WEBKIT_MEDIA_SRC_PAD(pad)->priv->stream;
- DataMutex<Stream::StreamingMembers>::LockedWrapper streamingMembers(stream->streamingMembersDataMutex);
+ auto streamingMembers = holdLock(stream->streamingMembersDataMutex);
streamingMembers->padLinkedOrFlushedCondition.notifyOne();
}
@@ -374,7 +374,7 @@
GstPad* pad = GST_PAD(userData);
RefPtr<Stream>& stream = WEBKIT_MEDIA_SRC_PAD(pad)->priv->stream;
- DataMutex<Stream::StreamingMembers>::LockedWrapper streamingMembers(stream->streamingMembersDataMutex);
+ auto streamingMembers = holdLock(stream->streamingMembersDataMutex);
if (streamingMembers->isFlushing) {
gst_pad_pause_task(pad);
return;
@@ -440,7 +440,7 @@
GRefPtr<GstMiniObject> object;
{
- DataMutex<TrackQueue>::LockedWrapper queue(stream->track->queueDataMutex());
+ auto queue = holdLock(stream->track->queueDataMutex());
if (!queue->isEmpty()) {
object = queue->pop();
streamingMembers->hasPoppedFirstObject = true;
@@ -448,7 +448,7 @@
} else {
queue->notifyWhenNotEmpty([&object, stream](GRefPtr<GstMiniObject>&& receivedObject) {
ASSERT(isMainThread());
- DataMutex<Stream::StreamingMembers>::LockedWrapper streamingMembers(stream->streamingMembersDataMutex);
+ auto streamingMembers = holdLock(stream->streamingMembersDataMutex);
ASSERT(!streamingMembers->isFlushing);
object = WTFMove(receivedObject);
@@ -465,7 +465,7 @@
});
{
// Ensure that notifyWhenNotEmpty()'s callback (if any) is cleared after this point.
- DataMutex<TrackQueue>::LockedWrapper queue(stream->track->queueDataMutex());
+ auto queue = holdLock(stream->track->queueDataMutex());
queue->resetNotEmptyHandler();
}
if (streamingMembers->isFlushing) {
@@ -540,11 +540,11 @@
bool skipFlush = false;
{
- DataMutex<Stream::StreamingMembers>::LockedWrapper streamingMembers(stream->streamingMembersDataMutex);
+ auto streamingMembers = holdLock(stream->streamingMembersDataMutex);
if (!streamingMembers->hasPoppedFirstObject) {
GST_DEBUG_OBJECT(stream->source, "Flush request for stream '%s' occurred before hasPoppedFirstObject, just clearing the queue and readjusting the segment.", stream->track->trackId().string().utf8().data());
- DataMutex<TrackQueue>::LockedWrapper queue(stream->track->queueDataMutex());
+ auto queue = holdLock(stream->track->queueDataMutex());
// We use clear() instead of flush() because the WebKitMediaSrc streaming thread could be waiting
// for the queue. flush() would cancel the notEmptyCallback therefore leaving the streaming thread
// stuck waiting forever.
@@ -558,8 +558,8 @@
// which will keeping the streaming thread idle.
GST_DEBUG_OBJECT(stream->pad.get(), "Taking the StreamingMembers mutex and setting isFlushing = true.");
{
- DataMutex<Stream::StreamingMembers>::LockedWrapper streamingMembers(stream->streamingMembersDataMutex);
- DataMutex<TrackQueue>::LockedWrapper queue(stream->track->queueDataMutex());
+ auto streamingMembers = holdLock(stream->streamingMembersDataMutex);
+ auto queue = holdLock(stream->track->queueDataMutex());
streamingMembers->isFlushing = true;
queue->flush(); // Clear the queue and cancel any waiting callback.
@@ -581,7 +581,7 @@
// In the case of seeking flush we are resetting the timeline (see the flush stop later).
// The resulting segment is brand new, but with a different start time.
WebKitMediaSrcPrivate* priv = stream->source->priv;
- DataMutex<Stream::StreamingMembers>::LockedWrapper streamingMembers(stream->streamingMembersDataMutex);
+ auto streamingMembers = holdLock(stream->streamingMembersDataMutex);
streamingMembers->segment.base = 0;
streamingMembers->segment.rate = priv->rate;
streamingMembers->segment.start = streamingMembers->segment.time = priv->startTime;
@@ -595,7 +595,7 @@
// GST_CLOCK_TIME_NONE is returned when the pipeline is not yet pre-rolled (e.g. just after a seek). In this case
// we don't need to adjust the segment though, as running time has not advanced.
if (GST_CLOCK_TIME_IS_VALID(pipelineStreamTime)) {
- DataMutex<Stream::StreamingMembers>::LockedWrapper streamingMembers(stream->streamingMembersDataMutex);
+ auto streamingMembers = holdLock(stream->streamingMembersDataMutex);
// We need to increase the base by the running time accumulated during the previous segment.
GstClockTime pipelineRunningTime = gst_segment_to_running_time(&streamingMembers->segment, GST_FORMAT_TIME, pipelineStreamTime);
@@ -614,7 +614,7 @@
GST_PAD_STREAM_LOCK(stream->pad.get());
{
GST_DEBUG_OBJECT(stream->pad.get(), "Taking the StreamingMembers mutex again.");
- DataMutex<Stream::StreamingMembers>::LockedWrapper streamingMembers(stream->streamingMembersDataMutex);
+ auto streamingMembers = holdLock(stream->streamingMembersDataMutex);
GST_DEBUG_OBJECT(stream->pad.get(), "StreamingMembers mutex taken, using it to set isFlushing = false.");
streamingMembers->isFlushing = false;
streamingMembers->doesNeedSegmentEvent = true;