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

From Second Life Wiki
Jump to navigation Jump to search
(adding llstartup.cpp, clean up llappviewer.cpp references)
m (Removing "do not edit" messages. Go ahead and edit this.)
 
(53 intermediate revisions by the same user not shown)
Line 1: Line 1:
__TOC__
__TOC__


''This page is a work in progress and should not be considered complete at this time.''
== Evolving article purpose ==


This page is intended to have two different purposes.
''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.
* Document where the VFS is used in the viewer source
* Provide a direction forward for removing/replacing the VFS


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.
== 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:
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:
* [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]
* [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]


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.


'''NOTE: The function of the LFS is not documented anywhere, but appears to refer to the "Linden File System", a static VFS that is included in the client download which contains the client user interface images and sounds.''' Therefore any references to the LFS are also included since they would need to be replaced with a folder-based storage, along with the regular VFS.
== 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
|}


== /newview/llstartup.cpp - Init ==
== 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
|}


<php>74 #include "llvfs.h"</php>
== General - Filesystem Access and Storage ==


<php>215 // local function declaration
{| cellborder="3" border="2" width="100%"
( . . . )
! width="30%" | file
233 void asset_callback_nothing(LLVFS*, const LLUUID&, LLAssetType::EType, void*, S32); </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
|-
|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
|}


<php>298 // Returns FALSE to skip other idle processing. Should only return
== General - Utility and Misc ==
299 // TRUE when all initialization done.  
{| cellborder="3" border="2" width="100%"
300 BOOL idle_startup()
! width="30%" | file
301 {
!width="10%" |VFS
( . . . )
!width="10%" |gVFS
504                        // start the xfer system. by default, choke the downloads
!width="10%" |gStaticVFS
505                        // a lot...  
!width="10%" |LLVFS
506                        const S32 VIEWER_MAX_XFER = 3;  
!width="10%" |LLVFile
507                        start_xfer_manager(gVFS);  
!width="10%" |LLLFS
508                        gXferManager->setMaxIncomingXfers(VIEWER_MAX_XFER);  
!width="10%" |ll_apr_file
509                        F32 xfer_throttle_bps = gSavedSettings.getF32("XferThrottle");  
!width="10%" |apr_file
510                        if (xfer_throttle_bps > 1.f)
|-
511                        {
|llbbox.cpp
512                                gXferManager->setUseAckThrottling(TRUE);  
|<!-- VFS::no --> &nbsp;
513                                gXferManager->setAckThrottleBPS(xfer_throttle_bps);  
|<!-- gVFS::no --> &nbsp;
514                        }
|<!-- gStaticVFS::no --> &nbsp;
515                        gAssetStorage = new LLViewerAssetStorage(msg, gXferManager, gVFS);  
|<!-- LLVFS::no --> &nbsp;
( . . . )
|<!-- LLVFile::no --> &nbsp;
891                // Display the startup progress bar.
|<!-- LLLFS::no --> &nbsp;
892                gViewerWindow->setShowProgress(TRUE);  
|<!-- ll_apr_file::no --> &nbsp;
893                gViewerWindow->setProgressCancelButtonVisible(TRUE, "Quit");  
|apr_file::no
894 
|-
895                // Poke the VFS, which could potentially block for a while if
|llbox.cpp
896                // Windows XP is acting up
|<!-- VFS::no --> &nbsp;
897                set_startup_status(0.07f, "Verifying cache files (can take 60-90 seconds)...", NULL);  
|<!-- gVFS::no --> &nbsp;
898                display_startup();  
|<!-- gStaticVFS::no --> &nbsp;
899 
|<!-- LLVFS::no --> &nbsp;
900                gVFS->pokeFiles(); </php>
|<!-- 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
|}


<php>3032 void init_stat_view()
== Rendering - Asset Management ==
3033 {
{| cellborder="3" border="2" width="100%"
( . . . )
! width="30%" | file
3245        stat_barp = net_statviewp->addStat("VFS Pending Ops", &(gViewerStats->mVFSPendingOperations));  
!width="10%" |VFS
3246        stat_barp->setUnitLabel(" ");  
!width="10%" |gVFS
3247        stat_barp->mPerSec = FALSE;  
!width="10%" |gStaticVFS
3248        stat_barp->mDisplayBar = FALSE; </php>
!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
|}


<php>3495 void asset_callback_nothing(LLVFS*, const LLUUID&, LLAssetType::EType, void*, S32)
== Rendering - Character and Animation ==
3496 {
{| cellborder="3" border="2" width="100%"
3497        // nothing
! width="30%" | file
3498 }</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
|-
|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(???)
|}


== /newview/llappviewer.cpp - Init, Running, and Shutdown ==
== 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
|}


llappviewer.cpp is the central code for making the Windows client function.
== 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
|}


