From 5324e768c31643fa1741bf94105c4604be482a7c Mon Sep 17 00:00:00 2001 From: initramfs Date: Fri, 5 Aug 2016 01:15:08 +0800 Subject: [PATCH] fix(avform): add missing "first" video mode back to video modes This commit fixes the fact that the selectBestModes() function strips off the first video mode, often a 1080p or 720p mode. Fixes #3588. --- src/widget/form/settings/avform.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/widget/form/settings/avform.cpp b/src/widget/form/settings/avform.cpp index cd3b75a4d..bbc433622 100644 --- a/src/widget/form/settings/avform.cpp +++ b/src/widget/form/settings/avform.cpp @@ -247,12 +247,22 @@ void AVForm::selectBestModes(QVector &allVideoModes) for (auto it = bestModeInds.rbegin(); it != bestModeInds.rend(); ++it) { VideoMode mode = allVideoModes[it->second]; - int size = getModeSize(mode); - auto result = std::find_if(newVideoModes.cbegin(), newVideoModes.cend(), - [size](VideoMode mode) { return getModeSize(mode) == size; }); - if (result == newVideoModes.end()) + if(newVideoModes.empty()) + { newVideoModes.push_back(mode); + } + else + { + int size = getModeSize(mode); + auto result = std::find_if(newVideoModes.cbegin(), newVideoModes.cend(), + [size](VideoMode mode) { return getModeSize(mode) == size; }); + + if(result == newVideoModes.end()) + { + newVideoModes.push_back(mode); + } + } } allVideoModes = newVideoModes; }