diff options
| author | 2020-08-18 16:08:59 -0700 | |
|---|---|---|
| committer | 2020-09-11 17:01:40 -0700 | |
| commit | e7b9f278d924e10d53336e4c0a9bb6b11352a087 (patch) | |
| tree | 02030700cf7c620ddd2e6c4a463fa74c479669cc /services/surfaceflinger/RegionSamplingThread.cpp | |
| parent | 7749ff50bde74dc9311ce9b5f7dbdd24ac172e27 (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.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); |