http://svn.secondlife.com/trac/linden/browser/branches/Branch_1-19-1-Viewer/indra/newview/llappviewer.cpp?rev=443
== 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
|}


=== Initialization ===
== 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
|}


<php>83 #include "lllfsthread.h"
== Rendering - Render Pipeline ==
( . . . )
{| cellborder="3" border="2" width="100%"
303 // VFS globals - see llappviewer.h
! width="30%" | file
304 LLVFS* gStaticVFS = NULL;  
!width="10%" |VFS
( . . . )
!width="10%" |gVFS
356 // File scope definitons
!width="10%" |gStaticVFS
357 const char *VFS_DATA_FILE_BASE = "data.db2.x.";  
!width="10%" |LLVFS
358 const char *VFS_INDEX_FILE_BASE = "index.db2.x.";  
!width="10%" |LLVFile
( . . . )
!width="10%" |LLLFS
394 " -nothread                            run vfs in single thread\n"
!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
|}


<php>548 int parse_args(int argc, char **argv)
== Input and Output - Audio ==
( . . . )
{| cellborder="3" border="2" width="100%"
824                else if (!strcmp(argv[j], "-nothread"))
! width="30%" | file
825                {
!width="10%" |VFS
826                        LLVFile::ALLOW_ASYNC = FALSE;  
!width="10%" |gVFS
827                        llinfos << "Running VFS in nothread mode" << llendl;  
!width="10%" |gStaticVFS
828                } </php>
!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
|}


<php>982 bool LLAppViewer::init()
== Input and Output - Input ==
( . . . )
{| cellborder="3" border="2" width="100%"
1208        //
! width="30%" | file
1209        // Initialize the VFS, and gracefully handle initialization errors
!width="10%" |VFS
1210        //
!width="10%" |gVFS
1211 
!width="10%" |gStaticVFS
1212        if (!initCache())
!width="10%" |LLVFS
1213        {
!width="10%" |LLVFile
1214                std::ostringstream msg;
!width="10%" |LLLFS
1215                msg <<
!width="10%" |ll_apr_file
1216                        gSecondLife << " is unable to access a file that it needs.\n"  
!width="10%" |apr_file
1217                        "\n"  
|-
1218                        "This can be because you somehow have multiple copies running, "  
|llviewerjoystick.cpp
1219                        "or your system incorrectly thinks a file is open. "  
|<!-- VFS::no --> &nbsp;
1220                        "If this message persists, restart your computer and try again. "  
|<!-- gVFS::no --> &nbsp;
1221                        "If it continues to persist, you may need to completely uninstall " <<  
|<!-- gStaticVFS::no --> &nbsp;
1222                        gSecondLife << " and reinstall it.";  
|<!-- LLVFS::no --> &nbsp;
1223                OSMessageBox(
|<!-- LLVFile::no --> &nbsp;
1224                        msg.str().c_str(),
|<!-- LLLFS::no --> &nbsp;
1225                        NULL,
|<!-- ll_apr_file::no --> &nbsp;
1226                        OSMB_OK);  
|apr_file::no
1227                return 1;  
|-
1228        } </php>
|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
|}


