Commit Graph

118 Commits (8f892d0f36fda170a5cecf0aea89887d6d0e45ef)

Author SHA1 Message Date
Leyla Farazha abd4a4e966 EXT-6957 Media Navigation & Interaction does not work for "Group" if "Anyone" is disabled.
reviewed by richard cc#216
2010-06-17 16:18:25 -07:00
Xiaohong Bao 0f7277b98b EXT-7327: FIXED: viewer crash in LLVOVolume::syncMediaData on Meshopotamia 1 2010-05-13 14:43:24 -06:00
Tofu Linden 10905a7ed1 merge from viewer-hotfix 2010-04-15 10:22:42 +01:00
Dave Parks 663725dcee Remove calls to llpushcallstacks from inner loops. 2010-04-14 12:02:25 -05:00
Loren Shih b1b5a11bb0 EXT-3075 : Remove swear words from comments across viewer
This bugs me in a minor way.  Did a search-and-cleanup on various swear words.
2010-03-29 15:33:48 -04:00
Soft Linden 25a8ccd364 DEV-46613 Non-sculpty with sculpty parameters corrupts all similar geometries 2010-03-19 14:22:00 -07:00
Dave Parks 3694060444 VWR-17462 Fix for some updates not getting applied properly. 2010-02-26 16:07:11 -06:00
Dave Parks adf601ef1f Draw prims using triangle strips instead of triangle lists. 2010-02-06 17:33:12 -06:00
Palmer Truelson 0980df1e0c merge 2010-02-23 17:07:18 -08:00
Palmer Truelson da79eb5545 Turning on Davep optimizations again. Backed out changeset d89b00b44ab6 2010-02-23 16:48:49 -08:00
Xiaohong Bao 0bf136e13c fix for EXT-5528: Viewer hangs indefinitely after teleporting into this region.
for EXT-5550: Viewer locks up consistently on the same sim.
2010-02-19 12:41:49 -07:00
Tofu Linden 710687ce67 CID-208
Checker: REVERSE_INULL
Function: LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup *)
File: /indra/newview/llvovolume.cpp
2010-02-13 13:49:08 +00:00
Palmer Truelson 3b8463f0fd merge 2010-02-12 21:06:25 -08:00
Palmer Truelson 1f672990e7 Backed out davep's optimization pass. changeset 3c3685de430a 2010-02-12 21:06:02 -08:00
Palmer 418504207b merge 2010-02-12 15:16:19 -08:00
Xiaohong Bao fb994809f4 fix for EXT-5353: prim visibility issues. 2010-02-11 14:58:08 -08:00
Dave Parks 43ca4e104b EXT-4209 Fix for sculptie prims not updating geometry when texture is loaded. 2010-02-05 11:19:14 -06:00
Dave Parks 8e67ecf3dc Optimization pass.
-- Further instrumentation of idle update
-- Removed mActiveQ from LLPipeline, instead making calm objects static during LLVOVolume::idleUpdate
-- Further instrumentation of flexible object update
-- Converted LLDynamicArray and LLMap members of LLViewerObjectList to stl counterparts
-- Increased number of update bins in LLViewerObjectList from 16 to 128 (objects will be processed every 128 frames instead of every 16, or ~ 90% fewer objects processed per frame)
-- Removed unused "renderObjectsForSelect" code.
-- Reenabled LOD updates for objects further than 24m from camera
2010-02-03 12:33:32 -06:00
Tofu Linden 6d68de504f CID-355
Checker: UNINIT_CTOR
Function: LLVOVolume::LLVOVolume(const LLUUID &, unsigned char, LLViewerRegion *)
File: /indra/newview/llvovolume.cpp
2010-01-27 16:58:58 -08:00
Rick Pasetto 4ff75762d1 FIX EXT-4052: Make sure bounceback url has a scheme
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-20 14:46:15 -08:00
Rick Pasetto 6d952dd40d FIX EXT-4468 DEV-41991: Make selected objects "more important" when loading their media data 2010-01-19 12:24:58 -08:00
Rick Pasetto d33b72c318 code review feedback: fixed comment 2010-01-08 12:25:10 -08:00
Rick Pasetto f5fd0729b6 FIX EXT-4052: don't bounce back if url does not pass whitelist
http://codereview.lindenlab.com/265005/show
2010-01-08 12:18:21 -08:00
Nyx (Neal Orman) 80db391816 EXT-3973 viewer crash
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-07 11:36:11 -05:00
Rick Pasetto fb862f1815 Slight hack: if pixel area is 1024, force recalculation of it
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-18 11:05:44 -08:00
Rick Pasetto fc40740e1e Add a PrimMediaMasterEnabled debug flag to allow us to disable the media data client
Conceptually reviewed by Monroe
2009-12-15 17:04:09 -08:00
Rick Pasetto c0eb697a53 Change LLViewerMedia::isInterestingEnough() to also check selection
If the object is in the selection, its interesting.  Load its media data
ASAP.

