diff options
author | 2020-08-18 16:08:59 -0700 | |
---|---|---|
committer | 2020-09-02 15:11:30 -0700 | |
commit | dcafa8d51740854c4d67fd12706e38db53a27afc (patch) | |
tree | 6507aabe9602975cf1e35783d66bb54b6e7c52f7 /services/surfaceflinger/RegionSamplingThread.cpp | |
parent | 420176e721eed84e7e5f56fe2b05b56d58620d0d (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.cpp | 17 |
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); |