<php>1965 bool LLAppViewer::initThreads()
== Data and Communication - Agents ==
( . . . )
{| cellborder="3" border="2" width="100%"
1972        LLVFSThread::initClass(enable_threads && true);
! width="30%" | file
1973        LLLFSThread::initClass(enable_threads && true);
!width="10%" |VFS
( . . . )
!width="10%" |gVFS
2914        LLSplashScreen::update("Initializing Texture Cache...");
!width="10%" |gStaticVFS
2915         
!width="10%" |LLVFS
2916        // Init the texture cache
!width="10%" |LLVFile
2917        // Allocate 80% of the cache size for textures
!width="10%" |LLLFS
2918        BOOL read_only = mSecondInstance ? true : false;
!width="10%" |ll_apr_file
2919        const S32 MB = 1024*1024;
!width="10%" |apr_file
2920        S64 cache_size = (S64)(gSavedSettings.getU32("CacheSize")) * MB;
|-
2921        const S64 MAX_CACHE_SIZE = 1024*MB;
|llagent.cpp
2922        cache_size = llmin(cache_size, MAX_CACHE_SIZE);
|<!-- VFS::no --> &nbsp;
2923        S64 texture_cache_size = ((cache_size * 8)/10);
|<!-- gVFS::no --> &nbsp;
2924        S64 extra = LLAppViewer::getTextureCache()->initCache(LL_PATH_CACHE, texture_cache_size, read_only);
|<!-- gStaticVFS::no --> &nbsp;
2925        texture_cache_size -= extra;
|<!-- LLVFS::no --> &nbsp;
2926 
|<!-- LLVFile::no --> &nbsp;
2927        LLSplashScreen::update("Initializing VFS...");
|<!-- LLLFS::no --> &nbsp;
2928         
|<!-- ll_apr_file::no --> &nbsp;
2929        // Init the VFS  
|apr_file::no
2930        S64 vfs_size = cache_size - texture_cache_size;
|-
2931        const S64 MAX_VFS_SIZE = 1024 * MB; // 1 GB
|llagentdata.cpp
2932        vfs_size = llmin(vfs_size, MAX_VFS_SIZE);
|<!-- VFS::no --> &nbsp;
2933        vfs_size = (vfs_size / MB) * MB; // make sure it is MB aligned
|<!-- gVFS::no --> &nbsp;
2934        U32 vfs_size_u32 = (U32)vfs_size;
|<!-- gStaticVFS::no --> &nbsp;
2935        U32 old_vfs_size = gSavedSettings.getU32("VFSOldSize") * MB;
|<!-- LLVFS::no --> &nbsp;
2936        bool resize_vfs = (vfs_size_u32 != old_vfs_size);
|<!-- LLVFile::no --> &nbsp;
2937        if (resize_vfs)
|<!-- LLLFS::no --> &nbsp;
2938        {
|<!-- ll_apr_file::no --> &nbsp;
2939                gSavedSettings.setU32("VFSOldSize", vfs_size_u32/MB);
|apr_file::no
2940        }
|-
2941        llinfos << "VFS CACHE SIZE: " << vfs_size/(1024*1024) << " MB" << llendl;
|llagentpilot.cpp
2942         
|<!-- VFS::no --> &nbsp;
2943        // This has to happen BEFORE starting the vfs
|<!-- gVFS::no --> &nbsp;
2944        //time_t        ltime;
|<!-- gStaticVFS::no --> &nbsp;
2945        srand(time(NULL));              // Flawfinder: ignore
|<!-- LLVFS::no --> &nbsp;
2946        U32 old_salt = gSavedSettings.getU32("VFSSalt");
|<!-- LLVFile::no --> &nbsp;
2947        U32 new_salt;
|<!-- LLLFS::no --> &nbsp;
2948        char old_vfs_data_file[LL_MAX_PATH];            // Flawfinder: ignore
|<!-- ll_apr_file::no --> &nbsp;
2949        char old_vfs_index_file[LL_MAX_PATH];  // Flawfinder: ignore           
|apr_file::no
2950        char new_vfs_data_file[LL_MAX_PATH];            // Flawfinder: ignore
|}
2951        char new_vfs_index_file[LL_MAX_PATH];   // Flawfinder: ignore
2952        char static_vfs_index_file[LL_MAX_PATH];        // Flawfinder: ignore
2953        char static_vfs_data_file[LL_MAX_PATH]; // Flawfinder: ignore
2954 
2955        if (gMultipleViewersOK)
2956        {
2957                // don't mess with renaming the VFS in this case
2958                new_salt = old_salt;  
2959        }
2960        else
2961        {
2962                do
2963                {
2964                        new_salt = rand();
2965                } while( new_salt == old_salt );
2966        }
2967 
2968        snprintf(old_vfs_data_file,  LL_MAX_PATH, "%s%u",              // Flawfinder: ignore
2969                gDirUtilp->getExpandedFilename(LL_PATH_CACHE,VFS_DATA_FILE_BASE).c_str(),
2970                old_salt);  
2971 
2972        // make sure this file exists
2973        llstat s;
2974        S32 stat_result = LLFile::stat(old_vfs_data_file, &s);  
2975        if (stat_result)
2976        {
2977                // doesn't exist, look for a data file
2978                std::string mask;
2979                mask = gDirUtilp->getDirDelimiter();  
2980                mask += VFS_DATA_FILE_BASE;
2981                mask += "*";
2982 
2983                std::string dir;
2984                dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,"");  
2985 
2986                std::string found_file;
2987                if (gDirUtilp->getNextFileInDir(dir, mask, found_file, false))
2988                {
2989                        snprintf(old_vfs_data_file, LL_MAX_PATH, "%s%s%s", dir.c_str(),
                                  gDirUtilp->getDirDelimiter().c_str(), found_file.c_str());
                                  // Flawfinder: ignore
2990 
2991                        S32 start_pos;
2992                        S32 length = strlen(found_file.c_str());
                                  /* Flawfinder: ignore*/
2993                        for (start_pos = length - 1; start_pos >= 0; start_pos--)
2994                        {
2995                                if (found_file[start_pos] == '.')
2996                                {
2997                                        start_pos++;
2998                                        break;
2999                                }
3000                        }
3001                        if (start_pos > 0)
3002                        {
3003                                sscanf(found_file.c_str() + start_pos, "%d", &old_salt);  
3004                        }
3005                        llinfos << "Default vfs data file not present, found " << old_vfs_data_file << llendl;  
3006                        llinfos << "Old salt: " << old_salt << llendl;
3007                }
3008        }
3009
3010        snprintf(old_vfs_index_file, LL_MAX_PATH, "%s%u",              // Flawfinder: ignore
3011                        gDirUtilp->getExpandedFilename(LL_PATH_CACHE,VFS_INDEX_FILE_BASE).c_str(),
3012                        old_salt);
3013
3014        stat_result = LLFile::stat(old_vfs_index_file, &s);  
3015        if (stat_result)
3016        {
3017                // We've got a bad/missing index file, nukem!  
3018                llwarns << "Bad or missing vfx index file " << old_vfs_index_file << llendl;  
3019                llwarns << "Removing old vfs data file " << old_vfs_data_file << llendl;
3020                LLFile::remove(old_vfs_data_file);  
3021                LLFile::remove(old_vfs_index_file);
3022                 
3023                // Just in case, nuke any other old cache files in the directory.  
3024                std::string dir;
3025                dir = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,"");  
3026 
3027                std::string mask;
3028                mask = gDirUtilp->getDirDelimiter();
3029                mask += VFS_DATA_FILE_BASE;
3030                mask += "*";
3031 
3032                gDirUtilp->deleteFilesInDir(dir, mask);  
3033 
3034                mask = gDirUtilp->getDirDelimiter();
3035                mask += VFS_INDEX_FILE_BASE;
3036                mask += "*";
3037 
3038                gDirUtilp->deleteFilesInDir(dir, mask);
3039        }
3040
3041        snprintf(new_vfs_data_file, LL_MAX_PATH, "%s%u",                // Flawfinder: ignore
3042                gDirUtilp->getExpandedFilename(LL_PATH_CACHE,VFS_DATA_FILE_BASE).c_str(),
3043                new_salt);
3044
3045        snprintf(new_vfs_index_file, LL_MAX_PATH, "%s%u",
                gDirUtilp->getExpandedFilename(LL_PATH_CACHE, VFS_INDEX_FILE_BASE).c_str(),
                // Flawfinder: ignore
3046                new_salt);
3047 
3048 
3049        strncpy(static_vfs_data_file, gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,
                "static_data.db2").c_str(), LL_MAX_PATH -1);          // Flawfinder: ignore
