diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-05-15 10:45:41 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-05-15 10:45:41 +0300 |
commit | 3c0fd51cf43ea7504a4457784d6a085bfb4b92d0 (patch) | |
tree | 32ab4a64d7e1d9e1f4b75fc50d2b1be88e174d04 | |
parent | 6a850f3cc840a574d3b5b5af7b608ae3536f96ec (diff) |
Fix T76738: Duplicate brushes cause assertion on undo
-rw-r--r-- | source/blender/blenkernel/BKE_blender_version.h | 2 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_280.c | 30 |
2 files changed, 22 insertions, 10 deletions
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h index 52a603ede72..c0ac87368c4 100644 --- a/source/blender/blenkernel/BKE_blender_version.h +++ b/source/blender/blenkernel/BKE_blender_version.h @@ -27,7 +27,7 @@ * \note Use #STRINGIFY() rather than defining with quotes. */ #define BLENDER_VERSION 283 -#define BLENDER_SUBVERSION 16 +#define BLENDER_SUBVERSION 17 /** Several breakages with 280, e.g. collections vs layers. */ #define BLENDER_MINVERSION 280 #define BLENDER_MINSUBVERSION 0 diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 2c4cc544e2a..72c7c10d7ee 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -5046,6 +5046,27 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain) } } + if (!MAIN_VERSION_ATLEAST(bmain, 283, 17)) { + /* Reset the cloth mass to 1.0 in brushes with an invalid value. */ + for (Brush *br = bmain->brushes.first; br; br = br->id.next) { + if (br->sculpt_tool == SCULPT_TOOL_CLOTH) { + if (br->cloth_mass == 0.0f) { + br->cloth_mass = 1.0f; + } + } + } + } + + /** Repair files from duplicate brushes added to blend files, see: T76738. */ + if (!MAIN_VERSION_ATLEAST(bmain, 283, 17) || + ((bmain->versionfile == 290) && !MAIN_VERSION_ATLEAST(bmain, 290, 2))) { + short id_codes[] = {ID_BR, ID_PAL}; + for (int i = 0; i < ARRAY_SIZE(id_codes); i++) { + ListBase *lb = which_libbase(bmain, id_codes[i]); + BKE_main_id_repair_duplicate_names_listbase(lb); + } + } + /** * Versioning code until next subversion bump goes here. * @@ -5058,14 +5079,5 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain) */ { /* Keep this block, even when empty. */ - - /* Reset the cloth mass to 1.0 in brushes with an invalid value. */ - for (Brush *br = bmain->brushes.first; br; br = br->id.next) { - if (br->sculpt_tool == SCULPT_TOOL_CLOTH) { - if (br->cloth_mass == 0.0f) { - br->cloth_mass = 1.0f; - } - } - } } } |