Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------release/datafiles/locale0
m---------release/scripts/addons0
m---------release/scripts/addons_contrib0
-rw-r--r--source/blender/windowmanager/intern/wm_files.c15
-rw-r--r--source/creator/creator.c95
5 files changed, 30 insertions, 80 deletions
diff --git a/release/datafiles/locale b/release/datafiles/locale
-Subproject 4e1460519fb76d8fe4b838334d139a3e8d44682
+Subproject c651e63a9a537624f639950f3127a1dee29205d
diff --git a/release/scripts/addons b/release/scripts/addons
-Subproject cd26c938e597d7493f3d88dfdf69346c0f8b50e
+Subproject 30b619e76529a5ca99f96683f1b4a512d18cd51
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
-Subproject 34dc9b5a6a5917db65ac589c40fe1b5fed3605d
+Subproject cf842d8bb7b0033ca4fa99f7ebedcbd3810fd27
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index 58b4c914ad1..c54b06b4a2e 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -81,6 +81,7 @@
#include "BKE_packedFile.h"
#include "BKE_report.h"
#include "BKE_sound.h"
+#include "BKE_scene.h"
#include "BKE_screen.h"
#include "BLO_readfile.h"
@@ -476,6 +477,12 @@ static void wm_file_read_post(bContext *C, bool is_startup_file)
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);
+ /* would otherwise be handled by event loop */
+ if (G.background) {
+ Main *bmain = CTX_data_main(C);
+ BKE_scene_update_tagged(bmain->eval_ctx, bmain, CTX_data_scene(C));
+ }
+
WM_event_add_notifier(C, NC_WM | ND_FILEREAD, NULL);
/* report any errors.
@@ -491,9 +498,11 @@ static void wm_file_read_post(bContext *C, bool is_startup_file)
CTX_wm_window_set(C, NULL); /* exits queues */
}
-// undo_editmode_clear();
- BKE_undo_reset();
- BKE_undo_write(C, "original"); /* save current state */
+ if (!G.background) {
+// undo_editmode_clear();
+ BKE_undo_reset();
+ BKE_undo_write(C, "original"); /* save current state */
+ }
}
bool WM_file_read(bContext *C, const char *filepath, ReportList *reports)
diff --git a/source/creator/creator.c b/source/creator/creator.c
index 517dcb1074f..40525bb3add 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -1361,6 +1361,8 @@ static int set_addons(int argc, const char **argv, void *data)
static int load_file(int UNUSED(argc), const char **argv, void *data)
{
bContext *C = data;
+ ReportList reports;
+ bool success;
/* Make the path absolute because its needed for relative linked blends to be found */
char filename[FILE_MAX];
@@ -1373,84 +1375,23 @@ static int load_file(int UNUSED(argc), const char **argv, void *data)
BLI_strncpy(filename, argv[0], sizeof(filename));
BLI_path_cwd(filename, sizeof(filename));
- if (G.background) {
- Main *bmain;
- wmWindowManager *wm;
- int retval;
-
- bmain = CTX_data_main(C);
-
- BLI_callback_exec(bmain, NULL, BLI_CB_EVT_LOAD_PRE);
-
- retval = BKE_read_file(C, filename, NULL);
-
- if (retval == BKE_READ_FILE_FAIL) {
- /* failed to load file, stop processing arguments */
- if (G.background) {
- /* Set is_break if running in the background mode so
- * blender will return non-zero exit code which then
- * could be used in automated script to control how
- * good or bad things are.
- */
- G.is_break = true;
- }
- return -1;
- }
-
- wm = CTX_wm_manager(C);
- bmain = CTX_data_main(C);
-
- /* special case, 2.4x files */
- if (wm == NULL && BLI_listbase_is_empty(&bmain->wm)) {
- extern void wm_add_default(bContext *C);
-
- /* wm_add_default() needs the screen to be set. */
- CTX_wm_screen_set(C, bmain->screen.first);
- wm_add_default(C);
- }
-
- CTX_wm_manager_set(C, NULL); /* remove wm to force check */
- WM_check(C);
- if (bmain->name[0]) {
- G.save_over = 1;
- G.relbase_valid = 1;
- }
- else {
- G.save_over = 0;
- G.relbase_valid = 0;
+ /* load the file */
+ BKE_reports_init(&reports, RPT_PRINT);
+ WM_file_autoexec_init(filename);
+ success = WM_file_read(C, filename, &reports);
+ BKE_reports_clear(&reports);
+
+ if (success == false) {
+ /* failed to load file, stop processing arguments */
+ if (G.background) {
+ /* Set is_break if running in the background mode so
+ * blender will return non-zero exit code which then
+ * could be used in automated script to control how
+ * good or bad things are.
+ */
+ G.is_break = true;
}
-
- if (CTX_wm_manager(C) == NULL) {
- CTX_wm_manager_set(C, wm); /* reset wm */
- }
-
- /* WM_file_read would call normally */
- ED_editors_init(C);
- DAG_on_visible_update(bmain, true);
-
- /* WM_file_read() runs normally but since we're in background mode do here */
-#ifdef WITH_PYTHON
- /* run any texts that were loaded in and flagged as modules */
- BPY_python_reset(C);
-#endif
-
- BLI_callback_exec(bmain, NULL, BLI_CB_EVT_VERSION_UPDATE);
- BLI_callback_exec(bmain, NULL, BLI_CB_EVT_LOAD_POST);
-
- BKE_scene_update_tagged(bmain->eval_ctx, bmain, CTX_data_scene(C));
-
- /* happens for the UI on file reading too (huh? (ton))*/
- // XXX BKE_undo_reset();
- // BKE_undo_write("original"); /* save current state */
- }
- else {
- /* we are not running in background mode here, but start blender in UI mode with
- * a file - this should do everything a 'load file' does */
- ReportList reports;
- BKE_reports_init(&reports, RPT_PRINT);
- WM_file_autoexec_init(filename);
- WM_file_read(C, filename, &reports);
- BKE_reports_clear(&reports);
+ return -1;
}
G.file_loaded = 1;