| Index: content/renderer/media/media_stream_audio_source.cc
|
| diff --git a/content/renderer/media/media_stream_audio_source.cc b/content/renderer/media/media_stream_audio_source.cc
|
| index 8db50426ebc4d8b9427ea4bf3cd37dad80ceac5c..c601348cc2606834b9d7a30a55e57ad39f9b69c9 100644
|
| --- a/content/renderer/media/media_stream_audio_source.cc
|
| +++ b/content/renderer/media/media_stream_audio_source.cc
|
| @@ -5,6 +5,8 @@
|
| #include "content/renderer/media/media_stream_audio_source.h"
|
|
|
| #include "base/bind.h"
|
| +#include "base/single_thread_task_runner.h"
|
| +#include "base/threading/thread_task_runner_handle.h"
|
| #include "content/renderer/media/media_stream_audio_track.h"
|
| #include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
|
| #include "third_party/WebKit/public/platform/WebString.h"
|
| @@ -14,13 +16,14 @@ namespace content {
|
| MediaStreamAudioSource::MediaStreamAudioSource(bool is_local_source)
|
| : is_local_source_(is_local_source),
|
| is_stopped_(false),
|
| + task_runner_(base::ThreadTaskRunnerHandle::Get()),
|
| weak_factory_(this) {
|
| DVLOG(1) << "MediaStreamAudioSource@" << this << "::MediaStreamAudioSource("
|
| << (is_local_source_ ? "local" : "remote") << " source)";
|
| }
|
|
|
| MediaStreamAudioSource::~MediaStreamAudioSource() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
| DVLOG(1) << "MediaStreamAudioSource@" << this << " is being destroyed.";
|
| }
|
|
|
| @@ -36,7 +39,7 @@ MediaStreamAudioSource* MediaStreamAudioSource::From(
|
|
|
| bool MediaStreamAudioSource::ConnectToTrack(
|
| const blink::WebMediaStreamTrack& blink_track) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
| DCHECK(!blink_track.isNull());
|
|
|
| // Sanity-check that there is not already a MediaStreamAudioTrack instance
|
| @@ -88,19 +91,19 @@ void* MediaStreamAudioSource::GetClassIdentifier() const {
|
|
|
| std::unique_ptr<MediaStreamAudioTrack>
|
| MediaStreamAudioSource::CreateMediaStreamAudioTrack(const std::string& id) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
| return std::unique_ptr<MediaStreamAudioTrack>(
|
| new MediaStreamAudioTrack(is_local_source()));
|
| }
|
|
|
| bool MediaStreamAudioSource::EnsureSourceIsStarted() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
| DVLOG(1) << "MediaStreamAudioSource@" << this << "::EnsureSourceIsStarted()";
|
| return true;
|
| }
|
|
|
| void MediaStreamAudioSource::EnsureSourceIsStopped() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
| DVLOG(1) << "MediaStreamAudioSource@" << this << "::EnsureSourceIsStopped()";
|
| }
|
|
|
| @@ -118,13 +121,13 @@ void MediaStreamAudioSource::DeliverDataToTracks(
|
| }
|
|
|
| void MediaStreamAudioSource::DoStopSource() {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
| EnsureSourceIsStopped();
|
| is_stopped_ = true;
|
| }
|
|
|
| void MediaStreamAudioSource::StopAudioDeliveryTo(MediaStreamAudioTrack* track) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(task_runner_->RunsTasksOnCurrentThread());
|
|
|
| const bool did_remove_last_track = deliverer_.RemoveConsumer(track);
|
| DVLOG(1) << "Removed MediaStreamAudioTrack@" << track
|
| @@ -136,4 +139,12 @@ void MediaStreamAudioSource::StopAudioDeliveryTo(MediaStreamAudioTrack* track) {
|
| MediaStreamSource::StopSource();
|
| }
|
|
|
| +void MediaStreamAudioSource::StopSourceOnError(const std::string& why) {
|
| + VLOG(1) << why;
|
| +
|
| + // Stop source when error occurs.
|
| + task_runner_->PostTask(
|
| + FROM_HERE, base::Bind(&MediaStreamSource::StopSource, GetWeakPtr()));
|
| +}
|
| +
|
| } // namespace content
|
|
|