chromium:LoadUrl之後會發生那些事情之 cc::drawLayers
ThreadProxy::BeginMainFrame()
--->Proxy::ImplThreadTaskRunner()->PostTask(
FROM_HERE,
base::Bind(&ThreadProxy::StartCommitOnImplThread,
impl_thread_weak_ptr_,
&completion,
queue.release()));
Call Stack:
#0 cc::ResourceProvider::PrepareSendToParent(const std::vector<unsigned int,std::allocator<unsigned int> > & resources, std::vector<cc::TransferableResource,std::allocator<cc::TransferableResource> > * list)
#1 cc::DelegatingRenderer::DrawFrame(cc::ScopedPtrVector<cc::RenderPass> * render_passes_in_draw_order, float device_scale_factor, const gfx::Rect & device_viewport_rect, const gfx::Rect & device_clip_rect, bool disable_picture_quad_image_filtering)
#2 cc::LayerTreeHostImpl::DrawLayers(cc::LayerTreeHostImpl::FrameData * frame)
#3 cc::ThreadProxy::DrawSwapInternal(bool forced_draw)
#4 cc::ThreadProxy::ScheduledActionDrawAndSwapIfPossible()
#5 cc::Scheduler::DrawAndSwapIfPossible()
#6 cc::Scheduler::ProcessScheduledActions()
#7 cc::Scheduler::OnBeginImplFrameDeadline()
本文是在content_shell下的呼叫棧,所以LayerTreeHostImpl中的renderer_是DelegatingRenderer,DrawLayers中的DrawFrame呼叫的是DelegatingRenderer::DrawFrame。