Changeset 224012 in webkit


Ignore:
Timestamp:
Oct 26, 2017 3:31:39 AM (6 years ago)
Author:
eocanha@igalia.com
Message:

[MSE][GStreamer] Fix hang on clearing/destroying AppendPipeline
https://bugs.webkit.org/show_bug.cgi?id=178819

Reviewed by Xabier Rodriguez-Calvar.

The deadlock may occur when UI thread tries to clear pipeline in
AppendPipeline::clearPlayerPrivate() while parser thread tries to change
pipeline state to pause holding the stream lock in
AppendPipeline::connectDemuxerSrcPadToAppsinkFromAnyThread()

This patch is authored by Eugene Mutavchi <Ievgen_Mutavchi@comcast.com>

  • platform/graphics/gstreamer/mse/AppendPipeline.cpp:

(WebCore::AppendPipeline::connectDemuxerSrcPadToAppsinkFromAnyThread):
Return if there's no player private.

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r224011 r224012  
     12017-10-26  Enrique Ocaña González  <eocanha@igalia.com>
     2
     3        [MSE][GStreamer] Fix hang on clearing/destroying AppendPipeline
     4        https://bugs.webkit.org/show_bug.cgi?id=178819
     5
     6        Reviewed by Xabier Rodriguez-Calvar.
     7
     8        The deadlock may occur when UI thread tries to clear pipeline in
     9        AppendPipeline::clearPlayerPrivate() while parser thread tries to change
     10        pipeline state to pause holding the stream lock in
     11        AppendPipeline::connectDemuxerSrcPadToAppsinkFromAnyThread()
     12
     13        This patch is authored by Eugene Mutavchi <Ievgen_Mutavchi@comcast.com>
     14
     15        * platform/graphics/gstreamer/mse/AppendPipeline.cpp:
     16        (WebCore::AppendPipeline::connectDemuxerSrcPadToAppsinkFromAnyThread):
     17        Return if there's no player private.
     18
    1192017-10-26  Ryosuke Niwa  <rniwa@webkit.org>
    220
  • trunk/Source/WebCore/platform/graphics/gstreamer/mse/AppendPipeline.cpp

    r223505 r224012  
    10141014
    10151015        m_padAddRemoveCondition.wait(m_padAddRemoveLock);
     1016
     1017        if (!m_playerPrivate)
     1018            return;
    10161019    }
    10171020
Note: See TracChangeset for help on using the changeset viewer.