基于Android4.4.2 aosp源码
初始化流程:
SurfaceComposerClient::createSurface
Client::createSurface
SurfaceFlinger::createLayer
SurfaceFlinger::createNormalLayer
Layer::Layer
Layer::onFirstRef
GLConsumer::setConsumerUsageBits
BufferQueue::setConsumerUsageBits
GLConsumer::setDefaultMaxBufferCount
BufferQueue::setDefaultMaxBufferCount
GLConsumer::setTransformHint
BufferQueue::setTransformHint
Layer::setBuffers
BufferQueue::setDefaultBufferSize
BufferQueue::setDefaultBufferFormat
BufferQueue::setConsumerUsageBits
SurfaceFlinger::addClientLayer
Client::attachLayer
mCurrentState.layersSortedByZ.add
SurfaceFlinger::setTransactionFlags
SurfaceFlinger::signalTransaction
SurfaceFlinger::onMessageReceived
SurfaceFlinger::handleMessageTransaction
SurfaceFlinger::handleTransaction
SurfaceFlinger::handleTransactionLocked
SurfaceFlinger::commitTransaction
SurfaceFlinger::handleMessageInvalidate
SurfaceFlinger::handlePageFlip
SurfaceFlinger::signalRefresh
SurfaceFlinger::handleMessageRefresh
问题:
- 每一次发送invalidate消息,都会触发SurfaceFlinger::onMessageReceived以下代码整体被执行,而不管有没有layers,这块是否表示效率过低?