Lines Matching defs:layer
51 #include "Layer.h"
340 // Check the visible layer list for the ISurface
344 const sp<LayerBase>& layer(currentLayers[i]);
345 sp<LayerBaseClient> lbc(layer->getLayerBaseClient());
363 const sp<LayerBase>& layer(mLayerPurgatory.itemAt(i));
364 sp<LayerBaseClient> lbc(layer->getLayerBaseClient());
524 const sp<LayerBase>& layer = currentLayers[i];
525 uint32_t trFlags = layer->getTransactionFlags(eTransactionNeeded);
528 const uint32_t flags = layer->doTransaction(0);
529 if (flags & Layer::eVisibleRegion)
573 const sp<LayerBase>& layer(previousLayers[i]);
574 if (currentLayers.indexOf( layer ) < 0) {
575 // this layer is not visible anymore
576 mDirtyRegionRemovedLayer.orSelf(layer->visibleRegionScreen);
601 const sp<LayerBase>& layer = currentLayers[i];
602 layer->validateVisibility(planeTransform);
605 const Layer::State& s(layer->drawingState());
614 * and not fully transparent. This is essentially the layer's
629 const bool translucent = !layer->isOpaque();
630 const Rect bounds(layer->visibleBounds());
636 visibleRegion.subtractSelf(layer->transparentRegionScreen);
640 const int32_t layerOrientation = layer->getOrientation();
643 // the opaque region is the layer's footprint
652 // Update aboveCoveredLayers for next (lower) layer
658 // compute this layer's dirty region
659 if (layer->contentDirty) {
663 dirty.orSelf(layer->visibleRegionScreen);
664 layer->contentDirty = false;
679 const Region oldVisibleRegion = layer->visibleRegionScreen;
680 const Region oldCoveredRegion = layer->coveredRegionScreen;
689 // Update aboveOpaqueLayers for next (lower) layer
693 layer->setVisibleRegion(visibleRegion);
694 layer->setCoveredRegion(coveredRegion);
696 // If a secure layer is partially visible, lock-down the screen!
697 if (layer->isSecure() && !visibleRegion.isEmpty()) {
702 // invalidate the areas where a layer was removed
739 * rebuild the visible layer list
771 const sp<LayerBase>& layer(layers[i]);
772 layer->lockPageFlip(recomputeVisibleRegions);
784 const sp<LayerBase>& layer(layers[i]);
785 layer->unlockPageFlip(planeTransform, mDirtyRegion);
883 * update the per-frame h/w composer data for each layer
887 const sp<LayerBase>& layer(layers[i]);
888 layer->setPerFrameData(&cur[i]);
926 const sp<LayerBase>& layer(layers[i]);
927 if ((cur[i].hints & HWC_HINT_CLEAR_FB) && layer->isOpaque()) {
928 transparent.orSelf(layer->visibleRegionScreen);
931 if (isOverlay != layer->isOverlay()) {
932 // we transitioned to/from overlay, so add this layer
935 dirtyInOut.orSelf(layer->visibleRegionScreen);
937 layer->setOverlay(isOverlay);
983 const sp<LayerBase>& layer(layers[i]);
984 const Region clip(dirty.intersect(layer->visibleRegionScreen));
986 layer->draw(clip);
1113 status_t SurfaceFlinger::addLayer(const sp<LayerBase>& layer)
1116 addLayer_l(layer);
1121 status_t SurfaceFlinger::addLayer_l(const sp<LayerBase>& layer)
1123 ssize_t i = mCurrentState.layersSortedByZ.add(layer);
1130 // attach this layer to the client
1135 // add this layer to the current state list
1141 status_t SurfaceFlinger::removeLayer(const sp<LayerBase>& layer)
1144 status_t err = purgatorizeLayer_l(layer);
1166 // First add the layer to the purgatory list, which makes sure it won't
1175 // it's possible that we don't find a layer, because it might
1182 status_t SurfaceFlinger::invalidateLayerVisibility(const sp<LayerBase>& layer)
1184 layer->forceVisibilityTransaction();
1280 sp<LayerBaseClient> layer;
1290 sp<Layer> normalLayer;
1294 layer = normalLayer;
1300 layer = createDimSurface(client, d, w, h, flags);
1303 layer = createScreenshotSurface(client, d, w, h, flags);
1307 if (layer != 0) {
1308 layer->initStates(w, h, flags);
1309 layer->setName(name);
1310 ssize_t token = addClientLayer(client, layer);
1312 surfaceHandle = layer->getSurface();
1315 params->identity = layer->getIdentity();
1318 mLayerMap.add(layer->getSurfaceBinder(), normalLayer);
1328 sp<Layer> SurfaceFlinger::createNormalSurface(
1353 sp<Layer> layer = new Layer(this, display, client);
1354 status_t err = layer->setBuffers(w, h, format, flags);
1357 layer.clear();
1359 return layer;
1366 sp<LayerDim> layer = new LayerDim(this, display, client);
1367 return layer;
1374 sp<LayerScreenshot> layer = new LayerScreenshot(this, display, client);
1375 return layer;
1391 sp<LayerBaseClient> layer = client->getLayerUser(sid);
1392 if (layer != 0) {
1393 err = purgatorizeLayer_l(layer);
1401 status_t SurfaceFlinger::destroySurface(const wp<LayerBaseClient>& layer)
1405 sp<LayerBaseClient> l(layer.promote());
1415 "layer=%p is not in the purgatory list", l.get());
1418 "error removing layer=%p (%s)", l.get(), strerror(-err));
1428 sp<LayerBaseClient> layer(client->getLayerUser(s.surface));
1429 if (layer != 0) {
1432 if (layer->setPosition(s.x, s.y))
1436 ssize_t idx = mCurrentState.layersSortedByZ.indexOf(layer);
1437 if (layer->setLayer(s.z)) {
1439 mCurrentState.layersSortedByZ.add(layer);
1446 if (layer->setSize(s.w, s.h)) {
1451 if (layer->setAlpha(uint8_t(255.0f*s.alpha+0.5f)))
1455 if (layer->setMatrix(s.matrix))
1459 if (layer->setTransparentRegionHint(s.transparentRegion))
1463 if (layer->setFlags(s.flags, s.mask))
1521 * Dump the visible layer list
1528 const sp<LayerBase>& layer(currentLayers[i]);
1529 layer->dump(result, buffer, SIZE);
1530 const Layer::State& s(layer->drawingState());
1532 layer->transparentRegionScreen.dump(result, "transparentRegionScreen");
1533 layer->visibleRegionScreen.dump(result, "visibleRegionScreen");
1544 const sp<LayerBase>& layer(mLayerPurgatory.itemAt(i));
1545 layer->shortDump(result, buffer, SIZE);
1809 const sp<LayerBase>& layer(layers[i]);
1810 layer->drawForSreenShot();
2308 const sp<LayerBase>& layer(layers[i]);
2309 const uint32_t flags = layer->drawingState().flags;
2311 const uint32_t z = layer->drawingState().z;
2313 layer->drawForSreenShot();
2432 sp<Layer> SurfaceFlinger::getLayer(const sp<ISurface>& sur) const
2434 sp<Layer> result;
2451 sp<LayerBaseClient> layer(mLayers.valueAt(i).promote());
2452 if (layer != 0) {
2453 mFlinger->removeLayer(layer);
2462 size_t Client::attachLayer(const sp<LayerBaseClient>& layer)
2466 mLayers.add(name, layer);
2470 void Client::detachLayer(const LayerBaseClient* layer)
2476 if (mLayers.valueAt(i) == layer) {
2486 wp<LayerBaseClient> layer(mLayers.valueFor(i));
2487 if (layer != 0) {
2488 lbc = layer.promote();