Diff
Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog (196814 => 196815)
--- releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog 2016-02-19 11:55:42 UTC (rev 196814)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/ChangeLog 2016-02-19 11:56:52 UTC (rev 196815)
@@ -1,3 +1,18 @@
+2016-02-19 Philippe Normand <[email protected]>
+
+ [GStreamer] clean-up various leaks
+ https://bugs.webkit.org/show_bug.cgi?id=154285
+
+ Reviewed by Carlos Garcia Campos.
+
+ * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
+ (webkit_web_audio_src_init): Take full ownership of the GstTask.
+ * platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
+ (WTF::adoptGRef): Null pointer support in ASSERTs.
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+ (WebCore::initializeGStreamerAndRegisterWebKitElements): Take full ownership of the GstElementFactory pointers.
+ (WebCore::MediaPlayerPrivateGStreamer::isAvailable): Ditto.
+
2016-02-18 Andy Estes <[email protected]>
Revert to dispatching the popstate event synchronously
Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp (196814 => 196815)
--- releases/WebKitGTK/webkit-2.12/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp 2016-02-19 11:55:42 UTC (rev 196814)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp 2016-02-19 11:56:52 UTC (rev 196815)
@@ -193,7 +193,7 @@
priv->bus = 0;
g_rec_mutex_init(&priv->mutex);
- priv->task = gst_task_new(reinterpret_cast<GstTaskFunction>(webKitWebAudioSrcLoop), src, 0);
+ priv->task = adoptGRef(gst_task_new(reinterpret_cast<GstTaskFunction>(webKitWebAudioSrcLoop), src, 0));
gst_task_set_lock(priv->task.get(), &priv->mutex);
}
Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp (196814 => 196815)
--- releases/WebKitGTK/webkit-2.12/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp 2016-02-19 11:55:42 UTC (rev 196814)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp 2016-02-19 11:56:52 UTC (rev 196815)
@@ -27,7 +27,7 @@
template <> GRefPtr<GstElement> adoptGRef(GstElement* ptr)
{
- ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));
+ ASSERT(!ptr || !g_object_is_floating(ptr));
return GRefPtr<GstElement>(ptr, GRefPtrAdopt);
}
@@ -47,7 +47,7 @@
template <> GRefPtr<GstPad> adoptGRef(GstPad* ptr)
{
- ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));
+ ASSERT(!ptr || !g_object_is_floating(ptr));
return GRefPtr<GstPad>(ptr, GRefPtrAdopt);
}
@@ -67,7 +67,7 @@
template <> GRefPtr<GstPadTemplate> adoptGRef(GstPadTemplate* ptr)
{
- ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));
+ ASSERT(!ptr || !g_object_is_floating(ptr));
return GRefPtr<GstPadTemplate>(ptr, GRefPtrAdopt);
}
@@ -105,7 +105,7 @@
template <> GRefPtr<GstContext> adoptGRef(GstContext* ptr)
{
- ASSERT(!g_object_is_floating(G_OBJECT(ptr)));
+ ASSERT(!g_object_is_floating(ptr));
return GRefPtr<GstContext>(ptr, GRefPtrAdopt);
}
@@ -124,7 +124,8 @@
template <> GRefPtr<GstTask> adoptGRef(GstTask* ptr)
{
- ASSERT(!g_object_is_floating(G_OBJECT(ptr)));
+ // There is no need to check the object reference is floating here because
+ // gst_task_init() always sinks it.
return GRefPtr<GstTask>(ptr, GRefPtrAdopt);
}
@@ -144,7 +145,7 @@
template <> GRefPtr<GstBus> adoptGRef(GstBus* ptr)
{
- ASSERT(!g_object_is_floating(G_OBJECT(ptr)));
+ ASSERT(!ptr || !g_object_is_floating(ptr));
return GRefPtr<GstBus>(ptr, GRefPtrAdopt);
}
@@ -164,7 +165,7 @@
template <> GRefPtr<GstElementFactory> adoptGRef(GstElementFactory* ptr)
{
- ASSERT(!g_object_is_floating(G_OBJECT(ptr)));
+ ASSERT(!ptr || !g_object_is_floating(ptr));
return GRefPtr<GstElementFactory>(ptr, GRefPtrAdopt);
}
@@ -317,7 +318,7 @@
template <> GRefPtr<WebKitVideoSink> adoptGRef(WebKitVideoSink* ptr)
{
- ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));
+ ASSERT(!ptr || !g_object_is_floating(ptr));
return GRefPtr<WebKitVideoSink>(ptr, GRefPtrAdopt);
}
@@ -337,7 +338,7 @@
template <> GRefPtr<WebKitWebSrc> adoptGRef(WebKitWebSrc* ptr)
{
- ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));
+ ASSERT(!ptr || !g_object_is_floating(ptr));
return GRefPtr<WebKitWebSrc>(ptr, GRefPtrAdopt);
}
Modified: releases/WebKitGTK/webkit-2.12/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp (196814 => 196815)
--- releases/WebKitGTK/webkit-2.12/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2016-02-19 11:55:42 UTC (rev 196814)
+++ releases/WebKitGTK/webkit-2.12/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2016-02-19 11:56:52 UTC (rev 196815)
@@ -107,14 +107,14 @@
if (!initializeGStreamer())
return false;
- GRefPtr<GstElementFactory> srcFactory = gst_element_factory_find("webkitwebsrc");
+ GRefPtr<GstElementFactory> srcFactory = adoptGRef(gst_element_factory_find("webkitwebsrc"));
if (!srcFactory) {
GST_DEBUG_CATEGORY_INIT(webkit_media_player_debug, "webkitmediaplayer", 0, "WebKit media player");
gst_element_register(0, "webkitwebsrc", GST_RANK_PRIMARY + 100, WEBKIT_TYPE_WEB_SRC);
}
#if ENABLE(MEDIA_SOURCE)
- GRefPtr<GstElementFactory> WebKitMediaSrcFactory = gst_element_factory_find("webkitmediasrc");
+ GRefPtr<GstElementFactory> WebKitMediaSrcFactory = adoptGRef(gst_element_factory_find("webkitmediasrc"));
if (!WebKitMediaSrcFactory)
gst_element_register(0, "webkitmediasrc", GST_RANK_PRIMARY + 100, WEBKIT_TYPE_MEDIA_SRC);
#endif
@@ -126,7 +126,7 @@
if (!initializeGStreamerAndRegisterWebKitElements())
return false;
- GRefPtr<GstElementFactory> factory = gst_element_factory_find("playbin");
+ GRefPtr<GstElementFactory> factory = adoptGRef(gst_element_factory_find("playbin"));
return factory;
}