Changeset 196809 in webkit


Ignore:
Timestamp:
Feb 19, 2016 2:30:08 AM (8 years ago)
Author:
Philippe Normand
Message:

[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.

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r196807 r196809  
     12016-02-19  Philippe Normand  <pnormand@igalia.com>
     2
     3        [GStreamer] clean-up various leaks
     4        https://bugs.webkit.org/show_bug.cgi?id=154285
     5
     6        Reviewed by Carlos Garcia Campos.
     7
     8        * platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
     9        (webkit_web_audio_src_init): Take full ownership of the GstTask.
     10        * platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
     11        (WTF::adoptGRef): Null pointer support in ASSERTs.
     12        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
     13        (WebCore::initializeGStreamerAndRegisterWebKitElements): Take full ownership of the GstElementFactory pointers.
     14        (WebCore::MediaPlayerPrivateGStreamer::isAvailable): Ditto.
     15
    1162016-02-18  Andy Estes  <aestes@apple.com>
    217
  • trunk/Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp

    r185502 r196809  
    194194
    195195    g_rec_mutex_init(&priv->mutex);
    196     priv->task = gst_task_new(reinterpret_cast<GstTaskFunction>(webKitWebAudioSrcLoop), src, 0);
     196    priv->task = adoptGRef(gst_task_new(reinterpret_cast<GstTaskFunction>(webKitWebAudioSrcLoop), src, 0));
    197197
    198198    gst_task_set_lock(priv->task.get(), &priv->mutex);
  • trunk/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp

    r195735 r196809  
    2828template <> GRefPtr<GstElement> adoptGRef(GstElement* ptr)
    2929{
    30     ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));
     30    ASSERT(!ptr || !g_object_is_floating(ptr));
    3131    return GRefPtr<GstElement>(ptr, GRefPtrAdopt);
    3232}
     
    4848template <> GRefPtr<GstPad> adoptGRef(GstPad* ptr)
    4949{
    50     ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));
     50    ASSERT(!ptr || !g_object_is_floating(ptr));
    5151    return GRefPtr<GstPad>(ptr, GRefPtrAdopt);
    5252}
     
    6868template <> GRefPtr<GstPadTemplate> adoptGRef(GstPadTemplate* ptr)
    6969{
    70     ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));
     70    ASSERT(!ptr || !g_object_is_floating(ptr));
    7171    return GRefPtr<GstPadTemplate>(ptr, GRefPtrAdopt);
    7272}
     
    106106template <> GRefPtr<GstContext> adoptGRef(GstContext* ptr)
    107107{
    108     ASSERT(!g_object_is_floating(G_OBJECT(ptr)));
     108    ASSERT(!g_object_is_floating(ptr));
    109109    return GRefPtr<GstContext>(ptr, GRefPtrAdopt);
    110110}
     
    125125template <> GRefPtr<GstTask> adoptGRef(GstTask* ptr)
    126126{
    127     ASSERT(!g_object_is_floating(G_OBJECT(ptr)));
     127    // There is no need to check the object reference is floating here because
     128    // gst_task_init() always sinks it.
    128129    return GRefPtr<GstTask>(ptr, GRefPtrAdopt);
    129130}
     
    145146template <> GRefPtr<GstBus> adoptGRef(GstBus* ptr)
    146147{
    147     ASSERT(!g_object_is_floating(G_OBJECT(ptr)));
     148    ASSERT(!ptr || !g_object_is_floating(ptr));
    148149    return GRefPtr<GstBus>(ptr, GRefPtrAdopt);
    149150}
     
    165166template <> GRefPtr<GstElementFactory> adoptGRef(GstElementFactory* ptr)
    166167{
    167     ASSERT(!g_object_is_floating(G_OBJECT(ptr)));
     168    ASSERT(!ptr || !g_object_is_floating(ptr));
    168169    return GRefPtr<GstElementFactory>(ptr, GRefPtrAdopt);
    169170}
     
    318319template <> GRefPtr<WebKitVideoSink> adoptGRef(WebKitVideoSink* ptr)
    319320{
    320     ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));
     321    ASSERT(!ptr || !g_object_is_floating(ptr));
    321322    return GRefPtr<WebKitVideoSink>(ptr, GRefPtrAdopt);
    322323}
     
    338339template <> GRefPtr<WebKitWebSrc> adoptGRef(WebKitWebSrc* ptr)
    339340{
    340     ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));
     341    ASSERT(!ptr || !g_object_is_floating(ptr));
    341342    return GRefPtr<WebKitWebSrc>(ptr, GRefPtrAdopt);
    342343}
  • trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

    r196060 r196809  
    108108        return false;
    109109
    110     GRefPtr<GstElementFactory> srcFactory = gst_element_factory_find("webkitwebsrc");
     110    GRefPtr<GstElementFactory> srcFactory = adoptGRef(gst_element_factory_find("webkitwebsrc"));
    111111    if (!srcFactory) {
    112112        GST_DEBUG_CATEGORY_INIT(webkit_media_player_debug, "webkitmediaplayer", 0, "WebKit media player");
     
    115115
    116116#if ENABLE(MEDIA_SOURCE)
    117     GRefPtr<GstElementFactory> WebKitMediaSrcFactory = gst_element_factory_find("webkitmediasrc");
     117    GRefPtr<GstElementFactory> WebKitMediaSrcFactory = adoptGRef(gst_element_factory_find("webkitmediasrc"));
    118118    if (!WebKitMediaSrcFactory)
    119119        gst_element_register(0, "webkitmediasrc", GST_RANK_PRIMARY + 100, WEBKIT_TYPE_MEDIA_SRC);
     
    127127        return false;
    128128
    129     GRefPtr<GstElementFactory> factory = gst_element_factory_find("playbin");
     129    GRefPtr<GstElementFactory> factory = adoptGRef(gst_element_factory_find("playbin"));
    130130    return factory;
    131131}
Note: See TracChangeset for help on using the changeset viewer.