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 |