From 84fde382e43cff6407bfa3587fec9bd570cf9123 Mon Sep 17 00:00:00 2001 From: Harley Acheson Date: Wed, 30 Mar 2022 11:10:15 -0700 Subject: 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 --- source/blender/editors/include/ED_fileselect.h | 2 ++ 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); } } -- cgit v1.2.3