diff --git a/map/booking_filter_availability_params.hpp b/map/booking_filter_availability_params.hpp index 6624d6a21c..2ea63423e2 100644 --- a/map/booking_filter_availability_params.hpp +++ b/map/booking_filter_availability_params.hpp @@ -4,6 +4,10 @@ #include "platform/safe_callback.hpp" +#include "indexer/feature_decl.hpp" + +#include + namespace search { class Results; @@ -15,7 +19,8 @@ namespace filter { namespace availability { -using Results = platform::SafeCallback; +using Results = platform::SafeCallback const & featuresSorted)>; struct Params { diff --git a/map/framework.cpp b/map/framework.cpp index bea9e6bc90..648a72cd12 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -3347,32 +3347,33 @@ void Framework::FilterSearchResultsOnBooking(booking::filter::availability::Para { using namespace booking::filter; + auto const & p = params.m_params; auto const & cb = params.m_callback; availability::internal::Params paramsInternal { - params.m_params, - [this, cb, inViewport](search::Results const & results) + p, + [this, p, cb, inViewport](search::Results const & results) { if (results.GetCount() == 0) return; + std::vector features; + for (auto const & r : results) + { + features.push_back(r.GetFeatureID()); + } + + std::sort(features.begin(), features.end()); + if (inViewport) { - std::vector features; - for (auto const & r : results) - { - features.push_back(r.GetFeatureID()); - } - - std::sort(features.begin(), features.end()); - GetPlatform().RunTask(Platform::Thread::Gui, [this, features]() { m_searchMarks.SetPreparingState(features, false /* isPreparing */); }); } - cb(results); + cb(p, features); } };