SF: Separate Hwc2::Composer into interface and impl
This makes the android::Hwc2::Composer substitutable. In this case the
intent is to allow a mock::Composer GMock class to be defined.
Hwc2::Composer now is a pure interface class. Hwc2::impl::Composer is
the normal implementation.
Also included is another minor change to allow HWC2::Device to be
constructed with a Hwc2::Composer (interface) pointer instead of a
service name. This means that now SurfaceFlinger itself constructs the
Hwc2::impl::Composer using the service name, rather than passing it down
a call chain.
Test: Code builds
Bug: None
Change-Id: Ic79f645cee40c534651b9c7b70f05497d98e51dc
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.cpp b/services/surfaceflinger/DisplayHardware/HWC2.cpp
index 070b691..bcba35f 100644
--- a/services/surfaceflinger/DisplayHardware/HWC2.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWC2.cpp
@@ -84,12 +84,7 @@
// Device methods
-Device::Device(const std::string& serviceName)
- : mComposer(std::make_unique<Hwc2::Composer>(serviceName)),
- mCapabilities(),
- mDisplays(),
- mRegisteredCallback(false)
-{
+Device::Device(std::unique_ptr<android::Hwc2::Composer> composer) : mComposer(std::move(composer)) {
loadCapabilities();
}