| Index: media/remoting/remote_renderer_impl.cc
|
| diff --git a/media/remoting/remote_renderer_impl.cc b/media/remoting/remote_renderer_impl.cc
|
| index 77fac89d7e2830952d9dc85900584182d5786530..57a180ecb1161cf0aa27a5e1ce5f317c28ee4a10 100644
|
| --- a/media/remoting/remote_renderer_impl.cc
|
| +++ b/media/remoting/remote_renderer_impl.cc
|
| @@ -36,14 +36,13 @@ RemoteRendererImpl::RemoteRendererImpl(
|
| rpc_broker_(remoting_renderer_controller_->GetRpcBroker()),
|
| rpc_handle_(remoting::RpcBroker::GetUniqueHandle()),
|
| remote_renderer_handle_(remoting::kInvalidHandle),
|
| - interstitial_ui_(video_renderer_sink,
|
| - remoting_renderer_controller->pipeline_metadata()),
|
| weak_factory_(this) {
|
| VLOG(2) << __FUNCTION__;
|
| // The constructor is running on the main thread.
|
| - DCHECK(remoting_renderer_controller);
|
| -
|
| - UpdateInterstitial();
|
| + DCHECK(remoting_renderer_controller_);
|
| + remoting_renderer_controller_->SetShowInterstitialCallback(base::Bind(
|
| + &RemoteRendererImpl::RequestUpdateInterstitialOnMainThread,
|
| + media_task_runner_, weak_factory_.GetWeakPtr(), video_renderer_sink));
|
|
|
| const remoting::RpcBroker::ReceiveMessageCallback receive_callback =
|
| base::Bind(&RemoteRendererImpl::OnMessageReceivedOnMainThread,
|
| @@ -555,10 +554,6 @@ void RemoteRendererImpl::OnFatalError(PipelineStatus error) {
|
| if (state_ == STATE_ERROR)
|
| return;
|
|
|
| - main_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&RemoteRendererImpl::UpdateInterstitial,
|
| - weak_factory_.GetWeakPtr()));
|
| -
|
| const State old_state = state_;
|
| state_ = STATE_ERROR;
|
|
|
| @@ -576,12 +571,28 @@ void RemoteRendererImpl::OnFatalError(PipelineStatus error) {
|
| client_->OnError(error);
|
| }
|
|
|
| -void RemoteRendererImpl::UpdateInterstitial() {
|
| - DCHECK(main_task_runner_->BelongsToCurrentThread());
|
| +// static
|
| +void RemoteRendererImpl::RequestUpdateInterstitialOnMainThread(
|
| + scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
|
| + base::WeakPtr<RemoteRendererImpl> remote_renderer_impl,
|
| + VideoRendererSink* video_renderer_sink,
|
| + const SkBitmap& background_image,
|
| + const gfx::Size& canvas_size,
|
| + RemotingInterstitialType interstitial_type) {
|
| + media_task_runner->PostTask(
|
| + FROM_HERE, base::Bind(&RemoteRendererImpl::UpdateInterstitial,
|
| + remote_renderer_impl, video_renderer_sink,
|
| + background_image, canvas_size, interstitial_type));
|
| +}
|
|
|
| - interstitial_ui_.ShowInterstitial(
|
| - remoting_renderer_controller_->remoting_source()->state() ==
|
| - RemotingSessionState::SESSION_STARTED);
|
| +void RemoteRendererImpl::UpdateInterstitial(
|
| + VideoRendererSink* video_renderer_sink,
|
| + const SkBitmap& background_image,
|
| + const gfx::Size& canvas_size,
|
| + RemotingInterstitialType interstitial_type) {
|
| + DCHECK(media_task_runner_->BelongsToCurrentThread());
|
| + ShowRemotingInterstitial(video_renderer_sink, background_image, canvas_size,
|
| + interstitial_type);
|
| }
|
|
|
| } // namespace media
|
|
|