SurfaceFlinger对象建立过程示意
1 SurfaceSession的建立
客户端请求建立Surface时,首先在要与SurfaceFlinger建立一个Session,然后再Session上建立一个Connection
通过概念返回Bclient对象。WindowManagerService在添加第一个窗口前会检查SurfaceSession是否建立,如何没有建
立,将会新建立一个实例来代表与SurfaceFlinger的一个连接。
new SurfaceSession()@windowAddedLocked() @WindowManagerService.java。
SurfaceSession的建立过程大部分是在C++ Native空间中完成的,表现在SurfaceSession的初始化函数:init()本地函数上。从下面的初始化函数可以看到:
Init()<->
SurfaceSession_init@android_view_Surface.cpp
new SurfaceComposerClient
SurfaceSession在C++Native空间建立一个SurfaceComposerClient实例。而该实例的建立实现了如下的与SurfaceFlinger通讯基础:
(1)建立了代理SurfaceFlinger服务的代理服务端
(2)建立了IsurfaceFlingerClient连接,在SurfaceFlinger端建立了对应的Client,并将BClient返回给WindowManagerService。
2 Surface的建立
在WindowManagerService中WindowState类中,我们知道每个主窗口子啊需要是都需要建立一个Surface与之对应。win.createSurfaceLocked()@relayoutWindow
Surface.java
Init()< -- >Surface_init(….,session,pid,dpy,w,h,format)@android_view_Surface.cpp
SurfaceControl surface(client->createSurface
在mClient的连接上:建立ISurface接口:
M_Client->greateSurface(...)@
Bclient ::createSurface(mId...)@SurfaceFlinger.cpp
mFlinger->createSurface(clientid....)
createNormalSurfaceLocked
*createNormalSurfaceLocked:建立一个Layer分配显示内存
*createPushBuffersSurfaceLocked:
建立一个LayBuffer但是不分配显示内存。
分享到:
相关推荐
Android的GDI系统是一个复杂的系统,它涉及到许多概念和代码,包括但不限于SurfaceFlinger、Surface、Canvas、Layer等。这些概念抽象了底层的物理设备操作,并为应用程序员提供了一种逻辑设备上下文,使他们能够在不...
GDI 的架构图主要包括 Frameworks/Libs/Surfaceflinger Framework Frameworks/base/core/jni/android_view_Surface.cpp Frameworks/base/core/java/android/view/surface.java Frameworks/base/Graphics:绘图接口...
#### 二十七、AndroidGDI之SurfaceFlinger之动态结构示意图 提供了SurfaceFlinger组件内部动态结构的可视化图解。 #### 二十八、AndroidGDI之Surface&Canvas 研究了Surface和Canvas组件在图形渲染过程中的作用和...
[经典文档]Android核心分析 核心分析之一 ----- 分析方法论探讨之设计意图 ...核心分析之二十六 ----- Android GDI之SurfaceFlinger动态结构示意图 核心分析之二十七 ----- Android GDI之Surface&Canvas;
#### AndroidGDI之SurfaceFlinger之动态结构示意图 通过动态结构示意图可以更直观地理解SurfaceFlinger如何管理和调度不同窗口的图像。 #### AndroidGDI之Surface&Canvas Surface和Canvas是Android图形系统中两个...
#### 二十七、AndroidGDI之SurfaceFlinger之动态结构示意图 这部分内容通过示意图的方式直观展示了SurfaceFlinger的动态结构,帮助读者更好地理解其工作原理。 #### 二十八、AndroidGDI之Surface&Canvas 这部分...
Android 核心分析 之一--------...Android 核心分析(27)-----Android GDI 之 SurfaceFlinger 之动态结构示意图..123 Android 核心分析(28)-----Android GDI 之 Surface&Canvas..................................126
1. **SurfaceFlinger**:作为Android GDI的核心,SurfaceFlinger负责协调和合成各个应用程序的Surface到最终显示的帧缓冲区。它处理窗口堆栈、动画以及透明度等效果,将不同应用的Surface合成为一帧画面并推送到屏幕...
Android核心分析之一--------分析方法论...Android核心分析(27)-----AndroidGDI之SurfaceFlinger之动态结构示意图..123 Android核心分析(28)-----AndroidGDI之Surface&Canvas..................................126
#### 二十七、AndroidGDI之SurfaceFlinger之动态结构示意图 - **动态结构**:这部分内容提供了SurfaceFlinger动态结构的示意图,有助于理解其内部组件间的交互关系。 - **结构解析**:详细解析了示意图中的各个组成...
[转]Android核心分析 技术专题之二十七--GDI 之SurfaceFlinger之动态结构示意图.
在Android系统中,GDI(Graphics Device Interface)是图形设备接口,主要负责管理图形图像的输出,确保在物理屏幕上正确地呈现各种窗口内容。在Android的GDI框架中,核心任务是对显示缓冲区进行操作和管理,使得...
### Android SurfaceFlinger 显示缓冲区管理 #### 概述 在Android系统中,SurfaceFlinger扮演着极其重要的角色——负责管理和协调多个应用程序窗口的显示。这篇文章深入探讨了SurfaceFlinger与应用程序之间如何...
**Android核心分析(27):** 通过动态结构示意图来直观展示SurfaceFlinger的内部工作流程和各组件之间的交互关系。 **Android核心分析(28):** Surface和Canvas是Android图形系统中的两个重要概念,这部分内容...
Android系统作为当今最流行的移动操作系统之一,拥有庞大的开发者社区和丰富的系统组件,为开发者提供了强大的开发平台。了解和分析Android系统的工作原理以及它的框架结构对于开发高质量的应用程序至关重要。本文将...
这些设计理念直接影响了Android框架的结构和实现方式。 #### 二、概念空间解析 概念空间是理解Android框架的关键。这部分内容将详细介绍构成Android框架的基本概念,帮助开发者建立起对整个系统的认知模型。包括但...
学习这些基础知识的同时,开发者还应该关注Android的最新动态和技术趋势,比如Kotlin编程语言的普及、Jetpack库的使用、Room数据库的引入,以及Material Design设计指南的应用。此外,Android的组件化、模块化开发也...
- Android的GDI涉及到显示缓冲管理、共享缓冲区机制、SurfaceFlinger等技术。 - SurfaceFlinger是Android系统中负责合成屏幕显示内容的核心服务。 - 研究GDI有助于开发者理解和优化应用的图形渲染和动画效果。 ...