diff --git a/types/output/cursor.c b/types/output/cursor.c index 70647afb7..a24f4abd1 100644 --- a/types/output/cursor.c +++ b/types/output/cursor.c @@ -10,6 +10,7 @@ #include #include #include +#include "render/color.h" #include "types/wlr_buffer.h" #include "types/wlr_output.h" @@ -255,7 +256,17 @@ static struct wlr_buffer *render_cursor_buffer(struct wlr_output_cursor *cursor) wlr_box_transform(&dst_box, &dst_box, wlr_output_transform_invert(output->transform), buffer->width, buffer->height); - struct wlr_render_pass *pass = wlr_renderer_begin_buffer_pass(renderer, buffer, NULL); + struct wlr_buffer_pass_options options = {0}; + struct wlr_color_primaries primaries_value; + if (output->image_description != NULL) { + options.color_transform = wlr_color_transform_init_linear_to_inverse_eotf( + output->image_description->transfer_function); + wlr_color_primaries_from_named(&primaries_value, + output->image_description->primaries); + options.primaries = &primaries_value; + } + struct wlr_render_pass *pass = wlr_renderer_begin_buffer_pass(renderer, buffer, &options); + wlr_color_transform_unref(options.color_transform); if (pass == NULL) { wlr_buffer_unlock(buffer); return NULL; diff --git a/types/wlr_cursor.c b/types/wlr_cursor.c index 5f4aac398..7895cc4ed 100644 --- a/types/wlr_cursor.c +++ b/types/wlr_cursor.c @@ -640,7 +640,7 @@ static void output_cursor_output_handle_output_commit( const struct wlr_output_event_commit *event = data; if (event->state->committed & (WLR_OUTPUT_STATE_SCALE | WLR_OUTPUT_STATE_TRANSFORM - | WLR_OUTPUT_STATE_ENABLED)) { + | WLR_OUTPUT_STATE_ENABLED | WLR_OUTPUT_STATE_IMAGE_DESCRIPTION)) { cursor_output_cursor_update(output_cursor); }