Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2020-05-15 10:45:41 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-05-15 10:45:41 +0300
commit3c0fd51cf43ea7504a4457784d6a085bfb4b92d0 (patch)
tree32ab4a64d7e1d9e1f4b75fc50d2b1be88e174d04 /source/blender/blenloader
parent6a850f3cc840a574d3b5b5af7b608ae3536f96ec (diff)
Fix T76738: Duplicate brushes cause assertion on undo
Diffstat (limited to 'source/blender/blenloader')
-rw-r--r--source/blender/blenloader/intern/versioning_280.c30
1 files changed, 21 insertions, 9 deletions
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;
- }
- }
- }
}
}