summaryrefslogtreecommitdiff
path: root/indra/newview/llpathfindingmanager.cpp
AgeCommit message (Collapse)Author
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.
2016-04-04merge with 4.0.3-releaseOz Linden
2015-11-10remove execute permission from many files that should not have itOz Linden
2015-09-18Set consistent terminology for yield/wait -> suspend for coroutines.Rider Linden
2015-07-10Backed out changeset bab1000e1b2d: restore 'selfless' changesNat Goodspeed
2015-07-07Backout selfles merge 738255dbbfd679d9e615baab3398e5e345bbb3c5Rider Linden
2015-07-01MAINT-5351: Remove 'self' parameter from coroutine functions.Nat Goodspeed
lleventcoro_test.cpp runs clean (as modified for new API), and all the rest builds clean, but the resulting viewer is as yet untested.
2015-06-03Remove vestigial httpclient.h include from files that no longer need it.Rider Linden
2015-05-11Updated feature manager downloader to coroutine.Rider Linden
Added "raw" coroutine handler (returns raw result as LLSD::Binary) and split out the guts of the get, put, etc methods. Moved getStatusFromLLSD from HttpCoroHandler into HttpCorutineAdapter
2015-04-23Convert pathfinding api to coro with new LLCore::HttpRider Linden
2014-05-14v-r -> s-e merge WIPBrad Payne (Vir Linden)
2014-05-13sunshine-external merge WIPBrad Payne (Vir Linden)
2013-08-09second phase summer cleaningRichard Linden
replace llinfos, lldebugs, etc with new LL_INFOS(), LL_DEBUGS(), etc.
2013-05-21mergeBrad Payne (Vir Linden)
2013-04-19merge changes for DRTVWR-294Oz Linden
2013-03-29Update Mac and Windows breakpad builds to latestGraham Madarasz
2013-03-13Large changes to the LLCurl::Responder API, as well as pulling in some ↵Don Kjer
changes to common libraries from the server codebase: * Additional error checking in http handlers. * Uniform log spam for http errors. * Switch to using constants for http heads and status codes. * Fixed bugs in incorrectly checking if parsing LLSD xml resulted in an error. * Reduced spam regarding LLSD parsing errors in the default completedRaw http handler. It should not longer be necessary to short-circuit completedRaw to avoid spam. * Ported over a few bug fixes from the server code. * Switch mode http status codes to use S32 instead of U32. * Ported LLSD::asStringRef from server code; avoids copying strings all over the place. * Ported server change to LLSD::asBinary; this always returns a reference now instead of copying the entire binary blob. * Ported server pretty notation format (and pretty binary format) to llsd serialization. * The new LLCurl::Responder API no longer has two error handlers to choose from. Overriding the following methods have been deprecated: ** error - use httpFailure ** errorWithContent - use httpFailure ** result - use httpSuccess ** completed - use httpCompleted ** completedHeader - no longer necessary; call getResponseHeaders() from a completion method to obtain these headers. * In order to 'catch' a completed http request, override one of these methods: ** httpSuccess - Called for any 2xx status code. ** httpFailure - Called for any non-2xx status code. ** httpComplete - Called for all status codes. Default implementation is to call either httpSuccess or httpFailure. * It is recommended to keep these methods protected/private in order to avoid triggering of these methods without using a 'push' method (see below). * Uniform error handling should followed whenever possible by calling a variant of this during httpFailure: ** llwarns << dumpResponse() << llendl; * Be sure to include LOG_CLASS(your_class_name) in your class in order for the log entry to give more context. * In order to 'push' a result into the responder, you should no longer call error, errorWithContent, result, or completed. * Nor should you directly call httpSuccess/Failure/Completed (unless passing a message up to a parent class). * Instead, you can set the internal content of a responder and trigger a corresponding method using the following methods: ** successResult - Sets results and calls httpSuccess ** failureResult - Sets results and calls httpFailure ** completedResult - Sets results and calls httpCompleted * To obtain information about a the response from a reponder method, use the following getters: ** getStatus - HTTP status code ** getReason - Reason string ** getContent - Content (Parsed body LLSD) ** getResponseHeaders - Response Headers (LLSD map) ** getHTTPMethod - HTTP method of the request ** getURL - URL of the request * It is still possible to override completeRaw if you want to manipulate data directly out of LLPumpIO. * See indra/llmessage/llcurl.h for more information.
2013-03-05Fixing issues with not detecting when LLSD XML parsing fails. Changing most ↵Don Kjer
http error handlers to understand LLSD error responses. Fleshing out most http error handler message spam.
2012-06-28Cleaning up new files in preparation for merge into viewer-release.Todd Stinson
2012-06-26Renaming the rebake navmesh panel class.Todd Stinson
2012-06-26Updating the header licensing comments.Todd Stinson
2012-06-25PATH-718: Disabling the view/test menu in the case of a stubbed ↵Todd Stinson
llphysicsextensions library.
2012-06-22PATH-759: Removing XXX_STINSON_DEBUG_NAVMESH_ZONE ifdefs.Todd Stinson
2012-06-20PATH-761: Implementing the new design for the pathfinding view floater.Todd Stinson
2012-06-19PATH-723: Pulling in whether the user has access to view the rebake navmesh ↵Todd Stinson
button or not.
2012-06-19PATH-702: Refining the behavior of the rebuild navmesh button after it is ↵Todd Stinson
pushed, and removing unused code.
2012-06-19Removing unused methods and members from the pathfinding manager.Todd Stinson
2012-06-19PATH-702: Tying the status of the rebake button to the status of the navmesh ↵Todd Stinson
for the current region.
2012-06-19PATH-702: Positioning the rebake navmesh button to align with the ↵Todd Stinson
Stand/StopFlying buttons. Also, parenting the buttons to the toolbar UI elements.
2012-06-19path-722: handling the case where region entry or teleporting would cause ↵prep
the rebake button to be drawn ontop of splash screen.
2012-06-19Path-722: After a successful rebake the rebake navmesh button is reenabledprep
2012-06-19Don't display the rebake navmesh button while SL splash screen is upprep
2012-06-18PATH-705: Creating a path to pull in the state of the current region navmesh ↵Todd Stinson
without downloading the navmesh binary.
2012-06-15Fixed bug where rebake navmesh would get drawn ontop of loading screen.prep
2012-06-14WIP: path-722. Some agent_state_updates come through (god mode), region ↵prep
crossings, cleanup logic is a TBD, etc..
2012-06-13Path-722: Reset buttons to default state.prep
2012-06-13WIP: path-722. Posting and responders for navmesh rebakingprep
2012-06-13path-724: xml navmesh rebake buttonprep
2012-06-13WIP for path-702.prep
2012-06-11PATH-705: First pass at removing the agent state functionality. WIP -- still ↵Todd Stinson
need to remove XXX_STINSON_AGENT_STATE_DELETE_ME ifdef'ed code.
2012-06-11PATH-726: Removing the DEPRECATED_ALTER_NAVMESH_OBJECTS_FIELD as the viewer ↵Todd Stinson
no longer has to support the Premium Wilderness regions on the old server code.
2012-06-11PATH-714: Removing the DEPRECATED_UNVERSIONED_NAVMESH as the viewer no ↵Todd Stinson
longer has to support the Premium Wilderness regions on the old server code.
2012-06-11PATH-711: Implementing Leo's changes for the pathfinding console.Todd Stinson
2012-06-11PATH-706: Removing enforcement on frozen/unfrozen state from the linksets ↵Todd Stinson
floater. Also, removing handlers for agent state change.
2012-06-11Backed out changeset: 18b06d44c5a3Todd Stinson
2012-06-06Performing a test regarding the recent failures of our LLHTTPClient::get ↵Todd Stinson
services. This changeset should be undone.
2012-05-30Cleaning up some unreferenced headers and classes definitions from previous ↵Todd Stinson
refactoring.
2012-05-30First pass at refactoring the pathfinding linksets and pathfinding ↵Todd Stinson
characters classes to reduce code duplication, as both functionalities were heavily duplicated.
2012-05-01PATH-580: Ensuring that the characters and linksets capability services are ↵Todd Stinson
properly deferred requested in the case that a regions capabilities have not been fully received at initial request time.
2012-05-01Switching the functionality of the linksets and character request handling ↵Todd Stinson
to no longer return values directly, but rather to report status only through the callbacks.