summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ady Abraham <adyabr@google.com> 2021-07-15 21:00:53 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-07-15 21:00:53 +0000
commit329ed55a388e1ad023d7ddda99781cac32eb3f04 (patch)
tree050ba70849f647d4ecebc2f82d3a133e8caf9bf6
parent17e2f079e065948eca0948b0522b3a3cb1533567 (diff)
parentfaac6da6ad9db0b84d516eae1bb073ba39c29b43 (diff)
Merge "SF: fix a crash in SurfaceFlinger::setActiveModeInternal" into sc-v2-dev
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index a5b28fed76..2d974d193f 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -1157,6 +1157,12 @@ void SurfaceFlinger::setActiveModeInternal() {
}
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