From cbc7ee28d7fe145564ca6c398a99e0519d97010d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 15 Jun 2018 10:23:03 +0200 Subject: WM: 2.8 screen compatibility Without these minor changes loading files from 2.8 will crash. Manually applied edits from 26786a2b87a08 --- source/blender/blenloader/intern/readfile.c | 15 ++++++++++----- source/blender/blenloader/intern/writefile.c | 4 ++++ 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'source/blender/blenloader/intern') diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 937853463a2..7d3d417bf33 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -6817,11 +6817,12 @@ void blo_lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *cursc /* free render engines for now */ for (ar = sa->regionbase.first; ar; ar = ar->next) { - RegionView3D *rv3d= ar->regiondata; - - if (rv3d && rv3d->render_engine) { - RE_engine_free(rv3d->render_engine); - rv3d->render_engine = NULL; + if (ar->regiontype == RGN_TYPE_WINDOW) { + RegionView3D *rv3d = ar->regiondata; + if (rv3d && rv3d->render_engine) { + RE_engine_free(rv3d->render_engine); + rv3d->render_engine = NULL; + } } } } @@ -7051,6 +7052,10 @@ static void direct_link_region(FileData *fd, ARegion *ar, int spacetype) /* unkown space type, don't leak regiondata */ ar->regiondata = NULL; } + else if (ar->flag & RGN_FLAG_TEMP_REGIONDATA) { + /* Runtime data, don't use. */ + ar->regiondata = NULL; + } else { ar->regiondata = newdataadr(fd, ar->regiondata); if (ar->regiondata) { diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 88e6cbc8d24..0e67bde6883 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2825,6 +2825,10 @@ static void write_region(WriteData *wd, ARegion *ar, int spacetype) writestruct(wd, DATA, ARegion, 1, ar); if (ar->regiondata) { + if (ar->flag & RGN_FLAG_TEMP_REGIONDATA) { + return; + } + switch (spacetype) { case SPACE_VIEW3D: if (ar->regiontype == RGN_TYPE_WINDOW) { -- cgit v1.2.3