diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-22 00:31:05 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-22 00:31:05 +0000 |
commit | 8b75455ad5532e06efd24f9b6d3bc13569adc281 (patch) | |
tree | 775c840f2ac6d9d25a514dff9158b442839b8187 /media/base/demuxer.h | |
parent | 580ef53cbdefb6e8a515cc004b1a2691817e32eb (diff) | |
download | chromium_src-8b75455ad5532e06efd24f9b6d3bc13569adc281.zip chromium_src-8b75455ad5532e06efd24f9b6d3bc13569adc281.tar.gz chromium_src-8b75455ad5532e06efd24f9b6d3bc13569adc281.tar.bz2 |
Make calling FFmpegDemuxer::Stop() multiple times illegal.
First attempt r218110 was reverted in r218333 for two reasons:
1) There were still cases where Pipeline could call Stop() twice aside from test code, causing a null pointer dereference of data_source_
2) FFmpegDemuxer::OnFindStreamInfoDone() could run inbetween Stop() and OnDataSourceStopped(), causing a null pointer dereference of data_source_
The fix for (1) landed in r218625. The fix for (2) is included in this change.
BUG=235933
Review URL: https://chromiumcodereview.appspot.com/23191006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@218878 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/demuxer.h')
-rw-r--r-- | media/base/demuxer.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/media/base/demuxer.h b/media/base/demuxer.h index 6a91aab..81ac33b 100644 --- a/media/base/demuxer.h +++ b/media/base/demuxer.h @@ -47,8 +47,10 @@ class MEDIA_EXPORT Demuxer { // callback upon completion. virtual void Seek(base::TimeDelta time, const PipelineStatusCB& status_cb); - // The pipeline is being stopped either as a result of an error or because - // the client called Stop(). + // Starts stopping this demuxer, executing the callback upon completion. + // + // After the callback completes the demuxer may be destroyed. It is illegal to + // call any method (including Stop()) after a demuxer has stopped. virtual void Stop(const base::Closure& callback); // This method is called from the pipeline when the audio renderer |