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:
parent
38045be8af
commit
ce65d6c6e3
3 changed files with 16 additions and 10 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue