diff options
author | Harley Acheson <harley.acheson@gmail.com> | 2022-03-30 21:10:15 +0300 |
---|---|---|
committer | Harley Acheson <harley.acheson@gmail.com> | 2022-03-30 21:10:15 +0300 |
commit | 84fde382e43cff6407bfa3587fec9bd570cf9123 (patch) | |
tree | 38268f41c0298af7200ab45daa6fc96a5648d032 /source | |
parent | 49bc640b76c77a19e523cd1843585a0c6b21e82f (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
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/include/ED_fileselect.h | 2 | ||||
-rw-r--r-- | source/blender/editors/space_file/fsmenu.c | 14 |
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); } } |