@@ -214,10 +214,20 @@ FileResolver::_CreateDefaultContextForAsset(
214214 if (!TfPathExists (resolvedPath)){
215215 return ArResolverContext (_fallbackContext);
216216 }
217- std::string resolvedPathStr = resolvedPath.GetPathString ();
218- if (this ->_GetCurrentContextObject <FileResolverContext>() != nullptr ){
219- TF_DEBUG (FILERESOLVER_RESOLVER_CONTEXT ).Msg (" Resolver::_CreateDefaultContextForAsset('%s') - Skipping on same stage\n " , assetPath.c_str ());
220- return ArResolverContext (_fallbackContext);
217+ if (this ->_GetCurrentContextPtr () != nullptr )
218+ {
219+ if (TfDebug::IsEnabled (FILERESOLVER_RESOLVER_CONTEXT ))
220+ {
221+ if (this ->_GetCurrentContextPtr () == &_fallbackContext)
222+ {
223+ TF_DEBUG (FILERESOLVER_RESOLVER_CONTEXT ).Msg (" Resolver::_CreateDefaultContextForAsset('%s') - Reusing already bound default context on same stage\n " , assetPath.c_str ());
224+ }
225+ else
226+ {
227+ TF_DEBUG (FILERESOLVER_RESOLVER_CONTEXT ).Msg (" Resolver::_CreateDefaultContextForAsset('%s') - Reusing already bound context CachedResolverContext('%s') on same stage\n " , assetPath.c_str (), this ->_GetCurrentContextPtr ()->GetMappingFilePath ().c_str ());
228+ }
229+ }
230+ return ArResolverContext (*this ->_GetCurrentContextPtr ());
221231 }
222232 auto map_iter = _sharedContexts.find (resolvedPath);
223233 if (map_iter != _sharedContexts.end ()){
@@ -233,10 +243,12 @@ FileResolver::_CreateDefaultContextForAsset(
233243 }
234244 // Create new context
235245 TF_DEBUG (FILERESOLVER_RESOLVER_CONTEXT ).Msg (" Resolver::_CreateDefaultContextForAsset('%s') - Constructing new context\n " , assetPath.c_str ());
246+ std::string resolvedPathStr = resolvedPath.GetPathString ();
236247 std::string assetDir = TfGetPathName (TfAbsPath (resolvedPathStr));
237- struct FileResolverContextRecord record;
238- record.timestamp = this ->_GetModificationTimestamp (assetPath, resolvedPath);
239- record.ctx = FileResolverContext (resolvedPath, std::vector<std::string>(1 , assetDir));
248+ struct FileResolverContextRecord record
249+ {
250+ this ->_GetModificationTimestamp (assetPath, resolvedPath), FileResolverContext(resolvedPath, std::vector<std::string>(1 , assetDir))
251+ };
240252 _sharedContexts.insert(std::pair<std::string, FileResolverContextRecord>(resolvedPath, record));
241253 return ArResolverContext(record.ctx);
242254}
0 commit comments