文章都是通过阅读源码分析出来的,还在不断完善与改进中,其中难免有些地方理解得不对,欢迎大家批评指正。
转载请注明:From LXS. http://blog.csdn.net/uiop78uiop78/
GUI系统之SurfaceFlinger章节目录:
转载请注明:From LXS. http://blog.csdn.net/uiop78uiop78/
GUI系统之SurfaceFlinger章节目录:
blog.csdn.net/uiop78uiop78/article/details/8954508
1.1.1 postFramebuffer
在多缓冲区机制中,只有把显示数据写入framebuffer才能真正在物理屏幕上显示。前面几个小节的输出都是backbuffers,我们还需要最后一步——postFramebuffer。
void SurfaceFlinger::postFramebuffer()
{…
const DisplayHardware&hw(graphicPlane(0).displayHardware());
…
hw.flip(mSwapRegion);//交换前后台buffer
size_t numLayers =mVisibleLayersSortedByZ.size();
for (size_t i = 0; i <numLayers; i++) {
mVisibleLayersSortedByZ[i]->onLayerDisplayed();
}
…
}
先从opengl本地窗口的角度来想一下:
Ø queueBuffer
一旦“生产者”完成生产后,它需要把当前的buffer重新入队,以使“消费者”可以做接下来的处理
Ø dequeueBuffer