From e7064976a66d5cd014bb39db559baa41ad78859d Mon Sep 17 00:00:00 2001 From: "r.kuznetsov" Date: Thu, 7 Apr 2016 15:34:54 +0300 Subject: [PATCH] [iOS] Fixed freeze on start --- drape_frontend/backend_renderer.cpp | 7 +++---- drape_frontend/backend_renderer.hpp | 2 +- drape_frontend/drape_engine.cpp | 12 ++---------- drape_frontend/drape_engine.hpp | 2 -- drape_frontend/gui/layer_render.cpp | 6 ++---- drape_frontend/gui/layer_render.hpp | 1 - drape_frontend/message_subclasses.hpp | 11 +++-------- iphone/Maps/Platform/opengl/iosOGLContextFactory.mm | 2 +- map/framework.cpp | 6 ------ map/framework.hpp | 1 - 10 files changed, 12 insertions(+), 38 deletions(-) diff --git a/drape_frontend/backend_renderer.cpp b/drape_frontend/backend_renderer.cpp index 170452642c..b7da93ae90 100644 --- a/drape_frontend/backend_renderer.cpp +++ b/drape_frontend/backend_renderer.cpp @@ -69,10 +69,9 @@ unique_ptr BackendRenderer::CreateRoutine() return make_unique(*this); } -void BackendRenderer::RecacheGui(gui::TWidgetsInitInfo const & initInfo, gui::TWidgetsSizeInfo & sizeInfo, - bool needResetOldGui) +void BackendRenderer::RecacheGui(gui::TWidgetsInitInfo const & initInfo, bool needResetOldGui) { - drape_ptr layerRenderer = m_guiCacher.RecacheWidgets(initInfo, sizeInfo, m_texMng); + drape_ptr layerRenderer = m_guiCacher.RecacheWidgets(initInfo, m_texMng); drape_ptr outputMsg = make_unique_dp(move(layerRenderer), needResetOldGui); m_commutator->PostMessage(ThreadsCommutator::RenderThread, move(outputMsg), MessagePriority::Normal); } @@ -117,7 +116,7 @@ void BackendRenderer::AcceptMessage(ref_ptr message) case Message::GuiRecache: { ref_ptr msg = message; - RecacheGui(msg->GetInitInfo(), msg->GetSizeInfoMap(), msg->NeedResetOldGui()); + RecacheGui(msg->GetInitInfo(), msg->NeedResetOldGui()); break; } case Message::GuiLayerLayout: diff --git a/drape_frontend/backend_renderer.hpp b/drape_frontend/backend_renderer.hpp index 55997a49cb..bd46af90cd 100644 --- a/drape_frontend/backend_renderer.hpp +++ b/drape_frontend/backend_renderer.hpp @@ -59,7 +59,7 @@ protected: unique_ptr CreateRoutine() override; private: - void RecacheGui(gui::TWidgetsInitInfo const & initInfo, gui::TWidgetsSizeInfo & sizeInfo, bool needResetOldGui); + void RecacheGui(gui::TWidgetsInitInfo const & initInfo, bool needResetOldGui); void RecacheChoosePositionMark(); void RecacheMyPosition(); diff --git a/drape_frontend/drape_engine.cpp b/drape_frontend/drape_engine.cpp index f5ba8c5821..d1aa53a883 100644 --- a/drape_frontend/drape_engine.cpp +++ b/drape_frontend/drape_engine.cpp @@ -189,18 +189,15 @@ void DrapeEngine::UpdateMapStyle() m_threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread, make_unique_dp(m_widgetsLayout), - MessagePriority::High); + MessagePriority::Normal); } } void DrapeEngine::RecacheGui(bool needResetOldGui) { - GuiRecacheMessage::Blocker blocker; m_threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread, - make_unique_dp(blocker, m_widgetsInfo, - m_widgetSizes, needResetOldGui), + make_unique_dp(m_widgetsInfo, needResetOldGui), MessagePriority::High); - blocker.Wait(); } void DrapeEngine::AddUserEvent(UserEvent const & e) @@ -407,11 +404,6 @@ void DrapeEngine::SetWidgetLayout(gui::TWidgetsLayoutInfo && info) MessagePriority::Normal); } -gui::TWidgetsSizeInfo const & DrapeEngine::GetWidgetSizes() -{ - return m_widgetSizes; -} - void DrapeEngine::Allow3dMode(bool allowPerspectiveInNavigation, bool allow3dBuildings, double rotationAngle, double angleFOV) { m_threadCommutator->PostMessage(ThreadsCommutator::ResourceUploadThread, diff --git a/drape_frontend/drape_engine.hpp b/drape_frontend/drape_engine.hpp index d63ec55e7b..5ae6e3a9f5 100644 --- a/drape_frontend/drape_engine.hpp +++ b/drape_frontend/drape_engine.hpp @@ -120,7 +120,6 @@ public: void SetRoutePoint(m2::PointD const & position, bool isStart, bool isValid); void SetWidgetLayout(gui::TWidgetsLayoutInfo && info); - gui::TWidgetsSizeInfo const & GetWidgetSizes(); void Allow3dMode(bool allowPerspectiveInNavigation, bool allow3dBuildings, double rotationAngle, double angleFOV); void EnablePerspective(double rotationAngle, double angleFOV); @@ -162,7 +161,6 @@ private: TUserPositionChangedFn m_userPositionChangedFn; gui::TWidgetsInitInfo m_widgetsInfo; - gui::TWidgetsSizeInfo m_widgetSizes; gui::TWidgetsLayoutInfo m_widgetsLayout; bool m_choosePositionMode = false; diff --git a/drape_frontend/gui/layer_render.cpp b/drape_frontend/gui/layer_render.cpp index 3effb837fe..8ec711ab78 100644 --- a/drape_frontend/gui/layer_render.cpp +++ b/drape_frontend/gui/layer_render.cpp @@ -165,9 +165,7 @@ private: } // namespace -drape_ptr LayerCacher::RecacheWidgets(TWidgetsInitInfo const & initInfo, - TWidgetsSizeInfo & sizeInfo, - ref_ptr textures) +drape_ptr LayerCacher::RecacheWidgets(TWidgetsInitInfo const & initInfo, ref_ptr textures) { using TCacheShape = function renderer, ref_ptr textures)>; static map cacheFunctions @@ -183,7 +181,7 @@ drape_ptr LayerCacher::RecacheWidgets(TWidgetsInitInfo const & in { auto cacheFunction = cacheFunctions.find(node.first); if (cacheFunction != cacheFunctions.end()) - sizeInfo[node.first] = cacheFunction->second(node.second, make_ref(renderer), textures); + cacheFunction->second(node.second, make_ref(renderer), textures); } // Flush gui geometry. diff --git a/drape_frontend/gui/layer_render.hpp b/drape_frontend/gui/layer_render.hpp index 6d2fcc3dd8..dd8f63e444 100644 --- a/drape_frontend/gui/layer_render.hpp +++ b/drape_frontend/gui/layer_render.hpp @@ -53,7 +53,6 @@ class LayerCacher { public: drape_ptr RecacheWidgets(TWidgetsInitInfo const & initInfo, - TWidgetsSizeInfo & sizeInfo, ref_ptr textures); drape_ptr RecacheChoosePositionMark(ref_ptr textures); diff --git a/drape_frontend/message_subclasses.hpp b/drape_frontend/message_subclasses.hpp index cdd04dcc7c..b7753c32bd 100644 --- a/drape_frontend/message_subclasses.hpp +++ b/drape_frontend/message_subclasses.hpp @@ -273,26 +273,21 @@ private: bool const m_needResetOldGui; }; -class GuiRecacheMessage : public BaseBlockingMessage +class GuiRecacheMessage : public Message { public: - GuiRecacheMessage(Blocker & blocker, gui::TWidgetsInitInfo const & initInfo, gui::TWidgetsSizeInfo & resultInfo, - bool needResetOldGui) - : BaseBlockingMessage(blocker) - , m_initInfo(initInfo) - , m_sizeInfo(resultInfo) + GuiRecacheMessage(gui::TWidgetsInitInfo const & initInfo, bool needResetOldGui) + : m_initInfo(initInfo) , m_needResetOldGui(needResetOldGui) {} Type GetType() const override { return Message::GuiRecache;} gui::TWidgetsInitInfo const & GetInitInfo() const { return m_initInfo; } - gui::TWidgetsSizeInfo & GetSizeInfoMap() const { return m_sizeInfo; } bool NeedResetOldGui() const { return m_needResetOldGui; } private: gui::TWidgetsInitInfo m_initInfo; - gui::TWidgetsSizeInfo & m_sizeInfo; bool const m_needResetOldGui; }; diff --git a/iphone/Maps/Platform/opengl/iosOGLContextFactory.mm b/iphone/Maps/Platform/opengl/iosOGLContextFactory.mm index b4f07887ae..23f8cb4a2a 100644 --- a/iphone/Maps/Platform/opengl/iosOGLContextFactory.mm +++ b/iphone/Maps/Platform/opengl/iosOGLContextFactory.mm @@ -44,7 +44,7 @@ void iosOGLContextFactory::setPresentAvailable(bool available) if (!m_isInitialized && available) { m_isInitialized = true; - m_initializationCondition.notify_one(); + m_initializationCondition.notify_all(); } } if (m_drawContext != nullptr) diff --git a/map/framework.cpp b/map/framework.cpp index 37880ef933..1c618cd827 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -1623,12 +1623,6 @@ void Framework::SetWidgetLayout(gui::TWidgetsLayoutInfo && layout) m_drapeEngine->SetWidgetLayout(move(layout)); } -gui::TWidgetsSizeInfo const & Framework::GetWidgetSizes() -{ - ASSERT(m_drapeEngine != nullptr, ()); - return m_drapeEngine->GetWidgetSizes(); -} - bool Framework::ShowMapForURL(string const & url) { m2::PointD point; diff --git a/map/framework.hpp b/map/framework.hpp index dcfb28e6c7..f7493dd473 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -354,7 +354,6 @@ public: void SetupMeasurementSystem(); void SetWidgetLayout(gui::TWidgetsLayoutInfo && layout); - const gui::TWidgetsSizeInfo & GetWidgetSizes(); void PrepareToShutdown();