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-02 15:11:30 -0700
commitdcafa8d51740854c4d67fd12706e38db53a27afc (patch)
tree6507aabe9602975cf1e35783d66bb54b6e7c52f7 /services/surfaceflinger/RegionSamplingThread.cpp
parent420176e721eed84e7e5f56fe2b05b56d58620d0d (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: I9cbc833f802bda50d10d4521f61d262e9fd40bfc
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);