Revert "BKE: Changing ID freeing order."
This reverts commit 87c72a7d27
.
Caused T54121 which breaks blend file saving.
For now crash on exit is preferable.
Possible solution is to free screen-manipulator batches in a separate
loop.
This commit is contained in:
parent
257cf86a05
commit
648df0fcdb
|
@ -1067,8 +1067,6 @@ int set_listbasepointers(Main *main, ListBase **lb)
|
|||
* This is important because freeing data decreases usercounts of other datablocks,
|
||||
* if this data is its self freed it can crash. */
|
||||
lb[INDEX_ID_LI] = &(main->library); /* Libraries may be accessed from pretty much any other ID... */
|
||||
lb[INDEX_ID_WS] = &(main->workspaces); /* before wm, so it's freed after it! */
|
||||
lb[INDEX_ID_WM] = &(main->wm);
|
||||
lb[INDEX_ID_IP] = &(main->ipo);
|
||||
lb[INDEX_ID_AC] = &(main->action); /* moved here to avoid problems when freeing with animato (aligorith) */
|
||||
lb[INDEX_ID_KE] = &(main->key);
|
||||
|
@ -1110,6 +1108,8 @@ int set_listbasepointers(Main *main, ListBase **lb)
|
|||
lb[INDEX_ID_OB] = &(main->object);
|
||||
lb[INDEX_ID_LS] = &(main->linestyle); /* referenced by scenes */
|
||||
lb[INDEX_ID_SCE] = &(main->scene);
|
||||
lb[INDEX_ID_WS] = &(main->workspaces); /* before wm, so it's freed after it! */
|
||||
lb[INDEX_ID_WM] = &(main->wm);
|
||||
lb[INDEX_ID_MSK] = &(main->mask);
|
||||
|
||||
lb[INDEX_ID_NULL] = NULL;
|
||||
|
|
|
@ -519,8 +519,6 @@ enum {
|
|||
* keep them in sync! */
|
||||
enum {
|
||||
INDEX_ID_LI = 0,
|
||||
INDEX_ID_WS,
|
||||
INDEX_ID_WM,
|
||||
INDEX_ID_IP,
|
||||
INDEX_ID_AC,
|
||||
INDEX_ID_KE,
|
||||
|
@ -553,6 +551,8 @@ enum {
|
|||
INDEX_ID_OB,
|
||||
INDEX_ID_LS,
|
||||
INDEX_ID_SCE,
|
||||
INDEX_ID_WS,
|
||||
INDEX_ID_WM,
|
||||
INDEX_ID_MSK,
|
||||
INDEX_ID_NULL,
|
||||
};
|
||||
|
|
|
@ -521,17 +521,6 @@ void WM_exit_ext(bContext *C, const bool do_python)
|
|||
COM_deinitialize();
|
||||
#endif
|
||||
|
||||
if (!G.background) {
|
||||
#ifdef WITH_OPENSUBDIV
|
||||
BKE_subsurf_osd_cleanup();
|
||||
#endif
|
||||
|
||||
GPU_global_buffer_pool_free();
|
||||
GPU_free_unused_buffers();
|
||||
|
||||
GPU_exit();
|
||||
}
|
||||
|
||||
BKE_blender_free(); /* blender.c, does entire library and spacetypes */
|
||||
// free_matcopybuf();
|
||||
ANIM_fcurves_copybuf_free();
|
||||
|
@ -576,6 +565,17 @@ void WM_exit_ext(bContext *C, const bool do_python)
|
|||
(void)do_python;
|
||||
#endif
|
||||
|
||||
if (!G.background) {
|
||||
#ifdef WITH_OPENSUBDIV
|
||||
BKE_subsurf_osd_cleanup();
|
||||
#endif
|
||||
|
||||
GPU_global_buffer_pool_free();
|
||||
GPU_free_unused_buffers();
|
||||
|
||||
GPU_exit();
|
||||
}
|
||||
|
||||
BKE_undo_reset();
|
||||
|
||||
ED_file_exit(); /* for fsmenu */
|
||||
|
|
Loading…
Reference in New Issue