summaryrefslogtreecommitdiff
path: root/indra/newview/lldonotdisturbnotificationstorage.cpp
AgeCommit message (Collapse)Author
2024-05-15Manual whitespace cleanup (fix_whitespace.py).Nat Goodspeed
2024-05-02Introduce LLLater::getRemaining(handle).Nat Goodspeed
Some timer use cases need to know not only whether the timer is active, but how much time remains before it (next) fires. Introduce LLLater::mDoneTimes to track, for each handle, the timestamp at which it's expected to fire. We can't just look up the target timestamp in mQueue's func_at entry because there's no documented way to navigate from a handle_type to a node iterator or pointer. Nor can we store it in mHandles because of order dependency: we need the mDoneTimes iterator so we can bind it into the Periodic functor for doPeriodically(), but we need the mQueue handle to store in mHandles. If we could find the mQueue node from the new handle, we could update the func_at entry after emplace() -- but if we could find the mQueue node from a handle, we wouldn't need to store the target timestamp separately anyway. Split LLLater::doAtTime() into internal doAtTime1() and doAtTime2(): the first creates an mDoneTimes entry and returns an iterator, the second finishes creating new mQueue and mHandles entries based on that mDoneTimes entry. This lets doPeriodically()'s Periodic bind the mDoneTimes iterator. Then instead of continually incrementing an internal data member, it increments the mDoneTimes entry to set the next upcoming timestamp. That lets getRemaining() report the next upcoming timestamp rather than only the original one. Add LLEventTimer::isRunning() and getRemaining(), forwarding to its LLLater handle. Fix various LLEventTimer subclass references to mEventTimer.stop(), etc. Fix non-inline LLEventTimer subclass tick() overrides for bool, not BOOL. Remove LLAppViewer::idle() call to LLEventTimer::updateClass(). Since LLApp::stepFrame() already calls LLCallbackList::callFunctions(), assume we've already handled that every tick.
2022-05-31Merge branch 'master' into DRTVWR-544-maintAndrey Lihatskiy
# Conflicts: # indra/llprimitive/llmodel.cpp # indra/llprimitive/llmodel.h # indra/newview/llappviewer.cpp # indra/newview/llappviewer.h
2022-01-21SL-12335 Viewer loaded notifications from wrong fileAndrey Kleshchev
2021-10-28SL-16148 SL-16244 SL-16270 SL-16253 Remove most BlockTimers, remove ↵Dave Parks
LLMemTracked, introduce alignas, hook most/all reamining allocs, disable synchronous occlusion, and convert frequently accessed LLSingletons to LLSimpleton
2019-08-13DRTVWR-493 Reworked a number of initsandreykproductengine
2016-09-15MAINT-5232: Normalize LLSingleton subclasses.Nat Goodspeed
A shocking number of LLSingleton subclasses had public constructors -- and in several instances, were being explicitly instantiated independently of the LLSingleton machinery. This breaks the new LLSingleton dependency-tracking machinery. It seems only fair that if you say you want an LLSingleton, there should only be ONE INSTANCE! Introduce LLSINGLETON() and LLSINGLETON_EMPTY_CTOR() macros. These handle the friend class LLSingleton<whatevah>; and explicitly declare a private nullary constructor. To try to enforce the LLSINGLETON() convention, introduce a new pure virtual LLSingleton method you_must_use_LLSINGLETON_macro() which is, as you might suspect, defined by the macro. If you declare an LLSingleton subclass without using LLSINGLETON() or LLSINGLETON_EMPTY_CTOR() in the class body, you can't instantiate the subclass for lack of a you_must_use_LLSINGLETON_macro() implementation -- which will hopefully remind the coder. Trawl through ALL LLSingleton subclass definitions, sprinkling in LLSINGLETON() or LLSINGLETON_EMPTY_CTOR() as appropriate. Remove all explicit constructor declarations, public or private, along with relevant 'friend class LLSingleton<myself>' declarations. Where destructors are declared, move them into private section as well. Where the constructor was inline but nontrivial, move out of class body. Fix several LLSingleton abuses revealed by making ctors/dtors private: LLGlobalEconomy was both an LLSingleton and the base class for LLRegionEconomy, a non-LLSingleton. (Therefore every LLRegionEconomy instance contained another instance of the LLGlobalEconomy "singleton.") Extract LLBaseEconomy; LLGlobalEconomy is now a trivial subclass of that. LLRegionEconomy, as you might suspect, now derives from LLBaseEconomy. LLToolGrab, an LLSingleton, was also explicitly instantiated by LLToolCompGun's constructor. Extract LLToolGrabBase, explicitly instantiated, with trivial subclass LLToolGrab, the LLSingleton instance. (WARNING: LLToolGrabBase methods have an unnerving tendency to go after LLToolGrab::getInstance(). I DO NOT KNOW what should be the relationship between the instance in LLToolCompGun and the LLToolGrab singleton instance.) LLGridManager declared a variant constructor accepting (const std::string&), with the comment: // initialize with an explicity grid file for testing. As there is no evidence of this being called from anywhere, delete it. LLChicletBar's constructor accepted an optional (const LLSD&). As the LLSD parameter wasn't used, and as there is no evidence of it being passed from anywhere, delete the parameter. LLViewerWindow::shutdownViews() was checking LLNavigationBar:: instanceExists(), then deleting its getInstance() pointer -- leaving a dangling LLSingleton instance pointer, a land mine if any subsequent code should attempt to reference it. Use deleteSingleton() instead. ~LLAppViewer() was calling LLViewerEventRecorder::instance() and then explicitly calling ~LLViewerEventRecorder() on that instance -- leaving the LLSingleton instance pointer pointing to an allocated-but-destroyed instance. Use deleteSingleton() instead.
2015-11-10remove execute permission from many files that should not have itOz Linden
2013-10-15renamed TimeBlock to BlockTimerStatHandleRichard Linden
2013-09-09merge with viewer-releaseRichard Linden
2013-09-05changed fast timer over to using macroRichard Linden
another attempt to move mem stat into base class
2013-06-20CHUI-850 FIXED Unread notifications are lost after relog in certain ↵PavelK ProductEngine
circumstances
2013-05-22Pull merge from viewer-releaseMerov Linden
2013-04-25CHUI-759 FIXED Group invites never received in do not disturb mode when ↵PavelK ProductEngine
leaving do not disturb mode
2013-04-17CHUI-933 FIXED No notification of IMs when coming out of Do Not Disturb mode ↵PavelK ProductEngine
with Flash Toolbar button preference
2013-04-17CHUI-936 FIXED Do not show Conversation log floater if logging is disabled.Mnikolenko ProductEngine
2013-03-29Update Mac and Windows breakpad builds to latestGraham Madarasz
2013-03-27CHUI-875 (Viewer experiences a 10s delay on dnd (do not disturb) ↵Gilbert Gonzales
notification loading): For now adding logging when reading from persistent notifications and from dnd notifications.
2013-03-19CHUI 796 (User doesn't get all messages in 'do not disturb' mode): Now IM ↵Gilbert Gonzales
DND notifications will be stored as p2p, ad-hoc or group. When loading these notifications upon app start ad-hoc/group notifications will launch the conversation log and play a sound.
2013-02-12CHUI-758: Group notice received in DND mode causes crash on startup when ↵Gilbert Gonzales
auto-exiting DND mode. Crash occurred because two instances of the Group Notice notification were trying to be added from the persistent storage and then the DND storage.
2013-01-30Pull merge from lindenlab/viewer-developementMerov Linden
2013-01-25CHUI-667 Upon exit from DND mode, a maximum of one sound should be played. ↵Gilbert Gonzales
Solution. Added a deferred sound class which will have sound id's added to it and upon unmuting the deferred sounds will be played.
2013-01-23CHUI-687: post code review changes. Now upon deletion of an item, DND mode ↵Gilbert Gonzales
must be enabled in order to remove a notification from the DND history.
2013-01-23CHUI-687: Problem: User sees inventory offer notifications for deleted items ↵Gilbert Gonzales
when logging in from do not disturb mode. Resolution: If an item that is deletes has a DND notification saved, then remove that notification so that it doesn't appear onec the user exists DND mode.
2013-01-17CHUI-685 removing some commented out codeGilbert Gonzales
2013-01-17CHUI-685 Problem: The notifications .xml file was cleared upon exit because ↵Gilbert Gonzales
removeIMNotification was being called and deleting inventory offers becaus they did not have a session id. Resolution: Now check to make sure that removeIMNotification only removes IMs (IMToast).
2013-01-15CHUI-668: Code review changesGilbert Gonzales
2013-01-14CHUI-668: The user's most intrusive notification is not used anymore when ↵Gilbert Gonzales
coming out of DND mode with IMs. Adjusted code to just open the converseation floater (which was changed also in a prior fix by PE).
2013-01-14merging latest changesGilbert Gonzales
2013-01-11CHUI-668: Not fully complete but as of this commit, have functionality to ↵Gilbert Gonzales
use the user's most intrusive chat notification upon exiting from DND mode with IM's. Also if in DND mode, clicking on a conversation line item or floater, will flush the DND notifications system of storing that conversation. This way upon existing DND mode already responded conversations won't be notified to the user.
2013-01-08CHUI-660: Post code review changesGilbert Gonzales
2013-01-04CHUI-499: Now when existing DND mode, stored IM's will not show a toast but ↵Gilbert Gonzales
instead flash the conversation line item and Chat FUI button.
2013-01-03CHUI-499: Fixed a serialization problem where the a notification's ↵Gilbert Gonzales
objectInfo was not being serialized/deserialized.
2013-01-02CHUI-499: Removing debug codeGilbert Gonzales
2012-12-19CHUI-499: Code clean-up and adding some more types badly defined.William Todd Stinson
2012-12-19CHUI-499: Loading the DND notifications upon exit from DND mode and after login.William Todd Stinson
2012-12-18CHUI-499: Adding ability to serialize the communication notifications to ↵William Todd Stinson
local disk per user.