Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(74)

Unified Diff: media/remoting/remote_renderer_impl.cc

Issue 2566223005: Media Remoting: Update remoting interstitial when status changes. (Closed)
Patch Set: Rebased only. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/remoting/remote_renderer_impl.h ('k') | media/remoting/remoting_interstitial_ui.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/remoting/remote_renderer_impl.cc
diff --git a/media/remoting/remote_renderer_impl.cc b/media/remoting/remote_renderer_impl.cc
index b87b7f61cc334864e86c48abd6e0afa2cf1aafd3..b814b00cbc0dcfb159f6d67e54529ae2e994f7e1 100644
--- a/media/remoting/remote_renderer_impl.cc
+++ b/media/remoting/remote_renderer_impl.cc
@@ -35,14 +35,14 @@ RemoteRendererImpl::RemoteRendererImpl(
rpc_broker_(remoting_renderer_controller_->GetRpcBroker()),
rpc_handle_(rpc_broker_->GetUniqueHandle()),
remote_renderer_handle_(remoting::kInvalidHandle),
- interstitial_ui_(video_renderer_sink,
- remoting_renderer_controller->pipeline_metadata()),
+ video_renderer_sink_(video_renderer_sink),
weak_factory_(this) {
VLOG(2) << __func__;
// 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()));
const remoting::RpcBroker::ReceiveMessageCallback receive_callback =
base::Bind(&RemoteRendererImpl::OnMessageReceivedOnMainThread,
@@ -53,6 +53,17 @@ RemoteRendererImpl::RemoteRendererImpl(
RemoteRendererImpl::~RemoteRendererImpl() {
VLOG(2) << __func__;
DCHECK(media_task_runner_->BelongsToCurrentThread());
+
+ UpdateInterstitial(interstitial_background_, canvas_size_,
+ RemotingInterstitialType::BETWEEN_SESSIONS);
+
+ // Post task on main thread to unset the interstial callback.
+ main_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&RemotingRendererController::SetShowInterstitialCallback,
+ remoting_renderer_controller_,
+ RemotingRendererController::ShowInterstitialCallback()));
+
// Post task on main thread to unregister message receiver.
main_task_runner_->PostTask(
FROM_HERE,
@@ -597,10 +608,6 @@ void RemoteRendererImpl::OnFatalError(PipelineStatus error) {
VLOG(2) << __func__ << " with PipelineStatus error=" << error;
- main_task_runner_->PostTask(
- FROM_HERE, base::Bind(&RemoteRendererImpl::UpdateInterstitial,
- weak_factory_.GetWeakPtr()));
-
const State old_state = state_;
state_ = STATE_ERROR;
@@ -618,12 +625,29 @@ 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,
+ 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,
+ background_image, canvas_size, interstitial_type));
+}
- interstitial_ui_.ShowInterstitial(
- remoting_renderer_controller_->remoting_source()->state() ==
- RemotingSessionState::SESSION_STARTED);
+void RemoteRendererImpl::UpdateInterstitial(
+ const SkBitmap& background_image,
+ const gfx::Size& canvas_size,
+ RemotingInterstitialType interstitial_type) {
+ DCHECK(media_task_runner_->BelongsToCurrentThread());
+ if (!background_image.drawsNothing())
+ interstitial_background_ = background_image;
+ canvas_size_ = canvas_size;
+ PaintRemotingInterstitial(interstitial_background_, canvas_size_,
+ interstitial_type, video_renderer_sink_);
}
} // namespace media
« no previous file with comments | « media/remoting/remote_renderer_impl.h ('k') | media/remoting/remoting_interstitial_ui.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698