summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElvis Lee <kwangwoong.lee@lge.com>2017-04-26 12:29:24 +0900
committerDominik Holland <dominik.holland@qt.io>2020-06-11 09:10:01 +0200
commitab6fd84c62ff4a72696798dcf6598dd6a44389f6 (patch)
tree07a11e3be0eeaaccf3b404238fd3bd1405779feb
parentc549ff3fd4e0ae770e6728f541db2a257d4eabd8 (diff)
Make it possible to avoid loading comments from JPEG and PNG files
Skip reading JPEG and PNG comments information from the header to save the memory. This can now be configured through the feature system. Change-Id: I3744312f69aa3201d5188776cbd99fe690b75d32 Task-number: QTBUG-83123 Pick-to: 5.15 Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
-rw-r--r--src/gui/configure.cmake4
-rw-r--r--src/gui/configure.json7
-rw-r--r--src/gui/image/qpnghandler.cpp4
-rw-r--r--src/plugins/imageformats/jpeg/qjpeghandler.cpp2
4 files changed, 17 insertions, 0 deletions
diff --git a/src/gui/configure.cmake b/src/gui/configure.cmake
index 9ee5089f49..51acfaf6f3 100644
--- a/src/gui/configure.cmake
+++ b/src/gui/configure.cmake
@@ -812,6 +812,10 @@ qt_feature("system-png" PRIVATE
ENABLE INPUT_libpng STREQUAL 'system'
DISABLE INPUT_libpng STREQUAL 'qt'
)
+qt_feature("imageio-text-loading" PRIVATE
+ LABEL "Image Text section loading"
+)
+qt_feature_definition("imageio-text-loading" "QT_NO_IMAGEIO_TEXT_LOADING" NEGATE)
qt_feature("sessionmanager" PUBLIC
SECTION "Kernel"
LABEL "Session Management"
diff --git a/src/gui/configure.json b/src/gui/configure.json
index 377865679d..af513346a2 100644
--- a/src/gui/configure.json
+++ b/src/gui/configure.json
@@ -1366,6 +1366,13 @@
"condition": "features.png && libs.libpng",
"output": [ "privateFeature" ]
},
+ "imageio-text-loading": {
+ "label": "Image Text section loading",
+ "output": [
+ "privateFeature",
+ { "type": "define", "negative": true, "name": "QT_NO_IMAGEIO_TEXT_LOADING" }
+ ]
+ },
"qpa_default_platform": {
"label": "QPA default platform",
"condition": "features.gui",
diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp
index f66ab2778a..e49c795792 100644
--- a/src/gui/image/qpnghandler.cpp
+++ b/src/gui/image/qpnghandler.cpp
@@ -530,6 +530,7 @@ static void qt_png_warning(png_structp /*png_ptr*/, png_const_charp message)
void QPngHandlerPrivate::readPngTexts(png_info *info)
{
+#ifndef QT_NO_IMAGEIO_TEXT_LOADING
png_textp text_ptr;
int num_text=0;
png_get_text(png_ptr, info, &text_ptr, &num_text);
@@ -552,6 +553,9 @@ void QPngHandlerPrivate::readPngTexts(png_info *info)
readTexts.append(value);
text_ptr++;
}
+#else
+ Q_UNUSED(info)
+#endif
}
diff --git a/src/plugins/imageformats/jpeg/qjpeghandler.cpp b/src/plugins/imageformats/jpeg/qjpeghandler.cpp
index fed585a82e..25b0c625fd 100644
--- a/src/plugins/imageformats/jpeg/qjpeghandler.cpp
+++ b/src/plugins/imageformats/jpeg/qjpeghandler.cpp
@@ -956,6 +956,7 @@ bool QJpegHandlerPrivate::readJpegHeader(QIODevice *device)
for (jpeg_saved_marker_ptr marker = info.marker_list; marker != nullptr; marker = marker->next) {
if (marker->marker == JPEG_COM) {
+#ifndef QT_NO_IMAGEIO_TEXT_LOADING
QString key, value;
QString s = QString::fromUtf8((const char *)marker->data, marker->data_length);
int index = s.indexOf(QLatin1String(": "));
@@ -971,6 +972,7 @@ bool QJpegHandlerPrivate::readJpegHeader(QIODevice *device)
description += key + QLatin1String(": ") + value.simplified();
readTexts.append(key);
readTexts.append(value);
+#endif
} else if (marker->marker == JPEG_APP0 + 1) {
exifData.append((const char*)marker->data, marker->data_length);
} else if (marker->marker == JPEG_APP0 + 2) {