Skip to content
  • commit-queue@webkit.org's avatar
    [gstreamer] Make sure gstreamer source element is thread-safe · 069420f5
    commit-queue@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=115352
    
    Patch by Andre Moreira Magalhaes <andre.magalhaes@collabora.co.uk> on 2013-08-27
    Reviewed by Philippe Normand.
    
    Source/WebCore:
    
    GStreamer source element may be created by any gstreamer element on any thread by calling
    gst_element_make_from_uri with the URIs handled by the source element.
    This patch makes sure the gstreamer source element is thread-safe to avoid issues with it
    being created outside the main thread.
    
    * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
    (webkit_web_src_init):
    (webKitWebSrcDispose):
    (webKitWebSrcFinalize):
    (webKitWebSrcSetProperty):
    (webKitWebSrcGetProperty):
    (removeTimeoutSources):
    (webKitWebSrcStop):
    (webKitWebSrcStart):
    (webKitWebSrcChangeState):
    (webKitWebSrcQueryWithParent):
    (webKitWebSrcGetUri):
    (webKitWebSrcSetUri):
    (webKitWebSrcNeedDataMainCb):
    (webKitWebSrcNeedDataCb):
    (webKitWebSrcEnoughDataMainCb):
    (webKitWebSrcEnoughDataCb):
    (webKitWebSrcSeekMainCb):
    (webKitWebSrcSeekDataCb):
    (webKitWebSrcSetMediaPlayer):
    (StreamingClient::StreamingClient):
    (StreamingClient::~StreamingClient):
    (StreamingClient::createReadBuffer):
    (StreamingClient::handleResponseReceived):
    (StreamingClient::handleDataReceived):
    (StreamingClient::handleNotifyFinished):
    (CachedResourceStreamingClient::CachedResourceStreamingClient):
    (CachedResourceStreamingClient::~CachedResourceStreamingClient):
    (CachedResourceStreamingClient::loadFailed):
    (CachedResourceStreamingClient::setDefersLoading):
    (CachedResourceStreamingClient::getOrCreateReadBuffer):
    (CachedResourceStreamingClient::responseReceived):
    (CachedResourceStreamingClient::dataReceived):
    (CachedResourceStreamingClient::notifyFinished):
    (ResourceHandleStreamingClient::ResourceHandleStreamingClient):
    (ResourceHandleStreamingClient::~ResourceHandleStreamingClient):
    (ResourceHandleStreamingClient::loadFailed):
    (ResourceHandleStreamingClient::setDefersLoading):
    (ResourceHandleStreamingClient::getOrCreateReadBuffer):
    (ResourceHandleStreamingClient::willSendRequest):
    (ResourceHandleStreamingClient::didReceiveResponse):
    (ResourceHandleStreamingClient::didReceiveData):
    (ResourceHandleStreamingClient::didFinishLoading):
    (ResourceHandleStreamingClient::didFail):
    (ResourceHandleStreamingClient::wasBlocked):
    (ResourceHandleStreamingClient::cannotShowURL):
    Make element thread-safe, add support to use the element without a player associated (e.g.
    the DASH plugin using the webkitsrc to download fragments), use GMutexLocker to simplify
    locks and other general improvements.
    
    Source/WTF:
    
    Add convenience class that simplifies locking and unlocking a GMutex.
    
    * GNUmakefile.list.am:
    * wtf/gobject/GMutexLocker.h: Added.
    (WebCore::GMutexLocker::GMutexLocker):
    (WebCore::GMutexLocker::~GMutexLocker):
    (WebCore::GMutexLocker::lock):
    (WebCore::GMutexLocker::unlock):
    (WebCore::GMutexLocker::mutex):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154683 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    069420f5