Correction to fix of T37688

rB68d39a262c90 didn't check correct file for doing
versioning code. It shall check userprefs.blend not
startup.blend.
This commit is contained in:
2013-12-06 01:10:16 +06:00
parent 07ceb99213
commit 3f82e829e5

View File

@@ -526,16 +526,16 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
char prefstr[FILE_MAX];
int success = 0;
/* Indicates whether file was really load from memory.
/* Indicates whether user prefereneces were really load from memory.
*
* This is used for versioning code, and for this we can not rely on from_memory
* passed via argument. This is because there might be configuration folder
* exists but it might not have startup.blend and in this case we fallback to
* exists but it might not have userpref.blend and in this case we fallback to
* reading home file from memory.
*
* And in this case versioning code is to be run.
*/
bool read_file_from_memory = false;
bool read_userdef_from_memory = true;
/* options exclude eachother */
BLI_assert((from_memory && custom_file) == 0);
@@ -589,7 +589,6 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
}
if (success == 0) {
read_file_from_memory = true;
success = BKE_read_file_from_memory(C, datatoc_startup_blend, datatoc_startup_blend_size, NULL, true);
if (wmbase.first == NULL) wm_clear_default_size(C);
BLI_init_temporary_dir(U.tempdir);
@@ -604,7 +603,10 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
/* check new prefs only after startup.blend was finished */
if (!from_memory && BLI_exists(prefstr)) {
int done = BKE_read_file_userdef(prefstr, NULL);
if (done) printf("Read new prefs: %s\n", prefstr);
if (done) {
read_userdef_from_memory = false;
printf("Read new prefs: %s\n", prefstr);
}
}
/* prevent buggy files that had G_FILE_RELATIVE_REMAP written out by mistake. Screws up autosaves otherwise
@@ -612,7 +614,7 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
G.fileflags &= ~G_FILE_RELATIVE_REMAP;
/* check userdef before open window, keymaps etc */
wm_init_userdef(C, read_file_from_memory);
wm_init_userdef(C, read_userdef_from_memory);
/* match the read WM with current WM */
wm_window_match_do(C, &wmbase);