3050        static_vfs_data_file[LL_MAX_PATH -1] = '\0';  
3051        strncpy(static_vfs_index_file, gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,
                "static_index.db2").c_str(), LL_MAX_PATH -1);                // Flawfinder: ignore
3052        static_vfs_index_file[LL_MAX_PATH -1] = '\0';  
3053 
3054        if (resize_vfs)
3055        {
3056                llinfos << "Removing old vfs and re-sizing" << llendl;
3057                 
3058                LLFile::remove(old_vfs_data_file);  
3059                LLFile::remove(old_vfs_index_file);
3060        }
3061        else if (old_salt != new_salt)
3062        {
3063                // move the vfs files to a new name before opening
3064                llinfos << "Renaming " << old_vfs_data_file << " to " << new_vfs_data_file << llendl;
3065                llinfos << "Renaming " << old_vfs_index_file << " to " << new_vfs_index_file << llendl;
3066                LLFile::rename(old_vfs_data_file, new_vfs_data_file);
3067                LLFile::rename(old_vfs_index_file, new_vfs_index_file);
3068        }
3069 
3070        // Startup the VFS...
3071        gSavedSettings.setU32("VFSSalt", new_salt);
3072 
3073        // Don't remove VFS after viewer crashes.  If user has corrupt data, they can reinstall. JC
3074        gVFS = new LLVFS(new_vfs_index_file, new_vfs_data_file, false, vfs_size_u32, false);
3075        if( VFSVALID_BAD_CORRUPT == gVFS->getValidState() )
3076        {
3077                // Try again with fresh files 
3078                // (The constructor deletes corrupt files when it finds them.)
3079                llwarns << "VFS corrupt, deleted.  Making new VFS." << llendl;
3080                delete gVFS;
3081                gVFS = new LLVFS(new_vfs_index_file, new_vfs_data_file, false, vfs_size_u32, false);
3082        }
3083 
3084        gStaticVFS = new LLVFS(static_vfs_index_file, static_vfs_data_file, true, 0, false);
3085 
3086        BOOL success = gVFS->isValid() && gStaticVFS->isValid();  
3087        if( !success )
3088        {
3089                return false;
3090        }
3091        else
3092        {
3093                LLVFile::initClass();
3094                return true;
3095        }  
3096 }</php>


