diff options
author | qctecmdr <qctecmdr@localhost> | 2022-08-08 00:46:01 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2022-08-08 00:46:01 -0700 |
commit | b73575095a8fadc4de1908e3f3369dcb334eab59 (patch) | |
tree | 07c70f3b4b346bffce41f48bca7792e29527862d | |
parent | 3ed3e5eecf052ed9659a7350aee6e608da685b8f (diff) | |
parent | a831afd54a9a89f901f7f0ba96d374e02d3299dc (diff) |
Merge "sdm: fix vts test for SetActiveConfigWithConstraints"
-rw-r--r-- | composer/hwc_display.cpp | 6 | ||||
-rw-r--r-- | composer/hwc_display.h | 2 | ||||
-rw-r--r-- | composer/hwc_session.cpp | 1 | ||||
-rw-r--r-- | composer/hwc_session_services.cpp | 1 |
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; |