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

Unified Diff: content/browser/frame_host/render_widget_host_view_child_frame.cc

Issue 2485473003: Remove SurfaceFactory::Create and SurfaceFactory::Destroy (Closed)
Patch Set: up Created 4 years, 1 month 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 | « components/exo/surface.cc ('k') | content/browser/frame_host/render_widget_host_view_guest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/frame_host/render_widget_host_view_child_frame.cc
diff --git a/content/browser/frame_host/render_widget_host_view_child_frame.cc b/content/browser/frame_host/render_widget_host_view_child_frame.cc
index e960e39f4a6278c5fb0a12834dc9c846f2e143dc..1453acb03deefaa213af67284da295b01b33d041 100644
--- a/content/browser/frame_host/render_widget_host_view_child_frame.cc
+++ b/content/browser/frame_host/render_widget_host_view_child_frame.cc
@@ -69,9 +69,7 @@ RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame(
}
RenderWidgetHostViewChildFrame::~RenderWidgetHostViewChildFrame() {
- if (local_frame_id_.is_valid())
- surface_factory_->Destroy(local_frame_id_);
-
+ surface_factory_->EvictSurface();
if (GetSurfaceManager())
GetSurfaceManager()->InvalidateFrameSinkId(frame_sink_id_);
}
@@ -400,10 +398,22 @@ void RenderWidgetHostViewChildFrame::OnSwapCompositorFrame(
current_surface_scale_factor_ = scale_factor;
}
+ bool allocated_new_local_frame_id = false;
if (!local_frame_id_.is_valid()) {
local_frame_id_ = id_allocator_->GenerateId();
- surface_factory_->Create(local_frame_id_);
+ allocated_new_local_frame_id = true;
+ }
+
+ cc::SurfaceFactory::DrawCallback ack_callback =
+ base::Bind(&RenderWidgetHostViewChildFrame::SurfaceDrawn, AsWeakPtr(),
+ compositor_frame_sink_id);
+ ack_pending_count_++;
+ // If this value grows very large, something is going wrong.
+ DCHECK_LT(ack_pending_count_, 1000U);
+ surface_factory_->SubmitCompositorFrame(local_frame_id_, std::move(frame),
+ ack_callback);
+ if (allocated_new_local_frame_id) {
cc::SurfaceSequence sequence =
cc::SurfaceSequence(frame_sink_id_, next_surface_sequence_++);
// The renderer process will satisfy this dependency when it creates a
@@ -415,16 +425,6 @@ void RenderWidgetHostViewChildFrame::OnSwapCompositorFrame(
cc::SurfaceId(frame_sink_id_, local_frame_id_), frame_size,
scale_factor, sequence);
}
-
- cc::SurfaceFactory::DrawCallback ack_callback =
- base::Bind(&RenderWidgetHostViewChildFrame::SurfaceDrawn, AsWeakPtr(),
- compositor_frame_sink_id);
- ack_pending_count_++;
- // If this value grows very large, something is going wrong.
- DCHECK_LT(ack_pending_count_, 1000U);
- surface_factory_->SubmitCompositorFrame(local_frame_id_, std::move(frame),
- ack_callback);
-
ProcessFrameSwappedCallbacks();
}
@@ -619,7 +619,7 @@ void RenderWidgetHostViewChildFrame::SubmitSurfaceCopyRequest(
if (!src_subrect.IsEmpty())
request->set_area(src_subrect);
- surface_factory_->RequestCopyOfSurface(local_frame_id_, std::move(request));
+ surface_factory_->RequestCopyOfSurface(std::move(request));
}
void RenderWidgetHostViewChildFrame::CopyFromCompositingSurfaceToVideoFrame(
@@ -726,8 +726,7 @@ RenderWidgetHostViewChildFrame::CreateBrowserAccessibilityManager(
}
void RenderWidgetHostViewChildFrame::ClearCompositorSurfaceIfNecessary() {
- if (local_frame_id_.is_valid())
- surface_factory_->Destroy(local_frame_id_);
+ surface_factory_->EvictSurface();
local_frame_id_ = cc::LocalFrameId();
}
« no previous file with comments | « components/exo/surface.cc ('k') | content/browser/frame_host/render_widget_host_view_guest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698