I had read the surface flinger source code in cupcake, and hope to
undertand how the android GUI system work. but now I am mixed-up
and following is my understand and questions:
surfaceflinger work flow:
(1) new surfaceflingerclient(), it will createconnection(), and new a
(2) createsurface, it will new layer or layerblur or layerdim by z-
(3) createoverlay, if layer support overlay
(4) register buffer
(5) draw something on canvas(line, text, bitmap, rect...) which attach
(6) post buffer
my questions now:
SurfaceFlinger::createconnection() will create a client which allocate
8MB heap for manangement surface data handle(color conversion, flip,
how many client have android system? one is BootAnimation, one is test
sample overlays.cpp, one is debug CPUGUAGE, and one is WindowManager?
In fact BootAnimation will destroy when it finish, (but how it destroy
the 8MB heap?). Test sample and debug CPUGUAGE will not start for it
is not enabled.
So android system has only one surface flinger client, isn't it?
OpenGL has another client?
each app with one window has attached one surface? or all app share
one surfaceflinger client can create mutiple surfaces?
where is the source code?
(4)surfaceflinger not support YUV format?
and it ony support RGB565?
more question and analysis will be continued,
You received this message because you are subscribed to the Google Groups
To post to this group, send email to email@example.com
To unsubscribe from this group, send email to
For more options, visit this group at