diff options
-rw-r--r-- | src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.cpp | 30 | ||||
-rw-r--r-- | src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.h | 2 |
2 files changed, 24 insertions, 8 deletions
diff --git a/src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.cpp b/src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.cpp index 6a0fdff..7adba7b 100644 --- a/src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.cpp +++ b/src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.cpp @@ -178,7 +178,7 @@ static bool existingImageFileForPath(const QString &localFile, bool relative, bo // Return resolved image path for unresolved source path. // Handle preferKtx, search paths, empty suffixes, schemas etc. -QString IBufferManager::resolveImagePath(const QString &sourcePath, bool preferKtx) +QString IBufferManager::resolveImagePathInternal(const QString &sourcePath, bool preferKtx) { QString path = sourcePath; QUrl urlPath(path); @@ -197,10 +197,9 @@ QString IBufferManager::resolveImagePath(const QString &sourcePath, bool preferK // Find an image file corresponding to only filename without suffix if (!hasSuffix) { QString outPath; - if (!existingImageFileForPath(path, relative, preferKtx, outPath)) { - qCWarning(WARNING, "Failed to resolve path %s", qPrintable(sourcePath)); + if (!existingImageFileForPath(path, relative, preferKtx, outPath)) return {}; - } + return outPath; } @@ -216,16 +215,31 @@ QString IBufferManager::resolveImagePath(const QString &sourcePath, bool preferK } if (checkFileExists(ktxSource, relative, result)) return result; - if (originalIsKtx) { - qCWarning(WARNING, "Failed to resolve path %s", qPrintable(sourcePath)); + if (originalIsKtx) return {}; - } } if (checkFileExists(path, relative, result)) return result; - qCWarning(WARNING, "Failed to resolve path %s", qPrintable(sourcePath)); + return {}; +} + +static QStringList s_failedPaths = {}; + +QString IBufferManager::resolveImagePath(const QString &sourcePath, bool preferKtx) +{ + if (sourcePath.isEmpty()) + return {}; + + if (!s_failedPaths.contains(sourcePath)) { + QString path = resolveImagePathInternal(sourcePath, preferKtx); + if (!path.isEmpty()) + return path; + + qCWarning(WARNING, "Failed to resolve path %s", qPrintable(sourcePath)); + s_failedPaths.append(sourcePath); + } return {}; } diff --git a/src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.h b/src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.h index 159e02b..922e502 100644 --- a/src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.h +++ b/src/runtimerender/resourcemanager/Qt3DSRenderBufferManager.h @@ -129,6 +129,8 @@ namespace render { static IBufferManager &Create(NVRenderContext &inRenderContext, IStringTable &inStrTable, IInputStreamFactory &inInputStreamFactory, IPerfTimer &inTimer); + private: + static QString resolveImagePathInternal(const QString &sourcePath, bool preferKtx); }; } } |