Refactor: const-correctness in GPU viewport
Make GPU_viewport_colorspace_set() const-crrect w.r.t view_settings. Instead of doing in-place modifications of the view_settings argument with restoring them later introduce new function for copying view settings which keeps curve mapping unchanged in the destination. Should be no functional changes. Pull Request: https://projects.blender.org/blender/blender/pulls/138189
This commit is contained in:
committed by
Sergey Sharybin
parent
4c4c21df76
commit
6ff0726ef2
@@ -208,6 +208,14 @@ void BKE_color_managed_view_settings_init_default(
|
||||
|
||||
void BKE_color_managed_view_settings_copy(ColorManagedViewSettings *new_settings,
|
||||
const ColorManagedViewSettings *settings);
|
||||
|
||||
/**
|
||||
* Copy view settings that are not related to the curve mapping. Keep the curve mapping unchanged
|
||||
* in the new_settings.
|
||||
*/
|
||||
void BKE_color_managed_view_settings_copy_keep_curve_mapping(
|
||||
ColorManagedViewSettings *new_settings, const ColorManagedViewSettings *settings);
|
||||
|
||||
void BKE_color_managed_view_settings_free(ColorManagedViewSettings *settings);
|
||||
|
||||
void BKE_color_managed_view_settings_blend_write(BlendWriter *writer,
|
||||
|
||||
@@ -1914,6 +1914,19 @@ void BKE_color_managed_view_settings_init_default(
|
||||
|
||||
void BKE_color_managed_view_settings_copy(ColorManagedViewSettings *new_settings,
|
||||
const ColorManagedViewSettings *settings)
|
||||
{
|
||||
BKE_color_managed_view_settings_copy_keep_curve_mapping(new_settings, settings);
|
||||
|
||||
if (settings->curve_mapping) {
|
||||
new_settings->curve_mapping = BKE_curvemapping_copy(settings->curve_mapping);
|
||||
}
|
||||
else {
|
||||
new_settings->curve_mapping = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void BKE_color_managed_view_settings_copy_keep_curve_mapping(
|
||||
ColorManagedViewSettings *new_settings, const ColorManagedViewSettings *settings)
|
||||
{
|
||||
STRNCPY(new_settings->look, settings->look);
|
||||
STRNCPY(new_settings->view_transform, settings->view_transform);
|
||||
@@ -1923,13 +1936,6 @@ void BKE_color_managed_view_settings_copy(ColorManagedViewSettings *new_settings
|
||||
new_settings->gamma = settings->gamma;
|
||||
new_settings->temperature = settings->temperature;
|
||||
new_settings->tint = settings->tint;
|
||||
|
||||
if (settings->curve_mapping) {
|
||||
new_settings->curve_mapping = BKE_curvemapping_copy(settings->curve_mapping);
|
||||
}
|
||||
else {
|
||||
new_settings->curve_mapping = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void BKE_color_managed_view_settings_free(ColorManagedViewSettings *settings)
|
||||
|
||||
@@ -48,7 +48,7 @@ void GPU_viewport_draw_to_screen_ex(GPUViewport *viewport,
|
||||
void GPU_viewport_free(GPUViewport *viewport);
|
||||
|
||||
void GPU_viewport_colorspace_set(GPUViewport *viewport,
|
||||
ColorManagedViewSettings *view_settings,
|
||||
const ColorManagedViewSettings *view_settings,
|
||||
const ColorManagedDisplaySettings *display_settings,
|
||||
float dither);
|
||||
|
||||
|
||||
@@ -230,7 +230,7 @@ void GPU_viewport_bind_from_offscreen(GPUViewport *viewport, GPUOffScreen *ofs,
|
||||
}
|
||||
|
||||
void GPU_viewport_colorspace_set(GPUViewport *viewport,
|
||||
ColorManagedViewSettings *view_settings,
|
||||
const ColorManagedViewSettings *view_settings,
|
||||
const ColorManagedDisplaySettings *display_settings,
|
||||
float dither)
|
||||
{
|
||||
@@ -256,19 +256,11 @@ void GPU_viewport_colorspace_set(GPUViewport *viewport,
|
||||
BKE_color_managed_view_settings_free(&viewport->view_settings);
|
||||
}
|
||||
/* Don't copy the curve mapping already. */
|
||||
CurveMapping *tmp_curve_mapping = view_settings->curve_mapping;
|
||||
CurveMapping *tmp_curve_mapping_vp = viewport->view_settings.curve_mapping;
|
||||
view_settings->curve_mapping = nullptr;
|
||||
viewport->view_settings.curve_mapping = nullptr;
|
||||
|
||||
BKE_color_managed_view_settings_copy(&viewport->view_settings, view_settings);
|
||||
/* Restore. */
|
||||
view_settings->curve_mapping = tmp_curve_mapping;
|
||||
viewport->view_settings.curve_mapping = tmp_curve_mapping_vp;
|
||||
BKE_color_managed_view_settings_copy_keep_curve_mapping(&viewport->view_settings, view_settings);
|
||||
/* Only copy curve-mapping if needed. Avoid unneeded OCIO cache miss. */
|
||||
if (tmp_curve_mapping && viewport->view_settings.curve_mapping == nullptr) {
|
||||
if (view_settings->curve_mapping && viewport->view_settings.curve_mapping == nullptr) {
|
||||
BKE_color_managed_view_settings_free(&viewport->view_settings);
|
||||
viewport->view_settings.curve_mapping = BKE_curvemapping_copy(tmp_curve_mapping);
|
||||
viewport->view_settings.curve_mapping = BKE_curvemapping_copy(view_settings->curve_mapping);
|
||||
}
|
||||
|
||||
BKE_color_managed_display_settings_copy(&viewport->display_settings, display_settings);
|
||||
|
||||
Reference in New Issue
Block a user