[Bf-blender-cvs] [210dc12] master: Fix T39847: Followup to rB6babb4d12b8b.

Bastien Montagne noreply at git.blender.org
Wed Apr 23 18:04:08 CEST 2014


Commit: 210dc12b530b0a2f3d74469ec6d93514ce2682d5
Author: Bastien Montagne
Date:   Wed Apr 23 17:59:35 2014 +0200
https://developer.blender.org/rB210dc12b530b0a2f3d74469ec6d93514ce2682d5

Fix T39847: Followup to rB6babb4d12b8b.

As suggested by Campbell, bump subversion and reset all ui_previews data (so that any file that could
have been corrupted in past two weeks because of this bug is fixed and valid again).

===================================================================

M	source/blender/blenkernel/BKE_blender.h
M	source/blender/blenloader/intern/versioning_270.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 2cc17f3..009cff4 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -42,7 +42,7 @@ extern "C" {
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         270
-#define BLENDER_SUBVERSION      3
+#define BLENDER_SUBVERSION      4
 /* 262 was the last editmesh release but it has compatibility code for bmesh data */
 #define BLENDER_MINVERSION      262
 #define BLENDER_MINSUBVERSION   0
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index a09b02e..507d711 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -46,6 +46,7 @@
 
 #include "DNA_genfile.h"
 
+#include "BLI_blenlib.h"
 #include "BLI_math.h"
 
 #include "BKE_main.h"
@@ -180,6 +181,29 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
 		}
 	}
 
+	if (!MAIN_VERSION_ATLEAST(main, 270, 4)) {
+		/* ui_previews were not handled correctly when copying areas, leading to corrupted files (see T39847).
+		 * This will always reset situation to a valid state.
+		 */
+		bScreen *sc;
+
+		for (sc = main->screen.first; sc; sc = sc->id.next) {
+			ScrArea *sa;
+			for (sa = sc->areabase.first; sa; sa = sa->next) {
+				SpaceLink *sl;
+
+				for (sl = sa->spacedata.first; sl; sl = sl->next) {
+					ARegion *ar;
+					ListBase *lb = (sl == sa->spacedata.first) ? &sa->regionbase : &sl->regionbase;
+
+					for (ar = lb->first; ar; ar = ar->next) {
+						BLI_listbase_clear(&ar->ui_previews);
+					}
+				}
+			}
+		}
+	}
+
 	if (!DNA_struct_elem_find(fd->filesdna, "Material", "int", "mode2")) { /* will be replaced with version check when other new flag is added to mode2 */
 		Material *ma;




More information about the Bf-blender-cvs mailing list