Set the render rate on the created surface frame instead of the old one.
Otherwise this crashes when overriding a framerate, since mSurfaceFrame
may not be initialized when a layer is first created.
Bug: 180141499
Test: builds, boots
Change-Id: I1f5cecae3fa44a00a61f125435245bcfb2b9ff90
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 6a28da3..237aaff 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -1583,7 +1583,7 @@
surfaceFrame->setAcquireFenceTime(postTime);
const auto fps = mFlinger->mScheduler->getFrameRateOverride(getOwnerUid());
if (fps) {
- mSurfaceFrame->setRenderRate(*fps);
+ surfaceFrame->setRenderRate(*fps);
}
onSurfaceFrameCreated(surfaceFrame);
return surfaceFrame;
@@ -1598,7 +1598,7 @@
surfaceFrame->setActualQueueTime(queueTime);
const auto fps = mFlinger->mScheduler->getFrameRateOverride(getOwnerUid());
if (fps) {
- mSurfaceFrame->setRenderRate(*fps);
+ surfaceFrame->setRenderRate(*fps);
}
// TODO(b/178542907): Implement onSurfaceFrameCreated for BQLayer as well.
onSurfaceFrameCreated(surfaceFrame);