详解 Android 图形系统
2010-03-10 16:45:00 来源:WEB开发网1. frameworks/base/core/java/android/view/Surface.java — Surface::Surface ()。
2. frameworks/base/core/jni/android_view_Surface.cpp — Surface_init ()。
在 这个函数 中SurfaceComposerClient 对象被创建。
3. frameworks/base/libs/ui/SurfaceComposerClient.cpp — SurfaceComposerClient::SurfaceComposerClient ().
这个函数非常重要, 在这里建立了client和server之间的桥梁。通过函数_get_surface_manager()获 得了一个指向 server的IBinder 对象(具有ISurfaceComposer接 口),之后通过这个IBinder就可以跨进程访问Server的功 能。接着调用 ISurfaceComposer::createConnection()创建并返回了一个ISurfaceFlingerClient的 IBinder。
4. frameworks/base/libs/ui/SurfaceComposerClient.cpp — SurfaceComposerClient::createSurface().
这个函数中,利用前面获得的ISurfaceFlingerClient的IBinder,调 用其createSurface接口。
5.frameworks/base/libs/surfaceflinger/SurfaceFlinger.cpp — BClient::createSurface ()。
BClient由ISurfaceFlingerClient派 生而来。
6.frameworks/base/libs/surfaceflinger/SurfaceFlinger.cpp — SurfaceFlinger:: createSurface()。
这个函数为Surface创 建一个对应的Layer。
上述关键路径中,1,2,3,4运 行 于client进程中,而5,6运行与server进 程中。server作为一个service提供给client访问。
与 图形相关的代码分析
与图形相关的代码主要位于下列目录:
1. frameworks/base/graphics/java/android/graphics
2.frameworks/base/core/java/android/view
3.frameworks/base/core/java/android/widget
4.frameworks/base/opengl/
5.frameworks/base/libs/ui
6.frameworks/base/libs/surfaceflinger
7.frameworks/base/core/jni/android/graphics
8.frameworks/base/core/jni/android/opengl
9.frameworks/base/core/jni/android/android_view_*.cpp
10.external/skia
android.graphics, android.view和android.widget
1.frameworks/base/graphics/java/android/graphics
更多精彩
赞助商链接