Fix #31961: Grease Pencil in VSE don't save the data
authorSergey Sharybin <sergey.vfx@gmail.com>
Mon, 2 Jul 2012 08:30:29 +0000 (08:30 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Mon, 2 Jul 2012 08:30:29 +0000 (08:30 +0000)
Issue was caused by linking to grease pencil from direct_link* function
which lead to NULL GP data because it's being read a way later.

Link to GP data in lib_link* instead.

source/blender/blenloader/intern/readfile.c

index cb87ee7eb144d0979eb10c6bc1b431cf40b2a66d..836f723327eba2839b59584f5141b51c09be250e 100644 (file)
@@ -5909,11 +5909,20 @@ static void direct_link_screen(FileData *fd, bScreen *sc)
                                }
                        }
                        else if (sl->spacetype == SPACE_SEQ) {
+                               /* grease pencil data is not a direct data and can't be linked from direct_link*
+                                * functions, it should be linked from lib_link* funcrions instead
+                                *
+                                * otherwise it'll lead to lost grease data on open because it'll likely be
+                                * read from file after all other users of grease pencil and newdataadr would
+                                * simple return NULL here (sergey)
+                                */
+#if 0
                                SpaceSeq *sseq = (SpaceSeq *)sl;
                                if (sseq->gpd) {
                                        sseq->gpd = newdataadr(fd, sseq->gpd);
                                        direct_link_gpencil(fd, sseq->gpd);
                                }
+#endif
                        }
                        else if (sl->spacetype == SPACE_BUTS) {
                                SpaceButs *sbuts = (SpaceButs *)sl;