diff options
Diffstat (limited to 'src/gui/image/qimagereaderwriterhelpers.cpp')
-rw-r--r-- | src/gui/image/qimagereaderwriterhelpers.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/gui/image/qimagereaderwriterhelpers.cpp b/src/gui/image/qimagereaderwriterhelpers.cpp index 0500df790b..502b0f95f0 100644 --- a/src/gui/image/qimagereaderwriterhelpers.cpp +++ b/src/gui/image/qimagereaderwriterhelpers.cpp @@ -15,9 +15,9 @@ namespace QImageReaderWriterHelpers { #ifndef QT_NO_IMAGEFORMATPLUGIN -Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, +Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, irhLoader, (QImageIOHandlerFactoryInterface_iid, "/imageformats"_L1)) -Q_GLOBAL_STATIC(QMutex, loaderMutex) +Q_GLOBAL_STATIC(QMutex, irhLoaderMutex) static void appendImagePluginFormats(QFactoryLoader *loader, QImageIOPlugin::Capability cap, @@ -68,9 +68,9 @@ static void appendImagePluginMimeTypes(QFactoryLoader *loader, QSharedPointer<QFactoryLoader> pluginLoader() { - loaderMutex()->lock(); - return QSharedPointer<QFactoryLoader>(loader(), [](QFactoryLoader *) { - loaderMutex()->unlock(); + irhLoaderMutex()->lock(); + return QSharedPointer<QFactoryLoader>(irhLoader(), [](QFactoryLoader *) { + irhLoaderMutex()->unlock(); }); } @@ -89,7 +89,7 @@ QList<QByteArray> supportedImageFormats(Capability cap) formats << _qt_BuiltInFormats[i].extension; #ifndef QT_NO_IMAGEFORMATPLUGIN - appendImagePluginFormats(loader(), pluginCapability(cap), &formats); + appendImagePluginFormats(irhLoader(), pluginCapability(cap), &formats); #endif // QT_NO_IMAGEFORMATPLUGIN std::sort(formats.begin(), formats.end()); @@ -97,15 +97,17 @@ QList<QByteArray> supportedImageFormats(Capability cap) return formats; } +static constexpr QByteArrayView imagePrefix() noexcept { return "image/"; } + QList<QByteArray> supportedMimeTypes(Capability cap) { QList<QByteArray> mimeTypes; mimeTypes.reserve(_qt_NumFormats); for (const auto &fmt : _qt_BuiltInFormats) - mimeTypes.append(QByteArrayLiteral("image/") + fmt.mimeType); + mimeTypes.emplace_back(imagePrefix() + fmt.mimeType); #ifndef QT_NO_IMAGEFORMATPLUGIN - appendImagePluginMimeTypes(loader(), pluginCapability(cap), &mimeTypes); + appendImagePluginMimeTypes(irhLoader(), pluginCapability(cap), &mimeTypes); #endif // QT_NO_IMAGEFORMATPLUGIN std::sort(mimeTypes.begin(), mimeTypes.end()); @@ -113,11 +115,11 @@ QList<QByteArray> supportedMimeTypes(Capability cap) return mimeTypes; } -QList<QByteArray> imageFormatsForMimeType(const QByteArray &mimeType, Capability cap) +QList<QByteArray> imageFormatsForMimeType(QByteArrayView mimeType, Capability cap) { QList<QByteArray> formats; - if (mimeType.startsWith("image/")) { - const QByteArray type = mimeType.mid(sizeof("image/") - 1); + if (mimeType.startsWith(imagePrefix())) { + const QByteArrayView type = mimeType.mid(imagePrefix().size()); for (const auto &fmt : _qt_BuiltInFormats) { if (fmt.mimeType == type && !formats.contains(fmt.extension)) formats << fmt.extension; @@ -127,7 +129,7 @@ QList<QByteArray> imageFormatsForMimeType(const QByteArray &mimeType, Capability #ifndef QT_NO_IMAGEFORMATPLUGIN QList<QByteArray> mimeTypes; QList<QByteArray> keys; - appendImagePluginMimeTypes(loader(), pluginCapability(cap), &mimeTypes, &keys); + appendImagePluginMimeTypes(irhLoader(), pluginCapability(cap), &mimeTypes, &keys); for (int i = 0; i < mimeTypes.size(); ++i) { if (mimeTypes.at(i) == mimeType) { const auto &key = keys.at(i); |