commit | 16dfec1f3e22c37fcf5daf93ec0eca00c6b2f757 | [log] [tgz] |
---|---|---|
author | Ady Abraham <adyabr@google.com> | Thu Jul 15 21:15:04 2021 +0000 |
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | Thu Jul 15 21:15:04 2021 +0000 |
tree | fe1a9b55fba7510163b61340f329883f2c0ef197 | |
parent | f74a908689c0a00d4691daacaa27baa3c482f9a2 [diff] | |
parent | 329ed55a388e1ad023d7ddda99781cac32eb3f04 [diff] |
Merge "SF: fix a crash in SurfaceFlinger::setActiveModeInternal" into sc-v2-dev am: 329ed55a38 Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/15302010 Change-Id: I49d0b29899c0c83ad3cf451d1bbe9f37720c0ad1
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index a5b28fe..2d974d1 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1157,6 +1157,12 @@ } const auto upcomingModeInfo = MAIN_THREAD_GUARD(display->getUpcomingActiveMode()); + if (!upcomingModeInfo.mode) { + // There is no pending mode change. This can happen if the active + // display changed and the mode change happened on a different display. + return; + } + if (display->getActiveMode()->getSize() != upcomingModeInfo.mode->getSize()) { auto& state = mCurrentState.displays.editValueFor(display->getDisplayToken()); // We need to generate new sequenceId in order to recreate the display (and this