summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordalecurtis <dalecurtis@chromium.org>2015-02-10 13:09:49 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-10 21:10:52 +0000
commit0a7a3314bd50725e8327f22afd5517e6a1325c89 (patch)
treee11612ca7ee4ab441886baf08703ec16295f2a9d
parent30acccac63eab05248870f11aceb2c74ee76ccea (diff)
downloadchromium_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.mojom5
-rw-r--r--media/mojo/services/mojo_media_application.cc2
-rw-r--r--media/mojo/services/mojo_renderer_impl.cc15
-rw-r--r--media/mojo/services/mojo_renderer_impl.h7
-rw-r--r--media/mojo/services/mojo_renderer_service.cc14
-rw-r--r--media/mojo/services/mojo_renderer_service.h5
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_;