diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h index e6cd58824..1ef289008 100644 --- a/include/wlr/types/wlr_output.h +++ b/include/wlr/types/wlr_output.h @@ -193,6 +193,7 @@ struct wlr_output { enum wl_output_transform transform; enum wlr_output_adaptive_sync_status adaptive_sync_status; uint32_t render_format; + const struct wlr_output_image_description *image_description; // Indicates whether making changes to adaptive sync status is supported. // If false, changes to adaptive sync status is guaranteed to fail. If @@ -255,6 +256,7 @@ struct wlr_output { struct { struct wl_listener display_destroy; + struct wlr_output_image_description image_description_value; } WLR_PRIVATE; }; diff --git a/types/output/output.c b/types/output/output.c index 4f268c78d..3410138c1 100644 --- a/types/output/output.c +++ b/types/output/output.c @@ -233,6 +233,15 @@ static void output_apply_state(struct wlr_output *output, output->transform = state->transform; } + if (state->committed & WLR_OUTPUT_STATE_IMAGE_DESCRIPTION) { + if (state->image_description != NULL) { + output->image_description_value = *state->image_description; + output->image_description = &output->image_description_value; + } else { + output->image_description = NULL; + } + } + bool geometry_updated = state->committed & (WLR_OUTPUT_STATE_MODE | WLR_OUTPUT_STATE_TRANSFORM | WLR_OUTPUT_STATE_SUBPIXEL);