Vous êtes sur la page 1sur 10

0

1. SurfaceFlinger
Dfinition SurfaceFlinger est le seul responsable du contrle de la surface de fusion, par exemple, le calcul de la superficie de deux surface qui se chevauchent ainsi que la ncessit dafficher le contenu de la surface par lintermdiaire de skia, OpenGL et pixelflinger. SurfaceFlinger a pour rle principale de fusionner une srie de processus contrls puis de combiner 2D et 3D avec la gestion du contenu du chaque fentre.

Comment SurfaceFlinger se fonctionne ? Pour chaque application on peut avoir un ou plusieurs surface, donc nous avons besoin dune structure de donnes pour stocker notre fentre, nous avons aussi besoin dun tampon pour stocker le contenu de la fentre. SurfaceFlinger a un processus pour interagir avec les diffrentes informations.

Dans le IBinder la partie gauche est la partie cliente de la fentre qui affiche lapplication tandis que la partie droite est le service de SurfaceFlinger. La cration de la surface ncessite deux procds. Le premier procd est cr pour la gestion de structure et lautre
2

est cr pour stocker le contenu de mmoire tampon, ainsi que llaboration dune srie de semblables oprant dans le tampon.

SurfaceFlinger utilise des multiples fentres pour grer plusieurs applications, pour lequel il fournit un client de classe. Chaque application peut demander des services correspondant un client. La classe doit retourner une structure pour que lapplication puisse connaitre leur surface candidature.

Pour crer un surface il faut dabord comprendre la notion de retour au schma vitre frontale, en fait, chaque fentre est contrle par une couche qui la fournit la commande de fonctionnement de linformation ainsi que le traitement du contenu (appel OpenGL).

SurfaceFlinger est le responsable du contrle des informations du traitement et la manipulation de processus. Tout le travail correspond une couche.

Exemple pour illustrer lutilisation de mcanisme de couche : /*Pour utiliser un service de SurfaceFlinger, vous devez dabord crer un client*/
sp<SurfaceComposerClient> client = new SurfaceComposerClient();

//Puis appliquer un surface SurfaceFlinger


sp<surface> surface = client -> CreateSurface (getpid (), 0, 320, PIXEL_FORMAT_UNKNOWN,ISurfaceComposer ::ePushBuffers) ;

//Puis faites un appel la fonction getISurface()


sp<ISurface> isurface = Test ::getISurface(de surface) ;

//Mode de superposition : superposition

pour

utiliser

la

ref = sp <OverlayRef> isurface -> createOverlay (320, 240, PIXEL_FORMAT_RGB_565); sp <Overlay> verlay = new Overlay (ref);

Lorsque lapplication est dans la mmoire lapplication face deux problmes :

tampon,

- Comment lapplication sait dans quel tampon est situ le dessin. - Comment lapplication comprend le changement de taille de fentre ainsi que leur orientation (changement de position). Pour rsoudre ces problmes, il faut utiliser un mcanisme de communication entre les diffrents classe de diagramme de SurfaceFlinger .Vous pouvez avoir sur le diagramme de classe la solution, cest une classe thread. Lorsque lapplication dmarre en mme temps un thread dcoute qui permet la rception de tous les vnements si mme un vnement se fini ce thread reste en service jusqu la fermeture de lapplication.

SurfaceFlinger processus Pour comprendre linteraction entre le Flinger et le client, il faut regarder le processus de SurfaceFlinger. Les services de thread dcoute. SurfaceFlinger cres dmarrent un

Ce processus est responsable du traitement de chaque mise jour de chaque fentre.

2.

Hardware abstraction layer

Mentionn dans Google I / O, 2008 HAL est utilis pour sparer: Android-cadre -Noyau Linux Dfinir l'interface de commande du matriel Ne pas avoir un format standard dans le dveloppement Android.

Systme d'exploitation Linux

Systme d'exploitation Android

Hritage Android HAL :