@@ -51,7 +51,7 @@ DisplayWidget::DisplayWidget(QWidget* parent) : QWidget(parent)
5151
5252DisplayWidget::~DisplayWidget () = default ;
5353
54- void DisplayWidget::registerScreenChangeEvent ()
54+ void DisplayWidget::connectScreenChangedEvent ()
5555{
5656 DebugAssert (!m_screen_change_registered);
5757
@@ -60,9 +60,36 @@ void DisplayWidget::registerScreenChangeEvent()
6060 parent_widget = this ;
6161 QWindow* parent_window_handle = parent_widget->windowHandle ();
6262 if (parent_window_handle)
63- connect (parent_window_handle, &QWindow::screenChanged, this , [ this ]() { checkForSizeChange ( true ); } );
63+ connect (parent_window_handle, &QWindow::screenChanged, this , &DisplayWidget::onScreenChanged );
6464
6565 m_screen_change_registered = true ;
66+ connectScreenRefreshRateChangedEvent ();
67+ }
68+
69+ void DisplayWidget::connectScreenRefreshRateChangedEvent ()
70+ {
71+ if (m_screen_refresh_rate_changed_connection)
72+ {
73+ disconnect (m_screen_refresh_rate_changed_connection);
74+ m_screen_refresh_rate_changed_connection = {};
75+ }
76+
77+ if (QScreen* const widget_screen = screen ())
78+ {
79+ m_screen_refresh_rate_changed_connection =
80+ connect (widget_screen, &QScreen::refreshRateChanged, this , &DisplayWidget::onScreenRefreshRateChanged);
81+ }
82+ }
83+
84+ void DisplayWidget::onScreenChanged ()
85+ {
86+ connectScreenRefreshRateChangedEvent ();
87+ checkForSizeChange (true );
88+ }
89+
90+ void DisplayWidget::onScreenRefreshRateChanged ()
91+ {
92+ checkForSizeChange (true );
6693}
6794
6895const std::optional<WindowInfo>& DisplayWidget::getWindowInfo (RenderAPI render_api, Error* error)
@@ -72,7 +99,7 @@ const std::optional<WindowInfo>& DisplayWidget::getWindowInfo(RenderAPI render_a
7299 m_window_info = QtUtils::GetWindowInfoForWidget (this , render_api, error);
73100
74101 if (m_window_info.has_value () && !m_screen_change_registered)
75- registerScreenChangeEvent ();
102+ connectScreenChangedEvent ();
76103 }
77104
78105 m_render_api = m_window_info.has_value () ? render_api : RenderAPI::None;
0 commit comments