Difference between revisions of "Local data storage methods used in the viewer"

From Second Life Wiki
Jump to navigation Jump to search
(New page to: 1. help understand how VFS works 2. assist coders in removing the VFS and replacing it with directory-based caching)
 
m (Removing "do not edit" messages. Go ahead and edit this.)
 
(55 intermediate revisions by the same user not shown)
Line 1: Line 1:
''This page is a work in progress and should not be considered complete at this time.''
__TOC__


This page is intended to have two different purposes.
== Evolving article purpose ==
* Document where the VFS is used in the viewer source
* Provide a direction forward for removing/replacing the VFS


== VFS Initialization, Running, and Shutdown ==
''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.


These are all carried out by the main viewer file ''newview/llappviewer.cpp''
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 [http://en.wikipedia.org/wiki/Apache_Portable_Runtime 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.


=== Initialization ===
== Notes on the source code references ==


<php>268 // VFS globals - see llappviewer.h
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:
269 LLVFS* gStaticVFS = NULL;</php>
* [http://svn.secondlife.com/trac/linden/browser/branches/Branch_1-19-1-Viewer/indra/newview?rev=443 Link to 1.19.1.4 in the SVN repository]


<php>302 // File scope definitons
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.
303 const char *VFS_DATA_FILE_BASE = "data.db2.x.";
304 const char *VFS_INDEX_FILE_BASE = "index.db2.x.";</php>


<php>765         //
=== Table column headings ===
766         // Initialize the VFS, and gracefully handle initialization errors
Each column of these tables refer to:
767         //
* '''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.
768
* '''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.
769         if (!initCache())
* '''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.
770         {
* '''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.
771                 std::ostringstream msg;
* '''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.  
772                 msg <<
* '''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.
773                         gSecondLife << " is unable to access a file that it needs.\n"
774                         "\n"
775                         "This can be because you somehow have multiple copies running, "
776                         "or your system incorrectly thinks a file is open. "
777                         "If this message persists, restart your computer and try again. "
778                         "If it continues to persist, you may need to completely uninstall " <<
779                         gSecondLife << " and reinstall it.";
780                 OSMessageBox(
781                         msg.str().c_str(),
782                         NULL,
783                         OSMB_OK);
784                 return 1;
785         }</php>


=== Main Loop ===
=== 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 ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llstartup.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llappviewer.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llappviewer.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== General - Window Management and Render Pipeline  ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|pipeline.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerdisplay.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerprecompiledheaders.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerprecompiledheaders.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerwindow.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llwindebug.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== General - Filesystem Access and Storage ==
 
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|lllfsthread.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|lllfsthread.h
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvfile.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvfile.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvfs.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llvfs.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvfsthread.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvfsthread.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llxfer_vfile.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llxfer_vfile.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== General - Utility and Misc ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llbbox.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llbox.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llcallbacklist.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llcontroldef.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lleventnotifier.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lleventpoll.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhippo.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llregionposition.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|moviemaker.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|noise.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== Rendering - Asset Management ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llassetuploadresponders.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltexturecache.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|lltexturefetch.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerassetstorage.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerassetstorage.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llwearable.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llwearablelist.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== Rendering - Character and Animation ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|lldriverparam.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llemote.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewergesture.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvoavatar.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llcharacter(???)
|}
 
== Rendering - Camera ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llcameraview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfollowcam.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llmorphview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewercamera.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== Rendering - Effects ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llhudconnector.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudeffect.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudeffectbeam.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudeffectlookat.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudeffectpointat.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudeffecttrail.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudicon.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudmanager.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudobject.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudrender.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudtext.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhudview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltracker.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvelocitybar.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvotextbubble.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== Rendering - Environment ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llvlmanager.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvlcomposition.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvoclouds.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvosurfacepatch.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvoground.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvosky.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvostars.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvowater.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llwind.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== Rendering - Viewer Objects: Volumes, Particles, and Trees ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llvocache.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvograss.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvoinventorylistener.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvopartgroup.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvotree.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvovolume.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== Rendering - Render Pipeline ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llcloud.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llcubemap.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llcylinder.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawable.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpool.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpoolalpha.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpoolavatar.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpoolbump.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpoolclouds.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpoolground.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpoolsimple.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpoolsky.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpoolstars.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpoolterrain.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpooltree.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldrawpoolwater.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldynamictexture.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llface.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfeaturemanager.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llflexibleobject.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llglsandbox.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llglslshader.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpatchvertexarray.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpolymesh.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpolymorph.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llsky.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llspatialpartition.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llsphere.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llsprite.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llsurface.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llsurfacepatch.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltexlayer.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerimage.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerimage.h
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerimagelist.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerjoint.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerjointattachment.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerjointmesh.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerjointshape.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerlayer.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerobject.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerobjectlist.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerpartsim.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerpartsource.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewertextureanim.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewervisualparam.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== Input and Output - Audio ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|fmodwrapper.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|audioengine.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|audioengine.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|audioengine_fmod.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llaudiodecodemgr.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llaudiodecodemgr.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llaudiosourcevo.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llaudiostatus.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|vorbisdecode.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|vorbisdecode.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|vorbisencode.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|}
 
