@@ -428,22 +428,23 @@ void VideoDriverWrapper::SetMousePos(const Position& newPos)
428428 videodriver->SetMousePos (newPos);
429429}
430430
431- std::vector <VideoMode> VideoDriverWrapper::ListVideoModes () const
431+ std::set <VideoMode> VideoDriverWrapper::ListVideoModes () const
432432{
433433 if (!videodriver)
434434 return {};
435435
436- auto videoModes = videodriver->ListVideoModes ();
437- // Remove everything below 800x600
438- helpers::erase_if (videoModes,
439- [](const auto & m) { return m.width < MinWindowSize.width && m.height < MinWindowSize.height ; });
440- return videoModes;
436+ const auto videoModes = videodriver->ListVideoModes ();
437+ std::set<VideoMode> result;
438+ // Keep only modes larger than the minimum
439+ std::copy_if (videoModes.begin (), videoModes.end (), std::inserter (result, result.end ()),
440+ [](const auto & m) { return m.width >= MinWindowSize.width || m.height >= MinWindowSize.height ; });
441+ return result;
441442}
442443
443- std::vector <VideoMode> VideoDriverWrapper::GetDefaultWindowSizes () const
444+ std::set <VideoMode> VideoDriverWrapper::GetDefaultWindowSizes () const
444445{
445446 // clang-format off
446- std::vector<VideoMode> defaultWindowSizes = {
447+ std::array defaultWindowSizes = {
447448 VideoMode (800 , 600 ),
448449 VideoMode (1024 , 768 ),
449450 VideoMode (1152 , 648 ),
@@ -456,9 +457,8 @@ std::vector<VideoMode> VideoDriverWrapper::GetDefaultWindowSizes() const
456457 VideoMode (1920 , 1080 )
457458 };
458459 // clang-format on
459- std::vector<VideoMode> windowSizes = ListVideoModes ();
460- windowSizes.insert (windowSizes.end (), defaultWindowSizes.begin (), defaultWindowSizes.end ());
461- helpers::makeUnique (windowSizes);
460+ std::set<VideoMode> windowSizes = ListVideoModes ();
461+ windowSizes.insert (defaultWindowSizes.begin (), defaultWindowSizes.end ());
462462 return windowSizes;
463463}
464464
0 commit comments