From 1db11ba0d5bf5b32d9a7b5140d11dd6c2e5b6a2f Mon Sep 17 00:00:00 2001 From: Ady Abraham Date: Wed, 27 Jan 2021 20:29:04 -0800 Subject: [PATCH] Move sync_wait for screen capture to client Free up time from the SF's main thread by moving the fence waiting to the client. Test: Observe systrace of region sample thread Test: adb shell screencap Test: Recents takes the screenshot Test: Rotate device Test: Volume + power down for screenshot Bug: 178649983 Change-Id: Ice70b8d2b95928a5adce19dbd1d91e73d8529f54 --- core/jni/android_view_SurfaceControl.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 0e878fcf0e241..4ef63ae930160 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -262,7 +262,7 @@ public: } } - binder::Status onScreenCaptureComplete( + binder::Status onScreenCaptureCompleted( const gui::ScreenCaptureResults& captureResults) override { JNIEnv* env = getenv(); if (captureResults.result != NO_ERROR || captureResults.buffer == nullptr) { @@ -270,6 +270,7 @@ public: gScreenCaptureListenerClassInfo.onScreenCaptureComplete, nullptr); return binder::Status::ok(); } + captureResults.fence->waitForever(""); jobject jhardwareBuffer = android_hardware_HardwareBuffer_createFromAHardwareBuffer( env, captureResults.buffer->toAHardwareBuffer()); const jint namedColorSpace =