=== Main Loop ===
== 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
|}


<php>1344 bool LLAppViewer::mainLoop()
== Data and Communication - Network ==
1345 {
{| cellborder="3" border="2" width="100%"
1346        //-------------------------------------------  
! width="30%" | file
1347        // Run main loop until time to quit
!width="10%" |VFS
1348        //-------------------------------------------  
!width="10%" |gVFS
( . . . )
!width="10%" |gStaticVFS
1497                        while(1)
!width="10%" |LLVFS
1498                        {
!width="10%" |LLVFile
1499                                S32 work_pending = 0;  
!width="10%" |LLLFS
1500                                S32 io_pending = 0;  
!width="10%" |ll_apr_file
1501                                work_pending += LLAppViewer::getTextureCache()->update(1);
!width="10%" |apr_file
                                          // unpauses the texture cache thread
|-
1502                                work_pending += LLAppViewer::getImageDecodeThread()->update(1);
|llasynchostbyname.cpp
                                          // unpauses the image thread
|<!-- VFS::no --> &nbsp;
1503                                work_pending += LLAppViewer::getTextureFetch()->update(1);
|<!-- gVFS::no --> &nbsp;
                                          // unpauses the texture fetch thread
|<!-- gStaticVFS::no --> &nbsp;
1504                                io_pending += LLVFSThread::updateClass(1);  
|<!-- LLVFS::no --> &nbsp;
1505                                io_pending += LLLFSThread::updateClass(1);  
|<!-- LLVFile::no --> &nbsp;
1506                                if (io_pending > 1000)
|<!-- LLLFS::no --> &nbsp;
1507                                {
|<!-- ll_apr_file::no --> &nbsp;
1508                                          ms_sleep(llmin(io_pending/100,100));
|apr_file::no
                                                  // give the vfs some time to catch up
|-
1509                                }
|llcaphttpsender.cpp
1510 
|<!-- VFS::no --> &nbsp;
1511                                F64 frame_time = frameTimer.getElapsedTimeF64();  
|<!-- gVFS::no --> &nbsp;
1512                                F64 idle_time = idleTimer.getElapsedTimeF64();  
|<!-- gStaticVFS::no --> &nbsp;
1513                                if (frame_time >= min_frame_time &&  
|<!-- LLVFS::no --> &nbsp;
1514                                        idle_time >= min_idle_time &&  
|<!-- LLVFile::no --> &nbsp;
1515                                        (!work_pending || idle_time >= max_idle_time))
|<!-- LLLFS::no --> &nbsp;
1516                                {
|<!-- ll_apr_file::no --> &nbsp;
1517                                        break;  
|apr_file::no
1518                                }
|-
1519                        }
|llurl.cpp
1520                        frameTimer.reset();  
|<!-- VFS::no --> &nbsp;
1521 
|<!-- gVFS::no --> &nbsp;
1522                        // Prevent the worker threads from running while rendering.  
|<!-- gStaticVFS::no --> &nbsp;
1523                        // if (LLThread::processorCount()==1)
|<!-- LLVFS::no --> &nbsp;
                                    //pause() should only be required when on a single processor client...
|<!-- LLVFile::no --> &nbsp;
1524                        if (run_multiple_threads == FALSE)
|<!-- LLLFS::no --> &nbsp;
1525                        {
|<!-- ll_apr_file::no --> &nbsp;
1526                                LLAppViewer::getTextureCache()->pause();  
|apr_file::no
1527                                LLAppViewer::getImageDecodeThread()->pause();  
|-
1528                                // LLAppViewer::getTextureFetch()->pause();  
|llurlwhitelist.cpp
                                          // Don't pause the fetch (IO) thread
|<!-- VFS::no --> &nbsp;
1529                        }
|<!-- gVFS::no --> &nbsp;
1530                        //LLVFSThread::sLocal->pause();
|<!-- gStaticVFS::no --> &nbsp;
                                  // Prevent the VFS thread from running while rendering.
|<!-- LLVFS::no --> &nbsp;
1531                        //LLLFSThread::sLocal->pause();
|<!-- LLVFile::no --> &nbsp;
                                  // Prevent the LFS thread from running while rendering.</php>
|<!-- 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
|}


=== Shutdown ===
== 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
|}


