hwc_composer_device_1
struct hw_device_t common; //hardware composer device通用方法,其必须为hwc_composer_device_1 的第一个成员,用此结构体的使用者需要将hw_device_t 投射到上下文的hwc_composer_device_1指针。
int (*prepare)(structhwc_composer_device_1 *dev,
size_t numDisplays,hwc_display_contents_1_t** displays); //
//(*prepare)() 在每一帧合成前调用,可以应用于SurfaceFlinger决定HWC合成的步骤,(*prepare)()可以调用多次,并以最后一次调用为准。当一层合成类型为HWC_FRAMEBUFFER, HWC_OVERLAY, orHWC_CURSOR_OVERLAY,HWC将作出回应。 HWC_FRAMEBUFFER类型,此层所需SurfaceFlinger 使用OpenGLES管理。在最近overlay两层,HWC 将要管理每层的合成。合成类型在整个*prepare)()都会保持不变,除非HWC_GEOMETRY_CHANGED符改变。(*prepare)()被HWC_GEOMETRY_CHANGED调用,表示几何列表已经改变,也就是说buffer's句柄已经更新。最典型的是一个窗口已经添加,移除,更改大小和移动。在此种情况下,合成类型和提示都会复位到默认值。HWC 1.0,中numDisplays经常值为1,displays[0]为空,ForHWC 1.1, numDisplays是HWC_NUM_PHYSICAL_DISPLAY_TYPES,returns:0 代码成功.负值代码出错.