diff options
Diffstat (limited to 'src/plugins/winrt/qwinrtimageencodercontrol.cpp')
-rw-r--r-- | src/plugins/winrt/qwinrtimageencodercontrol.cpp | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/plugins/winrt/qwinrtimageencodercontrol.cpp b/src/plugins/winrt/qwinrtimageencodercontrol.cpp index 0ab7a7cfb..6260a1d66 100644 --- a/src/plugins/winrt/qwinrtimageencodercontrol.cpp +++ b/src/plugins/winrt/qwinrtimageencodercontrol.cpp @@ -99,23 +99,23 @@ void QWinRTImageEncoderControl::setSupportedResolutionsList(const QList<QSize> r void QWinRTImageEncoderControl::applySettings() { Q_D(QWinRTImageEncoderControl); - d->imageEncoderSetting.setCodec(QStringLiteral("jpeg")); + if (d->imageEncoderSetting.codec().isEmpty()) + d->imageEncoderSetting.setCodec(QStringLiteral("jpeg")); QSize requestResolution = d->imageEncoderSetting.resolution(); if (d->supportedResolutions.isEmpty() || d->supportedResolutions.contains(requestResolution)) return; - if (!requestResolution.isValid()) - requestResolution = QSize(0, 0);// Find the minimal available resolution - // Find closest resolution from the list const int pixelCount = requestResolution.width() * requestResolution.height(); - int minPixelCountGap = -1; - for (int i = 0; i < d->supportedResolutions.size(); ++i) { - int gap = qAbs(pixelCount - d->supportedResolutions.at(i).width() * d->supportedResolutions.at(i).height()); - if (gap < minPixelCountGap || minPixelCountGap < 0) { - minPixelCountGap = gap; - requestResolution = d->supportedResolutions.at(i); + int minimumGap = std::numeric_limits<int>::max(); + foreach (const QSize &size, d->supportedResolutions) { + int gap = qAbs(pixelCount - size.width() * size.height()); + if (gap < minimumGap) { + minimumGap = gap; + requestResolution = size; + if (gap == 0) + break; } } d->imageEncoderSetting.setResolution(requestResolution); |