drm_hwcomposer: Only update vsync period when committed Don't call VSyncWorker::SetVsyncPeriodNs on test-only commits; only update it when the new mode is actually committed to the kernel successfully. Change-Id: I0445e15b5e2b902d1575c34cf296fee7fdc00028 Signed-off-by: Drew Davenport <ddavenport@google.com>
diff --git a/hwc2_device/HwcDisplay.cpp b/hwc2_device/HwcDisplay.cpp index 6b676c2..f3c0fa0 100644 --- a/hwc2_device/HwcDisplay.cpp +++ b/hwc2_device/HwcDisplay.cpp
@@ -695,8 +695,6 @@ .bottom = int(staged_config->mode.GetRawMode().vdisplay)}); configs_.active_config_id = staged_mode_config_id_.value(); - vsync_worker_->SetVsyncPeriodNs(staged_config->mode.GetVSyncPeriodNs()); - a_args.display_mode = staged_config->mode; if (!a_args.test_only) { mode_update_commited_ = true; @@ -776,6 +774,11 @@ } if (mode_update_commited_) { + const HwcDisplayConfig *new_config = GetCurrentConfig(); + uint32_t new_vsync_period_ns = new_config + ? new_config->mode.GetVSyncPeriodNs() + : 0; + vsync_worker_->SetVsyncPeriodNs(new_vsync_period_ns); staged_mode_config_id_.reset(); vsync_tracking_en_ = false; if (last_vsync_ts_ != 0) {