From 07da2e506a94bd71c51a6003793c549e1ee088c9 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sun, 4 Aug 2019 15:55:42 +0200 Subject: [PATCH] Fix deadlock problems. --- server/TracyView.cpp | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index 7ad4b900..42c5fe9f 100644 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -458,15 +458,28 @@ bool View::DrawImpl() ImGui::Begin( tmp, keepOpenPtr, ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoBringToFrontOnFocus ); #endif - std::shared_lock lock( m_worker.GetDataLock() ); + if( !m_staticView ) + { #if defined TRACY_EXTENDED_FONT - const char* buttonTitle = ICON_FA_WIFI; + if( ImGui::Button( ICON_FA_WIFI ) ) #else - const char* buttonTitle = "Connection"; + if( ImGui::Button( "Connection" ) ) #endif - if ( ImGui::Button( buttonTitle ) ) - ImGui::OpenPopup( "TracyConnectionPopup" ); - ImGui::SameLine(); + { + ImGui::OpenPopup( "TracyConnectionPopup" ); + } + ImGui::SameLine(); + if( ImGui::BeginPopup( "TracyConnectionPopup" ) ) + { + const bool wasDisconnectIssued = m_disconnectIssued; + const bool discardData = !DrawConnection(); + const bool disconnectIssuedJustNow = m_disconnectIssued != wasDisconnectIssued; + if( discardData ) keepOpen = false; + if( disconnectIssuedJustNow || discardData ) ImGui::CloseCurrentPopup(); + ImGui::EndPopup(); + } + } + std::shared_lock lock( m_worker.GetDataLock() ); if( !m_worker.IsDataStatic() ) { if( m_worker.IsConnected() ) @@ -683,18 +696,6 @@ bool View::DrawImpl() DrawFrames(); DrawZones(); - if( ImGui::BeginPopup( "TracyConnectionPopup" ) ) - { - bool wasDisconnectIssued = m_disconnectIssued; - bool discardData = !DrawConnection(); - bool disconnectIssuedJustNow = m_disconnectIssued != wasDisconnectIssued; - if( discardData ) - keepOpen = false; - if( disconnectIssuedJustNow || discardData ) - ImGui::CloseCurrentPopup(); - ImGui::EndPopup(); - } - ImGui::End(); m_zoneHighlight = nullptr;