void Engine::DoSearch(SearchParams const & params, m2::RectD const & viewport, shared_ptr<ProcessorHandle> handle, Processor & processor) { bool const viewportSearch = params.m_mode == Mode::Viewport; processor.Reset(); processor.Init(viewportSearch); handle->Attach(processor); MY_SCOPE_GUARD(detach, [&handle] { handle->Detach(); }); // Early exit when query processing is cancelled. if (processor.IsCancelled()) { Results results; results.SetEndMarker(true /* isCancelled */); params.m_onResults(results); return; } processor.Search(params, viewport); }