diff --git a/compositor/FlatteningController.cpp b/compositor/FlatteningController.cpp index 3cae6e3..3257aff 100644 --- a/compositor/FlatteningController.cpp +++ b/compositor/FlatteningController.cpp @@ -39,18 +39,12 @@ namespace android::drm_hwcomposer { auto FlatteningController::CreateInstance(FlatConCallbacks &cbks) -> std::shared_ptr { - auto fc = std::shared_ptr(new FlatteningController()); + return std::shared_ptr(new FlatteningController(cbks)); +} - /* Disable the controller by default as it can cause refresh event to be - * issued at creation time, even when it is not required. This can fail VTS - * tests at teardown that check for this behaviour. See: - * https://cs.android.com/android/platform/superproject/main/+/cedca652b903e4f4e584e457b5a7038e0825fb94:hardware/interfaces/graphics/composer/aidl/vts/VtsComposerClient.cpp;drc=a2a6deaf5036e081f48379b6573db4465538b5ac;l=604 - */ - fc->Disable(); - fc->cbks_ = cbks; - fc->thread_ = std::thread(&FlatteningController::ThreadFn, fc.get()); - - return fc; +FlatteningController::FlatteningController(FlatConCallbacks callbacks) + : cbks_(std::move(callbacks)) { + thread_ = std::thread(&FlatteningController::ThreadFn, this); } /* Compositor should call this every frame */ diff --git a/compositor/FlatteningController.h b/compositor/FlatteningController.h index 8bd3e35..d4725dd 100644 --- a/compositor/FlatteningController.h +++ b/compositor/FlatteningController.h @@ -61,11 +61,16 @@ class FlatteningController { static constexpr auto kTimeout = 1s; private: - FlatteningController() = default; + explicit FlatteningController(FlatConCallbacks callbacks); void ThreadFn(); - bool flatten_next_frame_{}; - bool disabled_{}; + /* Disable the controller by default as it can cause refresh event to be + * issued at creation time, even when it is not required. This can fail VTS + * tests at teardown that check for this behaviour. See: + * https://cs.android.com/android/platform/superproject/main/+/cedca652b903e4f4e584e457b5a7038e0825fb94:hardware/interfaces/graphics/composer/aidl/vts/VtsComposerClient.cpp;drc=a2a6deaf5036e081f48379b6573db4465538b5ac;l=604 + */ + bool flatten_next_frame_ = false; + bool disabled_ = true; decltype(std::chrono::system_clock::now()) sleep_until_{}; std::thread thread_; std::mutex mutex_;