From f2eba1909d5d02553c1f6b456a424b384f110fdf Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Fri, 22 Oct 2021 16:09:41 +0300 Subject: SL-16234 FIXED Frame stall caused by unnecessary building the floater when exiting viewer --- indra/newview/llfloaterimcontainer.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'indra/newview/llfloaterimcontainer.cpp') diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 9c84fa1991..2ccb9ab074 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -723,7 +723,13 @@ void LLFloaterIMContainer::setMinimized(BOOL b) } void LLFloaterIMContainer::setVisible(BOOL visible) -{ LLFloaterIMNearbyChat* nearby_chat; +{ + if (LLFloater::isQuitRequested()) + { + return; + } + + LLFloaterIMNearbyChat* nearby_chat; if (visible) { // Make sure we have the Nearby Chat present when showing the conversation container -- cgit v1.2.3 From a5b1c013542d93be3b4cac820f32000fa5e3cfd4 Mon Sep 17 00:00:00 2001 From: Mnikolenko Productengine Date: Mon, 25 Oct 2021 21:23:26 +0300 Subject: SL-16234 handle closing floater correctly --- indra/newview/llfloaterimcontainer.cpp | 40 ++++++++++++++++------------------ 1 file changed, 19 insertions(+), 21 deletions(-) (limited to 'indra/newview/llfloaterimcontainer.cpp') diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index 2ccb9ab074..112ece0fbf 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -724,11 +724,6 @@ void LLFloaterIMContainer::setMinimized(BOOL b) void LLFloaterIMContainer::setVisible(BOOL visible) { - if (LLFloater::isQuitRequested()) - { - return; - } - LLFloaterIMNearbyChat* nearby_chat; if (visible) { @@ -764,22 +759,25 @@ void LLFloaterIMContainer::setVisible(BOOL visible) LLFloaterIMSessionTab::addToHost(LLUUID()); } - // We need to show/hide all the associated conversations that have been torn off - // (and therefore, are not longer managed by the multifloater), - // so that they show/hide with the conversations manager. - conversations_widgets_map::iterator widget_it = mConversationsWidgets.begin(); - for (;widget_it != mConversationsWidgets.end(); ++widget_it) - { - LLConversationViewSession* widget = dynamic_cast(widget_it->second); - if (widget) - { - LLFloater* session_floater = widget->getSessionFloater(); - if (session_floater != nearby_chat) - { - widget->setVisibleIfDetached(visible); - } - } - } + if (!LLFloater::isQuitRequested()) + { + // We need to show/hide all the associated conversations that have been torn off + // (and therefore, are not longer managed by the multifloater), + // so that they show/hide with the conversations manager. + conversations_widgets_map::iterator widget_it = mConversationsWidgets.begin(); + for (; widget_it != mConversationsWidgets.end(); ++widget_it) + { + LLConversationViewSession* widget = dynamic_cast(widget_it->second); + if (widget) + { + LLFloater* session_floater = widget->getSessionFloater(); + if (session_floater != nearby_chat) + { + widget->setVisibleIfDetached(visible); + } + } + } + } // Now, do the normal multifloater show/hide LLMultiFloater::setVisible(visible); -- cgit v1.2.3