diff --git a/include/render/color.h b/include/render/color.h index cddf1e219..176abf3a7 100644 --- a/include/render/color.h +++ b/include/render/color.h @@ -38,6 +38,9 @@ struct wlr_color_transform_lut3d { size_t dim_len; }; +void wlr_color_transform_init(struct wlr_color_transform *tr, + enum wlr_color_transform_type type); + /** * Gets a wlr_color_transform_lut3d from a generic wlr_color_transform. * Asserts that the base type is COLOR_TRANSFORM_LUT_3D diff --git a/render/color.c b/render/color.c index c708938c7..a033619b5 100644 --- a/render/color.c +++ b/render/color.c @@ -21,14 +21,20 @@ static const struct wlr_color_primaries COLOR_PRIMARIES_BT2020 = { // code point .white = { 0.3127, 0.3290 }, }; +void wlr_color_transform_init(struct wlr_color_transform *tr, enum wlr_color_transform_type type) { + *tr = (struct wlr_color_transform){ + .type = type, + .ref_count = 1, + }; + wlr_addon_set_init(&tr->addons); +} + struct wlr_color_transform *wlr_color_transform_init_srgb(void) { struct wlr_color_transform *tx = calloc(1, sizeof(struct wlr_color_transform)); if (!tx) { return NULL; } - tx->type = COLOR_TRANSFORM_SRGB; - tx->ref_count = 1; - wlr_addon_set_init(&tx->addons); + wlr_color_transform_init(tx, COLOR_TRANSFORM_SRGB); return tx; } diff --git a/render/color_lcms2.c b/render/color_lcms2.c index c0f4db817..e6a2673e1 100644 --- a/render/color_lcms2.c +++ b/render/color_lcms2.c @@ -99,11 +99,9 @@ struct wlr_color_transform *wlr_color_transform_init_linear_to_icc( if (!tx) { goto out_lcms_tr; } - tx->base.type = COLOR_TRANSFORM_LUT_3D; + wlr_color_transform_init(&tx->base, COLOR_TRANSFORM_LUT_3D); tx->dim_len = dim_len; tx->lut_3d = lut_3d; - tx->base.ref_count = 1; - wlr_addon_set_init(&tx->base.addons); out_lcms_tr: cmsDeleteTransform(lcms_tr);