aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* Removing the ClientManager reference from IScene and hiding it entirely ↵John Hurliman2009-10-262-11/+21
| | | | inside Scene as an implementation detail. This will reduce programming error and make it easier to refactor the avatar vs client vs presence mess later on
* * Switched all operations on the list of clients that could be either sync ↵John Hurliman2009-10-262-22/+28
| | | | | | | | or async to use Scene.ForEachClient() instead of referencing ClientManager directly * Added a new [Startup] config option called use_async_when_possible to signal how to run operations that could be either sync or async * Changed Scene.ForEachClient to respect use_async_when_possible * Fixing a potential deadlock in Parallel.ForEach by locking on a temporary object instead of the enumerator (which may be shared across multiple invocations on ForEach). Thank you diva
* Added calls to GC.AddMemoryPressure() when unmanaged memory is allocated for ↵John Hurliman2009-10-261-0/+5
| | | | ODE (helps the GC make better scheduling choices), and a call to GC.Collect() right before logins are enabled for a region. Although this doesn't change actual memory usage, it improves the reported usage from OpenSim and the operating system
* * Changed the watchdog timer to improve the speed of UpdateThread(), only ↵John Hurliman2009-10-261-0/+2
| | | | | | track threads once the first call to UpdateThread() has been made, and allow re-tracking of threads that timed out but revived later * Added a commented out call to Watchdog.UpdateThread() in OdeScene. If it turns out that loading a large OAR file or some other operation is timing out the heartbeat thread, we'll need to uncomment it
* Minor tweaks to get OpenSim compiling against both the current libomv and ↵John Hurliman2009-10-252-1/+3
| | | | the upcoming 0.8.0
* Changing Scene.ForEachClient to use the synchronous for loop instead of ↵John Hurliman2009-10-253-57/+56
| | | | | | | | | | Parallel. This is quite possibly the source of some deadlocking, and at the very least the synchronous version gives better stack traces * Lock the LLUDPClient RTO math * Add a helper function for backing off the RTO, and follow the optional advice in RFC 2988 to clear existing SRTT and RTTVAR values during a backoff * Removing the unused PrimitiveBaseShape.SculptImage parameter * Improved performance of SceneObjectPart instantiation * ZeroMesher now drops SculptData bytes like Meshmerizer, to allow the texture data to be GCed * Improved typecasting speed in MySQLLegacyRegionData.BuildShape() * Improved the instantiation of PrimitiveBaseShape
* * Changed various modules to not initialize timers unless the module is ↵John Hurliman2009-10-231-0/+3
| | | | | | initialized. Ideally, the timers would not initialize unless the module was actually enabled, but Melanie's work on configuring module loading from a config file should make that unnecessary * Wrapped the Bitmap class used to generate the world map tile in a using statement to dispose of it after the JPEG2000 data is created
* * Unregister Mono.Addins event handlers in PluginLoader.Dispose() and always ↵John Hurliman2009-10-231-4/+9
| | | | | | | handle PluginLoader with the using pattern. This freed up 121,634,796 bytes on my system * Avoid allocating an Action<IClientAPI> object every round of the OutgoingPacketHandler * Removed unnecessary semi-colon endings from OpenSim.ini.example [InterestManagement] section
* Implemented a "FrontBack" prioritizer, using distance plus the plane ↵John Hurliman2009-10-233-3/+78
| | | | equation to give double weight to prims/avatars in front of you
* Experimental change to use an immutable array for iterating ScenePresences, ↵John Hurliman2009-10-236-186/+198
| | | | avoiding locking and copying the list each time it is accessed
* * Send out m_bodyRot everywhere instead of m_rotation. Still have no clue ↵John Hurliman2009-10-221-8/+7
| | | | | | which is right * Fix WorldMapModule.process() to not trip the watchdog timer
* Forgot to hit save in the last commitJohn Hurliman2009-10-221-1/+1
|
* * Sending (position - hipoffset) instead of positionJohn Hurliman2009-10-221-5/+2
| | | | * Sending m_rotation instead of m_bodyRot in full updates to match terse updates (no idea which one is right!)
* Implemented a Watchdog class. Do not manually create Thread objects anymore, ↵John Hurliman2009-10-221-10/+10
| | | | use Watchdog.StartThread(). While your thread is running call Watchdog.UpdateThread(). When it is shutting down call Watchdog.RemoveThread(). Most of the threads in OpenSim have been updated
* Merge branch 'master' into vehiclesMelanie2009-10-2212-294/+412
|\
| * * Added a sanity check to GetScriptAssemblies() and GetScriptStates() for ↵John Hurliman2009-10-201-10/+16
| | | | | | | | | | | | the case where no scripting engine is enabled * Added TokenBucket.cs to OpenSim, with some fixes for setting a more accurate MaxBurst value and getting a more accurate Content value (by Drip()ing each get)
| * * Removed the unused m_agentUpdates collection and some extra work that was ↵John Hurliman2009-10-201-93/+33
| | | | | | | | | | | | being done for AgentUpdate packets * Start LLUDPClients unpaused (this variable is not being used yet)
| * Reverting the deletion of files related to texture sending until we figure ↵John Hurliman2009-10-201-0/+58
| | | | | | | | out exactly what is and isn't needed
| * * Removing cruft left over from the conversion to the new texture sending ↵John Hurliman2009-10-201-58/+0
| | | | | | | | | | | | and UDP code * Changing the cache modules to only initialize the caches if they are actually enabled. Should save a bit of resources from unused cache systems
| * Merge branch 'master' of ssh://opensimulator.org/var/git/opensim into ↵John Hurliman2009-10-191-2/+2
| |\ | | | | | | | | | prioritization
| * | * Change Util.FireAndForget to use ThreadPool.UnsafeQueueUserWorkItem(). ↵John Hurliman2009-10-195-58/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This avoids .NET remoting and a managed->unmanaged->managed jump. Overall, a night and day performance difference * Initialize the LLClientView prim full update queue to the number of prims in the scene for a big performance boost * Reordered some comparisons on hot code paths for a minor speed boost * Removed an unnecessary call to the expensive DateTime.Now function (if you *have* to get the current time as opposed to Environment.TickCount, always use DateTime.UtcNow) * Don't fire the queue empty callback for the Resend category * Run the outgoing packet handler thread loop for each client synchronously. It seems like more time was being spent doing the execution asynchronously, and it made deadlocks very difficult to track down * Rewrote some expensive math in LandObject.cs * Optimized EntityManager to only lock on operations that need locking, and use TryGetValue() where possible * Only update the attachment database when an object is attached or detached * Other small misc. performance improvements
| * | * Rewrote the methods that build ObjectUpdate and ImprovedTerseObjectUpdate ↵John Hurliman2009-10-183-36/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | packets to fill in the data more accurately and avoid allocating memory that is immediately thrown away * Changed the Send*Data structs in IClientAPI to use public readonly members instead of private members and getters * Made Parallel.ProcessorCount public * Started switching over packet building methods in LLClientView to use Util.StringToBytes[256/1024]() instead of Utils.StringToBytes() * More cleanup of the ScenePresences vs. ClientManager nightmare * ScenePresence.HandleAgentUpdate() will now time out and drop incoming AgentUpdate packets after three seconds. This fixes a deadlock on m_AgentUpdates that was blocking up the LLUDP server
| * | Committing the second part of Jim Greensky @ Intel Lab's patch, ↵John Hurliman2009-10-173-3/+124
| | | | | | | | | | | | re-prioritizing updates
| * | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim into ↵John Hurliman2009-10-161-3/+5
| |\ \ | | | | | | | | | | | | prioritization
| * \ \ Merge branch 'master' of ssh://opensimulator.org/var/git/opensim into ↵John Hurliman2009-10-161-0/+11
| |\ \ \ | | | | | | | | | | | | | | | prioritization
| * | | | Updating OpenSim.ini.example with the section required to enable a useful ↵John Hurliman2009-10-161-0/+2
| | | | | | | | | | | | | | | | | | | | prioritization scheme
| * | | | Merge branch 'master' of ssh://opensimulator.org/var/git/opensim into ↵John Hurliman2009-10-161-3/+14
| |\ \ \ \ | | | | | | | | | | | | | | | | | | prioritization
| * | | | | Object update prioritization by Jim Greensky of Intel Labs, part one. This ↵John Hurliman2009-10-159-54/+159
| | | | | | | | | | | | | | | | | | | | | | | | implements a simple distance prioritizer based on initial agent positions. Re-prioritizing and more advanced priority algorithms will follow soon
| * | | | | * Removed some of the redundant broadcast functions in Scene and SceneGraph ↵John Hurliman2009-10-154-56/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | so it is clear who/what the broadcast is going to each time * Removed two redundant parameters from SceneObjectPart * Changed some code in terse update sending that was meant to work with references to work with value types (since Vector3 and Quaternion are structs) * Committing a preview of a new method for sending object updates efficiently (all commented out for now)
* | | | | | Merge branch 'master' into vehiclesMelanie2009-10-192-2/+25
|\ \ \ \ \ \ | | |_|_|_|/ | |/| | | |
| * | | | | Formatting cleanup.Jeff Ames2009-10-191-2/+2
| | |_|_|/ | |/| | |
| * | | | * One more tweak to inform the user that they may not be able to move until ↵Teravus Ovares (Dan Olivares)2009-10-161-3/+5
| | |_|/ | |/| | | | | | | | | | relogging.
| * | | * fix previous commitTeravus Ovares (Dan Olivares)2009-10-161-1/+1
| | | |
| * | | * Ensure that at least 20 frames run before letting avatar in.Teravus Ovares (Dan Olivares)2009-10-161-0/+11
| | |/ | |/|
| * | * Make sure to unregister the OutOfBounds Physics event in ↵Teravus Ovares (Dan Olivares)2009-10-161-0/+1
| | | | | | | | | | | | RemoveFromPhysicalScene or we'll be leaking
| * | * A hacky attempt at resolving mantis #4260. I think ODE was unable to ↵Teravus Ovares (Dan Olivares)2009-10-161-0/+9
| | | | | | | | | | | | | | | | | | allocate memory, and therefore the unmanaged wrapper call fails or worse.. there's some unmanaged resource accounting in the ODEPlugin for ODECharacter that isn't being done properly now. * The broken avatar may not be able to move, but it won't stop simulate from pressing on now. And, the simulator will try to destroy the avatar's physics proxy and recreate it again... but if this is what I think it is, it may not help.
* | | Merge branch 'master' into vehiclesMelanie2009-10-153-9/+11
|\ \ \ | |/ /
| * | * Request from lkalif to have the Sim send a coarselocationupdate for each ↵Teravus Ovares (Dan Olivares)2009-10-151-3/+4
| |/ | | | | | | | | | | | | avatar in the sim, including yourself. * Apparently the LLClientView should have been doing this previously.. Also fixed the 'You' on the index block.. so the client doesn't display an extra green dot. * Thanks lkalif for bringing it to our attention.
| * * Replaced (possibly broken?) math for calculating the unix timestamp in ↵John Hurliman2009-10-143-6/+7
| | | | | | | | | | | | | | MySQLAssetData with Utils.DateTimeToUnixTime() * Disabled UpdateAccessTime() function since it was only writing zeros anyways. This gave me a significant performance improvement for startup times and avatar logins in standalone mode * Load attachments asynchronously so avatars with lots of attachments don't have to race the timeout clock to login
* | Merge branch 'master' into vehiclesMelanie2009-10-1510-175/+301
|\ \ | |/
| * Merge branch 'master' into htb-throttleMelanie2009-10-141-0/+1
| |\
| | * Setting changeY in border crossing.Diva Canto2009-10-141-0/+1
| | |
| * | Merge branch 'master' into htb-throttleMelanie2009-10-145-75/+209
| |\ \ | | |/
| | * * Fixes some prim crossings on megaregions with regions beyond the 512m markTeravus Ovares (Dan Olivares)2009-10-131-21/+93
| | | | | | | | | | | | * There's a slight chance that this could cause a problem with regular prim crossings.. but hopefully not. Revert if it does.
| | * Added this one file for the previous commit to work.Diva Canto2009-10-121-0/+37
| | |
| | * * Fixes http://opensimulator.org/mantis/view.php?id=4225Diva Canto2009-10-123-54/+79
| | | | | | | | | | | | | | | * Fixes http://opensimulator.org/mantis/view.php?id=3959 * Allows for viewing inventory textures outside home grid
| * | Optimized heartbeat by calling Update() only on updated objects.Dan Lake2009-10-133-73/+52
| | | | | | | | | | | | | | | | | | | | | | | | During the heartbeat loop, Update() is called on every SceneObjectGroup which in turn checks if any SceneObjectPart has changed. For large regions (> 100k prims) this work consumes 20-30% of a CPU even though there are only a few objects updating each frame. There is only one other reason to check every object on every frame, and that is the case where a script has registered the object with an "at target" listener. We can easily track when an object is registered or unregistered with an AtTarget, so this is not a reason to check every object every heartbeat. In the attached patch, I have added a dictionary to the scene which tracks the objects which have At Targets. Each heartbeat, the AtTarget() function will be called on every object registered with a listener for that event. Also, I added a dictionary to SceneGraph which stores references to objects which have been queued for updates during the heartbeat. At each heartbeat, Update() is called only on the objects which have generated updates during that beat.
| * | * Consolidated adding / removing ClientManager IClientAPIs to two places in ↵John Hurliman2009-10-131-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | Scene * Added some missing implementations of IClientAPI.RemoteEndPoint * Added a ClientManager.Remove(UUID) overload * Removed a reference to a missing project from prebuild.xml
| * | * Rewrote ClientManager to remove Lindenisms from OpenSim core, improve ↵John Hurliman2009-10-132-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | performance by removing locks, and replace LLUDPClientCollection * Removed the confusing (and LL-specific) shutdowncircuit parameter from IClientAPI.Close() * Updated the LLUDP code to only use ClientManager instead of trying to synchronize ClientManager and m_clients * Remove clients asynchronously since it is a very slow operation (including a 2000ms sleep)
| * | * Unregister event handlers in LLUDPServer when a client logs out and ↵John Hurliman2009-10-134-20/+28
| | | | | | | | | | | | | | | | | | | | | | | | disconnects * Move ViewerEffect handling to Scene.PacketHandlers * Removing the unused CloseAllAgents function * Trimming ClientManager down. This class needs to be reworked to keep LLUDP circuit codes from intruding into the abstract OpenSim core code