Changeset 109933 in webkit


Ignore:
Timestamp:
Mar 6, 2012 10:15:00 AM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Unreleased gst_object_reference to audio sink in MediaPlayerPrivateGStreamer
https://bugs.webkit.org/show_bug.cgi?id=79795

Bug fix: Used a GRefPtr to hold the reference to the audio sink instead of a GstElement*.
Code cleanup: Used the same pattern for webkit web source and removed explicit gst_unref in destructor.

Patch by David Corvoysier <david.corvoysier@orange.com> on 2012-03-06
Reviewed by Philippe Normand.

No new tests. No change in behavior.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:

(MediaPlayerPrivateGStreamer):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r109932 r109933  
     12012-03-06  David Corvoysier  <david.corvoysier@orange.com>
     2
     3        Unreleased gst_object_reference to audio sink in MediaPlayerPrivateGStreamer
     4        https://bugs.webkit.org/show_bug.cgi?id=79795
     5
     6        Bug fix: Used a GRefPtr to hold the reference to the audio sink instead of a GstElement*.
     7        Code cleanup: Used the same pattern for webkit web source and removed explicit gst_unref in destructor.
     8
     9        Reviewed by Philippe Normand.
     10
     11        No new tests. No change in behavior.
     12
     13        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
     14        (WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):
     15        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
     16        (MediaPlayerPrivateGStreamer):
     17
    1182012-03-06  Patrick Gansterer  <paroga@webkit.org>
    219
  • trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

    r109915 r109933  
    3131#include "Frame.h"
    3232#include "FrameView.h"
    33 #include "GRefPtrGStreamer.h"
    3433#include "GStreamerGWorld.h"
    3534#include "GStreamerVersioning.h"
     
    263262    }
    264263
    265     if (m_source) {
    266         gst_object_unref(m_source);
    267         m_source = 0;
    268     }
    269 
    270264    if (m_videoSinkBin) {
    271265        gst_object_unref(m_videoSinkBin);
     
    959953    gint64 length = 0;
    960954#ifdef GST_API_VERSION_1
    961     if (gst_element_query_duration(m_source, fmt, &length)) {
     955    if (gst_element_query_duration(m_source.get(), fmt, &length)) {
    962956#else
    963     if (gst_element_query_duration(m_source, &fmt, &length)) {
     957    if (gst_element_query_duration(m_source.get(), &fmt, &length)) {
    964958#endif
    965959        LOG_VERBOSE(Media, "totalBytes %" G_GINT64_FORMAT, length);
     
    969963    // Fall back to querying the source pads manually.
    970964    // See also https://bugzilla.gnome.org/show_bug.cgi?id=638749
    971     GstIterator* iter = gst_element_iterate_src_pads(m_source);
     965    GstIterator* iter = gst_element_iterate_src_pads(m_source.get());
    972966    bool done = false;
    973967    while (!done) {
     
    10371031    gint64 position = 0;
    10381032
    1039     if (m_webkitAudioSink && gst_element_query(m_webkitAudioSink, query))
     1033    if (m_webkitAudioSink && gst_element_query(m_webkitAudioSink.get(), query))
    10401034        gst_query_parse_position(query, 0, &position);
    10411035
     
    10611055        return;
    10621056
    1063     GRefPtr<GstElement> element;
    10641057    GstElement* sinkPtr = 0;
    10651058
    10661059    g_object_get(m_playBin, "audio-sink", &sinkPtr, NULL);
    1067     element = adoptGRef(sinkPtr);
    1068 
    1069     gst_object_replace(reinterpret_cast<GstObject**>(&m_webkitAudioSink),
    1070                        reinterpret_cast<GstObject*>(element.get()));
     1060    m_webkitAudioSink = adoptGRef(sinkPtr);
     1061
    10711062}
    10721063
     
    10741065void MediaPlayerPrivateGStreamer::sourceChanged()
    10751066{
    1076     GRefPtr<GstElement> element;
    10771067    GstElement* srcPtr = 0;
    10781068
    10791069    g_object_get(m_playBin, "source", &srcPtr, NULL);
    1080     element = adoptGRef(srcPtr);
    1081 
    1082     gst_object_replace(reinterpret_cast<GstObject**>(&m_source),
    1083                        reinterpret_cast<GstObject*>(element.get()));
    1084 
    1085     if (WEBKIT_IS_WEB_SRC(element.get()))
    1086         webKitWebSrcSetMediaPlayer(WEBKIT_WEB_SRC(element.get()), m_player);
     1070    m_source = adoptGRef(srcPtr);
     1071
     1072    if (WEBKIT_IS_WEB_SRC(m_source.get()))
     1073        webKitWebSrcSetMediaPlayer(WEBKIT_WEB_SRC(m_source.get()), m_player);
    10871074}
    10881075
  • trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h

    r109915 r109933  
    2525#if ENABLE(VIDEO) && USE(GSTREAMER)
    2626
    27 #include <wtf/Forward.h>
     27#include "GRefPtrGStreamer.h"
    2828#include "MediaPlayerPrivate.h"
    2929#include "Timer.h"
     
    3131#include <glib.h>
    3232#include <gst/gst.h>
     33#include <wtf/Forward.h>
    3334
    3435typedef struct _WebKitVideoSink WebKitVideoSink;
     
    155156            GstElement* m_videoSinkBin;
    156157            GstElement* m_fpsSink;
    157             GstElement* m_source;
     158            GRefPtr<GstElement> m_source;
    158159            float m_seekTime;
    159160            bool m_changingRate;
     
    190191            guint m_audioTimerHandler;
    191192            guint m_videoTimerHandler;
    192             GstElement* m_webkitAudioSink;
     193            GRefPtr<GstElement> m_webkitAudioSink;
    193194    };
    194195}
Note: See TracChangeset for help on using the changeset viewer.