diff options
author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2023-06-17 01:31:02 +0300 |
---|---|---|
committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2023-06-17 01:31:02 +0300 |
commit | b5b0c174390b4158c69eeff7efd59c4f1615e491 (patch) | |
tree | fc61c5e1e0e80c496e09158103f205a1c7713ca4 | |
parent | 7607047a95a8b1cb89e3007138fbb00986067c2b (diff) |
SL-19886 Fix onidle crash after closing inventory floater
-rw-r--r-- | indra/llcommon/llcallbacklist.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llinventorygallery.cpp | 12 |
2 files changed, 9 insertions, 5 deletions
diff --git a/indra/llcommon/llcallbacklist.cpp b/indra/llcommon/llcallbacklist.cpp index 93d0a035da..9f23ce5317 100644 --- a/indra/llcommon/llcallbacklist.cpp +++ b/indra/llcommon/llcallbacklist.cpp @@ -55,7 +55,7 @@ void LLCallbackList::addFunction( callback_t func, void *data) // only add one callback per func/data pair // - if (containsFunction(func)) + if (containsFunction(func, data)) { return; } diff --git a/indra/newview/llinventorygallery.cpp b/indra/newview/llinventorygallery.cpp index f81beefc28..cfaff512ff 100644 --- a/indra/newview/llinventorygallery.cpp +++ b/indra/newview/llinventorygallery.cpp @@ -143,8 +143,8 @@ LLInventoryGallery::~LLInventoryGallery() delete mInventoryGalleryMenu; delete mRootGalleryMenu; delete mFilter; - - gIdleCallbacks.deleteFunction(onIdle, this); + + gIdleCallbacks.deleteFunction(onIdle, (void*)this); while (!mUnusedRowPanels.empty()) { @@ -184,8 +184,6 @@ LLInventoryGallery::~LLInventoryGallery() void LLInventoryGallery::setRootFolder(const LLUUID cat_id) { - gIdleCallbacks.deleteFunction(onIdle, this); - LLViewerInventoryCategory* category = gInventory.getCategory(cat_id); if(!category || (mFolderID == cat_id)) { @@ -195,7 +193,13 @@ void LLInventoryGallery::setRootFolder(const LLUUID cat_id) { mBackwardFolders.push_back(mFolderID); } + + gIdleCallbacks.deleteFunction(onIdle, (void*)this); + mFolderID = cat_id; + mItemToSelect.setNull(); + mItemBuildQuery.clear(); + mNeedsArrange = false; dirtyRootFolder(); } |