From 1bc8ddbc6ce4c80919640aee9a29da63d8f6b442 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 11 Mar 2019 16:49:29 +0100 Subject: Fix T62310: Batch generate data-block previews broken. Some uninitialized colormanagement data was breaking RNA acces for them, exposed in batch preview management when generating previews for scenes because we have to backup/restore scene and all its settings before/after rendering it... --- source/blender/blenkernel/BKE_blender_version.h | 2 +- source/blender/blenkernel/intern/scene.c | 12 ++++++++++++ source/blender/blenloader/intern/versioning_280.c | 20 ++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) (limited to 'source') diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h index e82efac3891..75104999402 100644 --- a/source/blender/blenkernel/BKE_blender_version.h +++ b/source/blender/blenkernel/BKE_blender_version.h @@ -24,7 +24,7 @@ * and keep comment above the defines. * Use STRINGIFY() rather than defining with quotes */ #define BLENDER_VERSION 280 -#define BLENDER_SUBVERSION 47 +#define BLENDER_SUBVERSION 48 /* Several breakages with 280, e.g. collections vs layers */ #define BLENDER_MINVERSION 280 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index abe0393f582..580d99e9042 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -780,6 +780,18 @@ void BKE_scene_init(Scene *sce) BLI_strncpy(sce->sequencer_colorspace_settings.name, colorspace_name, sizeof(sce->sequencer_colorspace_settings.name)); + /* Those next two sets (render and baking settings) are not currently in use, + * but are exposed to RNA API and hence must have valid data. */ + BKE_color_managed_display_settings_init(&sce->r.im_format.display_settings); + BKE_color_managed_view_settings_init_render(&sce->r.im_format.view_settings, + &sce->r.im_format.display_settings, + "Filmic"); + + BKE_color_managed_display_settings_init(&sce->r.bake.im_format.display_settings); + BKE_color_managed_view_settings_init_render(&sce->r.bake.im_format.view_settings, + &sce->r.bake.im_format.display_settings, + "Filmic"); + /* Safe Areas */ copy_v2_fl2(sce->safe_areas.title, 10.0f / 100.0f, 5.0f / 100.0f); copy_v2_fl2(sce->safe_areas.action, 3.5f / 100.0f, 3.5f / 100.0f); diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 3832b671b24..98277bab2a3 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -2874,6 +2874,26 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain) } } + if (!MAIN_VERSION_ATLEAST(bmain, 280, 48)) { + for (Scene *scene = bmain->scenes.first; scene; scene = scene->id.next) { + /* Those are not currently used, but are accessible through RNA API and were not + * properly initialized previously. This is mere copy of BKE_init_scene() code. */ + if (scene->r.im_format.view_settings.look[0] == '\0') { + BKE_color_managed_display_settings_init(&scene->r.im_format.display_settings); + BKE_color_managed_view_settings_init_render(&scene->r.im_format.view_settings, + &scene->r.im_format.display_settings, + "Filmic"); + } + + if (scene->r.bake.im_format.view_settings.look[0] == '\0') { + BKE_color_managed_display_settings_init(&scene->r.bake.im_format.display_settings); + BKE_color_managed_view_settings_init_render(&scene->r.bake.im_format.view_settings, + &scene->r.bake.im_format.display_settings, + "Filmic"); + } + } + } + { /* Versioning code until next subversion bump goes here. */ } -- cgit v1.2.3