Index: content/browser/devtools/renderer_overrides_handler.cc |
diff --git a/content/browser/devtools/renderer_overrides_handler.cc b/content/browser/devtools/renderer_overrides_handler.cc |
index 3fbce10dbaca04e51561930e9e2e8a69b91d16b1..f1994eabd82d628426f5017a4ff05b807ece9d05 100644 |
--- a/content/browser/devtools/renderer_overrides_handler.cc |
+++ b/content/browser/devtools/renderer_overrides_handler.cc |
@@ -90,6 +90,7 @@ void ParseGenericInputParams(base::DictionaryValue* params, |
RendererOverridesHandler::RendererOverridesHandler(DevToolsAgentHost* agent) |
: agent_(agent), |
+ has_last_compositor_frame_metadata_(false), |
capture_retry_count_(0), |
weak_factory_(this) { |
RegisterCommandHandler( |
@@ -191,6 +192,7 @@ void RendererOverridesHandler::OnClientDetached() { |
void RendererOverridesHandler::OnSwapCompositorFrame( |
const cc::CompositorFrameMetadata& frame_metadata) { |
last_compositor_frame_metadata_ = frame_metadata; |
+ has_last_compositor_frame_metadata_ = true; |
if (screencast_command_) |
InnerSwapCompositorFrame(); |
@@ -541,8 +543,12 @@ RendererOverridesHandler::PageStartScreencast( |
host->SetTouchEventEmulationEnabled(true, true); |
bool visible = !host->is_hidden(); |
NotifyScreencastVisibility(visible); |
- if (visible) |
- InnerSwapCompositorFrame(); |
+ if (visible) { |
+ if (has_last_compositor_frame_metadata_) |
+ InnerSwapCompositorFrame(); |
+ else |
+ host->Send(new ViewMsg_ForceRedraw(host->GetRoutingID(), 0)); |
+ } |
return command->SuccessResponse(NULL); |
} |