== Input and Output - Input ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llviewerjoystick.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerkeyboard.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== Data and Communication - Agents ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llagent.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llagentdata.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llagentpilot.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== Data and Communication - Region and World ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llviewerregion.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llworld.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== Data and Communication - Network ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llasynchostbyname.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llcaphttpsender.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llurl.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llurlwhitelist.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lluserauth.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewergenericmessage.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewermessage.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewermessage.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewernetwork.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerthrottle.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llweb.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llxmlrpctransaction.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== User Interface - Alerts ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llconfirmationmanager.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfirstuse.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llnotify.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== User Interface - Assets ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llcompilequeue.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llcompilequeue.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloateranimpreview.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llfloatergesture.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterimagepreview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterinspect.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloateropenobject.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterproperties.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterscriptdebug.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreviewanim.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreviewgesture.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreviewgesture.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreviewlandmark.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreviewnotecard.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreviewnotecard.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreviewscript.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreviewscript.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreviewsound.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpreviewtexture.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== User Interface - Avatar Appearance ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llfloaterclothing.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatercustomize.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llgenepool.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llgesturemgr.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llgesturemgr.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelmorph.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== User Interface - Chat, Instant Messaging, Notices, Reports ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llchatbar.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterchat.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatermute.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaternewim.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterpostcard.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterreporter.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llgroupmgr.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llgroupnotify.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llimpanel.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llimview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lllogchat.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llmutelist.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== User Interface - Data ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llclassifiedinfo.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lleventinfo.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterabout.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterauction.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloateravatarinfo.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatergroupinfo.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatergroupinvite.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatergroups.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterland.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterlandholdings.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterregioninfo.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterregioninfo.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatertelehub.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatertos.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatertos.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelavatar.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelclassified.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelevent.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelgroup.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelgroupgeneral.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelgroupinvite.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelgrouplandmoney.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelgroupnotices.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelgrouproles.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelgroupvoting.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelland.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanellandobjects.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanellandoptions.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}
 
== User Interface - Data:Inventory ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llcallingcard.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterfriends.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llinventoryactions.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llinventorybridge.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llinventoryclipboard.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llinventorymodel.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llinventoryview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lllandmarklist.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lllandmarklist.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerinventory.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}


<php>889         //-------------------------------------------
== User Interface - Data:Money and Land ==
890         // Run main loop until time to quit
{| cellborder="3" border="2" width="100%"
891         //-------------------------------------------
! width="30%" | file
( . . . )
!width="10%" |VFS
1052                                 while(1)
!width="10%" |gVFS
1053                                 {
!width="10%" |gStaticVFS
1054                                         S32 work_pending = 0;
!width="10%" |LLVFS
1055                                         S32 io_pending = 0;
!width="10%" |LLVFile
1056                                         work_pending += LLAppViewer::getTextureCache()->update(1); // unpauses the texture cache thread
!width="10%" |LLLFS
1057                                         work_pending += LLAppViewer::getImageDecodeThread()->update(1); // unpauses the image thread
!width="10%" |ll_apr_file
1058                                         work_pending += LLAppViewer::getTextureFetch()->update(1); // unpauses the texture fetch thread
!width="10%" |apr_file
1059                                         io_pending += LLVFSThread::updateClass(1);
|-
1060                                         io_pending += LLLFSThread::updateClass(1);
|llcurrencyuimanager.cpp
1061                                         if (io_pending > 1000)
|<!-- VFS::no --> &nbsp;
1062                                         {
|<!-- gVFS::no --> &nbsp;
1063                                                 ms_sleep(llmin(io_pending/100,100)); // give the vfs some time to catch up
|<!-- gStaticVFS::no --> &nbsp;
1064                                         }
|<!-- LLVFS::no --> &nbsp;
( . . . )
|<!-- LLVFile::no --> &nbsp;
1085                                 //LLVFSThread::sLocal->pause(); // Prevent the VFS thread from running while rendering.
|<!-- LLLFS::no --> &nbsp;
1086                                 //LLLFSThread::sLocal->pause(); // Prevent the LFS thread from running while rendering.</php>
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llgivemoney.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterbuy.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterbuycontents.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterbuycurrency.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterbuyland.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatersellland.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}


=== Shutdown ===
== User Interface - Data:Search ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llfloaterdirectory.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldirbrowser.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldirclassified.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldirevents.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldirfind.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldirgroups.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldirland.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldirpeople.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldirplaces.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldirpopular.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelpick.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelplace.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}