Conceptually reviewed by monroe
2009-12-14 17:39:24 -08:00
Rick Pasetto 5b6e4577ae Automated merge with ssh://rick@hg.lindenlab.com/skolb/media 2009-12-14 12:04:05 -08:00
Rick Pasetto da3ca7c5b9 Allow selection of media faces even if there is no impl. We record
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-14 12:03:44 -08:00
skolb f51bf5d618 Merge 2009-12-11 12:36:46 -08:00
Nyx (Neal Orman) 3089e1a17a EXT-2718 avatar render cost higher in 2.0 than in 1.23
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-11 12:07:35 -05:00
Rick Pasetto 2d01d763d5 PARTIAL DEV-43869 - add "isInterestingEnough()" to the queue calculation
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-10 17:03:40 -08:00
Rick Pasetto 248427b8f9 PARTIAL DEV-43869: LLMediaDataClient now uses two queues
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-10 14:21:48 -08:00
callum 9ad99e1773 Fix a signed/unsigned warning that breaks the Windows build. 2009-12-01 19:19:41 -08:00
Monroe Linden 37e701dba9 Fix for EXT-2836 (Changing texture on Media on a Prim face removes MoaP 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-12-01 16:21:29 -08:00
James Cook 7d3b3cc474 Linker optimization - use "extern template" for commonly regenerated templates
Also replaced many duplicate calls to LLViewerCamera::getInstance() with local pointer.
Reviewed with Ambroff
2009-11-30 14:41:52 -08:00
Loren Shih a22bb00530 merge
--HG--
branch : avatar-pipeline
2009-11-24 12:10:10 -05:00
Nyx (Neal Orman) ca5e49d5fa EXT-2718 EXT-2434 avatar render cost changes
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-23 15:12:48 -05:00
Rick Pasetto 3bb86f91bc Clean up some logging 2009-11-20 14:01:49 -08:00
Monroe Linden ba3f7965e3 Made LLMediaDataClient not send requests on behalf of objects that are 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-19 16:35:11 -08:00
Monroe Linden 320dfa1d72 Added LLVOVolume::markDead(), which unhooks any prim media instances from the dead object. 2009-11-19 15:01:27 -08:00
Nyx (Neal Orman) 1aa4e4e68d EXT-2434 update avatar rendering cost
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-12 20:54:00 -05:00
Rick Pasetto 353ac3969e FIX DEV-41991: do not allow media settings panel to come up if media data is 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-10 17:24:02 -08:00
Rick Pasetto 42dc307954 Automated merge with ssh://rick@hg.lindenlab.com/viewer/viewer-2-0/ 2009-11-10 09:41:19 -08:00
Rick Pasetto f4186b6d3d PARTIAL FIX (workaround) DEV-41949: LLMediaEntry::setWhitelist() and 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-09 18:17:42 -08:00
Monroe Linden caadf0be39 Fix for DEV-42029 (changing media on multiple faces can make a zombie SLPlugin).
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-09 16:19:33 -08:00
James Cook b82fadeda8 Fix signed/unsigned build breakage in llvovolume.cpp 2009-11-09 14:01:32 -08:00
Monroe Linden e477a74feb Better fix for DEV-42153. 2009-11-09 12:14:29 -08:00
Monroe Linden 5fba55f58e Partial fix for DEV-42153.
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-06 19:30:52 -08:00
Steve Bennetts 0db73b1ac5 merge 2009-11-06 12:20:52 -08:00