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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 19331002: Associate an id with the output surface to handle lost contexts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix android, tests Created 7 years, 5 months 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
Index: content/browser/renderer_host/render_widget_host_view_aura.cc
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 4fd93b93bda709b6ec21ff8584bd9db2ca6fd77f..f1d714fd599f91807fd0f47d6a77b13fd0f412aa 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -298,6 +298,7 @@ bool PointerEventActivates(const ui::Event& event) {
// Swap ack for the renderer when kCompositeToMailbox is enabled.
void SendCompositorFrameAck(
int32 route_id,
+ uint32 output_surface_id,
int renderer_host_id,
const gpu::Mailbox& received_mailbox,
const gfx::Size& received_size,
@@ -322,7 +323,7 @@ void SendCompositorFrameAck(
}
RenderWidgetHostImpl::SendSwapCompositorFrameAck(
- route_id, renderer_host_id, ack);
+ route_id, output_surface_id, renderer_host_id, ack);
}
void AcknowledgeBufferForGpu(
@@ -1401,6 +1402,7 @@ void RenderWidgetHostViewAura::AcceleratedSurfaceBuffersSwapped(
}
void RenderWidgetHostViewAura::SwapDelegatedFrame(
+ uint32 output_surface_id,
scoped_ptr<cc::DelegatedFrameData> frame_data,
float frame_device_scale_factor,
const ui::LatencyInfo& latency_info) {
@@ -1414,7 +1416,8 @@ void RenderWidgetHostViewAura::SwapDelegatedFrame(
cc::CompositorFrameAck ack;
ack.resources.swap(frame_data->resource_list);
RenderWidgetHostImpl::SendSwapCompositorFrameAck(
- host_->GetRoutingID(), host_->GetProcess()->GetID(), ack);
+ host_->GetRoutingID(), output_surface_id,
+ host_->GetProcess()->GetID(), ack);
return;
}
window_->layer()->SetDelegatedFrame(frame_data.Pass(), frame_size_in_dip);
@@ -1427,23 +1430,26 @@ void RenderWidgetHostViewAura::SwapDelegatedFrame(
ui::Compositor* compositor = GetCompositor();
if (!compositor) {
- SendDelegatedFrameAck();
+ SendDelegatedFrameAck(output_surface_id);
} else {
compositor->SetLatencyInfo(latency_info);
AddOnCommitCallbackAndDisableLocks(
base::Bind(&RenderWidgetHostViewAura::SendDelegatedFrameAck,
- AsWeakPtr()));
+ AsWeakPtr(),
+ output_surface_id));
}
}
-void RenderWidgetHostViewAura::SendDelegatedFrameAck() {
+void RenderWidgetHostViewAura::SendDelegatedFrameAck(uint32 output_surface_id) {
cc::CompositorFrameAck ack;
window_->layer()->TakeUnusedResourcesForChildCompositor(&ack.resources);
RenderWidgetHostImpl::SendSwapCompositorFrameAck(
- host_->GetRoutingID(), host_->GetProcess()->GetID(), ack);
+ host_->GetRoutingID(), output_surface_id,
+ host_->GetProcess()->GetID(), ack);
}
void RenderWidgetHostViewAura::SwapSoftwareFrame(
+ uint32 output_surface_id,
scoped_ptr<cc::SoftwareFrameData> frame_data,
float frame_device_scale_factor,
const ui::LatencyInfo& latency_info) {
@@ -1452,7 +1458,7 @@ void RenderWidgetHostViewAura::SwapSoftwareFrame(
gfx::Size frame_size_in_dip =
ConvertSizeToDIP(frame_device_scale_factor, frame_size);
if (ShouldSkipFrame(frame_size_in_dip)) {
- SendSoftwareFrameAck(frame_data->id);
+ SendSoftwareFrameAck(output_surface_id, frame_data->id);
return;
}
@@ -1482,7 +1488,7 @@ void RenderWidgetHostViewAura::SwapSoftwareFrame(
cc::TextureMailbox::ReleaseCallback callback =
base::Bind(ReleaseMailbox, Passed(&shared_memory),
base::Bind(&RenderWidgetHostViewAura::SendSoftwareFrameAck,
- AsWeakPtr(), frame_data->id));
+ AsWeakPtr(), output_surface_id, frame_data->id));
current_software_frame_ =
cc::TextureMailbox(shared_memory_raw_ptr, frame_size, callback);
DCHECK(current_software_frame_.IsSharedMemory());
@@ -1503,24 +1509,28 @@ void RenderWidgetHostViewAura::SwapSoftwareFrame(
}
void RenderWidgetHostViewAura::SendSoftwareFrameAck(
- unsigned software_frame_id) {
+ uint32 output_surface_id, unsigned software_frame_id) {
cc::CompositorFrameAck ack;
ack.last_software_frame_id = software_frame_id;
RenderWidgetHostImpl::SendSwapCompositorFrameAck(
- host_->GetRoutingID(), host_->GetProcess()->GetID(), ack);
+ host_->GetRoutingID(), output_surface_id,
+ host_->GetProcess()->GetID(), ack);
}
void RenderWidgetHostViewAura::OnSwapCompositorFrame(
+ uint32 output_surface_id,
scoped_ptr<cc::CompositorFrame> frame) {
if (frame->delegated_frame_data) {
- SwapDelegatedFrame(frame->delegated_frame_data.Pass(),
+ SwapDelegatedFrame(output_surface_id,
+ frame->delegated_frame_data.Pass(),
frame->metadata.device_scale_factor,
frame->metadata.latency_info);
return;
}
if (frame->software_frame_data) {
- SwapSoftwareFrame(frame->software_frame_data.Pass(),
+ SwapSoftwareFrame(output_surface_id,
+ frame->software_frame_data.Pass(),
frame->metadata.device_scale_factor,
frame->metadata.latency_info);
return;
@@ -1531,7 +1541,7 @@ void RenderWidgetHostViewAura::OnSwapCompositorFrame(
BufferPresentedCallback ack_callback = base::Bind(
&SendCompositorFrameAck,
- host_->GetRoutingID(), host_->GetProcess()->GetID(),
+ host_->GetRoutingID(), output_surface_id, host_->GetProcess()->GetID(),
frame->gl_frame_data->mailbox, frame->gl_frame_data->size);
if (!frame->gl_frame_data->sync_point) {

Powered by Google App Engine
This is Rietveld 408576698