ComposerService.cpp
//内部类-普通类mComposerService//surfaceFlinger 服务
IWindowManager
openSession
BufferQueue.cpp
//继承两个Bn
IGraphicBufferAlloc.cpp
SkCanvasGlue
addView
Bn
ActivityThread
performLaunchActivity
Session
WindowManagerService mService
WindowManager
createLocalWindowManager
IGraphicBufferConsumer
SurfaceControll.cpp
getSurface
onDraw
ISurfaceComposer.h
SurfaceComposerClient.cpp//Bp
BnGraphicBufferConsumer
.Stub
关联
android_view_SurfaceControl.cpp
sp<SurfaceControl> surface = client->createSurface
DecorView
//gbp初始化
nativeCreate
jni
DisplayDevice
makeCurrent
attach
BnSurfaceComposerClient
//内部类
WindowManagerGlobal
sWindowManagerService = IWindowManager.Stub.asInterface( ServiceManager.getService(\"window\"));
BufferItem
WindownManagerService
windowAddedLocked
addToDisplay
addWindow relayoutWindow
relayoutWindow
doTraversal
IGraphicBufferProducer.cpp
new
BpGraphicBufferProducer
MessageQueue
mEventQueue//处理新建surface
getService
ViewManager
draw
Layer
ConsumerBase
Slot mSlotsacquireBufferLocked//分配mGraphicBuffer
struct Slot
sp<GraphicBuffer> mGraphicBuffer
SurfaceControl
Window
JNI
GLConsumer
makeVisible window和view 关联
ViewRootImpl
android_view_Surface.cpp
初始化
IWindowSession
mWindow
View
dispatchAttachedToWindow//viewrootimp调用
scheduleTraversals
Canvas.java
BnSurfaceComposer
EventControlThread
IGraphicBufferConsumer.h
IGraphicBufferAlloc
SurfaceFlingerConsumer
updateTexImage(BufferRejecter* rejecter)
makeNewWindow
SurfaceControl
Policy
ISurfaceComposer.cpp
setView
Surface
lockCanvas
Display
BufferQueue.h
setContentView
mAttachInfo = new View.AttachInfo()
BufferQueue
SurfaceFlinger.cpp
//服务 将surface 中的layer 数据合成渲染
AttachInfo
//内部类attachInfo.mSurface 由viewrootimp赋值
SurfaceSession
nativeCreateFromSurfaceControl
Canvas
main_surfaceflinger.cpp
//surfaceflinger 进程
WindowState
mSession.windowAddedLocked();
WindowManagerImpl
FramebufferSurface
IGraphicBufferConsumer.cpp
FrameLayout
android_view_SurfaceSession.cpp
android_view_SurfaceSession_getClient
GraphicBuffer
HWComposer
mTraversalRunnable//渲染线程
BnGraphicBufferProducer
Canvas.cpp
IGraphicBufferProducer
BpGraphicBufferConsumer.
Activity
mWindow//创建mWindowManager
SurfaceComposerClient.cpp
PhoneWindow
Client
创建createLayer layercreate surface //调用SurfaceFlinger发送消息 postMessageSync
setWindowManager
GraphicBufferAlloc.cpp
Bp
draw(canvas)
BpSurfaceComposer
invalidate/requestLayout
ISurfaceComposerClient.h
PolicyManager