summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqctecmdr <qctecmdr@localhost>2022-08-08 00:46:01 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2022-08-08 00:46:01 -0700
commitb73575095a8fadc4de1908e3f3369dcb334eab59 (patch)
tree07c70f3b4b346bffce41f48bca7792e29527862d
parent3ed3e5eecf052ed9659a7350aee6e608da685b8f (diff)
parenta831afd54a9a89f901f7f0ba96d374e02d3299dc (diff)
Merge "sdm: fix vts test for SetActiveConfigWithConstraints"
-rw-r--r--composer/hwc_display.cpp6
-rw-r--r--composer/hwc_display.h2
-rw-r--r--composer/hwc_session.cpp1
-rw-r--r--composer/hwc_session_services.cpp1
4 files changed, 9 insertions, 1 deletions
diff --git a/composer/hwc_display.cpp b/composer/hwc_display.cpp
index f4c2c73a..42b0770f 100644
--- a/composer/hwc_display.cpp
+++ b/composer/hwc_display.cpp
@@ -2895,7 +2895,7 @@ HWC2::Error HWCDisplay::SetActiveConfigWithConstraints(
vsync_period_change_constraints->desiredTimeNanos);
out_timeline->refreshRequired = true;
- if (info.x_pixels != fb_width_ || info.y_pixels != fb_height_) {
+ if (is_client_up_ && (info.x_pixels != fb_width_ || info.y_pixels != fb_height_)) {
out_timeline->refreshRequired = false;
fb_width_ = info.x_pixels;
fb_height_ = info.y_pixels;
@@ -3571,4 +3571,8 @@ DisplayError HWCDisplay::NotifyFpsMitigation(const float fps,
return kErrorNone;
}
+void HWCDisplay::MarkClientActive(bool is_client_up) {
+ is_client_up_ = is_client_up;
+}
+
} // namespace sdm
diff --git a/composer/hwc_display.h b/composer/hwc_display.h
index 0787bc7d..06fb0b94 100644
--- a/composer/hwc_display.h
+++ b/composer/hwc_display.h
@@ -507,6 +507,7 @@ class HWCDisplay : public DisplayEventHandler {
int *active_config_index, uint32_t *num_configs);
virtual void SetConfigInfo(std::map<uint32_t, DisplayConfigVariableInfo>& variable_config_map,
int active_config_index, uint32_t num_configs) {};
+ virtual void MarkClientActive(bool is_client_up);
protected:
static uint32_t throttling_refresh_rate_;
@@ -696,6 +697,7 @@ class HWCDisplay : public DisplayEventHandler {
bool draw_method_set_ = false;
bool validate_done_ = false;
bool client_target_3_1_set_ = false;
+ bool is_client_up_ = false;
};
inline int HWCDisplay::Perform(uint32_t operation, ...) {
diff --git a/composer/hwc_session.cpp b/composer/hwc_session.cpp
index 3e686478..6ae09615 100644
--- a/composer/hwc_session.cpp
+++ b/composer/hwc_session.cpp
@@ -1081,6 +1081,7 @@ void HWCSession::RegisterCallback(int32_t descriptor, hwc2_callback_data_t callb
DLOGI("disable idle time");
hwc_display_[HWC_DISPLAY_PRIMARY]->SetIdleTimeoutMs(0,0);
is_client_up_ = false;
+ hwc_display_[HWC_DISPLAY_PRIMARY]->MarkClientActive(false);
async_vds_creation_requested_ = false;
}
}
diff --git a/composer/hwc_session_services.cpp b/composer/hwc_session_services.cpp
index 4672fe1c..ceaa85d1 100644
--- a/composer/hwc_session_services.cpp
+++ b/composer/hwc_session_services.cpp
@@ -1599,6 +1599,7 @@ int HWCSession::DisplayConfigImpl::AllowIdleFallback() {
DLOGI("enable idle time active_ms:%d inactive_ms:%d",active_ms,inactive_ms);
hwc_session_->hwc_display_[HWC_DISPLAY_PRIMARY]->SetIdleTimeoutMs(active_ms, inactive_ms);
hwc_session_->is_client_up_ = true;
+ hwc_session_->hwc_display_[HWC_DISPLAY_PRIMARY]->MarkClientActive(true);
hwc_session_->idle_time_inactive_ms_ = inactive_ms;
hwc_session_->idle_time_active_ms_ = active_ms;
return 0;