Make version_update() callback being invoked when linking/appending datablocks
This way addons and render engines which needs to do versioning code on files will properly do it when something is being linked or appended to the scene. Previously that callback was only called for the local main only, making it impossible to do tweaks on linking.
This commit is contained in:
parent
117edbbf88
commit
fbc2909cef
Notes:
blender-bot
2023-02-14 10:09:24 +01:00
Referenced by commit a0fd7ab28d
, Revert "Make version_update() callback being invoked when linking/appending datablocks"
|
@ -105,6 +105,7 @@
|
|||
|
||||
#include "BLI_endian_switch.h"
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_callbacks.h"
|
||||
#include "BLI_math.h"
|
||||
#include "BLI_threads.h"
|
||||
#include "BLI_mempool.h"
|
||||
|
@ -7889,8 +7890,12 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filepath)
|
|||
}
|
||||
|
||||
/* do before read_libraries, but skip undo case */
|
||||
if (fd->memfile==NULL)
|
||||
if (fd->memfile==NULL) {
|
||||
do_versions(fd, NULL, bfd->main);
|
||||
if (BLI_thread_is_main()) {
|
||||
BLI_callback_exec(bfd->main, NULL, BLI_CB_EVT_VERSION_UPDATE);
|
||||
}
|
||||
}
|
||||
|
||||
do_versions_userdef(fd, bfd);
|
||||
|
||||
|
@ -9527,6 +9532,9 @@ static void read_libraries(FileData *basefd, ListBase *mainlist)
|
|||
do_versions(mainptr->curlib->filedata, mainptr->curlib, mainptr);
|
||||
else
|
||||
do_versions(basefd, NULL, mainptr);
|
||||
if (BLI_thread_is_main()) {
|
||||
BLI_callback_exec(mainptr, NULL, BLI_CB_EVT_VERSION_UPDATE);
|
||||
}
|
||||
}
|
||||
|
||||
if (mainptr->curlib->filedata)
|
||||
|
|
|
@ -478,7 +478,6 @@ bool WM_file_read(bContext *C, const char *filepath, ReportList *reports)
|
|||
WM_operatortype_last_properties_clear_all();
|
||||
|
||||
/* important to do before NULL'ing the context */
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE);
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST);
|
||||
|
||||
if (!G.background) {
|
||||
|
@ -672,7 +671,6 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
|
|||
WM_operatortype_last_properties_clear_all();
|
||||
|
||||
/* important to do before NULL'ing the context */
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE);
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST);
|
||||
|
||||
WM_event_add_notifier(C, NC_WM | ND_FILEREAD, NULL);
|
||||
|
|
|
@ -240,7 +240,6 @@ void WM_init(bContext *C, int argc, const char **argv)
|
|||
*
|
||||
* unlikely any handlers are set but its possible,
|
||||
* note that recovering the last session does its own callbacks. */
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE);
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue