summaryrefslogtreecommitdiff
path: root/indra/newview/llvovolume.h
AgeCommit message (Collapse)Author
2010-07-29Yet more cleanup around llmediadataclient.Monroe Linden
In LLVOVolume, added a count of LLMediaDataClientObjectImpl objects referencing each LLVOVolume object. This allows LLVOVolume::markDead() to skip the relatively expensive calls to removeFromQueue() when the LLVOVolume is known to have no active references. Refactored LLMediaDataClient and its two child classes so that only LLObjectMediaDataClient has the round-robin queue (LLObjectMediaNavigateClient doesn't need it), and cleaned up some of the virtual function hierarchy around queue processing. In LLMediaDataClient, added tracking for requests that aren't currently in a queue (i.e. requests that are in flight or waiting for retries) so they can be found when their objects are marked dead. LLMediaDataClient::Request now directly keeps track of the object ID and face associated with the request. Removed the "markedSent" concept from requests. Requests that have been sent are no longer kept in a queue. The Retry timer now references the Request object instead of the Responder. Replaced LLMediaDataClient::findOrRemove() with separate template functions for find and remove.
2010-02-01start to abstract-out the 'is a spotlight' question so one day we can ↵Tofu Linden
perhaps make the UI hurt less.
2010-08-24Backed out changeset a62bf7c0af21Tofu Linden
Backing out this merge that I pushed (prematurely) to the wrong place.
2010-08-24merge heads. whew.Tofu Linden
2010-08-13Change license from GPL to LGPL (version 2.1)Oz Linden
2010-07-29Yet more cleanup around llmediadataclient.Monroe Linden
In LLVOVolume, added a count of LLMediaDataClientObjectImpl objects referencing each LLVOVolume object. This allows LLVOVolume::markDead() to skip the relatively expensive calls to removeFromQueue() when the LLVOVolume is known to have no active references. Refactored LLMediaDataClient and its two child classes so that only LLObjectMediaDataClient has the round-robin queue (LLObjectMediaNavigateClient doesn't need it), and cleaned up some of the virtual function hierarchy around queue processing. In LLMediaDataClient, added tracking for requests that aren't currently in a queue (i.e. requests that are in flight or waiting for retries) so they can be found when their objects are marked dead. LLMediaDataClient::Request now directly keeps track of the object ID and face associated with the request. Removed the "markedSent" concept from requests. Requests that have been sent are no longer kept in a queue. The Retry timer now references the Request object instead of the Responder. Replaced LLMediaDataClient::findOrRemove() with separate template functions for find and remove.
2010-02-05EXT-4209 Fix for sculptie prims not updating geometry when texture is loaded.Dave Parks
2010-02-01start to abstract-out the 'is a spotlight' question so one day we can ↵Tofu Linden
perhaps make the UI hurt less.
2009-12-14Merge of my old precompiled headers dependency cleanup with tip of viewer-2-0.brad kittenbrink
2009-12-11Mergeskolb
2009-12-11EXT-2718 avatar render cost higher in 2.0 than in 1.23Nyx (Neal Orman)
previous fix fixed the double-counting of texture costs. resulting ARC was ~99 points higher for most avatars. This patch makes the cost shoot up again, as ARC was improperly computed in 1.23 and before. This makes the cost for an avatar increase 10 points per prim instead of per-attachment, which is how we have documented it. Also used constants to eliminate magic numbers and increased ARC limit from 1024 to 2048. Will request feedback on change from BSI:STU Code reviewed by Bigpapi --HG-- branch : avatar-pipeline
2009-12-10PARTIAL DEV-43869: LLMediaDataClient now uses two queuesRick Pasetto
This is a fairly major change that addresses the issue of an object with constantly-updating media. Before, that object would be put into our single queue and sorted to a particular spot, and since it continuously updates, it would "always be there". That means that nothing "behind" it would ever get serviced. This change introduces two queues for each MDC: one is the same "sorted" queue as before, and the other is unsorted, and "round-robins". New objects go into the sorted queue, objects whose media we already know about get put into the unsorted queue. The two queues are interleaved when serviced (one then the other is serviced -- if one is empty we try the other -- until they are both drained). The round-robin queue works a little differently: after an item is fetched from that queue (remember this would be an item we already know about), that request is marked and put back at the end of the queue. If that object gets a UDP update while in the queue, that mark is "cleared". When it gets to the front of the queue again, if it still marked, it is thrown away. If it is not marked, it is fetched, and again marked and put at the end. This makes the queue self-limiting in how big it can get. I have also made some other changes: - The sorting comparator now just delegates to the object for its "interest" calculation. A higher value = more interesting. LLVOVolume now uses its PixelArea for its "interest" calculation, which seems apparently better (the prior distance calculation was wrong anyway). - The score is cached before the sort operation is performed, so that it won't be expensive to sort - Now, the media version that is fetched is saved in the LLVOVolume, and we do not update if it is not newer (this is not very useful...yet.) - I've introduced hard limits (settable by debug settings) on the size of the queues. The sorted queue will be culled (after sort) to that count. NOTE: this will probably get removed in a later checkin, as I've already gotten feedback that this is not desirable - I've reorganized LLMediaDataClient so it makes more sense. - I've made the request object a little smaller, so the queue won't take up so much memory (more work could be done here) - Added a unit test for the two-queue case (though more tests are needed!)
2009-11-24mergeLoren Shih
--HG-- branch : avatar-pipeline
2009-11-23EXT-2718 EXT-2434 avatar render cost changesNyx (Neal Orman)
Fixing a but in new ARC function where textures added 5 to the ARC for each use. Expected (and previous) behavior restored, where 5 is added to ARC for each unique texture, regardless of how many faces it is used on. Confirmed new ARC is 99 points higher than previous (20 for each body part), or 119 if avatar is wearing a skirt. Will be post-reviewed before pushing --HG-- branch : avatar-pipeline
2009-11-19Added LLVOVolume::markDead(), which unhooks any prim media instances from ↵Monroe Linden
the dead object.
2009-11-13Refactoring of llviewerprecompiledheaders.h to hopefully increase stabilitybrad kittenbrink
and reduce unnecessary dependencies and incredibuild wedging. Hopefully in the long run this will reduce build time. Also cleaned up a lot of header file usage to conform better to the coding standard. reviewed by james and steve.
2009-11-12EXT-2434 update avatar rendering costNyx (Neal Orman)
First crack at updating the rendering cost calculation for avatars to account for the possibility of invisible avatars. Also generalized rendering cost of attachments to be more general - added debug code to build floater will be post-reviewed
2009-11-10FIX DEV-41991: do not allow media settings panel to come up if media data is ↵Rick Pasetto
in flight Review #33 This change marks the current selection "not editable" if any objects in the selection are currently "in flight" (i.e. their media data has not been fetched yet, or is in the process of being fetched). This involved adding API to LLMediaDataClient to query whether an object is in the process of being fetched (i.e. in the queue). I've added a unit test for this new API.
2009-11-06Partial fix for DEV-42153.Monroe Linden
This code seems to work on some objects and not on others. I suspect I'm not doing something quite right in LLVOVolume::getApproximateFaceNormal().
2009-11-06merge from texture-pipelineSteve Bennetts
2009-11-06merge QAR-1829: texture pipeline branch in viewer-2.0.0.3Xiaohong Bao
2009-10-21DEV-41600: one last change: rename INTERACT and CONTROl to ↵Rick Pasetto
MEDIA_PERM_INTERACT and MEDIA_PERM_CONTROL
2009-10-21DEV-41600 Refactored my previous change based on review feedback from monroeRick Pasetto
2009-10-19Fix for a case where the webkit plugin never generates a LOCATION_CHANGED ↵Monroe Linden
event at all.
2009-10-09Unit tests for LLMediaDataClientRick Pasetto
This required a bit of refactoring of LLMediaDataClient: - Created LLMediaDataClientObject ABC, which now has a concrete impl in LLVOVolume - Created unit test with 6 tests (for now), testing - LLObjectMediaDataClient::fetchMedia() - LLObjectMediaDataClient::updateMedia() - LLObjectMediaNavigateClient::navigate() - queue ordering - retries - nav bounce back - Also ensures that ref counting works properly (this is important, because ownership is tricky with smart pointers put into queues, peeled off into timers that fire and auto destruct, and HTTP responders that also auto-destruct) - Had to fix LLCurl::Responder's stub, which was not initializing the ref count to 0, causing the ref counting tests to fail (boy, that was hard to find!). Reviewed by Callum
2009-10-07DEV-39168 - bounce back to the current URL (or, the home URL if current URL ↵Rick Pasetto
is "") if the server denies navigation This refactors some of the bounceBack code into LLVOVolume. It also changes an important rule: the edit panel now *will* send the current URL to the server when you hit "OK". This change was done so that if autoplay is on, we make sure the server gets the right data.
2009-10-05DEV-40650: Refactor llmediadataresponder and llmediadatafetcher into a ↵Rick Pasetto
single reusable class CC Review #7 (monroe) LLMediaDataResponder and LLMediaDataFetcher were helpful classes that interacted with each other, but they were not general enough to cleanly be used for all media service interaction. This change refactors these classes into one (in fact, it is closer to a complete rewrite): LLMediaDataClient. This class has the following design points: - You subclass from it when you want to specialize the responder, and then subclass from LLMediaDataClient::Responder if desired - It has a few inner classes: - LLMediaDataClient::Request, which now holds all of the data pertaining to a request, including retry counts - LLMediaDataClient::Responder, which is now the LLHTTPClient::Responder - LLMediaDataClient::PriorityQueue, which is now a STL priority_queue of Request objects. - LLMediaDataClient::QueueTimer, which is the timer that fires to peel off queue items - LLMediaDataClient::Responder::RetryTimer, which is the timer that is used when 503 errors are received. The encapsulation of these inner classes is a lot cleaner and better reflects the scope of their responsibilities. By and large, the logic hasn't really changed much. However, now there are two subclasses of LLMediaDataClient: one for the ObjectMedia cap and the other for the ObjectMediaNavigate cap. (I decided it was overkill to make three subclasses, one each for GET, UPDATE, and NAVIGATE, but we could still do that). LLVOVolume now instantiates both of these classes as statics (and destroys them on shutdown). They now have very simple API: - LLObjectMediaDataClient::fetchMedia(LLVOVolume*) fetches the media for the given object - LLObjectMediaDataClient::updateMedia(LLVOVolume*) sends an UPDATE of the media from the given object - LLObjectMediaNavigateClient::navigate(LLVOVolume*, U8 texture_index, const std::string &url) navigates the given face (texture_index) on the given object to the given url.
2009-10-01svn merge -r 134922:134973 ↵Monroe Williams
svn+ssh://svn.lindenlab.com/svn/linden/branches/media-on-a-prim/moap-7 Merging branches/media-on-a-prim/moap-7 down to viewer-2.0.
2009-09-22Merging render-pipeline-6-qa-2 into viewer-2David Parks
Self reviewed.
2009-07-10merge QAR-1579: texture-cleanup-1.Xiaohong Bao
2009-06-27fix for DEV-27483/SEC-283: Viewer crash: LLXform::setParent Creating loop ↵Xiaohong Bao
when setting parent
2009-06-23Fixed a bunch of missing includes and forward declares. I was trying to ↵James Cook
benchmark with precompiled headers off, but we'll have to do a bunch more cleanup before it's possible to disable that feature cleanly. Not reviewed.
2009-02-18Merge of QAR-1267 to trunk. This was a combo merge of QAR-1175 ↵Brad Kittenbrink
(maint-render-9) and QAR-1236 (dll-msvcrt-2) svn merge -r 109838:112264 svn+ssh://svn.lindenlab.com/svn/linden/branches/maint-render/maint-render-9-merge-r109833
2009-01-08Result of svn merge -r107256:107258 ↵Aaron Brashears
svn+ssh://svn/svn/user/phoenix/license_2009_merge into trunk. QAR-1165
2008-11-07QAR-992 Merging revisions 101012-101170,101686-101687 of ↵Mark Palange
svn+ssh://svn.lindenlab.com/svn/linden/qa/viewer_combo_1-22-merge into linden/release
2008-08-12QAR-767 Combined maint-render-7 and maint-viewer-9 mergeSteven Bennetts
merge release@93398 viewer-merge-1@94007 -> release dataserver-is-deprecated
2008-07-23svn merge -r92720:92721 ↵Karl Steifvater
svn+ssh://svn.lindenlab.com/svn/linden/branches/uv-picking-merge QAR-698 / DEV-9985 add touch "position" information to touch-events in LSL
2008-07-22svn merge -r92710:92709 svn+ssh://svn.lindenlab.com/svn/linden/release --> ↵Josh Bell
release Undo r92710 (for QAR-698) - went straight into release instead of a side branch for validation.
2008-07-22merge uv-picking branch.Karl Steifvater
svn merge -r92602:92632 svn+ssh://svn.lindenlab.com/svn/linden/branches/uv-picking-4
2008-04-031.19.1 Viewer merge: QAR_367, QAR-374, QAR-408, QAR-426Steven Bennetts
QAR_367 (RC1) - merge Branch_1-19-1-Viewer -r 81609 : 81993 -> release QAR-374 (RC2) - merge Branch_1-19-1-Viewer -r 81993 : 82589 -> release QAR-408 (RC3) - merge Branch_1-19-1-Viewer -r 82589 : 83128 -> release QAR-426 (rc4) - merge Branch_1-19-1-Viewer -r 83125 : 83719 -> release (Actual merge: release@83793 Branch_1-19-1-Viewer-merge@83953 -> release)
2008-02-27Merge of windlight into release (QAR-286). This includes all changes inBrad Kittenbrink
windlight14 which have passed QA (up through r79932). svn merge -r 80831:80833 svn+ssh://svn.lindenlab.com/svn/linden/branches/merge_windlight14_r80620
2007-10-04Result of svn merge -r71162:71205 ↵Aaron Brashears
svn+ssh://svn/svn/linden/branches/new-license into release. only changes files which are not deployed or the comments section of code.
2007-06-21merge -r62831:64079 branches/maintenance to releaseKelly Washington
2007-06-04svn merge -r 62602:62831 ↵Josh Bell
svn+ssh://svn.lindenlab.com/svn/linden/branches/maintenance --> release
2007-05-23svn merge svn+ssh://svn.lindenlab.com/svn/linden/release@62339 ↵Brad Kittenbrink
svn+ssh://svn.lindenlab.com/svn/linden/branches/release-candidate62341 -> release
2007-03-16merge -r 59028:59178 maintenance -> release.Steven Bennetts
2007-03-09svn merge -r 58902:58986 ↵Josh Bell
svn+ssh://svn.lindenlab.com/svn/linden/branches/maintenance --> release
2007-03-07merge -r 58751:58843 maintenance -> releaseSteven Bennetts
2007-03-02merge release@58699 beta-1-14-0@58707 -> releaseSteven Bennetts
2007-01-02Print done when done.James Cook