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:
authorHarley Acheson <harley.acheson@gmail.com>2022-03-30 21:10:15 +0300
committerHarley Acheson <harley.acheson@gmail.com>2022-03-30 21:10:15 +0300
commit84fde382e43cff6407bfa3587fec9bd570cf9123 (patch)
tree38268f41c0298af7200ab45daa6fc96a5648d032
parent49bc640b76c77a19e523cd1843585a0c6b21e82f (diff)
Fix T85689: Assume Win32 Volumes are Valid
Skip validation when inserting items into the Win32 "Volumes" list. This fixes some long hangs when launching Blender with disconnected network shares. See D14506 for more details. Differential Revision: https://developer.blender.org/D14506 Reviewed by Brecht Van Lommel
-rw-r--r--source/blender/editors/include/ED_fileselect.h2
-rw-r--r--source/blender/editors/space_file/fsmenu.c14
2 files changed, 14 insertions, 2 deletions
diff --git a/source/blender/editors/include/ED_fileselect.h b/source/blender/editors/include/ED_fileselect.h
index 6a207a6e453..c367072e6e7 100644
--- a/source/blender/editors/include/ED_fileselect.h
+++ b/source/blender/editors/include/ED_fileselect.h
@@ -216,6 +216,8 @@ typedef enum FSMenuInsert {
FS_INSERT_FIRST = (1 << 2),
/** just append to preserve delivered order */
FS_INSERT_LAST = (1 << 3),
+ /** Do not validate the link when inserted. */
+ FS_INSERT_NO_VALIDATE = (1 << 4),
} FSMenuInsert;
struct FSMenu;
diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c
index ae0e5b23d55..65354591034 100644
--- a/source/blender/editors/space_file/fsmenu.c
+++ b/source/blender/editors/space_file/fsmenu.c
@@ -463,7 +463,12 @@ void fsmenu_insert_entry(struct FSMenu *fsmenu,
ED_fsmenu_entry_set_icon(fsm_iter, icon);
- fsmenu_entry_refresh_valid(fsm_iter);
+ if (flag & FS_INSERT_NO_VALIDATE) {
+ fsm_iter->valid = true;
+ }
+ else {
+ fsmenu_entry_refresh_valid(fsm_iter);
+ }
if (fsm_prev) {
if (flag & FS_INSERT_FIRST) {
@@ -689,7 +694,12 @@ void fsmenu_read_system(struct FSMenu *fsmenu, int read_bookmarks)
break;
}
- fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, tmps, name, icon, FS_INSERT_SORTED);
+ fsmenu_insert_entry(fsmenu,
+ FS_CATEGORY_SYSTEM,
+ tmps,
+ name,
+ icon,
+ FS_INSERT_SORTED | FS_INSERT_NO_VALIDATE);
}
}