backend/drm: move primary FB check after pending buffer logic

If a connector has no current/queued buffer, but has a pending
buffer in the commit, we need to process that pending buffer before
checking pending.primary_fb.
This commit is contained in:
Simon Ser 2024-02-26 17:32:50 +01:00
parent 0e839ab1c2
commit db2b1892ad

View file

@ -682,12 +682,6 @@ static bool drm_connector_test(struct wlr_output *output,
struct wlr_drm_connector_state pending = {0}; struct wlr_drm_connector_state pending = {0};
drm_connector_state_init(&pending, conn, state); drm_connector_state_init(&pending, conn, state);
if (pending.active && !pending.primary_fb) {
wlr_drm_conn_log(conn, WLR_DEBUG,
"No primary frame buffer available for this connector");
goto out;
}
if ((state->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED) && if ((state->committed & WLR_OUTPUT_STATE_ADAPTIVE_SYNC_ENABLED) &&
state->adaptive_sync_enabled && state->adaptive_sync_enabled &&
!drm_connector_supports_vrr(conn)) { !drm_connector_supports_vrr(conn)) {
@ -724,6 +718,12 @@ static bool drm_connector_test(struct wlr_output *output,
} }
} }
if (pending.active && !pending.primary_fb) {
wlr_drm_conn_log(conn, WLR_DEBUG,
"No primary frame buffer available for this connector");
goto out;
}
ok = drm_crtc_commit(conn, &pending, 0, true); ok = drm_crtc_commit(conn, &pending, 0, true);
out: out: