diff options
-rwxr-xr-x | services/surfaceflinger/SurfaceFlinger.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index cc6f7c9864..24c3e67441 100755 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -4903,14 +4903,19 @@ status_t SurfaceFlinger::setTransactionState( state.traverseStatesWithBuffers([&](const layer_state_t& state) { sp<Layer> layer = fromHandle(state.surface).promote(); if (layer != nullptr) { - const uint32_t layerStackId = layer->getLayerStack(); SmomoIntf *smoMo = nullptr; - for (auto &instance: mSmomoInstances) { - if (instance.layerStackId == layerStackId) { - smoMo = instance.smoMo; - break; + if (mSmomoInstances.size() > 1) { + const uint32_t layerStackId = layer->getLayerStack(); + for (auto &instance: mSmomoInstances) { + if (instance.layerStackId == layerStackId) { + smoMo = instance.smoMo; + break; + } } } + else if (mSmomoInstances.size() == 1) { + smoMo = mSmomoInstances[0].smoMo; + } if (smoMo) { smomo::SmomoBufferStats bufferStats; |