diff options
| author | 2022-07-25 14:59:14 +0000 | |
|---|---|---|
| committer | 2022-07-25 14:59:14 +0000 | |
| commit | 1ecc9a8409d5e8894de69d6e6788b66fe037fe26 (patch) | |
| tree | 0c36e34914c68ce3e28e88c97bd84ba1717da04c | |
| parent | d00a31045635157ca71bb17d787c31ed63bfbb90 (diff) | |
| parent | dc004b3f76236ce9188bd2089432d4b1f47161bd (diff) | |
Merge "Fail gracefully when allocating screenshot buffers" into tm-d1-dev am: 4830cd6ad9 am: dc004b3f76
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/19382466
Change-Id: I5fb944dab9cba76aa5fcb769863f138a3222e7bc
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 6e74eef068..3ba9dcd5bd 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -6639,8 +6639,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:: |