aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP/LLImageManager.cs (unfollow)
Commit message (Collapse)AuthorFilesLines
2011-04-30First stab at cleaning up Caps. Compiles. Untested.Diva Canto1-257/+0
2010-07-04Got rid of all hyperassets references. Also fixed accessing textures in ↵Diva Canto1-4/+1
user's inventory in foreign grids.
2009-10-19* Change Util.FireAndForget to use ThreadPool.UnsafeQueueUserWorkItem(). ↵John Hurliman1-2/+0
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
2009-10-14* Read scene_throttle_bps from the config file and use itJohn Hurliman1-9/+2
* Minor formatting cleanup
2009-10-14* Minimized the number of times textures are pulled off the priority queueJohn Hurliman1-23/+25
* OnQueueEmpty is still called async, but will not be called for a given category if the previous callback for that category is still running. This is the most balanced behavior I could find, and seems to work well * Added support for the old [ClientStack.LindenUDP] settings (including setting the receive buffer size) and added the new token bucket and global throttle settings * Added the AssetLoaderEnabled config variable to optionally disable loading assets from XML every startup. This gives a dramatic improvement in startup times for those who don't need the functionality every startup
2009-10-13* Copied LocklessQueue.cs into OpenSim.Framework and added the .Count ↵John Hurliman1-5/+1
property and .Clear() method * Changed the way the QueueEmpty callback is fired. It will be fired asynchronously as soon as an empty queue is detected (this can happen immediately following a dequeue), and will not be fired again until at least one packet is dequeued from that queue. This will give callbacks advanced notice of an empty queue and prevent callbacks from stacking up while the queue is empty * Added LLUDPClient.IsConnected checks in several places to prevent unwanted network activity after a client disconnects * Prevent LLClientView.Close() from being called twice every disconnect * Removed the packet resend limit and improved the client timeout check
2009-10-13* Fixed a bug where clients were being added to ClientManager twiceJohn Hurliman1-22/+22
* Changed the ClientManager interface to reduce potential errors with duplicate or mismatched keys * Added IClientAPI.RemoteEndPoint, which can (hopefully) eventually replace IClientAPI.CircuitCode * Changed the order of operations during client shutdown
2009-10-12* Fixes http://opensimulator.org/mantis/view.php?id=4225Diva Canto1-0/+5
* Fixes http://opensimulator.org/mantis/view.php?id=3959 * Allows for viewing inventory textures outside home grid
2009-10-05Beginning work on the new LLUDP implementationJohn Hurliman1-1/+1
2009-10-05Changed the lock object, to see if this helps at all. Also switched the ↵Diva Canto1-11/+15
order of lock and try/catch in RemoveImageFromQueue.
2009-10-04Reduced locking.Diva Canto1-8/+10
2009-10-02* Removed code that is no longer used with Melanie's queue callback optimizationJohn Hurliman1-126/+88
* Moved all priority queue access to helper functions to improve reliability and readability * New version of CSJ2K.dll (from libomv source tree) that fixes a JPEG2000 comment decoding bug
2009-10-02* Removed even more unnecessary state variables from J2KImageJohn Hurliman1-23/+23
* Fixed the incorrect "out of memory?" exception messages and replaced them with useful information * Cleaned up J2KImage and LLImageManager to conform to coding conventions
2009-10-02Restore the missing image handling to the image manager. The missingMelanie1-65/+79
image packet crashes Hippo without a message.
2009-10-01Locking the priority queue to see if it gets pass that exception.Diva Canto1-7/+28
2009-10-02Change texture sending to be driven by the queue empty event from theMelanie1-2/+7
packet queue, rather than a timer
2009-10-01Removing console debug spewJohn Hurliman1-7/+7
2009-10-01* Rewrote LLImageManager to use a real priority queue and hold minimal stateJohn Hurliman1-207/+117
* Rewrote the logic in J2KImage.RunUpdate() * Added a default avatar texture (I made it myself)
2009-09-30This releases the texture assets from LLImageManager cache, and re-requests ↵Diva Canto1-1/+22
them later if the client asks for them again. Needs more testing in texture-rich sims.
2009-06-25From: Alan Webb <alan_webb@us.ibm.com>Dr Scofield1-44/+37
This change moves texture send processing out of the main packet processing loop and moves it to a timer based processing cycle. Texture packets are sent to the client consistently over time. The timer is discontinued whenever there are no textures to transmit. The behavior of the texture sending mechanism is controlled by three variables in the LLCLient section of the config file: [1] TextureRequestRate (mS) determines how many times per second texture send processing will occur. The default is 100mS. [2] TextureSendLimit determines how many different textures will be considered on each cycle. Textures are selected by priority. The old mechanism specified a value of 10 for this parameter and this is the default [3] TextureDataLimit determines how many packets will be sent for each of the selected textures. The old mechanism specified a value of 5, so this is the default. So the net effect is that TextureSendLimit*TextureDataLimit packets will be sent every TextureRequestRate mS. Once we have gotten a reasonable feeling for how these parameters affect overall processing, it would be nice to autonmically manage these values using information about the current status of the region and network. Note that this also resolves the pathologcal problem that previously existed which was that a seated avatar generated very few in-bound packets (theoretically) and would therefore be the least able to retrieve the images being displayed by a projector script.
2009-06-01Minor: Change OpenSim to OpenSimulator in older copyright headers and ↵Jeff Ames1-1/+1
LICENSE.txt.
2009-05-15Heart surgery on asset service code bits. Affects OpenSim.ini configuration ↵diva1-3/+4
-- please see the example. Affects region servers only. This may break a lot of things, but it needs to go in. It was tested in standalone and the UCI grid, but it needs a lot more testing. Known problems: * HG asset transfers are borked for now * missing texture is missing * 3 unit tests commented out for now
2009-04-29fixes exception thrown when client session is shutdown whileDr Scofield1-0/+2
packethandler still active
2009-04-20It is possible that apacket is recieved before the clint stack is fully ready.Melanie Thielker1-0/+2
This causes a nullref we need to catch here.
2009-04-18Thank you kindly, RemedyTomm for a patch that:Charles Krinke1-51/+102
Following feedback from 0003440, i've made some changes to the new texture pipeline to optimise performance. The changes are: - Fixed a math issue where a small percentage of images with a certain size (on the packet boundary) would not have their final data delivered. This issue has been present since pre- 0003440 - It was suggested that a discardlevel of -1 and a prioriy of 0 meant to abandon the transfer, this is incorrect and caused some textures to clog. - The texture throttle blocking queue is now only filled in relation to the actual throttle amount.. i.e, on a connection throttled to 300k, only twenty packets will be placed in the queue at a time, on a larger connection it will be much more. This is to balance responsiveness to requests and speed, and to minimise wasted packets. - The engine now keeps track of the number of pending textures, and the stack will not be walked if there's no textures pending, saving CPU. Textures are only considered "pending" when they've already been decoded. - As part of the above, some textures may receive twice as much data per cycle if the number of pending textures is below the cycle threshold, this should prevent loading from slowing down when there are fewer textures in the queue.
2009-04-14* Commit a variety of fixes to bugs discovered while trying to fix the NaN ↵Teravus Ovares1-0/+10
singularity. * WebStatsModule doesn't crash on restart. GodsModule doesn't crash when there is no Dialog Module. LLUDPServer doesn't crash when the Operation was Aborted. * ODEPlugin does 'Almost NaN' sanity checks. * ODEPlugin sacrifices NaN avatars to the NaN black hole to appease it and keep it from sucking the rest of the world in.
2009-04-13scream out a bit warning if we failed to set default imageSean Dague1-0/+2
2009-04-13put J2KImage into it's own file, please no doubling up on classes inSean Dague1-316/+0
files
2009-04-10* Patch from RemedyTomm Mantis 3440Teravus Ovares1-507/+410
* Revamps the server side texture pipeline * Textures should load faster, get clogged less, and be less blurry * Minor tweak to ensure the outgoing texture throttle stays private. * Fixes mantis 3440
2009-02-22Mantis#3218. Thank you kindly, TLaukkan (Tommil) for a patch that:Charles Krinke1-7/+11
* Added log4net dependency to physxplugin in prebuild.xml. * Added missing m_log fields to classes. * Replaced Console.WriteLine with appropriate m_log.Xxxx * Tested that nant test target runs succesfully. * Tested that local opensim sandbox starts up without errors.
2009-02-17- remove the Metadata property from AssetBase and return all previousMike Mazur1-1/+1
properties as before - prefix private variables with m_ in AssetBase.cs - related to Mantis #3122, as mentioned in https://lists.berlios.de/pipermail/opensim-dev/2009-February/005088.html - all services will likely need to be upgraded after this commit
2009-02-13* Apply http://opensimulator.org/mantis/view.php?id=3149Justin Clarke Casey1-14/+2
* If the texture does not contain any discard levels the last image packet was not sent * Thanks Snowdrop
2009-02-13* refactor: Move export map function to world map module from sceneJustin Clarke Casey1-6/+0
2009-02-12* optimized usings.lbsa711-5/+3
2009-02-09From Alan Webb <awebb@linux.vnet.ibm.com>Sean Dague1-2/+2
These changes replace all direct references to the AssetCache with IAssetCache. There is no change to functionality. Everything works as before. This is laying the groundwork for making it possible to register alternative asset caching mechanisms without disrupting other parts of OpenSim or their dependencies upon AssetCache functionality.
2009-02-06This changeset is the step 1 of 2 in refactoringDr Scofield1-1/+1
OpenSim.Region.Environment into a "framework" part and a modules only part. This first changeset refactors OpenSim.Region.Environment.Scenes, OpenSim.Region.Environment.Interfaces, and OpenSim.Region.Interfaces into OpenSim.Region.Framework.{Interfaces,Scenes} leaving only region modules in OpenSim.Region.Environment. The next step will be to move region modules up from OpenSim.Region.Environment.Modules to OpenSim.Region.CoreModules and then sort out which modules are really core modules and which should move out to forge. I've been very careful to NOT BREAK anything. i hope i've succeeded. as this is the work of a whole week i hope i managed to keep track with the applied patches of the last week --- could any of you that did check in stuff have a look at whether it survived? thx!
2009-02-04- add OpenSim.Framework.AssetMetadata class. AssetBase is now composed of itMike Mazur1-26/+26
- trim trailing whitespace
2009-01-25* Adds console command, 'predecode-j2k <number of threads>' to load all of ↵Teravus Ovares1-1/+13
the texture assets from the scene and decode the j2k layer data to cache. The work is split between the number of threads you specify. A good number of threads value is the number of cores on your machine minus 1. * Increases the number of ImageDataPackets we send per PriorityQueue pop and tweak it so that the number of packets is ( (2 * decode level) + 1 ) * 2, and (((2 * (5-decode level)) + 1) * 2). The first one sends more data for low quality textures, the second one sends more data for high quality textures.
2009-01-22* Remove a few unnecessary locks to try and prevent lock contention in ↵Teravus Ovares1-7/+7
LLImageManager
2009-01-19* Another image packet edge case. Thanks nebadon for printing a log of itTeravus Ovares1-1/+20
2009-01-19* Set SVN PropertiesTeravus Ovares1-664/+664
2009-01-19* Progressive texture patch + PriorityQueue put into the LLClient namespace.Teravus Ovares1-0/+664
* Updates LibOMV to r2362