<php>1561 bool LLAppViewer::cleanup()
== User Interface - Assets ==
( . . . )
{| cellborder="3" border="2" width="100%"
1587        // End TransferManager before deleting systems it depends on (Audio, VFS, AssetStorage)
! width="30%" | file
1588 #if 0 // this seems to get us stuck in an infinite loop...  
!width="10%" |VFS
1589        gTransferManager.cleanup();  
!width="10%" |gVFS
1590 #endif
!width="10%" |gStaticVFS
( . . . )
!width="10%" |LLVFS
1662        // Wait for any pending VFS IO
!width="10%" |LLVFile
1663        while (1)
!width="10%" |LLLFS
1664        {
!width="10%" |ll_apr_file
1665                S32 pending = LLVFSThread::updateClass(0);  
!width="10%" |apr_file
1666                pending += LLLFSThread::updateClass(0);  
|-
1667                if (!pending)
|llcompilequeue.cpp
1668                {
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
1669                        break;  
|<!-- gVFS::no --> &nbsp;
1670                }
|<!-- gStaticVFS::no --> &nbsp;
1671                llinfos << "Waiting for pending IO to finish: " << pending << llendflush;  
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
1672                ms_sleep(100);  
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
1673        }
|<!-- LLLFS::no --> &nbsp;
( . . . )
|<!-- ll_apr_file::no --> &nbsp;
1729        //  
|apr_file::no
1730        // Shut down the VFS's AFTER the decode manager cleans up (since it cleans up vfiles).
|-
1731        // Also after viewerwindow is deleted, since it may have image pointers (which have vfiles)
|llcompilequeue.h
1732        // Also after shutting down the messaging system since it has VFS dependencies
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
1733        //  
|<!-- gVFS::no --> &nbsp;
1734        LLVFile::cleanupClass();  
|<!-- gStaticVFS::no --> &nbsp;
1735        llinfos << "VFS cleaned up" << llendflush;
|<!-- LLVFS::YES --> <center><font size="+2">'''X'''</font></center>
( . . . )
|<!-- LLVFile::no --> &nbsp;
1789        while(1)
|<!-- LLLFS::no --> &nbsp;
1790        {
|<!-- ll_apr_file::no --> &nbsp;
1791                S32 pending = 0;  
|apr_file::no
1792                pending += LLAppViewer::getTextureCache()->update(1); // unpauses the worker thread
|-
1793                pending += LLAppViewer::getImageDecodeThread()->update(1); // unpauses the image thread
|llfloateranimpreview.cpp
1794                pending += LLAppViewer::getTextureFetch()->update(1); // unpauses the texture fetch thread
|<!-- VFS::YES --> <center><font size="+2">'''X'''</font></center>
1795                pending += LLVFSThread::updateClass(0);  
|<!-- gVFS::YES --> <center><font size="+2">'''X'''</font></center>
1796                pending += LLLFSThread::updateClass(0);
|<!-- gStaticVFS::no --> &nbsp;
( . . . )
|<!-- LLVFS::no --> &nbsp;
1819        // This should eventually be done in LLAppViewer
|<!-- LLVFile::YES --> <center><font size="+2">'''X'''</font></center>
1820        LLImageJ2C::closeDSO();  
|<!-- LLLFS::no --> &nbsp;
1821        LLImageFormatted::cleanupClass();  
|<!-- ll_apr_file::YES --> <center><font size="+2">'''X'''</font></center>
1822        LLVFSThread::cleanupClass();  
|apr_file::no
1823        LLLFSThread::cleanupClass();  
|-
1824 
|llfloatergesture.cpp
1825        llinfos << "VFS Thread finished" << llendflush;  
|<!-- VFS::no --> &nbsp;
1826 
|<!-- gVFS::no --> &nbsp;
1827 #ifndef LL_RELEASE_FOR_DOWNLOAD
|<!-- gStaticVFS::no --> &nbsp;
1828        llinfos << "Auditing VFS" << llendl;  
|<!-- LLVFS::no --> &nbsp;
1829        gVFS->audit();  
|<!-- LLVFile::no --> &nbsp;
1830 #endif
|<!-- LLLFS::no --> &nbsp;
1831 
|<!-- ll_apr_file::no --> &nbsp;
1832        // For safety, the LLVFS has to be deleted *after* LLVFSThread. This should be cleaned up.  
|apr_file::no
1833        // (LLVFS doesn't know about LLVFSThread so can't kill pending requests) -Steve
|-
1834        delete gStaticVFS;  
|llfloaterimagepreview.cpp
1835        gStaticVFS = NULL;  
|<!-- VFS::no --> &nbsp;
1836        delete gVFS;  
|<!-- gVFS::no --> &nbsp;
1837        gVFS = NULL; </php>
|<!-- 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
|}


== /newview/llappviewer.h ==
== 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
|}


