Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Side by Side Diff: media/filters/audio_renderer_impl.cc

Issue 193303002: WeakPtr destruction order cleanup: media edition. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/filters/audio_renderer_impl.h" 5 #include "media/filters/audio_renderer_impl.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 25 matching lines...) Expand all
36 } 36 }
37 37
38 } // namespace 38 } // namespace
39 39
40 AudioRendererImpl::AudioRendererImpl( 40 AudioRendererImpl::AudioRendererImpl(
41 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, 41 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
42 media::AudioRendererSink* sink, 42 media::AudioRendererSink* sink,
43 ScopedVector<AudioDecoder> decoders, 43 ScopedVector<AudioDecoder> decoders,
44 const SetDecryptorReadyCB& set_decryptor_ready_cb) 44 const SetDecryptorReadyCB& set_decryptor_ready_cb)
45 : task_runner_(task_runner), 45 : task_runner_(task_runner),
46 weak_factory_(this),
47 sink_(sink), 46 sink_(sink),
48 decoder_selector_(new AudioDecoderSelector( 47 decoder_selector_(new AudioDecoderSelector(task_runner,
49 task_runner, decoders.Pass(), set_decryptor_ready_cb)), 48 decoders.Pass(),
49 set_decryptor_ready_cb)),
50 now_cb_(base::Bind(&base::TimeTicks::Now)), 50 now_cb_(base::Bind(&base::TimeTicks::Now)),
51 state_(kUninitialized), 51 state_(kUninitialized),
52 sink_playing_(false), 52 sink_playing_(false),
53 pending_read_(false), 53 pending_read_(false),
54 received_end_of_stream_(false), 54 received_end_of_stream_(false),
55 rendered_end_of_stream_(false), 55 rendered_end_of_stream_(false),
56 audio_time_buffered_(kNoTimestamp()), 56 audio_time_buffered_(kNoTimestamp()),
57 current_time_(kNoTimestamp()), 57 current_time_(kNoTimestamp()),
58 underflow_disabled_(false), 58 underflow_disabled_(false),
59 preroll_aborted_(false) { 59 preroll_aborted_(false),
60 } 60 weak_factory_(this) {}
61 61
62 AudioRendererImpl::~AudioRendererImpl() { 62 AudioRendererImpl::~AudioRendererImpl() {
63 // Stop() should have been called and |algorithm_| should have been destroyed. 63 // Stop() should have been called and |algorithm_| should have been destroyed.
64 DCHECK(state_ == kUninitialized || state_ == kStopped); 64 DCHECK(state_ == kUninitialized || state_ == kStopped);
65 DCHECK(!algorithm_.get()); 65 DCHECK(!algorithm_.get());
66 } 66 }
67 67
68 void AudioRendererImpl::Play(const base::Closure& callback) { 68 void AudioRendererImpl::Play(const base::Closure& callback) {
69 DCHECK(task_runner_->BelongsToCurrentThread()); 69 DCHECK(task_runner_->BelongsToCurrentThread());
70 70
(...skipping 671 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 } 742 }
743 } 743 }
744 744
745 void AudioRendererImpl::ChangeState_Locked(State new_state) { 745 void AudioRendererImpl::ChangeState_Locked(State new_state) {
746 DVLOG(1) << __FUNCTION__ << " : " << state_ << " -> " << new_state; 746 DVLOG(1) << __FUNCTION__ << " : " << state_ << " -> " << new_state;
747 lock_.AssertAcquired(); 747 lock_.AssertAcquired();
748 state_ = new_state; 748 state_ = new_state;
749 } 749 }
750 750
751 } // namespace media 751 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698