if (transactionFlags & eDisplayTransactionNeeded) {
}
if (transactionFlags &草原之夜歌词
; (eTraversalNeeded|eDisplayTransactionNeeded)) {
// The transform hint might have changed for some layers
// (either becau a display has changed, or becau a layer
// as changed).
//
// Walk through all the layers in currentLayers,
// and update their transform 奖学金自我鉴定
hint.
//
// If a layer is visible only on a s最新歌
in牛奶棒
gle display, then that
/
/ display is ud to calculate the hint, otherwi we u the
// default display.
//
// NOTE: we do this here, rather than in rebuildLayerStacks() so that
// the hint is t before we acquire a buffer from the surface texture.
//
// NOTE: layer transactions have taken place already, so we u their
// drawing state. However, SurfaceFlinger's own transaction has not
// happened yet, so we must u the current state layer list
// (soon to become the drawing state list).
//
sp<const DisplayDevice> disp;
uint32_t currentlayerStack = 0;
for (size_t i=0; i<count; i++) {
// NOTE: we rely on the fact that layers are sorted by
// layerStack first (so we don't have to traver the list
// of displays for every layer).
const sp<Layer>& layer(currentLayers[i]);
//获得Layer的 lay挪威森林吉他谱
er stack
uint32_t layerStack = laye篮球动作
r->getDrawingState().layerStack;
//通过遍历所有的Display来机电实习周记
找到Layer所在的显⽰屏
if (i==0 || currentlayerStack != layerStack) {
currentlayerStack = layerStack;
// figure out if this layerstack is mirrored
// (more than one display) if so, pick the default display,
// if not, pick the only display it's on.
disp.clear();
for (size_t dpy=0 ; dpy<mDisplays.size() ; dpy++) {
sp<const DisplayDevice> hw(mDisplays[dpy]);
if (hw->getLayerStack() == currentlayerStack) {
if (disp == NU冬桑叶的功效与作用
LL) {
disp = hw;
} el {
disp = NULL;
break;
}
}
}
}
if (disp == NULL) {
// NOTE: TEMPORARY FIX ONLY. Real fix should cau layers to
// redraw after transform hint changes. See bug 8508397.
// could be null when this layer is using a layerStack
// that is not visible儿童故事三只小猪
on any display. Also can occur at
/
/ screen off/on times.
disp = getDefaultDisplayDevice();
}
//更新Layer的旋转⽅向,最终会体现在 BufferQueueCore中的mTransformHint变量 layer->updateTransformHint(disp);
}
}
/*
* Perform our own transaction if needed
*/
//前⾯都是执⾏的Layer相关的事务
//下⾯就是执⾏SurfaceFlinger⾃⼰的事务
const LayerVec消石利胆胶囊
tor& layers(mDrawingState.layersSortedByZ);
if (currentLayers.size() > layers.size()) {