output: allow_artifacts -> allow_reconfiguration

The name "allow_artifacts" and associated description is very vague, and
theoretically allow for tearing behavior. Clarify that we only intend to
mean artifacts related to output configuration (e.g., modesets).

References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3740
This commit is contained in:
Kenny Levinsen 2023-10-06 00:14:32 +02:00 committed by Simon Ser
parent 291431c14f
commit 2cf78f4c5b
4 changed files with 8 additions and 8 deletions

View File

@ -452,7 +452,7 @@ static void drm_connector_state_init(struct wlr_drm_connector_state *state,
const struct wlr_output_state *base) { const struct wlr_output_state *base) {
*state = (struct wlr_drm_connector_state){ *state = (struct wlr_drm_connector_state){
.base = base, .base = base,
.modeset = base->allow_artifacts, .modeset = base->allow_reconfiguration,
.active = (base->committed & WLR_OUTPUT_STATE_ENABLED) ? .active = (base->committed & WLR_OUTPUT_STATE_ENABLED) ?
base->enabled : conn->output.enabled, base->enabled : conn->output.enabled,
}; };

View File

@ -77,9 +77,9 @@ enum wlr_output_state_mode_type {
*/ */
struct wlr_output_state { struct wlr_output_state {
uint32_t committed; // enum wlr_output_state_field uint32_t committed; // enum wlr_output_state_field
// Set to true to allow temporary visual artifacts (e.g. black screen) while // Set to true to allow output reconfiguration to occur which may result
// the update is being applied // in temporary output disruptions and content misrepresentations.
bool allow_artifacts; bool allow_reconfiguration;
pixman_region32_t damage; // output-buffer-local coordinates pixman_region32_t damage; // output-buffer-local coordinates
bool enabled; bool enabled;
float scale; float scale;

View File

@ -155,7 +155,7 @@ bool output_ensure_buffer(struct wlr_output *output,
if (state->committed & WLR_OUTPUT_STATE_RENDER_FORMAT) { if (state->committed & WLR_OUTPUT_STATE_RENDER_FORMAT) {
needs_new_buffer = true; needs_new_buffer = true;
} }
if (state->allow_artifacts && output->commit_seq == 0 && enabled) { if (state->allow_reconfiguration && output->commit_seq == 0 && enabled) {
// On first commit, require a new buffer if the compositor called a // On first commit, require a new buffer if the compositor called a
// mode-setting function, even if the mode won't change. This makes it // mode-setting function, even if the mode won't change. This makes it
// so the swapchain is created now. // so the swapchain is created now.

View File

@ -22,7 +22,7 @@ void wlr_output_state_set_enabled(struct wlr_output_state *state,
bool enabled) { bool enabled) {
state->committed |= WLR_OUTPUT_STATE_ENABLED; state->committed |= WLR_OUTPUT_STATE_ENABLED;
state->enabled = enabled; state->enabled = enabled;
state->allow_artifacts = true; state->allow_reconfiguration = true;
} }
void wlr_output_state_set_mode(struct wlr_output_state *state, void wlr_output_state_set_mode(struct wlr_output_state *state,
@ -30,7 +30,7 @@ void wlr_output_state_set_mode(struct wlr_output_state *state,
state->committed |= WLR_OUTPUT_STATE_MODE; state->committed |= WLR_OUTPUT_STATE_MODE;
state->mode_type = WLR_OUTPUT_STATE_MODE_FIXED; state->mode_type = WLR_OUTPUT_STATE_MODE_FIXED;
state->mode = mode; state->mode = mode;
state->allow_artifacts = true; state->allow_reconfiguration = true;
} }
void wlr_output_state_set_custom_mode(struct wlr_output_state *state, void wlr_output_state_set_custom_mode(struct wlr_output_state *state,
@ -40,7 +40,7 @@ void wlr_output_state_set_custom_mode(struct wlr_output_state *state,
state->custom_mode.width = width; state->custom_mode.width = width;
state->custom_mode.height = height; state->custom_mode.height = height;
state->custom_mode.refresh = refresh; state->custom_mode.refresh = refresh;
state->allow_artifacts = true; state->allow_reconfiguration = true;
} }
void wlr_output_state_set_scale(struct wlr_output_state *state, float scale) { void wlr_output_state_set_scale(struct wlr_output_state *state, float scale) {