<php>1148         // End TransferManager before deleting systems it depends on (Audio, VFS, AssetStorage)
== User Interface - Data:Map ==
1149 #if 0 // this seems to get us stuck in an infinite loop...
{| cellborder="3" border="2" width="100%"
1150         gTransferManager.cleanup();
! width="30%" | file
1151 #endif</php>
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llcompass.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatermap.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterworldmap.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llmapresponders.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llnetmap.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llworldmap.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llworldmapview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}


<php>1212         // Wait for any pending VFS IO
== User Interface - Objects and Edit Tools ==
1213         while (1)
{| cellborder="3" border="2" width="100%"
1214         {
! width="30%" | file
1215                 S32 pending = LLVFSThread::updateClass(0);
!width="10%" |VFS
1216                 pending += LLLFSThread::updateClass(0);
!width="10%" |gVFS
1217                 if (!pending)
!width="10%" |gStaticVFS
1218                 {
!width="10%" |LLVFS
1219                         break;
!width="10%" |LLVFile
1220                 }
!width="10%" |LLLFS
1221                 llinfos << "Waiting for pending IO to finish: " << pending << llendflush;
!width="10%" |ll_apr_file
1222                 ms_sleep(100);
!width="10%" |apr_file
1223         }</php>
|-
|llhoverview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llmanip.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llmaniprotate.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llmanipscale.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llmaniptranslate.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterbuildoptions.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterbump.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatercolorpicker.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterpermissionsmgr.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatertools.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelcontents.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelface.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelgeneral.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelinventory.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelobject.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelpermissions.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llselectmgr.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltool.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolbar.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolbrush.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolcomp.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltooldraganddrop.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolface.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolfocus.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolgrab.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolgun.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolindividual.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolmgr.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolmorph.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolobjpicker.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolpie.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolpipette.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolplacer.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolselect.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolselectland.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolselectrect.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltoolview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerparcelmgr.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerparceloverlay.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}


<php>1281         //
== User Interface - HTML ==
1282         // Shut down the VFS's AFTER the decode manager cleans up (since it cleans up vfiles).
{| cellborder="3" border="2" width="100%"
1283         // Also after viewerwindow is deleted, since it may have image pointers (which have vfiles)
! width="30%" | file
1284         // Also after shutting down the messaging system since it has VFS dependencies
!width="10%" |VFS
1285         //
!width="10%" |gVFS
1286         LLVFile::cleanupClass();
!width="10%" |gStaticVFS
1287         llinfos << "VFS cleaned up" << llendflush;</php>
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llfloaterhtml.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterhtmlfind.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaterhtmlhelp.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}


<php>1327         // Let threads finish
== User Interface - Import, Export, Upload ==
1328         LLTimer idleTimer;
{| cellborder="3" border="2" width="100%"
1329         idleTimer.reset();
! width="30%" | file
1330         const F64 max_idle_time = 5.f; // 5 seconds
!width="10%" |VFS
1331         while(1)
!width="10%" |gVFS
1332         {
!width="10%" |gStaticVFS
1333                 S32 pending = 0;
!width="10%" |LLVFS
1334                 pending += LLAppViewer::getTextureCache()->update(1); // unpauses the worker thread
!width="10%" |LLVFile
1335                 pending += LLAppViewer::getImageDecodeThread()->update(1); // unpauses the image thread
!width="10%" |LLLFS
1336                 pending += LLAppViewer::getTextureFetch()->update(1); // unpauses the texture fetch thread
!width="10%" |ll_apr_file
1337                 pending += LLVFSThread::updateClass(0);
!width="10%" |apr_file
1338                 pending += LLLFSThread::updateClass(0);
|-
1339                 F64 idle_time = idleTimer.getElapsedTimeF64();
|llfloaterimport.cpp
1340                 if (!pending || idle_time >= max_idle_time)
|<!-- VFS::no --> &nbsp;
1341                 {
|<!-- gVFS::no --> &nbsp;
1342                         llwarns << "Quitting with pending background tasks." << llendl;
|<!-- gStaticVFS::no --> &nbsp;
1343                         break;
|<!-- LLVFS::no --> &nbsp;
1344                 }
|<!-- LLVFile::no --> &nbsp;
1345         }</php>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatersaveavatar.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatersnapshot.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lluploaddialog.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}


