From ccf8c835ba5bb8aaaa044aff3dab5e8519f8fb36 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Mon, 2 Jul 2012 08:30:29 +0000 Subject: [PATCH] Fix #31961: Grease Pencil in VSE don't save the data 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 | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index cb87ee7eb14..836f723327e 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -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;