diff options
author | 2018-03-14 12:26:23 -0700 | |
---|---|---|
committer | 2018-03-26 11:41:00 -0700 | |
commit | cfb187b458858013453019f62c8cbf29a0a8d623 (patch) | |
tree | 49288abc4598e44fff78658a9f03315f0a1b32ce /services/surfaceflinger/Layer.cpp | |
parent | 5b769bdacb1b83bf12c9d1fbbe8b09008f99eb60 (diff) |
Manual merge of ag/3738015 because of conflicts.
Conflicts are in layers.proto, LayerProtoParser.h and LayerProtoPraser.cpp as master has
more fields in layer proto than pi-dev.
Original cl:
Pass correct window type and app id to hw composer.
1. Set -1 as default value for window type and app id.
2. When send layer information to hal, layers inherit type and app id from parent node when
parent node has valid type/appId.
3. Add window type and app id to SurfaceFlinger dumpsys.
Bug: 74622357
Test: Manual test. Several things verified:
1. Android settings layer, status bar layer, nav bar layer have valid window type and appId
when start android settings.
2. Layers without buffer have window type -1 and app id -1.
3. When send layers to hal, Chrome SurfaceView layer inherit type and app id from
its parent (MainActivity layer).
Change-Id: I8d6ad274ca18b61d1bbf6b28f7def5160b55b1e7
Diffstat (limited to 'services/surfaceflinger/Layer.cpp')
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index b072213102..c520f54c36 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -555,8 +555,10 @@ void Layer::setGeometry(const sp<const DisplayDevice>& displayDevice, uint32_t z sp<Layer> parent = mDrawingParent.promote(); if (parent.get()) { auto& parentState = parent->getDrawingState(); - type = parentState.type; - appId = parentState.appId; + if (parentState.type >= 0 || parentState.appId >= 0) { + type = parentState.type; + appId = parentState.appId; + } } getBE().compositionInfo.hwc.type = type; @@ -1378,7 +1380,7 @@ bool Layer::setOverrideScalingMode(int32_t scalingMode) { return true; } -void Layer::setInfo(uint32_t type, uint32_t appId) { +void Layer::setInfo(int32_t type, int32_t appId) { mCurrentState.appId = appId; mCurrentState.type = type; mCurrentState.modified = true; @@ -1983,6 +1985,8 @@ void Layer::writeToProto(LayerProto* layerInfo, LayerVector::StateSet stateSet) layerInfo->set_queued_frames(getQueuedFrameCount()); layerInfo->set_refresh_pending(isBufferLatched()); + layerInfo->set_window_type(state.type); + layerInfo->set_app_id(state.appId); } void Layer::writeToProto(LayerProto* layerInfo, int32_t hwcId) { |