
回复
Graphic子系统 提供了图形接口能力和窗口管理接口能力,
其主要的结构如下图所示:
Surface
图形缓冲区管理接口,负责管理图形缓冲区和高效便捷的轮转缓冲区。
Vsync
垂直同步信号管理接口,负责管理所有垂直同步信号注册和响应。
WindowManager
窗口管理器接口,负责创建和管理窗口。
WaylandProtocols
窗口管理器和合成器的通信协议。
Compositor
合成器,负责合成各个图层。
Renderer
合成器的后端渲染模块。
Wayland protocols
Wayland 进程间通信协议
Shell
提供多窗口能力
Input Manger
多模输入模块,负责接收事件输入
可以依赖的接口有:
接口名 | 职责 |
---|---|
GetInstance | 获取WindowManager的单例指针 |
GetMaxWidth | 获取当前屏幕宽度 |
GetMaxHeight | 获取当前屏幕高度 |
CreateWindow | 创建一个标准窗口 |
CreateSubWindow | 创建一个子窗口 |
StartShotScreen | 截屏操作 |
StartShotWindow | 截取窗口操作 |
SwitchTop | 将指定窗口调整至最上层显示 |
接口名 | 职责 |
---|---|
Show | 显示当前窗口 |
Hide | 隐藏当前窗口 |
Move | 移动当前窗口至指定位置 |
SwitchTop | 将当前窗口调整到最上层显示 |
ChangeWindowType | 更改当前窗口类型 |
ReSize | 调整当前窗口至指定大小 |
Rotate | 旋转当前窗口 |
RegistPointerButtonCb | 注册鼠标Button事件回调 |
RegistPointerEnterCb | 注册鼠标Enter事件回调 |
RegistPointerLeaveCb | 注册鼠标Leave事件回调 |
RegistPointerMotionCb | 注册鼠标Motion事件回调 |
RegistPointerAxisDiscreteCb | 注册鼠标AxisDiscrete事件回调 |
RegistPointerAxisSourceCb | 注册鼠标AxisSource事件回调 |
RegistPointerAxisStopCb | 注册鼠标AxisStop事件回调 |
RegistPointerAxisCb | 注册鼠标Axis事件回调 |
RegistTouchUpCb | 注册TouchUp事件回调 |
RegistTouchDownCb | 注册TouchDown事件回调 |
RegistTouchEmotionCb | 注册TouchEmotion事件回调 |
RegistTouchFrameCb | 注册TouchFrame事件回调 |
RegistTouchCancelCb | 注册TouchCancel事件回调 |
RegistTouchShapeCb | 注册TouchShape事件回调 |
RegistTouchOrientationCb | 注册TouchOrientation事件回调 |
RegistKeyboardKeyCb | 注册键盘Key事件回调 |
RegistKeyboardKeyMapCb | 注册键盘KeyMap事件回调 |
RegistKeyboardLeaveCb | 注册键盘Leave事件回调 |
RegistKeyboardEnterCb | 注册键盘Enter事件回调 |
RegistKeyboardRepeatInfoCb | 注册键盘RepeatInfo事件回调 |
接口名 | 职责 |
---|---|
Move | 移动当前子窗口 |
SetSubWindowSize | 调整当前子窗口位置 |
接口名 | 职责 |
---|---|
CreateSurfaceAsConsumer | Buffer的消费者来使用该函数创建一个Surface |
CreateSurfaceAsProducer | Buffer的生产者使用该函数创建一个Surface,只能使用与生产相关的接口 |
GetProducer | 获得一个Surface内部的IBufferProducer对象 |
RequestBuffer | 请求一个待生产的SurfaceBuffer对象 |
CancelBuffer | 取消、归还一个待生产的SurfaceBuffer对象 |
FlushBuffer | 归还一个生产好的SurfaceBuffer对象并携带一些信息 |
AcquireBuffer | 请求一个待消费的SurfaceBuffer对象 |
ReleaseBuffer | 归还一个已消费的SurfaceBuffer对象 |
GetQueueSize | 获得当前同时能并存buffer的数量 |
SetQueueSize | 设置当前同时能并存buffer的数量 |
SetDefaultWidthAndHeight | 设置默认宽和高 |
GetDefaultWidth | 获得默认宽度 |
GetDefaultHeight | 获得默认高度 |
SetUserData | 存贮字符串数据,不随着IPC传递 |
GetUserData | 取出字符串数据 |
RegisterConsumerListener | 注册一个消费监听器,监听Buffer的Flush事件 |
UnregisterConsumerListener | 取消监听 |
接口名 | 职责 |
---|---|
GetBufferHandle | 获得SurfaceBuffer的BufferHandle指针 |
GetWidth | 获得SurfaceBuffer的宽度 |
GetHeight | 获得SurfaceBuffer的高度 |
GetFormat | 获得SurfaceBuffer的颜色格式 |
GetUsage | 获得SurfaceBuffer的用途 |
GetPhyAddr | 获得SurfaceBuffer的物理地址 |
GetKey | 获得SurfaceBuffer的key |
GetVirAddr | 获得SurfaceBuffer的虚拟地址 |
GetSize | 获得SurfaceBuffer的文件句柄 |
SetInt32 | 获得SurfaceBuffer的缓冲区大小 |
GetInt32 | 设置SurfaceBuffer的32位整数 |
SetInt64 | 获得SurfaceBuffer的32位整数 |
GetInt64 | 设置SurfaceBuffer的64位整数 |
接口名 | 职责 |
---|---|
Current | 获取当前runner对应的VsyncHelper |
VsyncHelper | 用EventHandler对象构造VsyncHelper |
RequestFrameCallback | 注册一个帧回调 |
场景: 在一次IPC过程中
条件: 一个生产型Surface
条件: 一个消费型Surface