[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17594] branches/blender2.5/blender/source /blender: Patch to allow pre-2.50 Blenders to read newer files.

Ton Roosendaal ton at blender.org
Thu Nov 27 17:00:59 CET 2008


Revision: 17594
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17594
Author:   ton
Date:     2008-11-27 17:00:59 +0100 (Thu, 27 Nov 2008)

Log Message:
-----------
Patch to allow pre-2.50 Blenders to read newer files.

Since we'll reshuffle a lot in UI code, making new Screens totally 
incompatible, this patch saves the Screen chunk in Blender files
with a new identifier (ID_SCRN), causing it to be not read in old
Blender binaries. Pre-2.50 blender already has a facility to recover
from this (it keeps old UI), including for .B.blends (it opens 
default simple screen)

For the latter reason, it might be advisable to have the .B.blend 
for 2.50+ saved as another name? Then you can use both for while.

(Note: commit is just 3 lines of code, other files are comments I
added for documentation of other stuff)

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_ID.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2008-11-27 14:27:33 UTC (rev 17593)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2008-11-27 16:00:59 UTC (rev 17594)
@@ -8207,6 +8207,10 @@
 			bhead = read_libblock(fd, fd->mainlist.last, bhead, LIB_READ+LIB_EXTERN, NULL);
 			break;
 			
+			/* in 2.50+ files, the file identifier for screens is patched, forward compatibility */
+		case ID_SCRN:
+			bhead->code= ID_SCR;
+			/* deliberate pass on to default */
 		default:
 			bhead = read_libblock(fd, bfd->main, bhead, LIB_LOCAL, NULL);
 		}

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c	2008-11-27 14:27:33 UTC (rev 17593)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/writefile.c	2008-11-27 16:00:59 UTC (rev 17594)
@@ -1620,7 +1620,8 @@
 	while(sc) {
 		
 		/* write LibData */
-		writestruct(wd, ID_SCR, "Screen", 1, sc);
+		/* in 2.50+ files, the file identifier for screens is patched, forward compatibility */
+		writestruct(wd, ID_SCRN, "Screen", 1, sc);
 		if (sc->id.properties) 
 			IDP_WriteProperty(sc->id.properties, wd);
 
@@ -1651,6 +1652,7 @@
 			while(sl) {
 				if(sl->spacetype==SPACE_VIEW3D) {
 					View3D *v3d= (View3D *) sl;
+					printf("save screen %s view3d %p\n", sc->id.name+2, v3d);
 					writestruct(wd, DATA, "View3D", 1, v3d);
 					if(v3d->bgpic) writestruct(wd, DATA, "BGpic", 1, v3d->bgpic);
 					if(v3d->localvd) writestruct(wd, DATA, "View3D", 1, v3d->localvd);

Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_ID.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_ID.h	2008-11-27 14:27:33 UTC (rev 17593)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_ID.h	2008-11-27 16:00:59 UTC (rev 17594)
@@ -174,6 +174,7 @@
 #define ID_KE		MAKE_ID2('K', 'E')
 #define ID_WO		MAKE_ID2('W', 'O')
 #define ID_SCR		MAKE_ID2('S', 'R')
+#define ID_SCRN		MAKE_ID2('S', 'N')
 #define ID_VF		MAKE_ID2('V', 'F')
 #define ID_TXT		MAKE_ID2('T', 'X')
 #define ID_SO		MAKE_ID2('S', 'O')

Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h	2008-11-27 14:27:33 UTC (rev 17593)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_windowmanager_types.h	2008-11-27 16:00:59 UTC (rev 17594)
@@ -71,8 +71,8 @@
 	ListBase screenkeymap;
 	ListBase uikeymap;
 	ListBase timekeymap;
+	/* keymaps have to be NULLed in readfile.c */
 	
-	
 } wmWindowManager;
 
 

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c	2008-11-27 14:27:33 UTC (rev 17593)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c	2008-11-27 16:00:59 UTC (rev 17594)
@@ -252,6 +252,7 @@
 			if(win->screen->do_draw)
 				ED_screen_draw(win);
 
+			/* regions are menus here */
 			for(ar=win->screen->regionbase.first; ar; ar= ar->next) {
 				C->region= ar;
 				
@@ -519,6 +520,7 @@
 			
 			action= wm_handlers_do(C, event, &win->handlers);
 			
+			/* modal menus in Blender use (own) regions linked to screen */
 			if(wm_event_always_pass(event) || action==WM_HANDLER_CONTINUE) {
 				ARegion *ar;
 





More information about the Bf-blender-cvs mailing list