summaryrefslogtreecommitdiff
path: root/indra/newview/llvovolume.cpp
AgeCommit message (Collapse)Author
2010-01-28Merge from viewer2 trunk.Tofu Linden
2010-01-27CID-355Tofu Linden
Checker: UNINIT_CTOR Function: LLVOVolume::LLVOVolume(const LLUUID &, unsigned char, LLViewerRegion *) File: /indra/newview/llvovolume.cpp
2010-01-20merge.Tofu Linden
2010-01-20FIX EXT-4052: Make sure bounceback url has a schemeRick Pasetto
Review #83 The function LLMediaEntry::checkCandidateURL() assumes the URL passed in at least has a scheme part (i.e. a ":"). This fixes the bounceBack code to assure that.
2010-01-20Merge from viewer2. Minor conflict resolved.Tofu Linden
2010-01-19FIX EXT-4468 DEV-41991: Make selected objects "more important" when loading ↵Rick Pasetto
their media data
2010-01-13Merge.Tofu Linden
2010-01-08code review feedback: fixed commentRick Pasetto
2010-01-08FIX EXT-4052: don't bounce back if url does not pass whitelistRick Pasetto
http://codereview.lindenlab.com/265005/show
2010-01-07Merge latest fixes from viewer2.Tofu Linden
2010-01-07EXT-3973 viewer crashNyx (Neal Orman)
Rendering cost calculations didn't handle the case of a face having no image associated with it. Added in null checks before using the pointer to the image. Crash no longer repros. Code reviewed by Vir.
2010-01-04Merge from trunk. Conflicts manually resolved in:Tofu Linden
U indra/llui/lluictrlfactory.cpp U indra/newview/llinventorybridge.cpp U indra/newview/llviewertexture.cpp U indra/newview/llviewertexture.h
2009-12-18Merge with viewer-2-0Dave Parks
2009-12-18Slight hack: if pixel area is 1024, force recalculation of itRick Pasetto
This is because I've observed that in heavy regions, media was not getting loaded because the queue items were stuck with the head item at interest = 1024. This is the "default" value, which means it probably wasn't calculated yet. This forces the calculation. Also cleaned up some logging in mediadataclient
2009-12-15Add a PrimMediaMasterEnabled debug flag to allow us to disable the media ↵Rick Pasetto
data client Conceptually reviewed by Monroe
2009-12-15mergeDave Parks
2009-12-15HTTP Mesh transfer relatively blocking-free.Dave Parks
2009-12-14Merging in latest viewer 2Palmer Truelson
2009-12-11HTTP Mesh fetch FTW.. still bustedDave Parks
2009-12-11Mergeskolb
2009-12-14Change LLViewerMedia::isInterestingEnough() to also check selectionRick Pasetto
If the object is in the selection, its interesting. Load its media data ASAP. Conceptually reviewed by monroe
2009-12-14Automated merge with ssh://rick@hg.lindenlab.com/skolb/mediaRick Pasetto
2009-12-14Allow selection of media faces even if there is no impl. We recordRick Pasetto
the target object and use that fact to raise its interest level. This is mostly a pass-off for monroe to take and run with
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 - add "isInterestingEnough()" to the queue calculationRick Pasetto
This change bumps the queue sizes way up, because we think that the "isInterestingEnough()" call will prevent loading more media data than we think is necessary. Still need to implement it in LLVOVolume, though
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-12-07Merge of viewer 2 changesPalmer
2009-12-01Fix a signed/unsigned warning that breaks the Windows build.callum
2009-12-01Fix for EXT-2836 (Changing texture on Media on a Prim face removes MoaP ↵Monroe Linden
functionality). LLVOVolume::regenFaces() (specifically the calls to facep->setTexture()) breaks associations between faces and LLViewerMediaTexture objects when called on a prim with playing media. This change adds code which recreates the associations.
2009-11-30Linker optimization - use "extern template" for commonly regenerated templatesJames Cook
Also replaced many duplicate calls to LLViewerCamera::getInstance() with local pointer. Reviewed with Ambroff
2009-11-25Merge of viewer 2Palmer Truelson
2009-11-25Fix for spam on invalid mesh asset.Dave Parks
Fix for index buffer overflow spam and crash in llvertexbuffer.
2009-11-24mergeLoren Shih
--HG-- branch : avatar-pipeline
2009-11-24Fix for copying of tetrahedrons in place of mesh LODs.Dave Parks
Fix for bad tetrahedron bounding box. Bad fix for simultaneous loading of multiple LODs.
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-20Clean up some loggingRick Pasetto
2009-11-19Made LLMediaDataClient not send requests on behalf of objects that are ↵Monroe Linden
marked as dead. When LLMediaDataClient::QueueTimer::tick() encounters an object at the head of the queue that's dead, it will now remove that object and loop, instead of sending a request and waiting for the tick timer to fire again. Added an isDead() function to LLMediaDataClientObject, and an additional unit test that verifies the handling of dead objects.
2009-11-19Added LLVOVolume::markDead(), which unhooks any prim media instances from ↵Monroe Linden
the dead object.
2009-11-17Automated merge with ssh://palmer@hg.lindenlab.com/viewer/viewer-2-0Palmer
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-11Merged in viewer 2 changes, adjusted xui problems, added mesh folder type ↵Palmer
and more mesh inventory type info
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-10Automated merge with ssh://rick@hg.lindenlab.com/viewer/viewer-2-0/Rick Pasetto
2009-11-09PARTIAL FIX (workaround) DEV-41949: LLMediaEntry::setWhitelist() and ↵Rick Pasetto
LLMediaEntry::asLLSD() have a contract conflict Review #31 So, here's what was happening, briefly: - LLMediaEntry::setWhitelist() would be a no-op if given an LLSD that did not have a WHITELIST_KEY - LLMediaEntry::asLLSD() would render the LLMediaEntry *without* a WHITELIST_KEY if the whitelist was empty Therefore, when the viewer marshalled an LLMediaEntry for the server, it would send it without a WHITELIST_KEY. When the server got it, it would not erase the last value. This is actually a workaround: it patches asLLSD() with an LLSD::emptyArray() if the key is not there. However, this should be fixed on the server: in either or both of the following ways: 1) LLMediaEntry::setWhitelist() should not be a no-op if the LLSD has no WHITELIST_KEY: it should erase the whitelist 2) LLMediaEntry::asLLSD() should render an empty whitelist in WHITELIST_KEY as an empty array Note that both could be done and still work. A unit test should and will be written next.
2009-11-09Fix for DEV-42029 (changing media on multiple faces can make a zombie SLPlugin).Monroe Linden
Made LLViewerMedia::updateMediaImpl() unload the impl's media plugin when the current URL goes empty. Made LLVOVolume::syncMediaData() call removeMediaImpl() if the media data gets deleted.
2009-11-09Fix signed/unsigned build breakage in llvovolume.cppJames Cook
2009-11-09Better fix for DEV-42153.Monroe Linden
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-06mergeSteve Bennetts
2009-11-06merge from texture-pipelineSteve Bennetts