Evolving article purpose
From Scalar Tardis / Dale Mahalko: This started out as a list of references in the client source to the keyword VFS, which then became more useful in table format when I noticed the gVFS and gStaticVFS. As I explored the code further I noted the related file access procedures of the LFS and then discovered the use of the Apache Portable Runtime used to replace the LFS.
There is no official stated policy anywhere, but it would appear there is an effort to replace the LFS calls with APR calls, and perhaps eventually, also replacing VFS calls with APR calls. Local file storage based purely on the APR may be faster and more stable than previous methods created in-house by Linden Lab, and would make the client much easier to port to more widely varying OS platforms since the APR is already widely deployed across many platforms. And as the Wikipedia article for the APR states, if an OS doesn't directly support some needed feature, the APR will directly implement that feature itself, making it very useful to replace as many legacy calls with APR calls.
Notes on the source code references
The following list of source references is based on viewer source released 1.19.1.4 in the SVN repository, and will need future updating as the viewer source continues to evolve:
This listing duplicates the layout and format of the Viewer Source Files page, providing a direct 1-to-1 correspondence with each section and source file. Although the source list only includes .cpp files, if a matching .h file is found it is listed here below the .cpp for that name.
Table column headings
Each column of these tables refer to:
- VFS - any reference to this keyward. "VFS" is not used in the code alone, and so is usually referring to comments in the source, or debugging/logging notes.
- gVFS - the "general VFS" which is used for temporary storage for assets, in a private RAM-disk held in memory at all times. It is the primary limitation for allowing unlimited local asset caching in the viewer as currently designed. This needs to be removed and replaced with direct filesystem calls to folder-based storage.
- gStaticVFS - a read-only VFS in "static_data.db2" and "static_index.db2". This contains the graphical elements and sounds of the Second Life user interface. It's only about 8 megabytes, but why does it have to be fully loaded in a virtual RAM-disk all the time using limited system memory? May be worthwhile to replace this with direct on-disk storage, perhaps in a ZIP file.
- LLVFile - the purpose of this code is still unclear (to Scalar Tardis / Dale Mahalko) but this appears to be how the two different VFS are accessed. The LLVFile is a general procedure for accessing both of them.
- LLLFS - the "Local File System" procedures, used to directly read and write to the local OS storage. The audio manager for example uses LLLFS calls to write decoded OGG sounds as WAV files in the cache directory.
- apr_file - it appears that the Apache Portable Runtime is being used to replace calls to the LFS in the client source. The LFS can probably be regarded as legacy code which should not be used if possible, and by association, the VFS may also eventually be retired, replaced with direct filesystem APR calls.
VFS removal/replacement
As has been discussed in the sl-dev mailing list and in the JIRA, the VFS does not scale up very well at all since it functions as a private RAM-disk for non-texture assets downloaded by the viewer. The on-disk VFS files are used only for storage when the viewer is not running. At startup, the files are parsed for errors and loaded into memory, and continue to occupy memory until the viewer exits and the contents are written back to the disk files.
As a RAM disk, increasing the cache size to larger than the available free memory causes the computer to run out of physical RAM and require the use of virtual memory and disk swapping. This is counterproductive when the intent of increasing the VFS size is to cache more of the frequently-used data to speed up the client and reduce network traffic.
In order to permit the cache of assets currently stored in the VFS to grow to gigabytes of storage without requiring gigabytes of physical memory to store it, the existing VFS will have to be removed from the viewer and replaced with a traditional file/directory-based disk cache.
Need for lightweight asset obfuscation
In the interests of copyright protection, a directory-based non-texture asset cache should include some form of low-impact data obfuscation, to make it slightly difficult for the copyrighted works of other SL users held in the cache to be casually copied and examined.
As has been discussed in SL-Dev, heavy and slow cache encryption would serve no purpose since a decryption tool can be easily built using the client source that would do the cache decrypting. So it's better to just use a simple and fast obfuscation technique which discourages casual asset theft.
General - Main and Startup
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llstartup.cpp
|
X
|
X
|
|
X
|
|
|
|
apr_file::no
|
llappviewer.cpp
|
X
|
X
|
X
|
X
|
X
|
X
|
X
|
apr_file::no
|
llappviewer.h
|
X
|
X
|
X
|
X
|
|
|
|
apr_file::no
|
General - Window Management and Render Pipeline
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
pipeline.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerdisplay.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerprecompiledheaders.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerprecompiledheaders.h
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llviewerwindow.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llwindebug.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
General - Filesystem Access and Storage
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
lllfsthread.cpp
|
|
|
|
|
|
X
|
X
|
apr_file::no
|
lllfsthread.h
|
|
|
|
|
|
X
|
|
apr_file::no
|
llvfile.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llvfile.h
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llvfs.cpp
|
X
|
|
|
X
|
|
|
X
|
apr_file::no
|
llvfs.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llvfsthread.cpp
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llvfsthread.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llxfer_vfile.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llxfer_vfile.h
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
General - Utility and Misc
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llbbox.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llbox.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llcallbacklist.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llcontroldef.cpp
|
X
|
|
|
|
|
|
|
apr_file::no
|
lleventnotifier.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lleventpoll.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhippo.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llregionposition.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
moviemaker.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
noise.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
Rendering - Asset Management
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llassetuploadresponders.cpp
|
X
|
X
|
|
|
|
|
|
apr_file::no
|
lltexturecache.cpp
|
|
|
|
|
|
X
|
X
|
apr_file::no
|
lltexturefetch.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerassetstorage.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llviewerassetstorage.h
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llwearable.cpp
|
X
|
X
|
|
|
|
|
|
apr_file::no
|
llwearablelist.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
Rendering - Character and Animation
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
lldriverparam.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llemote.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewergesture.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvoavatar.cpp
|
X
|
|
X
|
|
|
|
X
|
apr_file::no
|
llcharacter(???)
|
Rendering - Camera
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llcameraview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfollowcam.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llmorphview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewercamera.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
Rendering - Effects
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llhudconnector.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudeffect.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudeffectbeam.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudeffectlookat.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudeffectpointat.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudeffecttrail.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudicon.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudmanager.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudobject.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudrender.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudtext.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llhudview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltracker.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvelocitybar.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvotextbubble.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
Rendering - Environment
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llvlmanager.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvlcomposition.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvoclouds.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvosurfacepatch.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvoground.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvosky.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvostars.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvowater.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llwind.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
Rendering - Viewer Objects: Volumes, Particles, and Trees
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llvocache.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvograss.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvoinventorylistener.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvopartgroup.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvotree.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvovolume.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
Rendering - Render Pipeline
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llcloud.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llcubemap.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llcylinder.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawable.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpool.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpoolalpha.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpoolavatar.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpoolbump.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpoolclouds.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpoolground.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpoolsimple.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpoolsky.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpoolstars.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpoolterrain.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpooltree.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldrawpoolwater.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldynamictexture.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llface.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfeaturemanager.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llflexibleobject.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llglsandbox.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llglslshader.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpatchvertexarray.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpolymesh.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpolymorph.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llsky.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llspatialpartition.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llsphere.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llsprite.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llsurface.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llsurfacepatch.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltexlayer.cpp
|
X
|
X
|
|
|
X
|
|
|
apr_file::no
|
llviewerimage.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llviewerimage.h
|
|
|
|
|
X
|
|
|
apr_file::no
|
llviewerimagelist.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llviewerjoint.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerjointattachment.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerjointmesh.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerjointshape.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerlayer.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerobject.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerobjectlist.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerpartsim.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerpartsource.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewertextureanim.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewervisualparam.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
Input and Output - Audio
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
fmodwrapper.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
audioengine.cpp
|
X
|
X
|
|
X
|
|
|
|
apr_file::no
|
audioengine.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
audioengine_fmod.cpp
|
|
|
|
|
|
|
X
|
apr_file::no
|
llaudiodecodemgr.cpp
|
X
|
X
|
X
|
|
X
|
X
|
|
apr_file::no
|
llaudiodecodemgr.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llaudiosourcevo.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llaudiostatus.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
vorbisdecode.cpp
|
X
|
|
|
X
|
X
|
|
X
|
apr_file::no
|
vorbisdecode.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
vorbisencode.cpp
|
|
|
|
|
|
|
X
|
apr_file::no
|
Input and Output - Input
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llviewerjoystick.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerkeyboard.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
Data and Communication - Agents
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llagent.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llagentdata.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llagentpilot.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
Data and Communication - Region and World
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llviewerregion.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llworld.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
Data and Communication - Network
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llasynchostbyname.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llcaphttpsender.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llurl.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llurlwhitelist.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lluserauth.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewergenericmessage.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewermessage.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llviewermessage.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llviewernetwork.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerthrottle.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llweb.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llxmlrpctransaction.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Alerts
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llconfirmationmanager.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfirstuse.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llnotify.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Assets
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llcompilequeue.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llcompilequeue.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llfloateranimpreview.cpp
|
X
|
X
|
|
|
X
|
|
X
|
apr_file::no
|
llfloatergesture.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterimagepreview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterinspect.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloateropenobject.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterproperties.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterscriptdebug.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpreview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpreviewanim.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpreviewgesture.cpp
|
X
|
X
|
|
X
|
X
|
|
|
apr_file::no
|
llpreviewgesture.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llpreviewlandmark.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpreviewnotecard.cpp
|
X
|
X
|
|
X
|
X
|
|
|
apr_file::no
|
llpreviewnotecard.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llpreviewscript.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llpreviewscript.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llpreviewsound.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpreviewtexture.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Avatar Appearance
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llfloaterclothing.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatercustomize.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llgenepool.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llgesturemgr.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llgesturemgr.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llpanelmorph.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Chat, Instant Messaging, Notices, Reports
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llchatbar.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterchat.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatermute.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaternewim.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterpostcard.cpp
|
X
|
X
|
|
X
|
X
|
|
|
apr_file::no
|
llfloaterreporter.cpp
|
X
|
X
|
|
|
X
|
|
|
apr_file::no
|
llgroupmgr.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llgroupnotify.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llimpanel.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llimview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lllogchat.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llmutelist.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Data
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llclassifiedinfo.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lleventinfo.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterabout.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterauction.cpp
|
X
|
X
|
|
X
|
X
|
|
|
apr_file::no
|
llfloateravatarinfo.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatergroupinfo.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatergroupinvite.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatergroups.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterland.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterlandholdings.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterregioninfo.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llfloaterregioninfo.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llfloatertelehub.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatertos.cpp
|
|
|
|
|
X
|
|
|
apr_file::no
|
llfloatertos.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llpanelavatar.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelclassified.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelevent.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelgroup.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelgroupgeneral.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelgroupinvite.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelgrouplandmoney.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelgroupnotices.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelgrouproles.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelgroupvoting.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelland.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanellandobjects.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanellandoptions.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Data:Inventory
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llcallingcard.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterfriends.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llinventoryactions.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llinventorybridge.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llinventoryclipboard.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llinventorymodel.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llinventoryview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lllandmarklist.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
lllandmarklist.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llviewerinventory.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Data:Money and Land
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llcurrencyuimanager.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llgivemoney.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterbuy.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterbuycontents.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterbuycurrency.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterbuyland.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatersellland.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Data:Search
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llfloaterdirectory.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldirbrowser.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldirclassified.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldirevents.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldirfind.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldirgroups.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldirland.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldirpeople.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldirplaces.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldirpopular.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelpick.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelplace.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Data:Map
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llcompass.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatermap.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterworldmap.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llmapresponders.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llnetmap.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llworldmap.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llworldmapview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Objects and Edit Tools
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llhoverview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llmanip.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llmaniprotate.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llmanipscale.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llmaniptranslate.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterbuildoptions.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterbump.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatercolorpicker.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterpermissionsmgr.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatertools.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelcontents.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelface.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelgeneral.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelinventory.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelobject.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelpermissions.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llselectmgr.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltool.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolbar.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolbrush.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolcomp.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltooldraganddrop.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolface.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolfocus.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolgrab.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolgun.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolindividual.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolmgr.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolmorph.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolobjpicker.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolpie.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolpipette.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolplacer.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolselect.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolselectland.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolselectrect.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltoolview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerparcelmgr.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerparceloverlay.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - HTML
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llfloaterhtml.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterhtmlfind.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaterhtmlhelp.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Import, Export, Upload
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llfloaterimport.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatersaveavatar.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatersnapshot.cpp
|
X
|
X
|
|
X
|
X
|
|
|
apr_file::no
|
lluploaddialog.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llmediaremotectrl.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llmenucommands.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llmoveview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lloverlaybar.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanellogin.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llprogressview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewermenu.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llviewermenu.h
|
|
|
|
|
|
|
|
apr_file::no
|
llviewermenufile.cpp
|
X
|
X
|
|
|
X
|
|
X
|
apr_file::no
|
User Interface - Preferences
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llfloaterpreference.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelaudioprefs.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llprefschat.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llprefsim.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldisplay.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelmsgs.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelnetwork.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelvolume.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpanelweb.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Utility
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llcolorscheme.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldirpicker.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfilepicker.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloateravatarpicker.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloaternamedesc.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llsavedsettingsglue.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewchildren.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Widgets
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llcolorswatch.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llcontainerview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfolderview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llnamebox.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llnameeditor.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llnamelistctrl.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltexturectrl.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lljoystickbutton.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewertexteditor.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llvieweruictrlfactory.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llwebbrowserctrl.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
User Interface - Debug
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llconsole.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldebugmessagebox.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lldebugview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfasttimerview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llframestats.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llframestatview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llmemoryview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloateravatartextures.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatereditui.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatergodtools.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatertest.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llfloatertopobjects.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llpaneldebug.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llstatbar.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llstatgraph.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llstatusbar.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llstatview.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
lltextureview.cpp
|
|
|
|
|
|
X
|
|
apr_file::no
|
llvelocitybar.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewercontrol.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llviewerstats.cpp
|
X
|
|
|
|
X
|
|
|
apr_file::no
|
llviewerstats.h
|
X
|
|
|
|
|
|
|
apr_file::no
|
Unlisted in Viewer Source Files page
file
|
VFS
|
gVFS
|
gStaticVFS
|
LLVFS
|
LLVFile
|
LLLFS
|
ll_apr_file
|
apr_file
|
llapr.cpp
|
|
|
|
|
|
|
X
|
apr_file::no
|
llapr.h
|
|
|
|
|
|
|
X
|
apr_file::no
|
llassetstorage.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llassetstorage.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llbvhloader.cpp
|
|
|
|
|
|
|
X
|
apr_file::no
|
llcrashlogger.cpp
|
|
|
|
|
|
|
X
|
apr_file::no
|
llextendedstatus.h
|
X
|
|
|
|
|
|
|
apr_file::no
|
llhttpassetstorage.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llhttpassetstorage.h
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llhttpclient.cpp
|
X
|
X
|
|
X
|
X
|
|
|
apr_file::no
|
llimage.cpp
|
X
|
|
|
X
|
X
|
|
X
|
apr_file::no
|
llimage.h
|
X
|
|
|
|
|
|
|
apr_file::no
|
llimagej2c.cpp
|
|
|
|
|
|
|
X
|
apr_file::no
|
llkeyframemotion.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llkeyframemotion.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llkeyframemotionparam.cpp
|
|
|
|
|
|
|
X
|
apr_file::no
|
llprocessor.cpp
|
|
|
|
|
|
|
|
apr_file::no
|
llprocessor.h
|
|
|
|
|
|
|
|
apr_file::no
|
llstatemachine.cpp
|
|
|
|
|
|
|
X
|
apr_file::no
|
llstatemachine.h
|
|
|
|
|
|
|
|
apr_file::no
|
lltransfersourceasset.cpp
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
lltransfersourceasset.h
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
lltransfertargetvfile.cpp
|
X
|
|
|
|
X
|
|
|
apr_file::no
|
lltransfertargetvfile.h
|
X
|
|
|
X
|
X
|
|
|
apr_file::no
|
llxfermanager.cpp
|
X
|
|
|
X
|
|
|
|
apr_file::no
|
llxfermanager.h
|
X
|
|
|
X
|
|
|
|
apr_file::no
|