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

Unified Diff: content/browser/renderer_host/delegated_frame_host.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
Index: content/browser/renderer_host/delegated_frame_host.cc
diff --git a/content/browser/renderer_host/delegated_frame_host.cc b/content/browser/renderer_host/delegated_frame_host.cc
index 9505792fd0c14a225865dafd7ca08cd099daf730..bdc11c51015e22a2d2aaa25095eca11683292631 100644
--- a/content/browser/renderer_host/delegated_frame_host.cc
+++ b/content/browser/renderer_host/delegated_frame_host.cc
@@ -476,20 +476,11 @@ void DelegatedFrameHost::SwapDelegatedFrame(uint32_t compositor_frame_sink_id,
} else {
ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
cc::SurfaceManager* manager = factory->GetSurfaceManager();
+ bool new_surface = false;
Fady Samuel 2016/11/10 23:33:37 allocated_new_local_frame_id
Saman Sami 2016/11/11 17:49:59 Done.
if (!local_frame_id_.is_valid() || frame_size != current_surface_size_ ||
frame_size_in_dip != current_frame_size_in_dip_) {
- if (local_frame_id_.is_valid())
- surface_factory_->Destroy(local_frame_id_);
local_frame_id_ = id_allocator_->GenerateId();
- surface_factory_->Create(local_frame_id_);
- // manager must outlive compositors using it.
- client_->DelegatedFrameHostGetLayer()->SetShowSurface(
- cc::SurfaceId(frame_sink_id_, local_frame_id_),
- base::Bind(&SatisfyCallback, base::Unretained(manager)),
- base::Bind(&RequireCallback, base::Unretained(manager)), frame_size,
- frame_device_scale_factor, frame_size_in_dip);
- current_surface_size_ = frame_size;
- current_scale_factor_ = frame_device_scale_factor;
+ new_surface = true;
}
gfx::Size desired_size = client_->DelegatedFrameHostDesiredSizeInDIP();
@@ -513,6 +504,16 @@ void DelegatedFrameHost::SwapDelegatedFrame(uint32_t compositor_frame_sink_id,
}
surface_factory_->SubmitCompositorFrame(local_frame_id_, std::move(frame),
ack_callback);
+ if (new_surface) {
+ // manager must outlive compositors using it.
+ client_->DelegatedFrameHostGetLayer()->SetShowSurface(
+ cc::SurfaceId(frame_sink_id_, local_frame_id_),
+ base::Bind(&SatisfyCallback, base::Unretained(manager)),
+ base::Bind(&RequireCallback, base::Unretained(manager)), frame_size,
+ frame_device_scale_factor, frame_size_in_dip);
+ current_surface_size_ = frame_size;
+ current_scale_factor_ = frame_device_scale_factor;
+ }
}
released_front_lock_ = NULL;
current_frame_size_in_dip_ = frame_size_in_dip;
@@ -593,7 +594,6 @@ void DelegatedFrameHost::SetBeginFrameSource(
void DelegatedFrameHost::EvictDelegatedFrame() {
client_->DelegatedFrameHostGetLayer()->SetShowSolidColorContent();
if (local_frame_id_.is_valid()) {
- surface_factory_->Destroy(local_frame_id_);
local_frame_id_ = cc::LocalFrameId();
}
delegated_frame_evictor_->DiscardedFrame();
@@ -827,9 +827,7 @@ DelegatedFrameHost::~DelegatedFrameHost() {
DCHECK(!compositor_);
ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
factory->GetContextFactory()->RemoveObserver(this);
-
- if (local_frame_id_.is_valid())
- surface_factory_->Destroy(local_frame_id_);
+ surface_factory_->Reset();
factory->GetSurfaceManager()->UnregisterSurfaceFactoryClient(frame_sink_id_);
factory->GetSurfaceManager()->InvalidateFrameSinkId(frame_sink_id_);

Powered by Google App Engine
This is Rietveld 408576698