Index: content/renderer/media/webrtc_audio_renderer.cc |
diff --git a/content/renderer/media/webrtc_audio_renderer.cc b/content/renderer/media/webrtc_audio_renderer.cc |
index f6801862af369539c8d9e7ccca595a1b27dfe1b2..32c27bf8be65487b9e021bf5e6a3e95d8345ab66 100644 |
--- a/content/renderer/media/webrtc_audio_renderer.cc |
+++ b/content/renderer/media/webrtc_audio_renderer.cc |
@@ -54,24 +54,17 @@ |
public: |
// Callback definition for a callback that is called when when Play(), Pause() |
// or SetVolume are called (whenever the internal |playing_state_| changes). |
- using OnPlayStateChanged = |
- base::Callback<void(const blink::WebMediaStream&, |
- WebRtcAudioRenderer::PlayingState*)>; |
- |
- // Signals that the PlayingState* is about to become invalid, see comment in |
- // OnPlayStateRemoved. |
- using OnPlayStateRemoved = |
- base::OnceCallback<void(WebRtcAudioRenderer::PlayingState*)>; |
+ typedef base::Callback<void(const blink::WebMediaStream&, |
+ WebRtcAudioRenderer::PlayingState*)> |
+ OnPlayStateChanged; |
SharedAudioRenderer(const scoped_refptr<MediaStreamAudioRenderer>& delegate, |
const blink::WebMediaStream& media_stream, |
- const OnPlayStateChanged& on_play_state_changed, |
- OnPlayStateRemoved on_play_state_removed) |
+ const OnPlayStateChanged& on_play_state_changed) |
: delegate_(delegate), |
media_stream_(media_stream), |
started_(false), |
- on_play_state_changed_(on_play_state_changed), |
- on_play_state_removed_(std::move(on_play_state_removed)) { |
+ on_play_state_changed_(on_play_state_changed) { |
DCHECK(!on_play_state_changed_.is_null()); |
DCHECK(!media_stream_.isNull()); |
} |
@@ -81,7 +74,6 @@ |
DCHECK(thread_checker_.CalledOnValidThread()); |
DVLOG(1) << __func__; |
Stop(); |
- std::move(on_play_state_removed_).Run(&playing_state_); |
} |
void Start() override { |
@@ -156,7 +148,6 @@ |
bool started_; |
WebRtcAudioRenderer::PlayingState playing_state_; |
OnPlayStateChanged on_play_state_changed_; |
- OnPlayStateRemoved on_play_state_removed_; |
}; |
} // namespace |
@@ -229,12 +220,9 @@ |
scoped_refptr<MediaStreamAudioRenderer> |
WebRtcAudioRenderer::CreateSharedAudioRendererProxy( |
const blink::WebMediaStream& media_stream) { |
- SharedAudioRenderer::OnPlayStateChanged on_play_state_changed = |
+ content::SharedAudioRenderer::OnPlayStateChanged on_play_state_changed = |
base::Bind(&WebRtcAudioRenderer::OnPlayStateChanged, this); |
- SharedAudioRenderer::OnPlayStateRemoved on_play_state_removed = |
- base::BindOnce(&WebRtcAudioRenderer::OnPlayStateRemoved, this); |
- return new SharedAudioRenderer(this, media_stream, on_play_state_changed, |
- std::move(on_play_state_removed)); |
+ return new SharedAudioRenderer(this, media_stream, on_play_state_changed); |
} |
bool WebRtcAudioRenderer::IsStarted() const { |
@@ -605,27 +593,6 @@ |
} |
} |
-void WebRtcAudioRenderer::OnPlayStateRemoved(PlayingState* state) { |
- // It is possible we associated |state| to a source for a track that is no |
- // longer easily reachable. We iterate over |source_playing_states_| to |
- // ensure there are no dangling pointers to |state| there. See |
- // crbug.com/697256. |
- // TODO(maxmorin): Clean up cleanup code in this and related classes so that |
- // this hack isn't necessary. |
- DCHECK(thread_checker_.CalledOnValidThread()); |
- for (auto it = source_playing_states_.begin(); |
- it != source_playing_states_.end();) { |
- PlayingStates& states = it->second; |
- // We cannot use RemovePlayingState as it might invalidate |it|. |
- states.erase(std::remove(states.begin(), states.end(), state), |
- states.end()); |
- if (states.empty()) |
- it = source_playing_states_.erase(it); |
- else |
- ++it; |
- } |
-} |
- |
void WebRtcAudioRenderer::PrepareSink() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
media::AudioParameters new_sink_params; |