-
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