diff options
author | dalecurtis <dalecurtis@chromium.org> | 2015-02-10 13:09:49 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-10 21:10:52 +0000 |
commit | 0a7a3314bd50725e8327f22afd5517e6a1325c89 (patch) | |
tree | e11612ca7ee4ab441886baf08703ec16295f2a9d | |
parent | 30acccac63eab05248870f11aceb2c74ee76ccea (diff) | |
download | chromium_src-0a7a3314bd50725e8327f22afd5517e6a1325c89.zip chromium_src-0a7a3314bd50725e8327f22afd5517e6a1325c89.tar.gz chromium_src-0a7a3314bd50725e8327f22afd5517e6a1325c89.tar.bz2 |
Remove Client= from media_renderer.mojom
BUG=451321
TEST=mojo://media_test
Review URL: https://codereview.chromium.org/911783002
Cr-Commit-Position: refs/heads/master@{#315639}
-rw-r--r-- | media/mojo/interfaces/media_renderer.mojom | 5 | ||||
-rw-r--r-- | media/mojo/services/mojo_media_application.cc | 2 | ||||
-rw-r--r-- | media/mojo/services/mojo_renderer_impl.cc | 15 | ||||
-rw-r--r-- | media/mojo/services/mojo_renderer_impl.h | 7 | ||||
-rw-r--r-- | media/mojo/services/mojo_renderer_service.cc | 14 | ||||
-rw-r--r-- | media/mojo/services/mojo_renderer_service.h | 5 |
6 files changed, 21 insertions, 27 deletions
diff --git a/media/mojo/interfaces/media_renderer.mojom b/media/mojo/interfaces/media_renderer.mojom index 6b7e86e..9165a33 100644 --- a/media/mojo/interfaces/media_renderer.mojom +++ b/media/mojo/interfaces/media_renderer.mojom @@ -7,13 +7,14 @@ module mojo; import "media/mojo/interfaces/demuxer_stream.mojom"; import "media/mojo/interfaces/media_types.mojom"; -[Client=MediaRendererClient] interface MediaRenderer { // Initializes the Renderer with one or both of an audio and video stream, // calling back upon completion. // NOTE: If an error occurs, MediaRendererClient::OnError() will be called // before the callback is executed. - Initialize(DemuxerStream? audio, DemuxerStream? video) => (); + Initialize(MediaRendererClient client, + DemuxerStream? audio, + DemuxerStream? video) => (); // Discards any buffered data, executing callback when completed. // NOTE: If an error occurs, MediaRendererClient::OnError() can be called diff --git a/media/mojo/services/mojo_media_application.cc b/media/mojo/services/mojo_media_application.cc index 24f6e29..48597bd 100644 --- a/media/mojo/services/mojo_media_application.cc +++ b/media/mojo/services/mojo_media_application.cc @@ -55,6 +55,6 @@ class MojoMediaApplication } // namespace media MojoResult MojoMain(MojoHandle mojo_handle) { - mojo::ApplicationRunnerChromium runner(new media::MojoMediaApplication); + mojo::ApplicationRunnerChromium runner(new media::MojoMediaApplication()); return runner.Run(mojo_handle); } diff --git a/media/mojo/services/mojo_renderer_impl.cc b/media/mojo/services/mojo_renderer_impl.cc index bf422a3..6abed01 100644 --- a/media/mojo/services/mojo_renderer_impl.cc +++ b/media/mojo/services/mojo_renderer_impl.cc @@ -21,7 +21,8 @@ MojoRendererImpl::MojoRendererImpl( const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, mojo::MediaRendererPtr remote_media_renderer) : task_runner_(task_runner), - remote_media_renderer_pipe_(remote_media_renderer.PassMessagePipe()), + remote_media_renderer_(remote_media_renderer.Pass()), + binding_(this), weak_factory_(this) { DVLOG(1) << __FUNCTION__; } @@ -45,15 +46,6 @@ void MojoRendererImpl::Initialize( DCHECK(task_runner_->BelongsToCurrentThread()); DCHECK(demuxer_stream_provider); - // Bind the mojo InterfacePtr to the message pipe on the - // current thread so we can use it. The MojoRendererImpl object - // is constructed on another thread so we can't do it in the - // constructor and must pass a message pipe around since - // InterfacePtr's are tied to the message loop they were created on. - remote_media_renderer_.Bind(remote_media_renderer_pipe_.Pass()); - DCHECK(remote_media_renderer_); - remote_media_renderer_.set_client(this); - demuxer_stream_provider_ = demuxer_stream_provider; init_cb_ = init_cb; ended_cb_ = ended_cb; @@ -79,7 +71,10 @@ void MojoRendererImpl::Initialize( ->DidConnect(); } + mojo::MediaRendererClientPtr client_ptr; + binding_.Bind(GetProxy(&client_ptr)); remote_media_renderer_->Initialize( + client_ptr.Pass(), audio_stream.Pass(), video_stream.Pass(), BindToCurrentLoop(base::Bind(&MojoRendererImpl::OnInitialized, diff --git a/media/mojo/services/mojo_renderer_impl.h b/media/mojo/services/mojo_renderer_impl.h index c891892..d1ddc31 100644 --- a/media/mojo/services/mojo_renderer_impl.h +++ b/media/mojo/services/mojo_renderer_impl.h @@ -65,12 +65,7 @@ class MojoRendererImpl : public Renderer, public mojo::MediaRendererClient { DemuxerStreamProvider* demuxer_stream_provider_; mojo::MediaRendererPtr remote_media_renderer_; - - // Store a handle to the mojo message pipe. This object - // temporary and is used as a springboard so that the - // |remote_media_renderer_| can be constructed on the - // correct thread. - mojo::ScopedMessagePipeHandle remote_media_renderer_pipe_; + mojo::Binding<MediaRendererClient> binding_; // Callbacks passed to Initialize() that we forward messages from // |remote_media_renderer_| through. diff --git a/media/mojo/services/mojo_renderer_service.cc b/media/mojo/services/mojo_renderer_service.cc index 8224986..2858d55 100644 --- a/media/mojo/services/mojo_renderer_service.cc +++ b/media/mojo/services/mojo_renderer_service.cc @@ -69,13 +69,13 @@ MojoRendererService::MojoRendererService() MojoRendererService::~MojoRendererService() { } -void MojoRendererService::Initialize(mojo::DemuxerStreamPtr audio, +void MojoRendererService::Initialize(mojo::MediaRendererClientPtr client, + mojo::DemuxerStreamPtr audio, mojo::DemuxerStreamPtr video, const mojo::Closure& callback) { DVLOG(1) << __FUNCTION__; DCHECK_EQ(state_, STATE_UNINITIALIZED); - DCHECK(client()); - + client_ = client.Pass(); state_ = STATE_INITIALIZING; stream_provider_.reset(new DemuxerStreamProviderShim( audio.Pass(), @@ -149,7 +149,7 @@ void MojoRendererService::UpdateMediaTime(bool force) { if (!force && media_time == last_media_time_usec_) return; - client()->OnTimeUpdate(media_time, media_time); + client_->OnTimeUpdate(media_time, media_time); last_media_time_usec_ = media_time; } @@ -169,20 +169,20 @@ void MojoRendererService::SchedulePeriodicMediaTimeUpdates() { void MojoRendererService::OnBufferingStateChanged( BufferingState new_buffering_state) { DVLOG(2) << __FUNCTION__ << "(" << new_buffering_state << ") "; - client()->OnBufferingStateChange( + client_->OnBufferingStateChange( static_cast<mojo::BufferingState>(new_buffering_state)); } void MojoRendererService::OnRendererEnded() { DVLOG(1) << __FUNCTION__; CancelPeriodicMediaTimeUpdates(); - client()->OnEnded(); + client_->OnEnded(); } void MojoRendererService::OnError(PipelineStatus error) { DVLOG(1) << __FUNCTION__; state_ = STATE_ERROR; - client()->OnError(); + client_->OnError(); } void MojoRendererService::OnFlushCompleted(const mojo::Closure& callback) { diff --git a/media/mojo/services/mojo_renderer_service.h b/media/mojo/services/mojo_renderer_service.h index ca875f2..c31ba2f 100644 --- a/media/mojo/services/mojo_renderer_service.h +++ b/media/mojo/services/mojo_renderer_service.h @@ -38,7 +38,8 @@ class MEDIA_EXPORT MojoRendererService ~MojoRendererService() override; // mojo::MediaRenderer implementation. - void Initialize(mojo::DemuxerStreamPtr audio, + void Initialize(mojo::MediaRendererClientPtr client, + mojo::DemuxerStreamPtr audio, mojo::DemuxerStreamPtr video, const mojo::Closure& callback) override; void Flush(const mojo::Closure& callback) override; @@ -95,6 +96,8 @@ class MEDIA_EXPORT MojoRendererService base::RepeatingTimer<MojoRendererService> time_update_timer_; uint64_t last_media_time_usec_; + mojo::MediaRendererClientPtr client_; + base::WeakPtr<MojoRendererService> weak_this_; base::WeakPtrFactory<MojoRendererService> weak_factory_; |