Age | Commit message (Collapse) | Author | |
---|---|---|---|
2020-03-25 | DRTVWR-494: Defend LLInstanceTracker against multi-thread usage. | Nat Goodspeed | |
The previous implementation went to some effort to crash if anyone attempted to create or destroy an LLInstanceTracker subclass instance during traversal. That restriction is manageable within a single thread, but becomes unworkable if it's possible that a given subclass might be used on more than one thread. Remove LLInstanceTracker::instance_iter, beginInstances(), endInstances(), also key_iter, beginKeys() and endKeys(). Instead, introduce key_snapshot() and instance_snapshot(), the only means of iterating over LLInstanceTracker instances. (These are intended to resemble functions, but in fact the current implementation simply presents the classes.) Iterating over a captured snapshot defends against container modifications during traversal. The term 'snapshot' reminds the coder that a new instance created during traversal will not be considered. To defend against instance deletion during traversal, a snapshot stores std::weak_ptrs which it lazily dereferences, skipping on the fly any that have expired. Dereferencing instance_snapshot::iterator gets you a reference rather than a pointer. Because some use cases want to delete all existing instances, add an instance_snapshot::deleteAll() method that extracts the pointer. Those cases used to require explicitly copying instance pointers into a separate container; instance_snapshot() now takes care of that. It remains the caller's responsibility to ensure that all instances of that LLInstanceTracker subclass were allocated on the heap. Replace unkeyed static LLInstanceTracker::getInstance(T*) -- which returned nullptr if that instance had been destroyed -- with new getWeak() method returning std::weak_ptr<T>. Caller must detect expiration of that weak_ptr. Adjust tests accordingly. Use of std::weak_ptr to detect expired instances requires engaging std::shared_ptr in the constructor. We now store shared_ptrs in the static containers (std::map for keyed, std::set for unkeyed). Make LLInstanceTrackerBase a template parameterized on the type of the static data it manages. For that reason, hoist static data class declarations out of the class definitions to an LLInstanceTrackerStuff namespace. Remove the static atomic sIterationNestDepth and its methods incrementDepth(), decrementDepth() and getDepth(), since they were used only to forbid creation and destruction during traversal. Add a std::mutex to static data. Introduce an internal LockStatic class that locks the mutex while providing a pointer to static data, making that the only way to access the static data. The LLINSTANCETRACKER_DTOR_NOEXCEPT macro goes away because we no longer expect ~LLInstanceTracker() to throw an exception in test programs. That affects LLTrace::StatBase as well as LLInstanceTracker itself. Adapt consumers to the new LLInstanceTracker API. | |||
2018-06-08 | MAINT-8742 Crashes at draw and getHandle | andreykproductengine | |
2018-04-17 | MAINT-8498 Fixed item offers not appearing after friednship offer | Andrey Kleshchev | |
2017-07-24 | MAINT-7629 FIXED Crash in LLSpeakerMgr::findSpeaker(LLUUID const &) | Mnikolenko ProductEngine | |
2017-05-17 | MAINT-6805 Fixed Right-click menus in the right and left panes of the ↵ | andreykproductengine | |
Conversations windows are different | |||
2017-02-15 | MAINT-7118 Swapping legacy people API with new cache | andreykproductengine | |
2016-05-18 | MAINT-2129 "Block" button doesn't become disabled | andreykproductengine | |
2016-05-19 | Merged in lindenlab/viewer-release | AndreyL ProductEngine | |
2016-04-20 | MAINT-2129 "Block" button doesn't become disabled in remote object inspector ↵ | andreykproductengine | |
after object has been added to block list | |||
2016-01-15 | merge changes for 4.0.1-release | Oz Linden | |
2015-11-10 | remove execute permission from many files that should not have it | Oz Linden | |
2015-10-15 | MAINT-925 FIXED Objects called "Second Life" are unclickable & unmuteable ↵ | Mnikolenko ProductEngine | |
via local chat | |||
2015-06-11 | MAINT-14 FIXED Region message logged into nearby chat log has duplicated ↵ | Mnikolenko ProductEngine | |
sender name | |||
2015-06-08 | MAINT-14 FIXED Treat region message like a system message, but also show ↵ | Mnikolenko ProductEngine | |
sender name. | |||
2015-03-31 | MAINT-5020 FIXED Determine the need to use bracket via chat source. | Mnikolenko ProductEngine | |
2014-10-27 | MAINT-4597 FIXED Show emoted name according to name settings in preferences. | Mnikolenko ProductEngine | |
2014-05-02 | MAINT-4009: Patching the memory leak occurring from the info icons that ↵ | Stinson Linden | |
appear when hovering over a chat history item. | |||
2014-03-12 | merge with release | Richard Linden | |
2014-01-10 | Revert earlier back-out for MAINT-535 ... it's back in | simon | |
2014-01-07 | Revert changes made for MAINT-535 to test in a release cohort. | simon | |
2013-12-02 | merge with release | Richard Linden | |
2013-11-25 | Merge - doh! | simon | |
2013-11-12 | MAINT-3068 FIXED "Request Teleport" menu item is added to context menu. | Mnikolenko ProductEngine | |
2013-11-11 | Automated merge with http://bitbucket.org/lindenlab/viewer-release | Richard Linden | |
2013-11-11 | Merge 3.6.11 for RC-ability | Graham Linden | |
2013-10-25 | Fix release merge issues (included upstream changes not yet in release from ↵ | Graham Linden | |
bear) | |||
2013-10-15 | renamed TimeBlock to BlockTimerStatHandle | Richard Linden | |
2013-10-08 | merge from viewer-release | Richard Linden | |
2013-09-09 | merge with viewer-release | Richard Linden | |
2013-09-09 | Merge downstream code with viewer-release | simon_linden | |
2013-09-05 | changed fast timer over to using macro | Richard Linden | |
another attempt to move mem stat into base class | |||
2013-09-04 | MAINT-3073 ([CHUIBUG](You) feature is irritating, especially for emotes) | mberezhnoy | |
2013-08-23 | MAINT-2575 FIXED Resident can accept unlimited number of friendship requests ↵ | maksymsproductengine | |
if they were sent before his first accept | |||
2013-08-29 | MAINT-3068 FIXED Inconsistent option menus on resident names in ↵ | dmitry | |
Conversations floater | |||
2013-10-22 | MAINT-535 'trust model' is added for secondlife:// URLs in wiki style links. ↵ | Mnikolenko ProductEngine | |
Chat history is marked as untrusted source now. | |||
2013-10-15 | MAINT-3305 ('Chat history' is enabled in contex menu for yourself.) | MaximB ProductEngine | |
2013-06-13 | CHUI-809 (Right-click menu on user name in compat chat mode doesn't have "IM") | mberezhnoy | |
Added callback for friendship checking | |||
2013-04-19 | merge changes for DRTVWR-294 | Oz Linden | |
2013-04-01 | CHUI-886 (Time in front of the name is not displayed when the Conversations ↵ | mberezhnoy | |
size is reduced to a minimum.) | |||
2013-03-29 | Update Mac and Windows breakpad builds to latest | Graham Madarasz | |
2013-03-12 | CHUI-809 FIXED Changes in menu items to make them consistent. Do not start ↵ | Mnikolenko ProductEngine | |
IM if selected person is self. | |||
2013-03-11 | CHUI-815 FIXED Display whispered text in italics and shouted text as bold | Mnikolenko ProductEngine | |
2013-01-30 | Pull merge from lindenlab/viewer-developement | Merov Linden | |
2012-12-17 | CHUI-580 : WIP : Added disconnect of callbacks once they're called to ↵ | Merov Linden | |
prevent filling up the callback queue | |||
2012-12-17 | CHUI-580 : WIP : Protect callback connections passed to ↵ | Merov Linden | |
LLAvatarNameCache::get() where necessary | |||
2012-12-05 | CHUI-580 : WIP : Change the display name cache system, deprecating the old ↵ | Merov Linden | |
protocol and using the cap (People API) whenever available. Still has occurence of Resident as last name to clean up. | |||
2012-11-19 | CHUI-423 (User typing /me something in chat does not show correctly in ↵ | MaximB ProductEngine | |
italics on outgoing or incoming chat) | |||
2012-11-02 | CHUI-475: Ensuring that objects that query the avatar name cache with a ↵ | William Todd Stinson | |
callback store the connection and disconnect on object destruction. This should help resolve some of the heap corruption we are seeing. | |||
2012-10-16 | Move const kw location | Jeff (Gioffredo Linden) | |
2012-10-16 | Make getValue const to fix Windows builds - and be more robust | Jeff (Gioffredo Linden) | |