diff options
| author | Simon Ser <contact@emersion.fr> | 2023-12-30 20:06:33 +0100 | 
|---|---|---|
| committer | Simon Ser <contact@emersion.fr> | 2023-12-30 20:06:33 +0100 | 
| commit | f81c3d93cd6f61b20ae784297679283438def8df (patch) | |
| tree | 3b406bbd30b46965b9eff201f62b4d5509cce59f /backend | |
| parent | ab924064f230cce2aea2e45bd113adea9d37f286 (diff) | |
| download | wlroots-f81c3d93cd6f61b20ae784297679283438def8df.tar.xz | |
backend/drm: save current refresh rate
wlr_output.refresh is populated by core wlr_output, and thus will
be zero for a custom mode with an unset refresh rate.
Save the refresh rate from the drmModeModeInfo in wlr_drm_connector
instead.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3791
Diffstat (limited to 'backend')
| -rw-r--r-- | backend/drm/drm.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/backend/drm/drm.c b/backend/drm/drm.c index b630c9dd..9c4f569c 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -475,6 +475,10 @@ static bool drm_crtc_commit(struct wlr_drm_connector *conn,  		}  		drm_connector_set_pending_page_flip(conn, page_flip); + +		if (state->base->committed & WLR_OUTPUT_STATE_MODE) { +			conn->refresh = calculate_refresh_rate(&state->mode); +		}  	} else {  		// The set_cursor() hook is a bit special: it's not really synchronized  		// to commit() or test(). Once set_cursor() returns true, the new @@ -1466,6 +1470,7 @@ static bool connect_drm_connector(struct wlr_drm_connector *wlr_conn,  				wlr_conn->crtc->props.mode_id, &mode_id);  			wlr_conn->crtc->mode_id = mode_id; +			wlr_conn->refresh = calculate_refresh_rate(current_modeinfo);  		}  		wlr_log(WLR_INFO, "  %"PRId32"x%"PRId32" @ %.3f Hz %s", @@ -1765,7 +1770,7 @@ static void handle_page_flip(int fd, unsigned seq,  		.presented = drm->session->active,  		.when = &present_time,  		.seq = seq, -		.refresh = mhz_to_nsec(conn->output.refresh), +		.refresh = mhz_to_nsec(conn->refresh),  		.flags = present_flags,  	};  	wlr_output_send_present(&conn->output, &present_event);  | 