<php>1361         // This should eventually be done in LLAppViewer
== User Interface - Menus, Overlays, Login ==
1362         LLImageJ2C::closeDSO();
{| cellborder="3" border="2" width="100%"
1363         LLImageFormatted::cleanupClass();
! width="30%" | file
1364         LLVFSThread::cleanupClass();
!width="10%" |VFS
1365         LLLFSThread::cleanupClass();
!width="10%" |gVFS
1366
!width="10%" |gStaticVFS
1367         llinfos << "VFS Thread finished" << llendflush;
!width="10%" |LLVFS
1368
!width="10%" |LLVFile
1369 #ifndef LL_RELEASE_FOR_DOWNLOAD
!width="10%" |LLLFS
1370         llinfos << "Auditing VFS" << llendl;
!width="10%" |ll_apr_file
1371         gVFS->audit();
!width="10%" |apr_file
1372 #endif
|-
1373
|llmediaremotectrl.cpp
1374         // For safety, the LLVFS has to be deleted *after* LLVFSThread. This should be cleaned up.
|<!-- VFS::no --> &nbsp;
1375         // (LLVFS doesn't know about LLVFSThread so can't kill pending requests) -Steve
|<!-- gVFS::no --> &nbsp;
1376         delete gStaticVFS;
|<!-- gStaticVFS::no --> &nbsp;
1377         gStaticVFS = NULL;
|<!-- LLVFS::no --> &nbsp;
1378         delete gVFS;
|<!-- LLVFile::no --> &nbsp;
1379         gVFS = NULL;</php>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llmenucommands.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llmoveview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lloverlaybar.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanellogin.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llprogressview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewermenu.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewermenu.h
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewermenufile.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|}


== VFS Usage While Client is Running ==
== User Interface - Preferences ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llfloaterpreference.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelaudioprefs.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llprefschat.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llprefsim.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldisplay.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelmsgs.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelnetwork.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelvolume.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpanelweb.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}


(work in progress)
== User Interface - Utility ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llcolorscheme.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldirpicker.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfilepicker.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloateravatarpicker.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloaternamedesc.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llsavedsettingsglue.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewchildren.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}


== Reasons for VFS removal/replacement ==
== User Interface - Widgets ==
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.
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llcolorswatch.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llcontainerview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfolderview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llnamebox.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llnameeditor.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llnamelistctrl.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltexturectrl.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lljoystickbutton.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewertexteditor.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvieweruictrlfactory.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llwebbrowserctrl.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|}


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.
== User Interface - Debug ==
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llconsole.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldebugmessagebox.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lldebugview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfasttimerview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llframestats.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llframestatview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llmemoryview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloateravatartextures.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatereditui.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatergodtools.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatertest.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llfloatertopobjects.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llpaneldebug.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llstatbar.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llstatgraph.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llstatusbar.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llstatview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltextureview.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llvelocitybar.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewercontrol.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerstats.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llviewerstats.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}


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.
== Unlisted in Viewer Source Files page ==


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.
{| cellborder="3" border="2" width="100%"
! width="30%" | file
!width="10%" |VFS
!width="10%" |gVFS
!width="10%" |gStaticVFS
!width="10%" |LLVFS
!width="10%" |LLVFile
!width="10%" |LLLFS
!width="10%" |ll_apr_file
!width="10%" |apr_file
|-
|llapr.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llapr.h
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llassetstorage.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llassetstorage.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llbvhloader.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llcrashlogger.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llextendedstatus.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhttpassetstorage.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhttpassetstorage.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llhttpclient.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llimage.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llimage.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llimagej2c.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llkeyframemotion.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llkeyframemotion.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llkeyframemotionparam.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llprocessor.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llprocessor.h
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llstatemachine.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
|apr_file::no
|-
|llstatemachine.h
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltransfersourceasset.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltransfersourceasset.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltransfertargetvfile.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|lltransfertargetvfile.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llxfermanager.cpp
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|-
|llxfermanager.h
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- ll_apr_file::no --> &nbsp;
|apr_file::no
|}

Latest revision as of 17:34, 4 December 2008

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

User Interface - Menus, Overlays, Login

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