Index: ui/ozone/platform/drm/gpu/drm_vsync_provider.cc |
diff --git a/ui/ozone/platform/drm/gpu/drm_vsync_provider.cc b/ui/ozone/platform/drm/gpu/drm_vsync_provider.cc |
index e3c39252569aef74b263691e2f89151e886670ae..6c0e1ca0964b12c6726c016fe4d34d48877cff9e 100644 |
--- a/ui/ozone/platform/drm/gpu/drm_vsync_provider.cc |
+++ b/ui/ozone/platform/drm/gpu/drm_vsync_provider.cc |
@@ -5,6 +5,7 @@ |
#include "ui/ozone/platform/drm/gpu/drm_vsync_provider.h" |
#include "base/time/time.h" |
+#include "ui/ozone/platform/drm/gpu/crtc_controller.h" |
#include "ui/ozone/platform/drm/gpu/drm_window.h" |
#include "ui/ozone/platform/drm/gpu/hardware_display_controller.h" |
@@ -21,9 +22,11 @@ void DrmVSyncProvider::GetVSyncParameters(const UpdateVSyncCallback& callback) { |
if (!controller) |
return; |
+ // If we're in mirror mode the 2 CRTCs should have similar modes with the same |
+ // refresh rates. |
+ CrtcController* crtc = controller->crtc_controllers()[0]; |
// The value is invalid, so we can't update the parameters. |
- if (controller->GetTimeOfLastFlip() == 0 || |
- controller->get_mode().vrefresh == 0) |
+ if (controller->GetTimeOfLastFlip() == 0 || crtc->mode().vrefresh == 0) |
return; |
// Stores the time of the last refresh. |
@@ -31,7 +34,7 @@ void DrmVSyncProvider::GetVSyncParameters(const UpdateVSyncCallback& callback) { |
base::TimeTicks::FromInternalValue(controller->GetTimeOfLastFlip()); |
// Stores the refresh rate. |
base::TimeDelta interval = |
- base::TimeDelta::FromSeconds(1) / controller->get_mode().vrefresh; |
+ base::TimeDelta::FromSeconds(1) / crtc->mode().vrefresh; |
callback.Run(timebase, interval); |
} |