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
diff --git a/services/surfaceflinger/RegionSamplingThread.cpp b/services/surfaceflinger/RegionSamplingThread.cpp
index a2fc692..4dc20c4 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 @@
                                    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);