[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47717] trunk/blender/source/blender/ blenloader/intern/readfile.c: Bugfix: Crash in Sequencer when trying to undo after using Grease Pencil

Joshua Leung aligorith at gmail.com
Mon Jun 11 05:03:47 CEST 2012


Revision: 47717
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47717
Author:   aligorith
Date:     2012-06-11 03:03:36 +0000 (Mon, 11 Jun 2012)
Log Message:
-----------
Bugfix: Crash in Sequencer when trying to undo after using Grease Pencil

Grease Pencil data was not getting correctly relinked after file reload (for
undo)

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2012-06-11 02:29:25 UTC (rev 47716)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2012-06-11 03:03:36 UTC (rev 47717)
@@ -5288,6 +5288,14 @@
 						 */
 						sima->gpd = newlibadr_us(fd, sc->id.lib, sima->gpd);
 					}
+					else if (sl->spacetype == SPACE_SEQ) {
+						SpaceSeq *sseq = (SpaceSeq *)sl;
+						
+						/* NOTE: pre-2.5, this was local data not lib data, but now we need this as lib data
+						 * so fingers crossed this works fine!
+						 */
+						sseq->gpd = newlibadr_us(fd, sc->id.lib, sseq->gpd);
+					}
 					else if (sl->spacetype == SPACE_NLA) {
 						SpaceNla *snla= (SpaceNla *)sl;
 						bDopeSheet *ads= snla->ads;
@@ -5358,15 +5366,21 @@
 					}
 					else if (sl->spacetype == SPACE_CLIP) {
 						SpaceClip *sclip = (SpaceClip *)sl;
-
+						
 						sclip->clip = newlibadr_us(fd, sc->id.lib, sclip->clip);
 						sclip->mask = newlibadr_us(fd, sc->id.lib, sclip->mask);
-
+						sclip->gpd = newlibadr_us(fd, sc->id.lib, sclip->gpd);
+						
 						sclip->scopes.track_search = NULL;
 						sclip->scopes.track_preview = NULL;
 						sclip->draw_context = NULL;
 						sclip->scopes.ok = 0;
 					}
+					else if (sl->spacetype == SPACE_LOGIC) {
+						SpaceLogic *slog = (SpaceLogic *)sl;
+						
+						slog->gpd = newlibadr_us(fd, sc->id.lib, slog->gpd);
+					}
 				}
 			}
 			sc->id.flag -= LIB_NEEDLINK;
@@ -5559,6 +5573,14 @@
 					 */
 					sima->gpd = restore_pointer_by_name(newmain, (ID *)sima->gpd, 1);
 				}
+				else if (sl->spacetype == SPACE_SEQ) {
+					SpaceSeq *sseq = (SpaceSeq *)sl;
+					
+					/* NOTE: pre-2.5, this was local data not lib data, but now we need this as lib data
+					 * so assume that here we're doing for undo only...
+					 */
+					sseq->gpd = restore_pointer_by_name(newmain, (ID *)sseq->gpd, 1);
+				}
 				else if (sl->spacetype == SPACE_NLA) {
 					SpaceNla *snla = (SpaceNla *)sl;
 					bDopeSheet *ads = snla->ads;
@@ -5628,7 +5650,14 @@
 					sclip->mask = restore_pointer_by_name(newmain, (ID *)sclip->mask, 1);
 					
 					sclip->scopes.ok = 0;
+					
+					sclip->gpd = restore_pointer_by_name(newmain, (ID *)sclip->gpd, 1);
 				}
+				else if (sl->spacetype == SPACE_LOGIC) {
+					SpaceLogic *slog = (SpaceLogic *)sl;
+					
+					slog->gpd = restore_pointer_by_name(newmain, (ID *)slog->gpd, 1);
+				}
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list