From 30ef974d2ce38b29e523f3d4c27700b00d7c49a3 Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Feb 11 2015 06:29:58 +0000 Subject: Temporarily disable cloop patch since it breaks js - Add patch for gmutexlocker namespace collision with glib 2.43.4 --- diff --git a/webkitgtk-2.7.4-gmutexlocker.patch b/webkitgtk-2.7.4-gmutexlocker.patch new file mode 100644 index 0000000..1f96862 --- /dev/null +++ b/webkitgtk-2.7.4-gmutexlocker.patch @@ -0,0 +1,327 @@ +2015-02-09 Carlos Garcia Campos + + [GTK] GMutexLocker build issue + https://bugs.webkit.org/show_bug.cgi?id=141381 + + Reviewed by Žan Doberšek. + + Use always WTF::GMutexLocker because newer glib versions have a + GMutexLocker in the public API. + +diff --git a/Source/WTF/wtf/gobject/GMutexLocker.h b/Source/WTF/wtf/gobject/GMutexLocker.h +index 0356702..5efbff0 100644 +--- a/Source/WTF/wtf/gobject/GMutexLocker.h ++++ b/Source/WTF/wtf/gobject/GMutexLocker.h +@@ -97,8 +97,6 @@ private: + + } // namespace WTF + +-using WTF::GMutexLocker; +- + #endif // USE(GLIB) + + #endif // GMutexLocker_h +diff --git a/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp b/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp +index b77d738..87adfb2 100644 +--- a/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp ++++ b/Source/WebCore/platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp +@@ -150,7 +150,7 @@ void AudioSourceProviderGStreamer::configureAudioBin(GstElement* audioBin, GstEl + + void AudioSourceProviderGStreamer::provideInput(AudioBus* bus, size_t framesToProcess) + { +- GMutexLocker lock(m_adapterMutex); ++ WTF::GMutexLocker lock(m_adapterMutex); + copyGStreamerBuffersToAudioChannel(m_frontLeftAdapter, bus, 0, framesToProcess); + copyGStreamerBuffersToAudioChannel(m_frontRightAdapter, bus, 1, framesToProcess); + } +@@ -177,7 +177,7 @@ GstFlowReturn AudioSourceProviderGStreamer::handleAudioBuffer(GstAppSink* sink) + GstAudioInfo info; + gst_audio_info_from_caps(&info, caps); + +- GMutexLocker lock(m_adapterMutex); ++ WTF::GMutexLocker lock(m_adapterMutex); + + // Check the first audio channel. The buffer is supposed to store + // data of a single channel anyway. +@@ -339,7 +339,7 @@ void AudioSourceProviderGStreamer::deinterleavePadsConfigured() + + void AudioSourceProviderGStreamer::clearAdapters() + { +- GMutexLocker lock(m_adapterMutex); ++ WTF::GMutexLocker lock(m_adapterMutex); + gst_adapter_clear(m_frontLeftAdapter); + gst_adapter_clear(m_frontRightAdapter); + } +diff --git a/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp b/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp +index 44de756..18864b1 100644 +--- a/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp ++++ b/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp +@@ -137,7 +137,7 @@ IntSize MediaPlayerPrivateGStreamerBase::naturalSize() const + if (!m_videoSize.isEmpty()) + return m_videoSize; + +- GMutexLocker lock(m_sampleMutex); ++ WTF::GMutexLocker lock(m_sampleMutex); + if (!m_sample) + return IntSize(); + +@@ -279,7 +279,7 @@ void MediaPlayerPrivateGStreamerBase::muteChanged() + #if USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS) + PassRefPtr MediaPlayerPrivateGStreamerBase::updateTexture(TextureMapper* textureMapper) + { +- GMutexLocker lock(m_sampleMutex); ++ WTF::GMutexLocker lock(m_sampleMutex); + if (!m_sample) + return nullptr; + +@@ -330,7 +330,7 @@ void MediaPlayerPrivateGStreamerBase::triggerRepaint(GstSample* sample) + g_return_if_fail(GST_IS_SAMPLE(sample)); + + { +- GMutexLocker lock(m_sampleMutex); ++ WTF::GMutexLocker lock(m_sampleMutex); + if (m_sample) + gst_sample_unref(m_sample); + m_sample = gst_sample_ref(sample); +@@ -364,7 +364,7 @@ void MediaPlayerPrivateGStreamerBase::paint(GraphicsContext* context, const IntR + if (!m_player->visible()) + return; + +- GMutexLocker lock(m_sampleMutex); ++ WTF::GMutexLocker lock(m_sampleMutex); + if (!m_sample) + return; + +diff --git a/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp b/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp +index 255e760..7252065 100644 +--- a/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp ++++ b/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp +@@ -117,7 +117,7 @@ static void webkitVideoSinkTimeoutCallback(WebKitVideoSink* sink) + { + WebKitVideoSinkPrivate* priv = sink->priv; + +- GMutexLocker lock(priv->sampleMutex); ++ WTF::GMutexLocker lock(priv->sampleMutex); + GstSample* sample = priv->sample; + priv->sample = 0; + +@@ -136,7 +136,7 @@ static GstFlowReturn webkitVideoSinkRender(GstBaseSink* baseSink, GstBuffer* buf + WebKitVideoSink* sink = WEBKIT_VIDEO_SINK(baseSink); + WebKitVideoSinkPrivate* priv = sink->priv; + +- GMutexLocker lock(priv->sampleMutex); ++ WTF::GMutexLocker lock(priv->sampleMutex); + + if (priv->unlocked) + return GST_FLOW_OK; +@@ -234,7 +234,7 @@ static void webkitVideoSinkFinalize(GObject* object) + + static void unlockSampleMutex(WebKitVideoSinkPrivate* priv) + { +- GMutexLocker lock(priv->sampleMutex); ++ WTF::GMutexLocker lock(priv->sampleMutex); + + if (priv->sample) { + gst_sample_unref(priv->sample); +@@ -260,7 +260,7 @@ static gboolean webkitVideoSinkUnlockStop(GstBaseSink* baseSink) + WebKitVideoSinkPrivate* priv = WEBKIT_VIDEO_SINK(baseSink)->priv; + + { +- GMutexLocker lock(priv->sampleMutex); ++ WTF::GMutexLocker lock(priv->sampleMutex); + priv->unlocked = false; + } + +@@ -285,7 +285,7 @@ static gboolean webkitVideoSinkStart(GstBaseSink* baseSink) + { + WebKitVideoSinkPrivate* priv = WEBKIT_VIDEO_SINK(baseSink)->priv; + +- GMutexLocker lock(priv->sampleMutex); ++ WTF::GMutexLocker lock(priv->sampleMutex); + priv->unlocked = false; + return TRUE; + } +diff --git a/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp b/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp +index 1fc305f..b9437aa 100644 +--- a/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp ++++ b/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp +@@ -338,7 +338,7 @@ static void webKitWebSrcGetProperty(GObject* object, guint propID, GValue* value + WebKitWebSrc* src = WEBKIT_WEB_SRC(object); + WebKitWebSrcPrivate* priv = src->priv; + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + switch (propID) { + case PROP_IRADIO_NAME: + g_value_set_string(value, priv->iradioName); +@@ -378,7 +378,7 @@ static void webKitWebSrcStop(WebKitWebSrc* src) + + ASSERT(isMainThread()); + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + + bool seeking = priv->seekSource.isActive(); + +@@ -436,7 +436,7 @@ static void webKitWebSrcStart(WebKitWebSrc* src) + + ASSERT(isMainThread()); + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + + priv->pendingStart = FALSE; + priv->didPassAccessControlCheck = false; +@@ -539,7 +539,7 @@ static GstStateChangeReturn webKitWebSrcChangeState(GstElement* element, GstStat + return ret; + } + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + switch (transition) { + case GST_STATE_CHANGE_READY_TO_PAUSED: + GST_DEBUG_OBJECT(src, "READY->PAUSED"); +@@ -576,7 +576,7 @@ static gboolean webKitWebSrcQueryWithParent(GstPad* pad, GstObject* parent, GstQ + gst_query_parse_duration(query, &format, NULL); + + GST_DEBUG_OBJECT(src, "duration query in format %s", gst_format_get_name(format)); +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + if (format == GST_FORMAT_BYTES && src->priv->size > 0) { + gst_query_set_duration(query, format, src->priv->size); + result = TRUE; +@@ -584,7 +584,7 @@ static gboolean webKitWebSrcQueryWithParent(GstPad* pad, GstObject* parent, GstQ + break; + } + case GST_QUERY_URI: { +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + gst_query_set_uri(query, src->priv->uri); + result = TRUE; + break; +@@ -634,7 +634,7 @@ static gchar* webKitWebSrcGetUri(GstURIHandler* handler) + WebKitWebSrc* src = WEBKIT_WEB_SRC(handler); + gchar* ret; + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + ret = g_strdup(src->priv->uri); + return ret; + } +@@ -649,7 +649,7 @@ static gboolean webKitWebSrcSetUri(GstURIHandler* handler, const gchar* uri, GEr + return FALSE; + } + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + + g_free(priv->uri); + priv->uri = 0; +@@ -685,7 +685,7 @@ static void webKitWebSrcNeedDataMainCb(WebKitWebSrc* src) + + ASSERT(isMainThread()); + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + priv->paused = FALSE; + locker.unlock(); + +@@ -702,7 +702,7 @@ static void webKitWebSrcNeedDataCb(GstAppSrc*, guint length, gpointer userData) + + GST_DEBUG_OBJECT(src, "Need more data: %u", length); + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + if (priv->needDataSource.isScheduled() || !priv->paused) + return; + +@@ -717,7 +717,7 @@ static void webKitWebSrcEnoughDataMainCb(WebKitWebSrc* src) + + ASSERT(isMainThread()); + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + priv->paused = TRUE; + locker.unlock(); + +@@ -734,7 +734,7 @@ static void webKitWebSrcEnoughDataCb(GstAppSrc*, gpointer userData) + + GST_DEBUG_OBJECT(src, "Have enough data"); + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + if (priv->enoughDataSource.isScheduled() || priv->paused) + return; + +@@ -757,7 +757,7 @@ static gboolean webKitWebSrcSeekDataCb(GstAppSrc*, guint64 offset, gpointer user + WebKitWebSrcPrivate* priv = src->priv; + + GST_DEBUG_OBJECT(src, "Seeking to offset: %" G_GUINT64_FORMAT, offset); +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + if (offset == priv->offset && priv->requestedOffset == priv->offset) + return TRUE; + +@@ -776,7 +776,7 @@ static gboolean webKitWebSrcSeekDataCb(GstAppSrc*, guint64 offset, gpointer user + void webKitWebSrcSetMediaPlayer(WebKitWebSrc* src, WebCore::MediaPlayer* player) + { + ASSERT(player); +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + src->priv->player = player; + } + +@@ -806,7 +806,7 @@ char* StreamingClient::createReadBuffer(size_t requestedSize, size_t& actualSize + + mapGstBuffer(buffer); + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + priv->buffer = adoptGRef(buffer); + locker.unlock(); + +@@ -828,7 +828,7 @@ void StreamingClient::handleResponseReceived(const ResourceResponse& response) + return; + } + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + + if (priv->seekSource.isActive()) { + GST_DEBUG_OBJECT(src, "Seek in progress, ignoring response"); +@@ -925,7 +925,7 @@ void StreamingClient::handleDataReceived(const char* data, int length) + WebKitWebSrc* src = WEBKIT_WEB_SRC(m_src); + WebKitWebSrcPrivate* priv = src->priv; + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + + GST_LOG_OBJECT(src, "Have %lld bytes of data", priv->buffer ? static_cast(gst_buffer_get_size(priv->buffer.get())) : length); + +@@ -994,7 +994,7 @@ void StreamingClient::handleNotifyFinished() + + GST_DEBUG_OBJECT(src, "Have EOS"); + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + if (!priv->seekSource.isActive()) { + locker.unlock(); + gst_app_src_end_of_stream(priv->appsrc); +@@ -1131,7 +1131,7 @@ void ResourceHandleStreamingClient::wasBlocked(ResourceHandle*) + + GST_ERROR_OBJECT(src, "Request was blocked"); + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + uri.reset(g_strdup(src->priv->uri)); + locker.unlock(); + +@@ -1145,7 +1145,7 @@ void ResourceHandleStreamingClient::cannotShowURL(ResourceHandle*) + + GST_ERROR_OBJECT(src, "Cannot show URL"); + +- GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); ++ WTF::GMutexLocker locker(*GST_OBJECT_GET_LOCK(src)); + uri.reset(g_strdup(src->priv->uri)); + locker.unlock(); + diff --git a/webkitgtk4.spec b/webkitgtk4.spec index 4900d59..c1dbc54 100644 --- a/webkitgtk4.spec +++ b/webkitgtk4.spec @@ -9,7 +9,7 @@ Name: webkitgtk4 Version: 2.7.4 -Release: 5%{?dist} +Release: 6%{?dist} Summary: GTK+ Web content engine library License: LGPLv2 @@ -24,6 +24,8 @@ Patch3: webkitgtk-2.5.2-commit_align.patch Patch4: webkitgtk-2.7.2-disable-codec-installer.patch # https://bugs.webkit.org/show_bug.cgi?id=140616 Patch5: webkitgtk-2.7.3-compile_fix.patch +# https://bugs.webkit.org/show_bug.cgi?id=141381 +Patch6: webkitgtk-2.7.4-gmutexlocker.patch BuildRequires: at-spi2-core-devel BuildRequires: bison @@ -94,12 +96,14 @@ This package contains developer documentation for %{name}. %prep %setup -q -n webkitgtk-%{version} %patch0 -p1 -b .nspluginwrapper -%patch2 -p1 -b .cloop_fix +# FIXME Temporarily disabled due to https://bugzilla.redhat.com/show_bug.cgi?id=1167004 +#%patch2 -p1 -b .cloop_fix %ifarch %{power64} aarch64 ppc %patch3 -p1 -b .commit_align %endif %patch4 -p1 -b .disable_codec_installer %patch5 -p1 -b .compile_fix +%patch6 -p1 -b .gmutexlocker # Remove bundled libraries rm -rf Source/ThirdParty/leveldb/ @@ -202,6 +206,10 @@ make %{?_smp_mflags} -C %{_target_platform} %{_datadir}/gtk-doc/html/webkitdomgtk-4.0/ %changelog +* Tue Feb 10 2015 Michael Catanzaro - 2.7.4-6 +- Temporarily disable cloop patch since it breaks js +- Add patch for gmutexlocker namespace collision with glib 2.43.4 + * Fri Feb 06 2015 Michael Catanzaro - 2.7.4-5 - Revert yesterday's changes since they don't help.