From 62ea41a6d68d8d1249977edf1c4781021a417ed1 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Fri, 1 Oct 2010 13:37:01 +0200 Subject: fix crash on logout --- linden/indra/newview/llviewermenu.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp index fd6e842..f905ada 100644 --- a/linden/indra/newview/llviewermenu.cpp +++ b/linden/indra/newview/llviewermenu.cpp @@ -1560,6 +1560,7 @@ void cleanup_menus() { LL_DEBUGS("AFK") << "cleanup_menus start" << LL_ENDL; sMenus.clear(); + LLMenuGL::sMenuContainer = NULL; delete gMenuParcelObserver; gMenuParcelObserver = NULL; -- cgit v1.1 From 05dd11698819f47e8ea36803a1dc980f4e0ed95d Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Fri, 1 Oct 2010 14:15:16 +0200 Subject: fix friendlist not cleared on logout --- linden/indra/newview/llappviewer.cpp | 3 +++ linden/indra/newview/llcallingcard.cpp | 12 ++++++++++++ linden/indra/newview/llcallingcard.h | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index b3f3e59..accc523 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp @@ -1185,6 +1185,9 @@ bool LLAppViewer::cleanup() llinfos << "Viewer disconnected" << llendflush; + //this deletes all your buddies + LLAvatarTracker::instance().reset(); + if (mQuitRequested) { display_cleanup(); diff --git a/linden/indra/newview/llcallingcard.cpp b/linden/indra/newview/llcallingcard.cpp index 155fb60..15be0eb 100644 --- a/linden/indra/newview/llcallingcard.cpp +++ b/linden/indra/newview/llcallingcard.cpp @@ -137,8 +137,20 @@ LLAvatarTracker::~LLAvatarTracker() deleteTrackingData(); std::for_each(mObservers.begin(), mObservers.end(), DeletePointer()); std::for_each(mBuddyInfo.begin(), mBuddyInfo.end(), DeletePairedPointer()); + mObservers.erase(mObservers.begin(), mObservers.end()); + mBuddyInfo.erase(mBuddyInfo.begin(), mBuddyInfo.end()); } + +void LLAvatarTracker::reset() +{ + std::for_each(mBuddyInfo.begin(), mBuddyInfo.end(), DeletePairedPointer()); + mBuddyInfo.erase(mBuddyInfo.begin(), mBuddyInfo.end()); + mModifyMask |= LLFriendObserver::REMOVE; + notifyObservers(); +} + + void LLAvatarTracker::track(const LLUUID& avatar_id, const std::string& name) { deleteTrackingData(); diff --git a/linden/indra/newview/llcallingcard.h b/linden/indra/newview/llcallingcard.h index 0db5376..d3f53c6 100644 --- a/linden/indra/newview/llcallingcard.h +++ b/linden/indra/newview/llcallingcard.h @@ -86,7 +86,7 @@ class LLAvatarTracker { public: static LLAvatarTracker& instance() { return sInstance; } - + void reset(); void track(const LLUUID& avatar_id, const std::string& name); void untrack(const LLUUID& avatar_id); bool isTrackedAgentValid() { return mTrackedAgentValid; } -- cgit v1.1 From 6a8f304b10f5a2fc96a675a8ada694e6bfbda34e Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Fri, 1 Oct 2010 21:32:08 +0200 Subject: replacent for f99376788 Fixed #381: using voice causes viewer crash on disconnect/quit --- linden/indra/newview/llappviewer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index accc523..3f9adde 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp @@ -1185,8 +1185,11 @@ bool LLAppViewer::cleanup() llinfos << "Viewer disconnected" << llendflush; - //this deletes all your buddies - LLAvatarTracker::instance().reset(); + if (!mQuitRequested) //not doing it on quit, because the quitting voiceclient + { //*might* crash imprudence TODO: fix the voiceclient instead + //this deletes all your buddies + LLAvatarTracker::instance().reset(); + } if (mQuitRequested) { -- cgit v1.1 From 1e3d134625c1e89ee3480f4159fa7d60b0438571 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Fri, 1 Oct 2010 22:23:50 +0200 Subject: fix: don't play balance changed ui-sound when relogging into account with different balance --- linden/indra/newview/llappviewer.cpp | 4 ++++ linden/indra/newview/llstatusbar.h | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index 3f9adde..18df447 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp @@ -1191,6 +1191,10 @@ bool LLAppViewer::cleanup() LLAvatarTracker::instance().reset(); } + //reset balance for not playing the UI-Sound + //when relogging into another account + gStatusBar->clearBalance(); + if (mQuitRequested) { display_cleanup(); diff --git a/linden/indra/newview/llstatusbar.h b/linden/indra/newview/llstatusbar.h index 92be319..9ed067f 100644 --- a/linden/indra/newview/llstatusbar.h +++ b/linden/indra/newview/llstatusbar.h @@ -121,7 +121,8 @@ public: S32 getSquareMetersCommitted() const; S32 getSquareMetersLeft() const; LLRegionDetails mRegionDetails; - + + void clearBalance() { mBalance = 0; } private: static void onCommitSearch(LLUICtrl*, void* data); static void onClickSearch(void* data); -- cgit v1.1 From e70299bb6eb7fbd9209a7fed970a51794256c678 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Fri, 1 Oct 2010 23:09:47 +0200 Subject: fix: Bug #390 Logout: snapshot window doesn't close when logging out --- linden/indra/newview/llappviewer.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp index 18df447..7d9acf4 100644 --- a/linden/indra/newview/llappviewer.cpp +++ b/linden/indra/newview/llappviewer.cpp @@ -3729,10 +3729,18 @@ void LLAppViewer::idleShutdown() else { mQuitRequested=true; -//awfixme forceQuit(); } + + static bool saved_snapshot = false; + if (!saved_snapshot) + { + saved_snapshot = true; + saveFinalSnapshot(); + return; + } + // Attempt to close all floaters that might be // editing things. if (gFloaterView) @@ -3740,6 +3748,13 @@ void LLAppViewer::idleShutdown() // application is quitting gFloaterView->closeAllChildren(true); } + + // extra invitation to the Snapshot Floater + // not to show on the loginscreen when relogging + if (gSnapshotFloaterView) + { + gSnapshotFloaterView->closeAllChildren(true); + } // close IM interface if(gIMMgr) @@ -3756,13 +3771,7 @@ void LLAppViewer::idleShutdown() return; } - static bool saved_snapshot = false; - if (!saved_snapshot) - { - saved_snapshot = true; - saveFinalSnapshot(); - return; - } + const F32 SHUTDOWN_UPLOAD_SAVE_TIME = 5.f; -- cgit v1.1 From b42695e3d18a630b99fb7d5803404e9e61b6af83 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Sat, 2 Oct 2010 09:02:34 +0200 Subject: fix: Bug #413 1.3 Logout: crash when cancelling currency purchase todo: llfloaterbuycurrency needs refactor --- linden/indra/newview/llfloaterbuycurrency.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linden/indra/newview/llfloaterbuycurrency.cpp b/linden/indra/newview/llfloaterbuycurrency.cpp index 07723e0..5096495 100644 --- a/linden/indra/newview/llfloaterbuycurrency.cpp +++ b/linden/indra/newview/llfloaterbuycurrency.cpp @@ -192,7 +192,7 @@ BOOL LLFloaterBuyCurrencyUI::canClose() void LLFloaterBuyCurrencyUI::onClose(bool app_quitting) { LLFloater::onClose(app_quitting); - destroy(); + } void LLFloaterBuyCurrencyUI::updateUI() -- cgit v1.1