<php>287 // VFS globals - gVFS is for general use
== User Interface - Chat, Instant Messaging, Notices, Reports ==
288 // gStaticVFS is read-only and is shipped w/ the viewer
{| cellborder="3" border="2" width="100%"
289 // it has pre-cache data like the UI .TGAs
! width="30%" | file
290 extern LLVFS   *gStaticVFS; </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
|-
|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
|}


== VFS Usage While Client is Running ==
== 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
|}


(work in progress)
== 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
|}


=== Audio Engine ===
== User Interface - Data:Money and Land ==
{| 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
|-
|llcurrencyuimanager.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- LLLFS::no --> &nbsp;
|<!-- 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
|}


== 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
|}


== Reasons for VFS removal/replacement ==
== User Interface - Data:Map ==
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
|-
|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
|}
 
== User Interface - Objects and Edit Tools ==
{| 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
|-
|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
|}
 
== User Interface - HTML ==
{| 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
|-
|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
|}
 
== User Interface - Import, Export, Upload ==
{| 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
|-
|llfloaterimport.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- 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
|}
 
== User Interface - Menus, Overlays, Login ==
{| 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
|-
|llmediaremotectrl.cpp
|<!-- VFS::no --> &nbsp;
|<!-- gVFS::no --> &nbsp;
|<!-- gStaticVFS::no --> &nbsp;
|<!-- LLVFS::no --> &nbsp;
|<!-- LLVFile::no --> &nbsp;
|<!-- 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
|}
 
== 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
|}
 
== 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
|}
 
== User Interface - Widgets ==
{| 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