1
0
Fork 0

drm_hwcomposer: Make FlatteningController timeout configurable

Pass a timeout to the FlatteningController constructor. Move the
original default timeout from FlatteningController to HwcDisplay.cpp

Change-Id: I6e3f8950badc38a5ccad8ae68e1b11317c850d61
This commit is contained in:
Drew Davenport 2025-09-16 16:15:30 -06:00
parent 38045be8af
commit ce65d6c6e3
3 changed files with 16 additions and 10 deletions

View file

@ -37,13 +37,16 @@
namespace android::drm_hwcomposer {
auto FlatteningController::CreateInstance(FlatConCallbacks &cbks)
auto FlatteningController::CreateInstance(FlatConCallbacks &cbks,
std::chrono::milliseconds timeout)
-> std::shared_ptr<FlatteningController> {
return std::shared_ptr<FlatteningController>(new FlatteningController(cbks));
return std::shared_ptr<FlatteningController>(
new FlatteningController(cbks, timeout));
}
FlatteningController::FlatteningController(FlatConCallbacks callbacks)
: cbks_(std::move(callbacks)) {
FlatteningController::FlatteningController(FlatConCallbacks callbacks,
std::chrono::milliseconds timeout)
: cbks_(std::move(callbacks)), timeout_(timeout) {
thread_ = std::thread(&FlatteningController::ThreadFn, this);
}
@ -57,7 +60,7 @@ bool FlatteningController::NewFrame() {
return true;
}
sleep_until_ = std::chrono::system_clock::now() + kTimeout;
sleep_until_ = std::chrono::system_clock::now() + timeout_;
if (disabled_) {
wake_it = true;
disabled_ = false;

View file

@ -32,7 +32,8 @@ struct FlatConCallbacks {
class FlatteningController {
public:
static auto CreateInstance(FlatConCallbacks &cbks)
static auto CreateInstance(FlatConCallbacks &cbks,
std::chrono::milliseconds timeout)
-> std::shared_ptr<FlatteningController>;
~FlatteningController() {
StopThread();
@ -58,10 +59,9 @@ class FlatteningController {
cv_.notify_all();
}
static constexpr auto kTimeout = 1s;
private:
explicit FlatteningController(FlatConCallbacks callbacks);
FlatteningController(FlatConCallbacks callbacks,
std::chrono::milliseconds timeout);
void ThreadFn();
/* Disable the controller by default as it can cause refresh event to be
@ -76,6 +76,7 @@ class FlatteningController {
std::mutex mutex_;
std::condition_variable cv_;
FlatConCallbacks cbks_;
const std::chrono::milliseconds timeout_;
};
} // namespace android::drm_hwcomposer

View file

@ -37,6 +37,7 @@ namespace android::drm_hwcomposer {
namespace {
constexpr auto kFlatteningTimeout = 1s;
constexpr int kCtmRows = 3;
constexpr int kCtmCols = 3;
@ -588,7 +589,8 @@ bool HwcDisplay::Init() {
}
auto flatcbk = (struct FlatConCallbacks){
.trigger = [this]() { hwc_->SendRefreshEventToClient(handle_); }};
flatcon_ = FlatteningController::CreateInstance(flatcbk);
flatcon_ = FlatteningController::CreateInstance(flatcbk,
kFlatteningTimeout);
}
HwcLayer::LayerProperties lp;