summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-07-25 23:20:01 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-07-25 23:20:01 +0000
commit233ca2a433b410abe1a22ef995338ad831556977 (patch)
treef6096d0557f78d20e25561ad2a4e8b00a7d9993b
parent7e6a6a67170fc1e60c584430ab21a6f8969b7e5d (diff)
parent4830cd6ad9d045f6aefd134e41822c570067605d (diff)
downloadnative-233ca2a433b410abe1a22ef995338ad831556977.tar.gz
Snap for 8866741 from 4830cd6ad9d045f6aefd134e41822c570067605d to tm-d1-release
Change-Id: I56b4b95044395a513706d37ef8c9c0c24c810155
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 6a17cd8881..d6f665aa5d 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -6620,8 +6620,13 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenCommon(
1 /* layerCount */, usage, "screenshot");
const status_t bufferStatus = buffer->initCheck();
- LOG_ALWAYS_FATAL_IF(bufferStatus != OK, "captureScreenCommon: Buffer failed to allocate: %d",
- bufferStatus);
+ if (bufferStatus != OK) {
+ // Animations may end up being really janky, but don't crash here.
+ // Otherwise an irreponsible process may cause an SF crash by allocating
+ // too much.
+ ALOGE("%s: Buffer failed to allocate: %d", __func__, bufferStatus);
+ return ftl::yield<FenceResult>(base::unexpected(bufferStatus)).share();
+ }
const std::shared_ptr<renderengine::ExternalTexture> texture = std::make_shared<
renderengine::impl::ExternalTexture>(buffer, getRenderEngine(),
renderengine::impl::ExternalTexture::Usage::