summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/RegionSamplingThread.cpp
diff options
context:
space:
mode:
author chaviw <chaviw@google.com> 2020-08-18 16:08:59 -0700
committer chaviw <chaviw@google.com> 2020-09-11 17:01:40 -0700
commite7b9f278d924e10d53336e4c0a9bb6b11352a087 (patch)
tree02030700cf7c620ddd2e6c4a463fa74c479669cc /services/surfaceflinger/RegionSamplingThread.cpp
parent7749ff50bde74dc9311ce9b5f7dbdd24ac172e27 (diff)
Update screen capture functions to accept a ScreenCaptureListener
Move all screen capture functions to be asynchronous. The screen capture functions will no longer wait for screenshot results and will return immediately. Test: adb shell screencap Test: power + volume down Bug: 162367424 Change-Id: I0fd32ede58d3d0a858fc0ce4aae058b9a9234c00
Diffstat (limited to 'services/surfaceflinger/RegionSamplingThread.cpp')
-rw-r--r--services/surfaceflinger/RegionSamplingThread.cpp17
1 files changed, 1 insertions, 16 deletions
diff --git a/services/surfaceflinger/RegionSamplingThread.cpp b/services/surfaceflinger/RegionSamplingThread.cpp
index a2fc6925b8..4dc20c44b8 100644
--- a/services/surfaceflinger/RegionSamplingThread.cpp
+++ b/services/surfaceflinger/RegionSamplingThread.cpp
@@ -29,6 +29,7 @@
#include <compositionengine/impl/OutputCompositionState.h>
#include <cutils/properties.h>
#include <gui/IRegionSamplingListener.h>
+#include <gui/SyncScreenCaptureListener.h>
#include <ui/DisplayStatInfo.h>
#include <utils/Trace.h>
@@ -446,22 +447,6 @@ void RegionSamplingThread::captureSample() {
PIXEL_FORMAT_RGBA_8888, 1, usage, "RegionSamplingThread");
}
- class SyncScreenCaptureListener : public BnScreenCaptureListener {
- public:
- status_t onScreenCaptureComplete(const ScreenCaptureResults& captureResults) override {
- resultsPromise.set_value(captureResults);
- return NO_ERROR;
- }
-
- ScreenCaptureResults waitForResults() {
- std::future<ScreenCaptureResults> resultsFuture = resultsPromise.get_future();
- return resultsFuture.get();
- }
-
- private:
- std::promise<ScreenCaptureResults> resultsPromise;
- };
-
const sp<SyncScreenCaptureListener> captureListener = new SyncScreenCaptureListener();
mFlinger.captureScreenCommon(std::move(renderAreaFuture), traverseLayers, buffer,
true /* regionSampling */, captureListener);