From 2a4dea528f670b9bb1f77ef27a8a1dd16603d114 Mon Sep 17 00:00:00 2001
From: Jacek Antonelli
Date: Fri, 15 Aug 2008 23:45:50 -0500
Subject: Second Life viewer sources 1.20.7
---
linden/doc/contributions.txt | 10 +
linden/etc/message.xml | 5 +-
linden/indra/SConstruct | 30 +-
linden/indra/indra_complete/indra_complete_vc8.sln | 88 +-
linden/indra/indra_complete/indra_complete_vc9.sln | 85 +
linden/indra/lib/python/indra/base/llsd.py | 85 +
linden/indra/lib/python/indra/ipc/llsdhttp.py | 2 +-
linden/indra/lib/python/indra/util/named_query.py | 6 +
linden/indra/llaudio/audioengine.cpp | 41 +-
linden/indra/llaudio/audioengine.h | 3 +
linden/indra/llaudio/audioengine_fmod.cpp | 66 +-
linden/indra/llcharacter/llanimationstates.cpp | 139 +-
linden/indra/llcharacter/llanimationstates.h | 13 +-
linden/indra/llcharacter/llcharacter.cpp | 21 +
linden/indra/llcharacter/llcharacter.h | 3 +
linden/indra/llcharacter/llmotion.cpp | 28 +-
linden/indra/llcharacter/llmotion.h | 4 +-
linden/indra/llcommon/files.lst | 4 +
linden/indra/llcommon/llapp.cpp | 163 +-
linden/indra/llcommon/llapp.h | 3 +-
linden/indra/llcommon/llapr.cpp | 12 +-
linden/indra/llcommon/llares.cpp | 5 +-
linden/indra/llcommon/llcommon.vcproj | 15 +
linden/indra/llcommon/llcommon_vc8.vcproj | 36 +
linden/indra/llcommon/llcommon_vc9.vcproj | 20 +
linden/indra/llcommon/llerror.cpp | 69 +-
linden/indra/llcommon/llerror.h | 82 +-
linden/indra/llcommon/llfile.cpp | 6 +-
linden/indra/llcommon/llfile.h | 2 +
linden/indra/llcommon/llfindlocale.cpp | 525 +
linden/indra/llcommon/llfindlocale.h | 65 +
linden/indra/llcommon/llheartbeat.cpp | 165 +
linden/indra/llcommon/llheartbeat.h | 73 +
linden/indra/llcommon/llindraconfigfile.cpp | 107 +
linden/indra/llcommon/llindraconfigfile.h | 50 +
linden/indra/llcommon/llkeyusetracker.h | 220 +
linden/indra/llcommon/lllivefile.h | 2 +
linden/indra/llcommon/llmemory.cpp | 2 +-
linden/indra/llcommon/llprocessor.cpp | 2 +-
linden/indra/llcommon/llptrskipmap.h | 6 +-
linden/indra/llcommon/llsdserialize.h | 2 +-
linden/indra/llcommon/llsdutil.h | 12 +
linden/indra/llcommon/llsys.cpp | 14 +-
linden/indra/llcommon/lltimer.cpp | 84 +-
linden/indra/llcommon/lltimer.h | 10 +-
linden/indra/llcommon/llversionserver.h | 6 +-
linden/indra/llcommon/llversionviewer.h | 2 +-
linden/indra/llimage/llimagetga.cpp | 2 +-
linden/indra/llimagej2coj/llimagej2coj.cpp | 4 +-
linden/indra/llinventory/llinventory.cpp | 10 +-
linden/indra/llinventory/llinventory.h | 12 +-
linden/indra/llinventory/llpermissions.cpp | 4 +-
linden/indra/llinventory/llpermissions.h | 4 +-
linden/indra/llinventory/llsaleinfo.cpp | 4 +-
linden/indra/llinventory/llsaleinfo.h | 4 +-
linden/indra/llmath/llcrc.cpp | 2 +-
linden/indra/llmath/llcrc.h | 2 +-
linden/indra/llmath/llmath_vc8.vcproj | 16 +
linden/indra/llmath/llmath_vc9.vcproj | 16 +
linden/indra/llmath/llmd5.cpp | 4 +-
linden/indra/llmath/llmd5.h | 4 +-
linden/indra/llmath/lloctree.h | 4 +-
linden/indra/llmath/llvolume.cpp | 68 +-
linden/indra/llmath/llvolume.h | 25 +-
linden/indra/llmath/m4math.h | 16 +-
linden/indra/llmedia/llmediaimplcommon.cpp | 1 +
linden/indra/llmedia/llmediaimplgstreamer.cpp | 3 +-
linden/indra/llmedia/llmediaimplllmozlib.cpp | 6 +-
linden/indra/llmedia/llmediaimplquicktime.cpp | 10 +-
linden/indra/llmedia/llmediaobserver.h | 8 +-
linden/indra/llmessage/llassetstorage.cpp | 4 +-
linden/indra/llmessage/llblowfishcipher.cpp | 33 +-
linden/indra/llmessage/llcachename.cpp | 2 +-
linden/indra/llmessage/llcachename.h | 2 +-
linden/indra/llmessage/llcurl.cpp | 5 +-
linden/indra/llmessage/lldatapacker.h | 4 +-
linden/indra/llmessage/llfiltersd2xmlrpc.cpp | 18 +
linden/indra/llmessage/llhttpassetstorage.cpp | 2 +
linden/indra/llmessage/llhttpclient.h | 7 +-
linden/indra/llmessage/llhttpnode.cpp | 4 +-
linden/indra/llmessage/llmessageconfig.cpp | 47 +-
linden/indra/llmessage/llmessageconfig.h | 1 +
linden/indra/llmessage/llregionhandle.h | 2 +-
linden/indra/llmessage/lltransfermanager.cpp | 4 +-
linden/indra/llmessage/lltransfersourcefile.cpp | 4 +-
linden/indra/llmessage/lltransfersourcefile.h | 2 +-
linden/indra/llmessage/lltransfertargetfile.h | 2 +-
linden/indra/llmessage/llxfer_file.cpp | 6 +-
linden/indra/llmessage/llxfer_file.h | 2 +-
linden/indra/llmessage/llxfermanager.cpp | 4 +-
linden/indra/llmessage/message.cpp | 270 +-
linden/indra/llmessage/net.cpp | 22 +-
linden/indra/llrender/files.lst | 2 +-
linden/indra/llrender/llfontgl.cpp | 41 +-
linden/indra/llrender/llfontgl.h | 1 +
linden/indra/llrender/llglimmediate.cpp | 303 +-
linden/indra/llrender/llglimmediate.h | 107 +-
linden/indra/llrender/llimagegl.cpp | 152 +-
linden/indra/llrender/llimagegl.h | 16 +-
linden/indra/llrender/llrender.cpp | 704 +
linden/indra/llrender/llrender.h | 239 +
linden/indra/llrender/llrender.vcproj | 4 +-
linden/indra/llrender/llrender_vc8.vcproj | 8 +-
linden/indra/llrender/llrender_vc9.vcproj | 4 +-
linden/indra/llrender/llrendertarget.cpp | 17 +-
linden/indra/llrender/llvertexbuffer.cpp | 51 +-
linden/indra/llrender/llvertexprogramgl.cpp | 125 -
linden/indra/llrender/llvertexprogramgl.h | 55 -
linden/indra/llui/llbutton.cpp | 10 +-
linden/indra/llui/llcombobox.cpp | 14 +-
linden/indra/llui/llfloater.cpp | 20 +-
linden/indra/llui/lllineeditor.cpp | 9 +-
linden/indra/llui/lllineeditor.h | 4 +
linden/indra/llui/llmenugl.cpp | 2 +-
linden/indra/llui/llresizebar.cpp | 11 +-
linden/indra/llui/llresizebar.h | 2 +
linden/indra/llui/llscrollbar.cpp | 6 +-
linden/indra/llui/llscrollcontainer.cpp | 2 +-
linden/indra/llui/llscrolllistctrl.cpp | 8 +-
linden/indra/llui/llspinctrl.cpp | 12 +
linden/indra/llui/llspinctrl.h | 2 +
linden/indra/llui/llstyle.h | 9 +-
linden/indra/llui/lltabcontainer.cpp | 2 +-
linden/indra/llui/lltexteditor.cpp | 92 +-
linden/indra/llui/lltexteditor.h | 18 +-
linden/indra/llui/llui.cpp | 18 +-
linden/indra/llui/lluictrlfactory.cpp | 17 +-
linden/indra/llui/lluictrlfactory.h | 4 +-
linden/indra/llui/llview.cpp | 2 +-
linden/indra/llui/llviewborder.cpp | 2 +-
linden/indra/llvfs/lldir.cpp | 30 +-
linden/indra/llvfs/llvfs.cpp | 53 +-
linden/indra/llvfs/llvfs.h | 8 +-
linden/indra/llwindow/files.linux.lst | 1 -
linden/indra/llwindow/files.sunos5.lst | 1 -
linden/indra/llwindow/lldxhardware.cpp | 21 +-
linden/indra/llwindow/llgl.cpp | 294 +-
linden/indra/llwindow/llgl.h | 30 +-
linden/indra/llwindow/llwindow.cpp | 20 +-
linden/indra/llwindow/llwindow.h | 2 +
linden/indra/llwindow/llwindowlinux.cpp | 61 -
linden/indra/llwindow/llwindowlinux.h | 119 -
linden/indra/llwindow/llwindowmacosx-objc.mm | 8 +
linden/indra/llwindow/llwindowmacosx.cpp | 71 +-
linden/indra/llwindow/llwindowmacosx.h | 2 +
linden/indra/llwindow/llwindowsdl.cpp | 98 +-
linden/indra/llwindow/llwindowsdl.h | 3 +-
linden/indra/llwindow/llwindowsolaris.cpp | 61 -
linden/indra/llwindow/llwindowsolaris.h | 121 -
linden/indra/llwindow/llwindowwin32.cpp | 133 +-
linden/indra/llwindow/llwindowwin32.h | 2 +
linden/indra/llxml/llcontrol.cpp | 71 +-
linden/indra/llxml/llcontrol.h | 2 +-
linden/indra/llxml/llxmlnode.cpp | 6 +-
linden/indra/llxml/llxmlnode.h | 8 +-
linden/indra/llxml/llxmlparser.cpp | 4 +-
linden/indra/llxml/llxmlparser.h | 4 +-
linden/indra/lscript/lscript_alloc.h | 2 +-
linden/indra/lscript/lscript_compile/indra.l | 9 +-
.../lscript/lscript_compile/lscript_bytecode.cpp | 2 +-
.../lscript/lscript_compile/lscript_bytecode.h | 2 +-
.../lscript/lscript_compile/lscript_error.cpp | 10 +-
.../indra/lscript/lscript_compile/lscript_error.h | 12 +-
.../indra/lscript/lscript_compile/lscript_tree.cpp | 282 +-
.../indra/lscript/lscript_compile/lscript_tree.h | 238 +-
.../lscript/lscript_compile/lscript_typecheck.cpp | 6 +-
linden/indra/lscript/lscript_execute.h | 2 +-
.../lscript/lscript_execute/lscript_execute.cpp | 49 +-
.../lscript/lscript_execute/lscript_readlso.cpp | 206 +-
.../lscript/lscript_execute/lscript_readlso.h | 232 +-
.../lscript/lscript_library/lscript_alloc.cpp | 2 +-
linden/indra/mac_crash_logger/llcrashloggermac.cpp | 2 +-
linden/indra/mac_updater/mac_updater.cpp | 4 +-
.../indra/newview/English.lproj/InfoPlist.strings | 4 +-
linden/indra/newview/Info-SecondLife.plist | 2 +-
linden/indra/newview/app_settings/cmd_line.xml | 670 +-
linden/indra/newview/app_settings/keywords.ini | 4 +
linden/indra/newview/app_settings/logcontrol.xml | 47 +
linden/indra/newview/app_settings/settings.xml | 18732 ++++++++++---------
.../indra/newview/app_settings/skinned_avatar.vp | 146 -
.../app_settings/skinned_avatar_hair_wind.vp | 179 -
.../newview/app_settings/skinned_avatar_nobump.vp | 128 -
.../newview/app_settings/skinned_avatar_select.vp | 60 -
.../newview/app_settings/skinned_avatar_wind.vp | 211 -
linden/indra/newview/files.lst | 4 +
.../installers/windows/installer_template.nsi | 21 -
linden/indra/newview/linux_tools/client-readme.txt | 50 +-
linden/indra/newview/linux_tools/unicode.ttf | 1 -
linden/indra/newview/linux_tools/wrapper.sh | 4 +-
linden/indra/newview/llagent.cpp | 1 +
linden/indra/newview/llanimstatelabels.cpp | 39 +
linden/indra/newview/llanimstatelabels.h | 42 +
linden/indra/newview/llappviewer.cpp | 383 +-
linden/indra/newview/llappviewer.h | 19 +-
linden/indra/newview/llappviewerlinux.cpp | 32 +-
linden/indra/newview/llappviewermacosx.cpp | 13 +-
linden/indra/newview/llappviewerwin32.cpp | 75 +-
linden/indra/newview/llbox.cpp | 2 +-
linden/indra/newview/llchatbar.cpp | 1 +
linden/indra/newview/llcolorswatch.cpp | 2 +-
linden/indra/newview/llcommandlineparser.cpp | 33 +-
linden/indra/newview/llcompilequeue.cpp | 2 +-
linden/indra/newview/llconsole.cpp | 34 +-
linden/indra/newview/llcubemap.cpp | 44 +-
linden/indra/newview/llcubemap.h | 1 +
linden/indra/newview/llcurrencyuimanager.cpp | 5 +-
linden/indra/newview/lldrawable.cpp | 8 +-
linden/indra/newview/lldrawpool.cpp | 2 +-
linden/indra/newview/lldrawpoolalpha.cpp | 18 +-
linden/indra/newview/lldrawpoolalpha.h | 3 -
linden/indra/newview/lldrawpoolavatar.cpp | 59 +-
linden/indra/newview/lldrawpoolbump.cpp | 97 +-
linden/indra/newview/lldrawpoolsimple.cpp | 18 +-
linden/indra/newview/lldrawpoolsky.cpp | 2 +-
linden/indra/newview/lldrawpoolterrain.cpp | 286 +-
linden/indra/newview/lldrawpooltree.cpp | 30 +-
linden/indra/newview/lldrawpoolwater.cpp | 47 +-
linden/indra/newview/lldrawpoolwlsky.cpp | 21 +-
linden/indra/newview/lldynamictexture.cpp | 2 +-
linden/indra/newview/llface.cpp | 6 +-
linden/indra/newview/llface.h | 1 +
linden/indra/newview/llfasttimerview.cpp | 2 +-
linden/indra/newview/llfeaturemanager.cpp | 58 +-
linden/indra/newview/llfeaturemanager.h | 2 +-
linden/indra/newview/llfloateranimpreview.cpp | 3 +-
linden/indra/newview/llfloaterauction.cpp | 7 +-
linden/indra/newview/llfloaterbuyland.cpp | 5 +-
linden/indra/newview/llfloaterchat.cpp | 21 +-
linden/indra/newview/llfloatercolorpicker.cpp | 2 +-
linden/indra/newview/llfloaterdirectory.cpp | 45 +-
linden/indra/newview/llfloaterdirectory.h | 6 +-
linden/indra/newview/llfloatergroupinfo.cpp | 26 +-
linden/indra/newview/llfloatergroups.cpp | 2 +-
linden/indra/newview/llfloaterimagepreview.cpp | 2 +-
linden/indra/newview/llfloaterproperties.cpp | 35 +-
linden/indra/newview/llfloaterproperties.h | 4 +
linden/indra/newview/llfloaterregioninfo.cpp | 3 +
linden/indra/newview/llfloaterreporter.cpp | 4 +-
linden/indra/newview/llfloaterreporter.h | 2 +
linden/indra/newview/llfloatersnapshot.cpp | 68 +-
linden/indra/newview/llfloatertools.cpp | 13 +-
linden/indra/newview/llfolderview.cpp | 6 +-
linden/indra/newview/llframestats.cpp | 2 +-
linden/indra/newview/llgivemoney.cpp | 16 +
linden/indra/newview/llglsandbox.cpp | 2 +-
linden/indra/newview/llglslshader.cpp | 116 +-
linden/indra/newview/llglslshader.h | 3 +
linden/indra/newview/llgroupnotify.cpp | 4 +-
linden/indra/newview/llhoverview.cpp | 79 +-
linden/indra/newview/llhudeffectlookat.cpp | 2 +-
linden/indra/newview/llhudeffectpointat.cpp | 2 +-
linden/indra/newview/llhudicon.cpp | 2 +-
linden/indra/newview/llhudtext.cpp | 5 +-
linden/indra/newview/llimpanel.cpp | 66 +-
linden/indra/newview/llimpanel.h | 13 +-
linden/indra/newview/llimview.cpp | 55 +-
linden/indra/newview/llimview.h | 4 +-
linden/indra/newview/llinventorymodel.cpp | 8 +-
linden/indra/newview/lljoystickbutton.cpp | 2 +-
linden/indra/newview/lllogchat.cpp | 4 +-
linden/indra/newview/llmanip.cpp | 2 +-
linden/indra/newview/llmaniprotate.cpp | 2 +-
linden/indra/newview/llmanipscale.cpp | 2 +-
linden/indra/newview/llmaniptranslate.cpp | 10 +-
linden/indra/newview/llmemoryview.cpp | 4 +-
linden/indra/newview/llmutelist.cpp | 82 +-
linden/indra/newview/llmutelist.h | 10 +
linden/indra/newview/llnetmap.cpp | 6 +-
linden/indra/newview/llnotify.cpp | 2 +-
linden/indra/newview/lloverlaybar.cpp | 2 +-
linden/indra/newview/llpanelclassified.cpp | 89 +-
linden/indra/newview/llpanelclassified.h | 9 +-
linden/indra/newview/llpaneldirbrowser.cpp | 78 -
linden/indra/newview/llpaneldirbrowser.h | 1 -
linden/indra/newview/llpaneldirfind.cpp | 300 +-
linden/indra/newview/llpaneldirfind.h | 58 +-
linden/indra/newview/llpaneldirgroups.cpp | 100 +-
linden/indra/newview/llpaneldirgroups.h | 13 +-
linden/indra/newview/llpaneldirplaces.cpp | 156 +-
linden/indra/newview/llpaneldirplaces.h | 20 +-
linden/indra/newview/llpaneldirpopular.cpp | 97 +-
linden/indra/newview/llpaneldirpopular.h | 21 +-
linden/indra/newview/llpaneldisplay.cpp | 77 +-
linden/indra/newview/llpaneldisplay.h | 13 +-
linden/indra/newview/llpanelgroupgeneral.cpp | 99 +-
linden/indra/newview/llpanelgroupgeneral.h | 4 +-
linden/indra/newview/llpanellogin.cpp | 94 +-
linden/indra/newview/llpanellogin.h | 1 +
linden/indra/newview/llpanelpermissions.cpp | 13 +-
linden/indra/newview/llpolymesh.cpp | 2 +-
linden/indra/newview/llpolymorph.cpp | 2 +-
linden/indra/newview/llpolymorph.h | 2 +-
linden/indra/newview/llpostprocess.cpp | 89 +-
linden/indra/newview/llpostprocess.h | 7 -
linden/indra/newview/llpreviewgesture.cpp | 5 +-
linden/indra/newview/llpreviewscript.cpp | 10 +-
linden/indra/newview/llprogressview.cpp | 2 +-
linden/indra/newview/llselectmgr.cpp | 36 +-
linden/indra/newview/llspatialpartition.cpp | 10 +-
linden/indra/newview/llstartup.cpp | 258 +-
linden/indra/newview/llstatgraph.cpp | 2 +-
linden/indra/newview/llstatusbar.cpp | 20 +-
linden/indra/newview/llstylemap.cpp | 75 +
linden/indra/newview/llstylemap.h | 54 +
linden/indra/newview/llsurfacepatch.cpp | 3 +-
linden/indra/newview/lltexlayer.cpp | 44 +-
linden/indra/newview/lltexturecache.cpp | 26 +-
linden/indra/newview/lltexturectrl.cpp | 2 +-
linden/indra/newview/lltexturefetch.cpp | 18 +-
linden/indra/newview/lltextureview.cpp | 2 +-
linden/indra/newview/lltoolbar.cpp | 9 +-
linden/indra/newview/lltoolbrush.cpp | 2 +-
linden/indra/newview/lltooldraganddrop.cpp | 5 +
linden/indra/newview/lltoolfocus.cpp | 3 +-
linden/indra/newview/lltoolfocus.h | 1 +
linden/indra/newview/lltoolmorph.cpp | 2 +-
linden/indra/newview/lltoolselectrect.cpp | 2 +-
linden/indra/newview/lltracker.cpp | 2 +-
linden/indra/newview/lltrans.cpp | 103 +
linden/indra/newview/lltrans.h | 92 +
linden/indra/newview/lluserauth.cpp | 20 +-
linden/indra/newview/llviewerassetstorage.cpp | 2 +-
linden/indra/newview/llviewercontrol.cpp | 18 +-
linden/indra/newview/llviewerdisplay.cpp | 54 +-
linden/indra/newview/llviewerimagelist.cpp | 6 +-
linden/indra/newview/llviewerinventory.cpp | 10 +-
linden/indra/newview/llviewerinventory.h | 10 +-
linden/indra/newview/llviewerjoint.cpp | 6 +-
linden/indra/newview/llviewerjointattachment.cpp | 2 +-
linden/indra/newview/llviewerjointmesh.cpp | 53 +-
linden/indra/newview/llviewerjoystick.cpp | 30 +
linden/indra/newview/llviewerkeyboard.cpp | 2 +-
linden/indra/newview/llviewermenu.cpp | 59 +-
linden/indra/newview/llviewermenufile.cpp | 51 +-
linden/indra/newview/llviewermessage.cpp | 262 +-
linden/indra/newview/llviewernetwork.cpp | 186 +-
linden/indra/newview/llviewernetwork.h | 46 +-
linden/indra/newview/llviewerobject.cpp | 45 +-
linden/indra/newview/llviewerobject.h | 1 +
linden/indra/newview/llviewerobjectlist.cpp | 3 +-
linden/indra/newview/llviewerparcelmedia.cpp | 10 +-
linden/indra/newview/llviewerparceloverlay.cpp | 47 +-
linden/indra/newview/llviewerpartsource.cpp | 19 +
linden/indra/newview/llviewerpartsource.h | 1 +
linden/indra/newview/llviewerregion.cpp | 12 +-
linden/indra/newview/llviewerstats.cpp | 8 +-
linden/indra/newview/llviewertexteditor.cpp | 14 +-
linden/indra/newview/llviewerthrottle.cpp | 4 +-
linden/indra/newview/llviewerwindow.cpp | 68 +-
linden/indra/newview/llviewerwindow.h | 10 +-
linden/indra/newview/llvoavatar.cpp | 375 +-
linden/indra/newview/llvoavatar.h | 29 +-
linden/indra/newview/llvocache.cpp | 8 +-
linden/indra/newview/llvocache.h | 4 +-
linden/indra/newview/llvograss.h | 4 +-
linden/indra/newview/llvoiceclient.cpp | 249 +-
linden/indra/newview/llvoiceclient.h | 4 +
linden/indra/newview/llvoicevisualizer.cpp | 177 +-
linden/indra/newview/llvoicevisualizer.h | 23 +-
linden/indra/newview/llvosky.cpp | 6 +-
linden/indra/newview/llvosky.h | 23 +-
linden/indra/newview/llvosurfacepatch.cpp | 12 +-
linden/indra/newview/llwatchdog.cpp | 222 +
linden/indra/newview/llwatchdog.h | 98 +
linden/indra/newview/llwaterparammanager.cpp | 15 +-
linden/indra/newview/llwaterparammanager.h | 10 +-
linden/indra/newview/llwearable.cpp | 6 +-
linden/indra/newview/llwearable.h | 4 +-
linden/indra/newview/llwearablelist.cpp | 2 +-
linden/indra/newview/llwebbrowserctrl.cpp | 9 +-
linden/indra/newview/llwebbrowserctrl.h | 2 +
linden/indra/newview/llwindebug.cpp | 154 +-
linden/indra/newview/llwindebug.h | 30 +-
linden/indra/newview/llwlparammanager.cpp | 10 +-
linden/indra/newview/llwlparammanager.h | 5 -
linden/indra/newview/llwlparamset.h | 8 -
linden/indra/newview/llworld.cpp | 31 +-
linden/indra/newview/llworldmap.cpp | 18 +-
linden/indra/newview/llworldmap.h | 1 -
linden/indra/newview/llworldmapview.cpp | 81 +-
linden/indra/newview/llworldmapview.h | 1 -
linden/indra/newview/llxmlrpctransaction.cpp | 8 +-
.../newview/macview.xcodeproj/project.pbxproj | 40 +-
linden/indra/newview/newview.vcproj | 27 +
linden/indra/newview/newview_vc8.vcproj | 44 +-
linden/indra/newview/newview_vc9.vcproj | 36 +
linden/indra/newview/pipeline.cpp | 185 +-
linden/indra/newview/pipeline.h | 1 +
linden/indra/newview/releasenotes.txt | 253 +
linden/indra/newview/res/newViewRes.rc | 8 +-
linden/indra/newview/skins/textures/textures.xml | 4 +-
linden/indra/newview/skins/xui/de/floater_html.xml | 3 +
linden/indra/newview/skins/xui/de/mime_types.xml | 2 +-
.../newview/skins/xui/de/panel_group_invite.xml | 5 -
.../newview/skins/xui/de/panel_group_notices.xml | 2 +-
.../skins/xui/de/panel_preferences_graphics1.xml | 2 +
.../newview/skins/xui/de/panel_preferences_web.xml | 5 +-
linden/indra/newview/skins/xui/en-us/alerts.xml | 46 +-
.../newview/skins/xui/en-us/floater_directory.xml | 404 +-
.../indra/newview/skins/xui/en-us/floater_im.xml | 4 +
.../newview/skins/xui/en-us/floater_joystick.xml | 2 +-
.../skins/xui/en-us/floater_script_debug.xml | 2 +-
.../newview/skins/xui/en-us/floater_snapshot.xml | 8 +-
.../newview/skins/xui/en-us/floater_world_map.xml | 28 +-
.../indra/newview/skins/xui/en-us/menu_viewer.xml | 29 +-
.../indra/newview/skins/xui/en-us/mime_types.xml | 2 +-
linden/indra/newview/skins/xui/en-us/notify.xml | 20 +
.../skins/xui/en-us/panel_avatar_classified.xml | 14 +-
.../newview/skins/xui/en-us/panel_classified.xml | 19 +-
.../skins/xui/en-us/panel_group_general.xml | 20 +-
.../skins/xui/en-us/panel_group_notices.xml | 3 +-
.../xui/en-us/panel_preferences_graphics1.xml | 36 +-
.../skins/xui/en-us/panel_preferences_web.xml | 10 +-
.../skins/xui/en-us/panel_region_general.xml | 10 +-
linden/indra/newview/skins/xui/en-us/strings.xml | 166 +
.../newview/skins/xui/es/panel_group_notices.xml | 2 +-
.../newview/skins/xui/fr/panel_group_notices.xml | 2 +-
.../indra/newview/skins/xui/ja/floater_about.xml | 2 +-
linden/indra/newview/skins/xui/ja/floater_html.xml | 3 +
.../newview/skins/xui/ja/floater_joystick.xml | 93 +-
linden/indra/newview/skins/xui/ja/mime_types.xml | 2 +-
.../newview/skins/xui/ja/panel_group_notices.xml | 2 +-
.../skins/xui/ja/panel_preferences_graphics1.xml | 10 +-
.../newview/skins/xui/ja/panel_preferences_web.xml | 5 +-
.../skins/xui/ja/panel_speaker_controls.xml | 4 +-
.../newview/skins/xui/ko/floater_chat_history.xml | 2 +-
linden/indra/newview/skins/xui/ko/floater_html.xml | 3 +
.../newview/skins/xui/ko/floater_joystick.xml | 2 +-
linden/indra/newview/skins/xui/ko/menu_viewer.xml | 2 +-
linden/indra/newview/skins/xui/ko/mime_types.xml | 2 +-
.../indra/newview/skins/xui/ko/panel_chat_bar.xml | 2 +-
.../newview/skins/xui/ko/panel_group_invite.xml | 5 -
.../newview/skins/xui/ko/panel_group_notices.xml | 2 +-
.../newview/skins/xui/ko/panel_preferences_web.xml | 5 +-
.../newview/skins/xui/pt/panel_group_notices.xml | 2 +-
.../newview/skins/xui/zh/panel_group_notices.xml | 2 +-
linden/indra/newview/viewer_manifest.py | 7 +-
linden/indra/test/inventory.cpp | 8 +-
linden/indra/test/llblowfish_tut.cpp | 4 +-
linden/indra/test/lldatapacker_tut.cpp | 4 +-
linden/indra/test/llmessageconfig_tut.cpp | 17 +
linden/indra/test/llpermissions_tut.cpp | 4 +-
linden/indra/test/llsaleinfo_tut.cpp | 4 +-
linden/scripts/messages/message_template.msg | 4 +
444 files changed, 19808 insertions(+), 16531 deletions(-)
create mode 100644 linden/indra/llcommon/llfindlocale.cpp
create mode 100644 linden/indra/llcommon/llfindlocale.h
create mode 100644 linden/indra/llcommon/llheartbeat.cpp
create mode 100644 linden/indra/llcommon/llheartbeat.h
create mode 100644 linden/indra/llcommon/llindraconfigfile.cpp
create mode 100644 linden/indra/llcommon/llindraconfigfile.h
create mode 100644 linden/indra/llcommon/llkeyusetracker.h
create mode 100644 linden/indra/llrender/llrender.cpp
create mode 100644 linden/indra/llrender/llrender.h
delete mode 100644 linden/indra/llrender/llvertexprogramgl.cpp
delete mode 100644 linden/indra/llrender/llvertexprogramgl.h
delete mode 100644 linden/indra/llwindow/llwindowlinux.cpp
delete mode 100644 linden/indra/llwindow/llwindowlinux.h
delete mode 100644 linden/indra/llwindow/llwindowsolaris.cpp
delete mode 100644 linden/indra/llwindow/llwindowsolaris.h
create mode 100644 linden/indra/newview/app_settings/logcontrol.xml
delete mode 100644 linden/indra/newview/app_settings/skinned_avatar.vp
delete mode 100644 linden/indra/newview/app_settings/skinned_avatar_hair_wind.vp
delete mode 100644 linden/indra/newview/app_settings/skinned_avatar_nobump.vp
delete mode 100644 linden/indra/newview/app_settings/skinned_avatar_select.vp
delete mode 100644 linden/indra/newview/app_settings/skinned_avatar_wind.vp
delete mode 120000 linden/indra/newview/linux_tools/unicode.ttf
create mode 100644 linden/indra/newview/llanimstatelabels.cpp
create mode 100644 linden/indra/newview/llanimstatelabels.h
create mode 100644 linden/indra/newview/llstylemap.cpp
create mode 100644 linden/indra/newview/llstylemap.h
create mode 100644 linden/indra/newview/lltrans.cpp
create mode 100644 linden/indra/newview/lltrans.h
create mode 100644 linden/indra/newview/llwatchdog.cpp
create mode 100644 linden/indra/newview/llwatchdog.h
create mode 100644 linden/indra/newview/skins/xui/en-us/strings.xml
diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt
index f26c105..7c5b54c 100644
--- a/linden/doc/contributions.txt
+++ b/linden/doc/contributions.txt
@@ -8,6 +8,7 @@ Able Whitman
VWR-650
VWR-1460
VWR-1691
+ VWR-1735
Adam Marker
VWR-2755
Aimee Trescothick
@@ -39,6 +40,7 @@ Alissa Sabre
VWR-2116
VWR-2826
VWR-3290
+ VWR-3857
VWR-4010
VWR-3410
VWR-6386
@@ -48,6 +50,9 @@ Alissa Sabre
VWR-6430
VWR-1843
VWR-6668
+ VWR-7153
+ VWR-7168
+ VWR-7087
Angus Boyd
VWR-592
Argent Stonecutter
@@ -169,6 +174,8 @@ Jacek Antonelli
VWR-188
VWR-427
VWR-597
+ VWR-2448
+ VWR-3605
Joghert LeSabre
VWR-64
Kage Pixel
@@ -192,6 +199,7 @@ Michelle2 Zenovka
VWR-3749
Mm Alder
VWR-3777
+ VWR-4794
Mr Greggan
VWR-445
Nicholaz Beresford
@@ -289,6 +297,8 @@ Robin Cornelius
VWR-2488
Ryozu Kojima
VWR-287
+Sammy Frederix
+ VWR-6186
Scrippy Scofield
VWR-3748
Seg Baphomet
diff --git a/linden/etc/message.xml b/linden/etc/message.xml
index 331e6bb..701d049 100644
--- a/linden/etc/message.xml
+++ b/linden/etc/message.xml
@@ -424,7 +424,7 @@
trusted-sender
true
-
+
ScriptRunningReply
+
+ maxQueuedEvents
+ 100
diff --git a/linden/indra/SConstruct b/linden/indra/SConstruct
index 137b1e0..629656f 100644
--- a/linden/indra/SConstruct
+++ b/linden/indra/SConstruct
@@ -136,11 +136,13 @@ if standalone and platform != 'linux':
standalone_pkgs = [
'atk',
'cairo',
+ 'fontconfig',
'freetype2',
'gdk-2.0',
'gdk-pixbuf-2.0',
'glib-2.0',
'gmodule-2.0',
+ 'gthread-2.0',
'gtk+-2.0',
'libpng',
'pango',
@@ -303,7 +305,7 @@ for build_target in targets:
pkgconfig('--cflags-only-I').split()]
client_external_libs += [ 'boost_program_options-gcc34-mt', 'boost_signals-gcc34-mt', 'boost_regex-gcc34-mt']
else:
- client_external_libs += [ 'gtk-x11-2.0', 'atk-1.0', 'gmodule-2.0', 'gdk-x11-2.0', 'gdk_pixbuf-2.0', 'pango-1.0', 'pangoft2-1.0', 'pangox-1.0', 'pangoxft-1.0', 'Xinerama', 'boost_program_options-gcc34-mt', 'boost_signals-gcc34-mt', 'boost_regex-gcc34-mt']
+ client_external_libs += [ 'fontconfig', 'gtk-x11-2.0', 'atk-1.0', 'gmodule-2.0', 'gdk-x11-2.0', 'gdk_pixbuf-2.0', 'pango-1.0', 'pangoft2-1.0', 'pangox-1.0', 'pangoxft-1.0', 'Xinerama', 'boost_program_options-gcc34-mt', 'boost_signals-gcc34-mt', 'boost_regex-gcc34-mt' ]
incdirs = [ 'ELFIO', 'atk-1.0', 'glib-2.0', 'gtk-2.0',
'llfreetype2', 'pango-1.0' ]
include_dirs += ['../libraries/' + system_str + '/include/' + d
@@ -408,7 +410,7 @@ for build_target in targets:
base_env = Environment(CXX = compiler,
CPPPATH = include_dirs,
- LIBPATH = [lib_dir] + [system_lib_dir] + [havok_lib_dir],
+ LIBPATH = lib_path + [havok_lib_dir],
LINKFLAGS = system_link_flags + '--no-keep-memory --reduce-memory-overheads ' )
### Environments for various build types ###
@@ -474,7 +476,6 @@ for build_target in targets:
env['ENV']['DISTCC_HOSTS'] = hosts
env['ENV']['USER'] = os.environ['USER']
env['ENV']['HOME'] = os.environ['HOME']
- env['ENV']['SSH_AUTH_SOCK'] = os.environ['SSH_AUTH_SOCK']
if enable_colorgcc:
env['ENV']['PATH'] = os.environ['PATH']
@@ -733,6 +734,11 @@ for build_target in targets:
file_suffix = ''
if buildtype == 'debug' or buildtype == 'havok1debug':
file_suffix = '_debug'
+ boost_signals_lib = 'boost_signals-gcc33-mt-d'
+ boost_libs = [ 'boost_regex-gcc33-mt-d', boost_signals_lib ]
+ else:
+ boost_signals_lib = 'boost_signals-gcc33-mt'
+ boost_libs = [ 'boost_regex-gcc33-mt', boost_signals_lib ]
common_external_libs += [ 'pthread' ]
@@ -759,8 +765,8 @@ for build_target in targets:
internal_libs + external_libs)
# Dataserver
- external_libs = common_external_libs + [
- 'boost_regex-gcc33-mt', 'boost_signals-gcc33-mt', 'mysqlclient', 'tcmalloc', 'stacktrace',
+ external_libs = common_external_libs + boost_libs + [
+ 'mysqlclient', 'tcmalloc', 'stacktrace',
]
internal_libs = [ 'llcharacter', 'lldatabase', 'llimage', 'llimagej2coj', 'llinventory',
'llscene', 'llmessage', 'llvfs', 'llxml', 'llcommon', 'llmath' ]
@@ -782,9 +788,8 @@ for build_target in targets:
internal_libs + external_libs)
# Mapserver
- external_libs = common_external_libs + ['OSMesa16', 'kdu',
- 'boost_regex-gcc33-mt', 'boost_signals-gcc33-mt', 'iconv',
- 'jpeg', 'openjpeg', 'GL', 'mysqlclient', 'png12', 'pthread', 'dl']
+ external_libs = common_external_libs + [ 'OSMesa16', 'kdu' ] + boost_libs + [
+ 'iconv', 'jpeg', 'openjpeg', 'GL', 'mysqlclient', 'png12', 'pthread', 'dl' ]
internal_libs = ['llrender', 'llwindow', 'llimage', 'llimagej2coj', 'lldatabase', 'llprimitive', 'llmessage', 'llkdustatic',
'llxml', 'llvfs', 'llmath', 'llcommon']
create_executable('mapserver/mapserver' + file_suffix, 'mapserver',
@@ -792,8 +797,9 @@ for build_target in targets:
# Simulator
Depends('newsim/simulator' + file_suffix, 'mapserver/mapserver' + file_suffix)
- external_libs = common_external_libs + ['boost_regex-gcc33-mt', 'boost_signals-gcc33-mt', 'openjpeg', 'dl', 'kdu',
- 'mysqlclient', 'iconv', 'tcmalloc', 'stacktrace', 'png12']
+ external_libs = common_external_libs + boost_libs + [
+ 'openjpeg', 'dl', 'kdu', 'mysqlclient', 'iconv', 'tcmalloc', 'stacktrace', 'png12',
+ ]
# the order of the havok libs matters
external_libs += [
@@ -822,7 +828,7 @@ for build_target in targets:
internal_libs + external_libs)
# texture upload verifier
- external_libs = common_external_libs + ['boost_signals-gcc33-mt', 'kdu', 'openjpeg', 'png12', 'z', 'dl']
+ external_libs = common_external_libs + [boost_signals_lib, 'kdu', 'openjpeg', 'png12', 'z', 'dl']
internal_libs = [
'llimage',
'llimagej2coj',
@@ -855,7 +861,7 @@ for build_target in targets:
Depends('test/test', 'newsim/simulator' + file_suffix)
external_libs = common_external_libs + ['mysqlclient']
if platform == 'linux':
- external_libs += ['boost_signals-gcc33-mt']
+ external_libs += [boost_signals_lib]
internal_libs = [ 'lldatabase', 'llinventory', 'llmessage', 'llxml',
'llvfs', 'llcharacter', 'llphysics', 'llprimitive', 'llmath', 'llcommon' ]
test_executable = 'test/test' + file_suffix
diff --git a/linden/indra/indra_complete/indra_complete_vc8.sln b/linden/indra/indra_complete/indra_complete_vc8.sln
index 54bad30..452608f 100644
--- a/linden/indra/indra_complete/indra_complete_vc8.sln
+++ b/linden/indra/indra_complete/indra_complete_vc8.sln
@@ -69,6 +69,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lscript_compile", "..\lscri
EndProjectSection
EndProject
ProjectSection(ProjectDependencies) = postProject
+ {D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE} = {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
{FCC4483C-5B84-4944-B91F-4589A219BC0B} = {FCC4483C-5B84-4944-B91F-4589A219BC0B}
{F882263E-4F2A-43D9-A45A-FA4C8EC66552} = {F882263E-4F2A-43D9-A45A-FA4C8EC66552}
@@ -86,11 +88,11 @@ EndProject
EndProjectSection
EndProject
ProjectSection(ProjectDependencies) = postProject
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
{E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
{D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
EndProjectSection
EndProject
ProjectSection(ProjectDependencies) = postProject
@@ -178,9 +180,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llimagej2coj", "..\llimagej
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lscript_compile_fb_vc8", "..\lscript\lscript_compile\lscript_compile_fb_vc8.vcproj", "{B771CF1B-E253-47BD-8B0A-6B0440CC9228}"
EndProject
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
+ DebugHk460|Win32 = DebugHk460|Win32
DebugMesaHeadless|Win32 = DebugMesaHeadless|Win32
Release|Win32 = Release|Win32
ReleaseForDownload|Win32 = ReleaseForDownload|Win32
@@ -189,6 +193,8 @@ Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Debug|Win32.ActiveCfg = Debug|Win32
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Debug|Win32.Build.0 = Debug|Win32
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.DebugHk460|Win32.Build.0 = Debug|Win32
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Release|Win32.ActiveCfg = Release|Win32
@@ -199,6 +205,8 @@ Global
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.Debug|Win32.ActiveCfg = Debug|Win32
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.Debug|Win32.Build.0 = Debug|Win32
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.DebugHk460|Win32.Build.0 = Debug|Win32
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.Release|Win32.ActiveCfg = Release|Win32
@@ -209,6 +217,8 @@ Global
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.Debug|Win32.ActiveCfg = Debug|Win32
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.Debug|Win32.Build.0 = Debug|Win32
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34}.DebugHk460|Win32.Build.0 = Debug|Win32
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.Release|Win32.ActiveCfg = Release|Win32
@@ -219,6 +229,8 @@ Global
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{D37774F4-253D-4760-BF64-372A943224A1}.Debug|Win32.ActiveCfg = Debug|Win32
{D37774F4-253D-4760-BF64-372A943224A1}.Debug|Win32.Build.0 = Debug|Win32
+ {D37774F4-253D-4760-BF64-372A943224A1}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {D37774F4-253D-4760-BF64-372A943224A1}.DebugHk460|Win32.Build.0 = Debug|Win32
{D37774F4-253D-4760-BF64-372A943224A1}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{D37774F4-253D-4760-BF64-372A943224A1}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{D37774F4-253D-4760-BF64-372A943224A1}.Release|Win32.ActiveCfg = Release|Win32
@@ -229,6 +241,8 @@ Global
{D37774F4-253D-4760-BF64-372A943224A1}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{A5470DA6-0C3A-4602-B930-43DB25511A59}.Debug|Win32.ActiveCfg = Debug|Win32
{A5470DA6-0C3A-4602-B930-43DB25511A59}.Debug|Win32.Build.0 = Debug|Win32
+ {A5470DA6-0C3A-4602-B930-43DB25511A59}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {A5470DA6-0C3A-4602-B930-43DB25511A59}.DebugHk460|Win32.Build.0 = Debug|Win32
{A5470DA6-0C3A-4602-B930-43DB25511A59}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{A5470DA6-0C3A-4602-B930-43DB25511A59}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{A5470DA6-0C3A-4602-B930-43DB25511A59}.Release|Win32.ActiveCfg = Release|Win32
@@ -239,6 +253,8 @@ Global
{A5470DA6-0C3A-4602-B930-43DB25511A59}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{DE55D666-6A3D-476C-937F-109269B83681}.Debug|Win32.ActiveCfg = Debug|Win32
{DE55D666-6A3D-476C-937F-109269B83681}.Debug|Win32.Build.0 = Debug|Win32
+ {DE55D666-6A3D-476C-937F-109269B83681}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {DE55D666-6A3D-476C-937F-109269B83681}.DebugHk460|Win32.Build.0 = Debug|Win32
{DE55D666-6A3D-476C-937F-109269B83681}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{DE55D666-6A3D-476C-937F-109269B83681}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{DE55D666-6A3D-476C-937F-109269B83681}.Release|Win32.ActiveCfg = Release|Win32
@@ -249,6 +265,8 @@ Global
{DE55D666-6A3D-476C-937F-109269B83681}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.Debug|Win32.ActiveCfg = Debug|Win32
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.Debug|Win32.Build.0 = Debug|Win32
+ {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.DebugHk460|Win32.Build.0 = Debug|Win32
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.Release|Win32.ActiveCfg = Release|Win32
@@ -259,6 +277,8 @@ Global
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.Debug|Win32.ActiveCfg = Debug|Win32
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.Debug|Win32.Build.0 = Debug|Win32
+ {FCC4483C-5B84-4944-B91F-4589A219BC0B}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {FCC4483C-5B84-4944-B91F-4589A219BC0B}.DebugHk460|Win32.Build.0 = Debug|Win32
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.Release|Win32.ActiveCfg = Release|Win32
@@ -269,6 +289,8 @@ Global
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.Debug|Win32.ActiveCfg = Debug|Win32
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.Debug|Win32.Build.0 = Debug|Win32
+ {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.DebugHk460|Win32.Build.0 = Debug|Win32
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.Release|Win32.ActiveCfg = Release|Win32
@@ -279,6 +301,8 @@ Global
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.Debug|Win32.ActiveCfg = Debug|Win32
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.Debug|Win32.Build.0 = Debug|Win32
+ {93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.DebugHk460|Win32.Build.0 = Debug|Win32
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.Release|Win32.ActiveCfg = Release|Win32
@@ -289,6 +313,8 @@ Global
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.Debug|Win32.ActiveCfg = Debug|Win32
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.Debug|Win32.Build.0 = Debug|Win32
+ {2ADE3C14-94C4-40BF-B033-70F3C954EE90}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {2ADE3C14-94C4-40BF-B033-70F3C954EE90}.DebugHk460|Win32.Build.0 = Debug|Win32
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.Release|Win32.ActiveCfg = Release|Win32
@@ -299,6 +325,8 @@ Global
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.Debug|Win32.ActiveCfg = Debug|Win32
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.Debug|Win32.Build.0 = Debug|Win32
+ {328D1968-924F-4863-AAE8-5F9A95BA68E5}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {328D1968-924F-4863-AAE8-5F9A95BA68E5}.DebugHk460|Win32.Build.0 = Debug|Win32
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.Release|Win32.ActiveCfg = Release|Win32
@@ -309,6 +337,8 @@ Global
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.Debug|Win32.ActiveCfg = Debug|Win32
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.Debug|Win32.Build.0 = Debug|Win32
+ {E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.DebugHk460|Win32.Build.0 = Debug|Win32
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.Release|Win32.ActiveCfg = Release|Win32
@@ -319,6 +349,8 @@ Global
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.Debug|Win32.ActiveCfg = Debug|Win32
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.Debug|Win32.Build.0 = Debug|Win32
+ {B4B838C7-2C72-428E-BBFD-25764E659A8B}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {B4B838C7-2C72-428E-BBFD-25764E659A8B}.DebugHk460|Win32.Build.0 = Debug|Win32
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.Release|Win32.ActiveCfg = Release|Win32
@@ -329,6 +361,8 @@ Global
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.Debug|Win32.ActiveCfg = Debug|Win32
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.Debug|Win32.Build.0 = Debug|Win32
+ {B5B53617-416F-404A-BF10-22EBCCA0E4FB}.DebugHk460|Win32.ActiveCfg = DebugMesaHeadless|Win32
+ {B5B53617-416F-404A-BF10-22EBCCA0E4FB}.DebugHk460|Win32.Build.0 = DebugMesaHeadless|Win32
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.DebugMesaHeadless|Win32.ActiveCfg = DebugMesaHeadless|Win32
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.DebugMesaHeadless|Win32.Build.0 = DebugMesaHeadless|Win32
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.Release|Win32.ActiveCfg = Release|Win32
@@ -339,6 +373,8 @@ Global
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.Debug|Win32.ActiveCfg = Debug|Win32
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.Debug|Win32.Build.0 = Debug|Win32
+ {BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.DebugHk460|Win32.Build.0 = Debug|Win32
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.Release|Win32.ActiveCfg = Release|Win32
@@ -349,6 +385,8 @@ Global
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.Debug|Win32.ActiveCfg = Debug|Win32
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.Debug|Win32.Build.0 = Debug|Win32
+ {F882263E-4F2A-43D9-A45A-FA4C8EC66552}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {F882263E-4F2A-43D9-A45A-FA4C8EC66552}.DebugHk460|Win32.Build.0 = Debug|Win32
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.Release|Win32.ActiveCfg = Release|Win32
@@ -359,6 +397,8 @@ Global
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{44CE6D82-7320-4609-8FC3-5965C19F4808}.Debug|Win32.ActiveCfg = Debug|Win32
{44CE6D82-7320-4609-8FC3-5965C19F4808}.Debug|Win32.Build.0 = Debug|Win32
+ {44CE6D82-7320-4609-8FC3-5965C19F4808}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {44CE6D82-7320-4609-8FC3-5965C19F4808}.DebugHk460|Win32.Build.0 = Debug|Win32
{44CE6D82-7320-4609-8FC3-5965C19F4808}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{44CE6D82-7320-4609-8FC3-5965C19F4808}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{44CE6D82-7320-4609-8FC3-5965C19F4808}.Release|Win32.ActiveCfg = Release|Win32
@@ -369,6 +409,8 @@ Global
{44CE6D82-7320-4609-8FC3-5965C19F4808}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.Debug|Win32.ActiveCfg = Debug|Win32
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.Debug|Win32.Build.0 = Debug|Win32
+ {D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.DebugHk460|Win32.Build.0 = Debug|Win32
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.Release|Win32.ActiveCfg = Release|Win32
@@ -378,6 +420,8 @@ Global
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.Debug|Win32.ActiveCfg = Debug|Win32
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.Debug|Win32.Build.0 = Debug|Win32
+ {C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.DebugHk460|Win32.Build.0 = Debug|Win32
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.Release|Win32.ActiveCfg = Release|Win32
@@ -387,6 +431,8 @@ Global
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.Debug|Win32.ActiveCfg = Debug|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.Debug|Win32.Build.0 = Debug|Win32
+ {A5504A1E-8BA4-45D2-8144-1B6937E37E98}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {A5504A1E-8BA4-45D2-8144-1B6937E37E98}.DebugHk460|Win32.Build.0 = Debug|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.Release|Win32.ActiveCfg = Release|Win32
@@ -396,6 +442,8 @@ Global
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.Debug|Win32.ActiveCfg = Debug|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.Debug|Win32.Build.0 = Debug|Win32
+ {777F38BE-2DFE-4051-9AAD-2832ABC474CC}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {777F38BE-2DFE-4051-9AAD-2832ABC474CC}.DebugHk460|Win32.Build.0 = Debug|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.Release|Win32.ActiveCfg = Release|Win32
@@ -405,6 +453,8 @@ Global
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.ReleaseNoOpt|Win32.Build.0 = Release|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.Debug|Win32.ActiveCfg = Debug|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.Debug|Win32.Build.0 = Debug|Win32
+ {EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.DebugHk460|Win32.Build.0 = Debug|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.Release|Win32.ActiveCfg = Release|Win32
@@ -414,6 +464,8 @@ Global
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.ReleaseNoOpt|Win32.Build.0 = Release|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.Debug|Win32.ActiveCfg = Debug|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.Debug|Win32.Build.0 = Debug|Win32
+ {648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.DebugHk460|Win32.Build.0 = Debug|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.Release|Win32.ActiveCfg = Release|Win32
@@ -423,6 +475,8 @@ Global
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.Debug|Win32.ActiveCfg = Debug|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.Debug|Win32.Build.0 = Debug|Win32
+ {E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.DebugHk460|Win32.Build.0 = Debug|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.Release|Win32.ActiveCfg = Release|Win32
@@ -432,6 +486,8 @@ Global
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{F56CA265-93E9-4068-8A67-8B104C876D70}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F56CA265-93E9-4068-8A67-8B104C876D70}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {F56CA265-93E9-4068-8A67-8B104C876D70}.DebugHk460|Win32.Build.0 = Debug|Win32
{F56CA265-93E9-4068-8A67-8B104C876D70}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{F56CA265-93E9-4068-8A67-8B104C876D70}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{F56CA265-93E9-4068-8A67-8B104C876D70}.Release|Win32.ActiveCfg = Release|Win32
@@ -439,6 +495,8 @@ Global
{F56CA265-93E9-4068-8A67-8B104C876D70}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.Debug|Win32.ActiveCfg = Debug|Win32
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.Debug|Win32.Build.0 = Debug|Win32
+ {9D0C7E02-6506-4EE7-BC5C-75671D28D594}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {9D0C7E02-6506-4EE7-BC5C-75671D28D594}.DebugHk460|Win32.Build.0 = Debug|Win32
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.Release|Win32.ActiveCfg = Release|Win32
@@ -449,6 +507,8 @@ Global
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.Debug|Win32.ActiveCfg = Debug|Win32
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.Debug|Win32.Build.0 = Debug|Win32
+ {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.DebugHk460|Win32.Build.0 = Debug|Win32
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.Release|Win32.ActiveCfg = Release|Win32
@@ -459,6 +519,8 @@ Global
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.Debug|Win32.ActiveCfg = Debug|Win32
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.Debug|Win32.Build.0 = Debug|Win32
+ {BBAA6588-CA96-4A87-A988-B02270B8D02B}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {BBAA6588-CA96-4A87-A988-B02270B8D02B}.DebugHk460|Win32.Build.0 = Debug|Win32
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.Release|Win32.ActiveCfg = Release|Win32
@@ -468,6 +530,8 @@ Global
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.Debug|Win32.ActiveCfg = Debug|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.Debug|Win32.Build.0 = Debug|Win32
+ {E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.DebugHk460|Win32.Build.0 = Debug|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.Release|Win32.ActiveCfg = Release|Win32
@@ -478,6 +542,8 @@ Global
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.Debug|Win32.ActiveCfg = Debug|Win32
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.Debug|Win32.Build.0 = Debug|Win32
+ {6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.DebugHk460|Win32.Build.0 = Debug|Win32
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.Release|Win32.ActiveCfg = Release|Win32
@@ -488,6 +554,8 @@ Global
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{076DD042-2E58-42EA-9401-53210B65C1FC}.Debug|Win32.ActiveCfg = Debug|Win32
{076DD042-2E58-42EA-9401-53210B65C1FC}.Debug|Win32.Build.0 = Debug|Win32
+ {076DD042-2E58-42EA-9401-53210B65C1FC}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {076DD042-2E58-42EA-9401-53210B65C1FC}.DebugHk460|Win32.Build.0 = Debug|Win32
{076DD042-2E58-42EA-9401-53210B65C1FC}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{076DD042-2E58-42EA-9401-53210B65C1FC}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{076DD042-2E58-42EA-9401-53210B65C1FC}.Release|Win32.ActiveCfg = Release|Win32
@@ -498,6 +566,8 @@ Global
{076DD042-2E58-42EA-9401-53210B65C1FC}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.Debug|Win32.ActiveCfg = Debug|Win32
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.Debug|Win32.Build.0 = Debug|Win32
+ {AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.DebugHk460|Win32.Build.0 = Debug|Win32
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.Release|Win32.ActiveCfg = Release|Win32
@@ -508,6 +578,8 @@ Global
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.Debug|Win32.ActiveCfg = Debug|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.Debug|Win32.Build.0 = Debug|Win32
+ {4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.DebugHk460|Win32.Build.0 = Debug|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.Release|Win32.ActiveCfg = Release|Win32
@@ -518,6 +590,8 @@ Global
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Debug|Win32.ActiveCfg = Debug|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Debug|Win32.Build.0 = Debug|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugHk460|Win32.Build.0 = Debug|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Release|Win32.ActiveCfg = Release|Win32
@@ -526,6 +600,18 @@ Global
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseForDownload|Win32.Build.0 = Release|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseNoOpt|Win32.ActiveCfg = Release|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseNoOpt|Win32.Build.0 = Release|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.Debug|Win32.Build.0 = Debug|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.DebugHk460|Win32.ActiveCfg = DebugHk460|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.DebugHk460|Win32.Build.0 = DebugHk460|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.DebugMesaHeadless|Win32.ActiveCfg = DebugHk460|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.DebugMesaHeadless|Win32.Build.0 = DebugHk460|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.Release|Win32.ActiveCfg = Release|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.Release|Win32.Build.0 = Release|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.ReleaseForDownload|Win32.ActiveCfg = Release|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.ReleaseForDownload|Win32.Build.0 = Release|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/linden/indra/indra_complete/indra_complete_vc9.sln b/linden/indra/indra_complete/indra_complete_vc9.sln
index d7e781d..3ef987d 100644
--- a/linden/indra/indra_complete/indra_complete_vc9.sln
+++ b/linden/indra/indra_complete/indra_complete_vc9.sln
@@ -83,6 +83,7 @@ EndProject
{B4B838C7-2C72-428E-BBFD-25764E659A8B} = {B4B838C7-2C72-428E-BBFD-25764E659A8B}
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E} = {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}
{D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE} = {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}
EndProjectSection
EndProject
ProjectSection(ProjectDependencies) = postProject
@@ -178,9 +179,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llimagej2coj", "..\llimagej
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lscript_compile_fb_vc8", "..\lscript\lscript_compile\lscript_compile_fb_vc9.vcproj", "{B771CF1B-E253-47BD-8B0A-6B0440CC9228}"
EndProject
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
+ DebugHk460|Win32 = DebugHk460|Win32
DebugMesaHeadless|Win32 = DebugMesaHeadless|Win32
Release|Win32 = Release|Win32
ReleaseForDownload|Win32 = ReleaseForDownload|Win32
@@ -189,6 +192,8 @@ Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Debug|Win32.ActiveCfg = Debug|Win32
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Debug|Win32.Build.0 = Debug|Win32
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.DebugHk460|Win32.Build.0 = Debug|Win32
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.Release|Win32.ActiveCfg = Release|Win32
@@ -199,6 +204,8 @@ Global
{7BCB4B2C-8378-4186-88EA-5742B5ABE17F}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.Debug|Win32.ActiveCfg = Debug|Win32
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.Debug|Win32.Build.0 = Debug|Win32
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.DebugHk460|Win32.Build.0 = Debug|Win32
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.Release|Win32.ActiveCfg = Release|Win32
@@ -209,6 +216,8 @@ Global
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.Debug|Win32.ActiveCfg = Debug|Win32
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.Debug|Win32.Build.0 = Debug|Win32
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34}.DebugHk460|Win32.Build.0 = Debug|Win32
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.Release|Win32.ActiveCfg = Release|Win32
@@ -219,6 +228,8 @@ Global
{E5D94794-5671-4BD6-A16D-26EC18F3DB34}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{D37774F4-253D-4760-BF64-372A943224A1}.Debug|Win32.ActiveCfg = Debug|Win32
{D37774F4-253D-4760-BF64-372A943224A1}.Debug|Win32.Build.0 = Debug|Win32
+ {D37774F4-253D-4760-BF64-372A943224A1}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {D37774F4-253D-4760-BF64-372A943224A1}.DebugHk460|Win32.Build.0 = Debug|Win32
{D37774F4-253D-4760-BF64-372A943224A1}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{D37774F4-253D-4760-BF64-372A943224A1}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{D37774F4-253D-4760-BF64-372A943224A1}.Release|Win32.ActiveCfg = Release|Win32
@@ -229,6 +240,8 @@ Global
{D37774F4-253D-4760-BF64-372A943224A1}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{A5470DA6-0C3A-4602-B930-43DB25511A59}.Debug|Win32.ActiveCfg = Debug|Win32
{A5470DA6-0C3A-4602-B930-43DB25511A59}.Debug|Win32.Build.0 = Debug|Win32
+ {A5470DA6-0C3A-4602-B930-43DB25511A59}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {A5470DA6-0C3A-4602-B930-43DB25511A59}.DebugHk460|Win32.Build.0 = Debug|Win32
{A5470DA6-0C3A-4602-B930-43DB25511A59}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{A5470DA6-0C3A-4602-B930-43DB25511A59}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{A5470DA6-0C3A-4602-B930-43DB25511A59}.Release|Win32.ActiveCfg = Release|Win32
@@ -239,6 +252,8 @@ Global
{A5470DA6-0C3A-4602-B930-43DB25511A59}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{DE55D666-6A3D-476C-937F-109269B83681}.Debug|Win32.ActiveCfg = Debug|Win32
{DE55D666-6A3D-476C-937F-109269B83681}.Debug|Win32.Build.0 = Debug|Win32
+ {DE55D666-6A3D-476C-937F-109269B83681}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {DE55D666-6A3D-476C-937F-109269B83681}.DebugHk460|Win32.Build.0 = Debug|Win32
{DE55D666-6A3D-476C-937F-109269B83681}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{DE55D666-6A3D-476C-937F-109269B83681}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{DE55D666-6A3D-476C-937F-109269B83681}.Release|Win32.ActiveCfg = Release|Win32
@@ -249,6 +264,8 @@ Global
{DE55D666-6A3D-476C-937F-109269B83681}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.Debug|Win32.ActiveCfg = Debug|Win32
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.Debug|Win32.Build.0 = Debug|Win32
+ {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.DebugHk460|Win32.Build.0 = Debug|Win32
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.Release|Win32.ActiveCfg = Release|Win32
@@ -259,6 +276,8 @@ Global
{681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.Debug|Win32.ActiveCfg = Debug|Win32
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.Debug|Win32.Build.0 = Debug|Win32
+ {FCC4483C-5B84-4944-B91F-4589A219BC0B}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {FCC4483C-5B84-4944-B91F-4589A219BC0B}.DebugHk460|Win32.Build.0 = Debug|Win32
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.Release|Win32.ActiveCfg = Release|Win32
@@ -269,6 +288,8 @@ Global
{FCC4483C-5B84-4944-B91F-4589A219BC0B}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.Debug|Win32.ActiveCfg = Debug|Win32
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.Debug|Win32.Build.0 = Debug|Win32
+ {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.DebugHk460|Win32.Build.0 = Debug|Win32
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.Release|Win32.ActiveCfg = Release|Win32
@@ -279,6 +300,8 @@ Global
{5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.Debug|Win32.ActiveCfg = Debug|Win32
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.Debug|Win32.Build.0 = Debug|Win32
+ {93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.DebugHk460|Win32.Build.0 = Debug|Win32
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.Release|Win32.ActiveCfg = Release|Win32
@@ -289,6 +312,8 @@ Global
{93B2BA29-FBE9-4376-92C1-6108DCFE09D3}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.Debug|Win32.ActiveCfg = Debug|Win32
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.Debug|Win32.Build.0 = Debug|Win32
+ {2ADE3C14-94C4-40BF-B033-70F3C954EE90}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {2ADE3C14-94C4-40BF-B033-70F3C954EE90}.DebugHk460|Win32.Build.0 = Debug|Win32
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.Release|Win32.ActiveCfg = Release|Win32
@@ -299,6 +324,8 @@ Global
{2ADE3C14-94C4-40BF-B033-70F3C954EE90}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.Debug|Win32.ActiveCfg = Debug|Win32
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.Debug|Win32.Build.0 = Debug|Win32
+ {328D1968-924F-4863-AAE8-5F9A95BA68E5}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {328D1968-924F-4863-AAE8-5F9A95BA68E5}.DebugHk460|Win32.Build.0 = Debug|Win32
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.Release|Win32.ActiveCfg = Release|Win32
@@ -309,6 +336,8 @@ Global
{328D1968-924F-4863-AAE8-5F9A95BA68E5}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.Debug|Win32.ActiveCfg = Debug|Win32
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.Debug|Win32.Build.0 = Debug|Win32
+ {E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.DebugHk460|Win32.Build.0 = Debug|Win32
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.Release|Win32.ActiveCfg = Release|Win32
@@ -319,6 +348,8 @@ Global
{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.Debug|Win32.ActiveCfg = Debug|Win32
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.Debug|Win32.Build.0 = Debug|Win32
+ {B4B838C7-2C72-428E-BBFD-25764E659A8B}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {B4B838C7-2C72-428E-BBFD-25764E659A8B}.DebugHk460|Win32.Build.0 = Debug|Win32
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.Release|Win32.ActiveCfg = Release|Win32
@@ -329,6 +360,8 @@ Global
{B4B838C7-2C72-428E-BBFD-25764E659A8B}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.Debug|Win32.ActiveCfg = Debug|Win32
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.Debug|Win32.Build.0 = Debug|Win32
+ {B5B53617-416F-404A-BF10-22EBCCA0E4FB}.DebugHk460|Win32.ActiveCfg = DebugMesaHeadless|Win32
+ {B5B53617-416F-404A-BF10-22EBCCA0E4FB}.DebugHk460|Win32.Build.0 = DebugMesaHeadless|Win32
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.DebugMesaHeadless|Win32.ActiveCfg = DebugMesaHeadless|Win32
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.DebugMesaHeadless|Win32.Build.0 = DebugMesaHeadless|Win32
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.Release|Win32.ActiveCfg = Release|Win32
@@ -339,6 +372,8 @@ Global
{B5B53617-416F-404A-BF10-22EBCCA0E4FB}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.Debug|Win32.ActiveCfg = Debug|Win32
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.Debug|Win32.Build.0 = Debug|Win32
+ {BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.DebugHk460|Win32.Build.0 = Debug|Win32
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.Release|Win32.ActiveCfg = Release|Win32
@@ -349,6 +384,8 @@ Global
{BFA102B0-C891-4E13-B1CF-C2F28073DA8E}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.Debug|Win32.ActiveCfg = Debug|Win32
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.Debug|Win32.Build.0 = Debug|Win32
+ {F882263E-4F2A-43D9-A45A-FA4C8EC66552}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {F882263E-4F2A-43D9-A45A-FA4C8EC66552}.DebugHk460|Win32.Build.0 = Debug|Win32
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.Release|Win32.ActiveCfg = Release|Win32
@@ -359,6 +396,8 @@ Global
{F882263E-4F2A-43D9-A45A-FA4C8EC66552}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{44CE6D82-7320-4609-8FC3-5965C19F4808}.Debug|Win32.ActiveCfg = Debug|Win32
{44CE6D82-7320-4609-8FC3-5965C19F4808}.Debug|Win32.Build.0 = Debug|Win32
+ {44CE6D82-7320-4609-8FC3-5965C19F4808}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {44CE6D82-7320-4609-8FC3-5965C19F4808}.DebugHk460|Win32.Build.0 = Debug|Win32
{44CE6D82-7320-4609-8FC3-5965C19F4808}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{44CE6D82-7320-4609-8FC3-5965C19F4808}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{44CE6D82-7320-4609-8FC3-5965C19F4808}.Release|Win32.ActiveCfg = Release|Win32
@@ -369,6 +408,8 @@ Global
{44CE6D82-7320-4609-8FC3-5965C19F4808}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.Debug|Win32.ActiveCfg = Debug|Win32
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.Debug|Win32.Build.0 = Debug|Win32
+ {D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.DebugHk460|Win32.Build.0 = Debug|Win32
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.Release|Win32.ActiveCfg = Release|Win32
@@ -379,6 +420,8 @@ Global
{D0FDC1C3-A589-40F2-ABCA-A84FF3835624}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.Debug|Win32.ActiveCfg = Debug|Win32
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.Debug|Win32.Build.0 = Debug|Win32
+ {C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.DebugHk460|Win32.Build.0 = Debug|Win32
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.Release|Win32.ActiveCfg = Release|Win32
@@ -389,6 +432,8 @@ Global
{C6CA76F5-DCB4-4789-BBA7-43D11EE7C8E2}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.Debug|Win32.ActiveCfg = Debug|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.Debug|Win32.Build.0 = Debug|Win32
+ {A5504A1E-8BA4-45D2-8144-1B6937E37E98}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {A5504A1E-8BA4-45D2-8144-1B6937E37E98}.DebugHk460|Win32.Build.0 = Debug|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.Release|Win32.ActiveCfg = Release|Win32
@@ -399,6 +444,8 @@ Global
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.Debug|Win32.ActiveCfg = Debug|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.Debug|Win32.Build.0 = Debug|Win32
+ {777F38BE-2DFE-4051-9AAD-2832ABC474CC}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {777F38BE-2DFE-4051-9AAD-2832ABC474CC}.DebugHk460|Win32.Build.0 = Debug|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.Release|Win32.ActiveCfg = Release|Win32
@@ -408,6 +455,8 @@ Global
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.ReleaseNoOpt|Win32.Build.0 = Release|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.Debug|Win32.ActiveCfg = Debug|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.Debug|Win32.Build.0 = Debug|Win32
+ {EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.DebugHk460|Win32.Build.0 = Debug|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.Release|Win32.ActiveCfg = Release|Win32
@@ -417,6 +466,8 @@ Global
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.ReleaseNoOpt|Win32.Build.0 = Release|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.Debug|Win32.ActiveCfg = Debug|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.Debug|Win32.Build.0 = Debug|Win32
+ {648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.DebugHk460|Win32.Build.0 = Debug|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.Release|Win32.ActiveCfg = Release|Win32
@@ -426,6 +477,8 @@ Global
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.Debug|Win32.ActiveCfg = Debug|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.Debug|Win32.Build.0 = Debug|Win32
+ {E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.DebugHk460|Win32.Build.0 = Debug|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.Release|Win32.ActiveCfg = Release|Win32
@@ -435,6 +488,8 @@ Global
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{F56CA265-93E9-4068-8A67-8B104C876D70}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F56CA265-93E9-4068-8A67-8B104C876D70}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {F56CA265-93E9-4068-8A67-8B104C876D70}.DebugHk460|Win32.Build.0 = Debug|Win32
{F56CA265-93E9-4068-8A67-8B104C876D70}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{F56CA265-93E9-4068-8A67-8B104C876D70}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{F56CA265-93E9-4068-8A67-8B104C876D70}.Release|Win32.ActiveCfg = Release|Win32
@@ -442,6 +497,8 @@ Global
{F56CA265-93E9-4068-8A67-8B104C876D70}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.Debug|Win32.ActiveCfg = Debug|Win32
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.Debug|Win32.Build.0 = Debug|Win32
+ {9D0C7E02-6506-4EE7-BC5C-75671D28D594}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {9D0C7E02-6506-4EE7-BC5C-75671D28D594}.DebugHk460|Win32.Build.0 = Debug|Win32
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.Release|Win32.ActiveCfg = Release|Win32
@@ -452,6 +509,8 @@ Global
{9D0C7E02-6506-4EE7-BC5C-75671D28D594}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.Debug|Win32.ActiveCfg = Debug|Win32
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.Debug|Win32.Build.0 = Debug|Win32
+ {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.DebugHk460|Win32.Build.0 = Debug|Win32
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.Release|Win32.ActiveCfg = Release|Win32
@@ -462,6 +521,8 @@ Global
{4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.Debug|Win32.ActiveCfg = Debug|Win32
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.Debug|Win32.Build.0 = Debug|Win32
+ {BBAA6588-CA96-4A87-A988-B02270B8D02B}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {BBAA6588-CA96-4A87-A988-B02270B8D02B}.DebugHk460|Win32.Build.0 = Debug|Win32
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.Release|Win32.ActiveCfg = Release|Win32
@@ -471,6 +532,8 @@ Global
{BBAA6588-CA96-4A87-A988-B02270B8D02B}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.Debug|Win32.ActiveCfg = Debug|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.Debug|Win32.Build.0 = Debug|Win32
+ {E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.DebugHk460|Win32.Build.0 = Debug|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.Release|Win32.ActiveCfg = Release|Win32
@@ -481,6 +544,8 @@ Global
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.Debug|Win32.ActiveCfg = Debug|Win32
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.Debug|Win32.Build.0 = Debug|Win32
+ {6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.DebugHk460|Win32.Build.0 = Debug|Win32
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.Release|Win32.ActiveCfg = Release|Win32
@@ -491,6 +556,8 @@ Global
{6AEE004D-BFE8-4082-B4D3-E51163B01EEB}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{076DD042-2E58-42EA-9401-53210B65C1FC}.Debug|Win32.ActiveCfg = Debug|Win32
{076DD042-2E58-42EA-9401-53210B65C1FC}.Debug|Win32.Build.0 = Debug|Win32
+ {076DD042-2E58-42EA-9401-53210B65C1FC}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {076DD042-2E58-42EA-9401-53210B65C1FC}.DebugHk460|Win32.Build.0 = Debug|Win32
{076DD042-2E58-42EA-9401-53210B65C1FC}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{076DD042-2E58-42EA-9401-53210B65C1FC}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{076DD042-2E58-42EA-9401-53210B65C1FC}.Release|Win32.ActiveCfg = Release|Win32
@@ -501,6 +568,8 @@ Global
{076DD042-2E58-42EA-9401-53210B65C1FC}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.Debug|Win32.ActiveCfg = Debug|Win32
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.Debug|Win32.Build.0 = Debug|Win32
+ {AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.DebugHk460|Win32.Build.0 = Debug|Win32
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.Release|Win32.ActiveCfg = Release|Win32
@@ -511,6 +580,8 @@ Global
{AF2D801E-EEE7-4B52-A025-F8E648ADC34B}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.Debug|Win32.ActiveCfg = Debug|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.Debug|Win32.Build.0 = Debug|Win32
+ {4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.DebugHk460|Win32.Build.0 = Debug|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.Release|Win32.ActiveCfg = Release|Win32
@@ -521,6 +592,8 @@ Global
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Debug|Win32.ActiveCfg = Debug|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Debug|Win32.Build.0 = Debug|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugHk460|Win32.ActiveCfg = Debug|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugHk460|Win32.Build.0 = Debug|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Release|Win32.ActiveCfg = Release|Win32
@@ -529,6 +602,18 @@ Global
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseForDownload|Win32.Build.0 = Release|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseNoOpt|Win32.ActiveCfg = Release|Win32
{B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseNoOpt|Win32.Build.0 = Release|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.Debug|Win32.Build.0 = Debug|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.DebugHk460|Win32.ActiveCfg = DebugHk460|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.DebugHk460|Win32.Build.0 = DebugHk460|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.DebugMesaHeadless|Win32.ActiveCfg = DebugHk460|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.DebugMesaHeadless|Win32.Build.0 = DebugHk460|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.Release|Win32.ActiveCfg = Release|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.Release|Win32.Build.0 = Release|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.ReleaseForDownload|Win32.ActiveCfg = Release|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.ReleaseForDownload|Win32.Build.0 = Release|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
+ {020311F7-3DAB-4D93-9CE5-6D3926FD15FE}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/linden/indra/lib/python/indra/base/llsd.py b/linden/indra/lib/python/indra/base/llsd.py
index 26ac3a2..cd23551 100644
--- a/linden/indra/lib/python/indra/base/llsd.py
+++ b/linden/indra/lib/python/indra/base/llsd.py
@@ -218,6 +218,78 @@ class LLSDXMLFormatter(object):
def format_xml(something):
return LLSDXMLFormatter().format(something)
+class LLSDXMLPrettyFormatter(LLSDXMLFormatter):
+ def __init__(self, indent_atom = None):
+ # Call the super class constructor so that we have the type map
+ super(LLSDXMLPrettyFormatter, self).__init__()
+
+ # Override the type map to use our specialized formatters to
+ # emit the pretty output.
+ self.type_map[list] = self.PRETTY_ARRAY
+ self.type_map[tuple] = self.PRETTY_ARRAY
+ self.type_map[types.GeneratorType] = self.PRETTY_ARRAY,
+ self.type_map[dict] = self.PRETTY_MAP
+
+ # Private data used for indentation.
+ self._indent_level = 1
+ if indent_atom is None:
+ self._indent_atom = ' '
+ else:
+ self._indent_atom = indent_atom
+
+ def _indent(self):
+ "Return an indentation based on the atom and indentation level."
+ return self._indent_atom * self._indent_level
+
+ def PRETTY_ARRAY(self, v):
+ rv = []
+ rv.append('\n')
+ self._indent_level = self._indent_level + 1
+ rv.extend(["%s%s\n" %
+ (self._indent(),
+ self.generate(item))
+ for item in v])
+ self._indent_level = self._indent_level - 1
+ rv.append(self._indent())
+ rv.append('')
+ return ''.join(rv)
+
+ def PRETTY_MAP(self, v):
+ rv = []
+ rv.append('\n')
+ self._indent_level = self._indent_level + 1
+ keys = v.keys()
+ keys.sort()
+ rv.extend(["%s%s\n%s%s\n" %
+ (self._indent(),
+ self.elt('key', key),
+ self._indent(),
+ self.generate(v[key]))
+ for key in keys])
+ self._indent_level = self._indent_level - 1
+ rv.append(self._indent())
+ rv.append('')
+ return ''.join(rv)
+
+ def format(self, something):
+ data = []
+ data.append('\n')
+ data.append(self.generate(something))
+ data.append('\n')
+ return '\n'.join(data)
+
+def format_pretty_xml(something):
+ """@brief Serialize a python object as 'pretty' llsd xml.
+
+ The output conforms to the LLSD DTD, unlike the output from the
+ standard python xml.dom DOM::toprettyxml() method which does not
+ preserve significant whitespace.
+ This function is not necessarily suited for serializing very large
+ objects. It is not optimized by the cllsd module, and sorts on
+ dict (llsd map) keys alphabetically to ease human reading.
+ """
+ return LLSDXMLPrettyFormatter().format(something)
+
class LLSDNotationFormatter(object):
def __init__(self):
self.type_map = {
@@ -829,6 +901,7 @@ class LLSD(object):
parse = staticmethod(parse)
toXML = staticmethod(format_xml)
+ toPrettyXML = staticmethod(format_pretty_xml)
toBinary = staticmethod(format_binary)
toNotation = staticmethod(format_notation)
@@ -842,6 +915,16 @@ try:
except:
print "Couldn't import mulib.stacked, not registering LLSD converters"
else:
+ def llsd_convert_json(llsd_stuff, request):
+ callback = request.get_header('callback')
+ if callback is not None:
+ ## See Yahoo's ajax documentation for information about using this
+ ## callback style of programming
+ ## http://developer.yahoo.com/common/json.html#callbackparam
+ req.write("%s(%s)" % (callback, simplejson.dumps(llsd_stuff)))
+ else:
+ req.write(simplejson.dumps(llsd_stuff))
+
def llsd_convert_xml(llsd_stuff, request):
request.write(format_xml(llsd_stuff))
@@ -849,6 +932,8 @@ else:
request.write(format_binary(llsd_stuff))
for typ in [LLSD, dict, list, tuple, str, int, float, bool, unicode, type(None)]:
+ stacked.add_producer(typ, llsd_convert_json, 'application/json')
+
stacked.add_producer(typ, llsd_convert_xml, 'application/llsd+xml')
stacked.add_producer(typ, llsd_convert_xml, 'application/xml')
stacked.add_producer(typ, llsd_convert_xml, 'text/xml')
diff --git a/linden/indra/lib/python/indra/ipc/llsdhttp.py b/linden/indra/lib/python/indra/ipc/llsdhttp.py
index 378c1c2..24cad61 100644
--- a/linden/indra/lib/python/indra/ipc/llsdhttp.py
+++ b/linden/indra/lib/python/indra/ipc/llsdhttp.py
@@ -34,7 +34,7 @@ from indra.base import llsd
from eventlet import httpc
-suite = httpc.HttpSuite(llsd.format_xml, llsd.parse, 'application/xml+llsd')
+suite = httpc.HttpSuite(llsd.format_xml, llsd.parse, 'application/llsd+xml')
delete = suite.delete
delete_ = suite.delete_
get = suite.get
diff --git a/linden/indra/lib/python/indra/util/named_query.py b/linden/indra/lib/python/indra/util/named_query.py
index c52bfde..680d1f9 100644
--- a/linden/indra/lib/python/indra/util/named_query.py
+++ b/linden/indra/lib/python/indra/util/named_query.py
@@ -47,6 +47,9 @@ except NameError:
from indra.base import llsd
from indra.base import config
+NQ_FILE_SUFFIX = config.get('named-query-file-suffix', '')
+NQ_FILE_SUFFIX_LEN = len(NQ_FILE_SUFFIX)
+
_g_named_manager = None
def _init_g_named_manager(sql_dir = None):
@@ -98,6 +101,9 @@ class NamedQuery(object):
a path to a file containing an llsd named query document."""
self._stat_interval_seconds = 5 # 5 seconds
self._name = name
+ if (filename is not None) \
+ and (NQ_FILE_SUFFIX != filename[-NQ_FILE_SUFFIX_LEN:]):
+ filename = filename + NQ_FILE_SUFFIX
self._location = filename
self._alternative = dict()
self._last_mod_time = 0
diff --git a/linden/indra/llaudio/audioengine.cpp b/linden/indra/llaudio/audioengine.cpp
index 3e1fdf8..021c940 100644
--- a/linden/indra/llaudio/audioengine.cpp
+++ b/linden/indra/llaudio/audioengine.cpp
@@ -60,6 +60,7 @@ const F32 MAX_CURRENT_TRANSFER_TIME = 60.f;
LLAudioEngine::LLAudioEngine()
{
+ setDefaults();
}
@@ -68,30 +69,42 @@ LLAudioEngine::~LLAudioEngine()
}
-BOOL LLAudioEngine::init(const S32 num_channels, void* userdata)
+void LLAudioEngine::setDefaults()
{
- mMuted = FALSE;
- mMasterGain = 1.f;
- mInternetStreamGain = 0.125f;
- mUserData = userdata;
- mLastStatus = 0;
+ mMaxWindGain = 1.f;
- mNumChannels = num_channels;
-
+ mListenerp = NULL;
- mMaxWindGain = 1.0;
+ mMuted = FALSE;
+ mUserData = NULL;
+
+ mLastStatus = 0;
+ mNumChannels = 0;
mEnableWind = FALSE;
S32 i;
- for (i = 0; i < MAX_BUFFERS; i++)
- {
- mBuffers[i] = NULL;
- }
- for (i = 0; i < num_channels; i++)
+ for (i = 0; i < MAX_CHANNELS; i++)
{
mChannels[i] = NULL;
}
+ for (i = 0; i < MAX_BUFFERS; i++)
+ {
+ mBuffers[i] = NULL;
+ }
+
+ mMasterGain = 1.f;
+ mInternetStreamGain = 0.125f;
+ mNextWindUpdate = 0.f;
+}
+
+
+BOOL LLAudioEngine::init(const S32 num_channels, void* userdata)
+{
+ setDefaults();
+
+ mNumChannels = num_channels;
+ mUserData = userdata;
allocateListener();
diff --git a/linden/indra/llaudio/audioengine.h b/linden/indra/llaudio/audioengine.h
index ac84b77..8994703 100644
--- a/linden/indra/llaudio/audioengine.h
+++ b/linden/indra/llaudio/audioengine.h
@@ -233,6 +233,9 @@ protected:
F32 mNextWindUpdate;
LLFrameTimer mWindUpdateTimer;
+
+private:
+ void setDefaults();
};
diff --git a/linden/indra/llaudio/audioengine_fmod.cpp b/linden/indra/llaudio/audioengine_fmod.cpp
index 0fb5146..271074e 100644
--- a/linden/indra/llaudio/audioengine_fmod.cpp
+++ b/linden/indra/llaudio/audioengine_fmod.cpp
@@ -117,16 +117,16 @@ BOOL LLAudioEngine_FMOD::init(const S32 num_channels, void* userdata)
// Reserve one extra channel for the http stream.
if (!FSOUND_SetMinHardwareChannels(num_channels + 1))
{
- llwarns<< "FMOD::init[0](), error: " << FMOD_ErrorString(FSOUND_GetError()) << llendl;
+ LL_WARNS("AppInit") << "FMOD::init[0](), error: " << FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
}
- llinfos << "LLAudioEngine_FMOD::init() initializing FMOD" << llendl;
+ LL_DEBUGS("AppInit") << "LLAudioEngine_FMOD::init() initializing FMOD" << LL_ENDL;
F32 version = FSOUND_GetVersion();
if (version < FMOD_VERSION)
{
- llwarns << "Error : You are using the wrong FMOD version (" << version
- << ")! You should be using FMOD " << FMOD_VERSION << llendl;
+ LL_WARNS("AppInit") << "Error : You are using the wrong FMOD version (" << version
+ << ")! You should be using FMOD " << FMOD_VERSION << LL_ENDL;
//return FALSE;
}
@@ -140,8 +140,8 @@ BOOL LLAudioEngine_FMOD::init(const S32 num_channels, void* userdata)
// between minimized and not-focused states.
if (!FSOUND_SetHWND(userdata))
{
- llwarns << "Error setting FMOD window: "
- << FMOD_ErrorString(FSOUND_GetError()) << llendl;
+ LL_WARNS("AppInit") << "Error setting FMOD window: "
+ << FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
return FALSE;
}
// Play audio when we don't have focus.
@@ -159,7 +159,7 @@ BOOL LLAudioEngine_FMOD::init(const S32 num_channels, void* userdata)
// otherwise valgrind will fall over on FMOD's MMX detection
if (getenv("LL_VALGRIND")) /*Flawfinder: ignore*/
{
- llinfos << "Pacifying valgrind in FMOD init." << llendl;
+ LL_INFOS("AppInit") << "Pacifying valgrind in FMOD init." << LL_ENDL;
FSOUND_SetMixer(FSOUND_MIXER_QUALITY_FPU);
}
@@ -175,58 +175,58 @@ BOOL LLAudioEngine_FMOD::init(const S32 num_channels, void* userdata)
if (!audio_ok)
if (NULL == getenv("LL_BAD_ESD")) /*Flawfinder: ignore*/
{
- llinfos << "Trying ESD audio output..." << llendl;
+ LL_DEBUGS("AppInit") << "Trying ESD audio output..." << LL_ENDL;
if(FSOUND_SetOutput(FSOUND_OUTPUT_ESD) &&
FSOUND_Init(44100, num_channels, fmod_flags))
{
- llinfos << "ESD audio output initialized OKAY"
- << llendl;
+ LL_DEBUGS("AppInit") << "ESD audio output initialized OKAY"
+ << LL_ENDL;
audio_ok = TRUE;
} else {
- llwarns << "ESD audio output FAILED to initialize: "
- << FMOD_ErrorString(FSOUND_GetError()) << llendl;
+ LL_WARNS("AppInit") << "ESD audio output FAILED to initialize: "
+ << FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
}
} else {
- llinfos << "ESD audio output SKIPPED" << llendl;
+ LL_DEBUGS("AppInit") << "ESD audio output SKIPPED" << LL_ENDL;
}
if (!audio_ok)
if (NULL == getenv("LL_BAD_OSS")) /*Flawfinder: ignore*/
{
- llinfos << "Trying OSS audio output..." << llendl;
+ LL_DEBUGS("AppInit") << "Trying OSS audio output..." << LL_ENDL;
if(FSOUND_SetOutput(FSOUND_OUTPUT_OSS) &&
FSOUND_Init(44100, num_channels, fmod_flags))
{
- llinfos << "OSS audio output initialized OKAY" << llendl;
+ LL_DEBUGS("AppInit") << "OSS audio output initialized OKAY" << LL_ENDL;
audio_ok = TRUE;
} else {
- llwarns << "OSS audio output FAILED to initialize: "
- << FMOD_ErrorString(FSOUND_GetError()) << llendl;
+ LL_WARNS("AppInit") << "OSS audio output FAILED to initialize: "
+ << FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
}
} else {
- llinfos << "OSS audio output SKIPPED" << llendl;
+ LL_DEBUGS("AppInit") << "OSS audio output SKIPPED" << LL_ENDL;
}
if (!audio_ok)
if (NULL == getenv("LL_BAD_ALSA")) /*Flawfinder: ignore*/
{
- llinfos << "Trying ALSA audio output..." << llendl;
+ LL_DEBUGS("AppInit") << "Trying ALSA audio output..." << LL_ENDL;
if(FSOUND_SetOutput(FSOUND_OUTPUT_ALSA) &&
FSOUND_Init(44100, num_channels, fmod_flags))
{
- llinfos << "ALSA audio output initialized OKAY" << llendl;
+ LL_DEBUGS("AppInit") << "ALSA audio output initialized OKAY" << LL_ENDL;
audio_ok = TRUE;
} else {
- llwarns << "ALSA audio output FAILED to initialize: "
- << FMOD_ErrorString(FSOUND_GetError()) << llendl;
+ LL_WARNS("AppInit") << "ALSA audio output FAILED to initialize: "
+ << FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
}
} else {
- llinfos << "OSS audio output SKIPPED" << llendl;
+ LL_DEBUGS("AppInit") << "OSS audio output SKIPPED" << LL_ENDL;
}
if (!audio_ok)
{
- llwarns << "Overall audio init failure." << llendl;
+ LL_WARNS("AppInit") << "Overall audio init failure." << LL_ENDL;
return FALSE;
}
@@ -239,11 +239,11 @@ BOOL LLAudioEngine_FMOD::init(const S32 num_channels, void* userdata)
// ended up with, for QA purposes.
switch (FSOUND_GetOutput())
{
- case FSOUND_OUTPUT_NOSOUND: llinfos << "Audio output: NoSound" << llendl; break;
- case FSOUND_OUTPUT_OSS: llinfos << "Audio output: OSS" << llendl; break;
- case FSOUND_OUTPUT_ESD: llinfos << "Audio output: ESD" << llendl; break;
- case FSOUND_OUTPUT_ALSA: llinfos << "Audio output: ALSA" << llendl; break;
- default: llinfos << "Audio output: Unknown!" << llendl; break;
+ case FSOUND_OUTPUT_NOSOUND: LL_DEBUGS("AppInit") << "Audio output: NoSound" << LL_ENDL; break;
+ case FSOUND_OUTPUT_OSS: LL_DEBUGS("AppInit") << "Audio output: OSS" << LL_ENDL; break;
+ case FSOUND_OUTPUT_ESD: LL_DEBUGS("AppInit") << "Audio output: ESD" << LL_ENDL; break;
+ case FSOUND_OUTPUT_ALSA: LL_DEBUGS("AppInit") << "Audio output: ALSA" << LL_ENDL; break;
+ default: LL_INFOS("AppInit") << "Audio output: Unknown!" << LL_ENDL; break;
};
#else // LL_LINUX
@@ -251,8 +251,8 @@ BOOL LLAudioEngine_FMOD::init(const S32 num_channels, void* userdata)
// initialize the FMOD engine
if (!FSOUND_Init(44100, num_channels, fmod_flags))
{
- llwarns << "Error initializing FMOD: "
- << FMOD_ErrorString(FSOUND_GetError()) << llendl;
+ LL_WARNS("AppInit") << "Error initializing FMOD: "
+ << FMOD_ErrorString(FSOUND_GetError()) << LL_ENDL;
return FALSE;
}
@@ -260,7 +260,7 @@ BOOL LLAudioEngine_FMOD::init(const S32 num_channels, void* userdata)
initInternetStream();
- llinfos << "LLAudioEngine_FMOD::init() FMOD initialized correctly" << llendl;
+ LL_DEBUGS("AppInit") << "LLAudioEngine_FMOD::init() FMOD initialized correctly" << LL_ENDL;
mInited = TRUE;
@@ -686,7 +686,7 @@ BOOL LLAudioBufferFMOD::loadWAV(const char *filename)
// MikeS. - Loading the sound file manually and then handing it over to FMOD,
// since FMOD uses posix IO internally,
// which doesn't work with unicode file paths.
- FILE* sound_file = LLFile::fopen(filename,"rb"); /* Flawfinder: ignore */
+ LLFILE* sound_file = LLFile::fopen(filename,"rb"); /* Flawfinder: ignore */
if (sound_file)
{
fseek(sound_file,0,SEEK_END);
diff --git a/linden/indra/llcharacter/llanimationstates.cpp b/linden/indra/llcharacter/llanimationstates.cpp
index 81e15c7..2b13b0a 100644
--- a/linden/indra/llcharacter/llanimationstates.cpp
+++ b/linden/indra/llcharacter/llanimationstates.cpp
@@ -260,76 +260,77 @@ LLUUID LLAnimationLibrary::stringToAnimState( const char *name, BOOL allow_ids )
}
// Animation states that the user can trigger as part of a gesture
+// See struct LLAnimStateEntry in header for label location information
const LLAnimStateEntry gUserAnimStates[] = {
- LLAnimStateEntry("Afraid", "express_afraid", ANIM_AGENT_AFRAID),
- LLAnimStateEntry("Angry", "express_anger", ANIM_AGENT_ANGRY),
- LLAnimStateEntry("Away", "away", ANIM_AGENT_AWAY),
- LLAnimStateEntry("Backflip", "backflip", ANIM_AGENT_BACKFLIP),
- LLAnimStateEntry("Belly Laugh", "express_laugh", ANIM_AGENT_BELLY_LAUGH),
- LLAnimStateEntry("BigSmile", "express_toothsmile", ANIM_AGENT_EXPRESS_TOOTHSMILE),
- LLAnimStateEntry("Blow Kiss", "blowkiss", ANIM_AGENT_BLOW_KISS),
- LLAnimStateEntry("Bored", "express_bored", ANIM_AGENT_BORED),
- LLAnimStateEntry("Bow", "bow", ANIM_AGENT_BOW),
- LLAnimStateEntry("Clap", "clap", ANIM_AGENT_CLAP),
- LLAnimStateEntry("Court Bow", "courtbow", ANIM_AGENT_COURTBOW),
- LLAnimStateEntry("Cry", "express_cry", ANIM_AGENT_CRY),
- LLAnimStateEntry("Dance 1", "dance1", ANIM_AGENT_DANCE1),
- LLAnimStateEntry("Dance 2", "dance2", ANIM_AGENT_DANCE2),
- LLAnimStateEntry("Dance 3", "dance3", ANIM_AGENT_DANCE3),
- LLAnimStateEntry("Dance 4", "dance4", ANIM_AGENT_DANCE4),
- LLAnimStateEntry("Dance 5", "dance5", ANIM_AGENT_DANCE5),
- LLAnimStateEntry("Dance 6", "dance6", ANIM_AGENT_DANCE6),
- LLAnimStateEntry("Dance 7", "dance7", ANIM_AGENT_DANCE7),
- LLAnimStateEntry("Dance 8", "dance8", ANIM_AGENT_DANCE8),
- LLAnimStateEntry("Disdain", "express_disdain", ANIM_AGENT_EXPRESS_DISDAIN),
- LLAnimStateEntry("Drink", "drink", ANIM_AGENT_DRINK),
- LLAnimStateEntry("Embarrassed", "express_embarrased", ANIM_AGENT_EMBARRASSED),
- LLAnimStateEntry("Finger Wag", "angry_fingerwag", ANIM_AGENT_FINGER_WAG),
- LLAnimStateEntry("Fist Pump", "fist_pump", ANIM_AGENT_FIST_PUMP),
- LLAnimStateEntry("Floating Yoga", "yoga_float", ANIM_AGENT_YOGA_FLOAT),
- LLAnimStateEntry("Frown", "express_frown", ANIM_AGENT_EXPRESS_FROWN),
- LLAnimStateEntry("Impatient", "impatient", ANIM_AGENT_IMPATIENT),
- LLAnimStateEntry("Jump For Joy", "jumpforjoy", ANIM_AGENT_JUMP_FOR_JOY),
- LLAnimStateEntry("Kiss My Butt", "kissmybutt", ANIM_AGENT_KISS_MY_BUTT),
- LLAnimStateEntry("Kiss", "express_kiss", ANIM_AGENT_EXPRESS_KISS),
- LLAnimStateEntry("Laugh", "laugh_short", ANIM_AGENT_LAUGH_SHORT),
- LLAnimStateEntry("Muscle Beach", "musclebeach", ANIM_AGENT_MUSCLE_BEACH),
- LLAnimStateEntry("No (Unhappy)", "no_unhappy", ANIM_AGENT_NO_UNHAPPY),
- LLAnimStateEntry("No", "no_head", ANIM_AGENT_NO),
- LLAnimStateEntry("Nya-nya-nya", "nyanya", ANIM_AGENT_NYAH_NYAH),
- LLAnimStateEntry("One-Two Punch", "punch_onetwo", ANIM_AGENT_ONETWO_PUNCH),
- LLAnimStateEntry("Open Mouth", "express_open_mouth", ANIM_AGENT_EXPRESS_OPEN_MOUTH),
- LLAnimStateEntry("Peace", "peace", ANIM_AGENT_PEACE),
- LLAnimStateEntry("Point at Other", "point_you", ANIM_AGENT_POINT_YOU),
- LLAnimStateEntry("Point at Self", "point_me", ANIM_AGENT_POINT_ME),
- LLAnimStateEntry("Punch Left", "punch_l", ANIM_AGENT_PUNCH_LEFT),
- LLAnimStateEntry("Punch Right", "punch_r", ANIM_AGENT_PUNCH_RIGHT),
- LLAnimStateEntry("RPS count", "rps_countdown", ANIM_AGENT_RPS_COUNTDOWN),
- LLAnimStateEntry("RPS paper", "rps_paper", ANIM_AGENT_RPS_PAPER),
- LLAnimStateEntry("RPS rock", "rps_rock", ANIM_AGENT_RPS_ROCK),
- LLAnimStateEntry("RPS scissors", "rps_scissors", ANIM_AGENT_RPS_SCISSORS),
- LLAnimStateEntry("Repulsed", "express_repulsed", ANIM_AGENT_EXPRESS_REPULSED),
- LLAnimStateEntry("Roundhouse Kick", "kick_roundhouse_r", ANIM_AGENT_ROUNDHOUSE_KICK),
- LLAnimStateEntry("Sad", "express_sad", ANIM_AGENT_SAD),
- LLAnimStateEntry("Salute", "salute", ANIM_AGENT_SALUTE),
- LLAnimStateEntry("Shout", "shout", ANIM_AGENT_SHOUT),
- LLAnimStateEntry("Shrug", "express_shrug", ANIM_AGENT_SHRUG),
- LLAnimStateEntry("Smile", "express_smile", ANIM_AGENT_EXPRESS_SMILE),
- LLAnimStateEntry("Smoke Idle", "smoke_idle", ANIM_AGENT_SMOKE_IDLE),
- LLAnimStateEntry("Smoke Inhale", "smoke_inhale", ANIM_AGENT_SMOKE_INHALE),
- LLAnimStateEntry("Smoke Throw Down","smoke_throw_down", ANIM_AGENT_SMOKE_THROW_DOWN),
- LLAnimStateEntry("Surprise", "express_surprise", ANIM_AGENT_SURPRISE),
- LLAnimStateEntry("Sword Strike", "sword_strike_r", ANIM_AGENT_SWORD_STRIKE),
- LLAnimStateEntry("Tantrum", "angry_tantrum", ANIM_AGENT_TANTRUM),
- LLAnimStateEntry("TongueOut", "express_tongue_out", ANIM_AGENT_EXPRESS_TONGUE_OUT),
- LLAnimStateEntry("Wave", "hello", ANIM_AGENT_HELLO),
- LLAnimStateEntry("Whisper", "whisper", ANIM_AGENT_WHISPER),
- LLAnimStateEntry("Whistle", "whistle", ANIM_AGENT_WHISTLE),
- LLAnimStateEntry("Wink", "express_wink", ANIM_AGENT_WINK),
- LLAnimStateEntry("Wink (Hollywood)","wink_hollywood", ANIM_AGENT_WINK_HOLLYWOOD),
- LLAnimStateEntry("Worry", "express_worry", ANIM_AGENT_EXPRESS_WORRY),
- LLAnimStateEntry("Yes (Happy)", "yes_happy", ANIM_AGENT_YES_HAPPY),
- LLAnimStateEntry("Yes", "yes_head", ANIM_AGENT_YES),
+ LLAnimStateEntry("express_afraid", ANIM_AGENT_AFRAID),
+ LLAnimStateEntry("express_anger", ANIM_AGENT_ANGRY),
+ LLAnimStateEntry("away", ANIM_AGENT_AWAY),
+ LLAnimStateEntry("backflip", ANIM_AGENT_BACKFLIP),
+ LLAnimStateEntry("express_laugh", ANIM_AGENT_BELLY_LAUGH),
+ LLAnimStateEntry("express_toothsmile", ANIM_AGENT_EXPRESS_TOOTHSMILE),
+ LLAnimStateEntry("blowkiss", ANIM_AGENT_BLOW_KISS),
+ LLAnimStateEntry("express_bored", ANIM_AGENT_BORED),
+ LLAnimStateEntry("bow", ANIM_AGENT_BOW),
+ LLAnimStateEntry("clap", ANIM_AGENT_CLAP),
+ LLAnimStateEntry("courtbow", ANIM_AGENT_COURTBOW),
+ LLAnimStateEntry("express_cry", ANIM_AGENT_CRY),
+ LLAnimStateEntry("dance1", ANIM_AGENT_DANCE1),
+ LLAnimStateEntry("dance2", ANIM_AGENT_DANCE2),
+ LLAnimStateEntry("dance3", ANIM_AGENT_DANCE3),
+ LLAnimStateEntry("dance4", ANIM_AGENT_DANCE4),
+ LLAnimStateEntry("dance5", ANIM_AGENT_DANCE5),
+ LLAnimStateEntry("dance6", ANIM_AGENT_DANCE6),
+ LLAnimStateEntry("dance7", ANIM_AGENT_DANCE7),
+ LLAnimStateEntry("dance8", ANIM_AGENT_DANCE8),
+ LLAnimStateEntry("express_disdain", ANIM_AGENT_EXPRESS_DISDAIN),
+ LLAnimStateEntry("drink", ANIM_AGENT_DRINK),
+ LLAnimStateEntry("express_embarrased", ANIM_AGENT_EMBARRASSED),
+ LLAnimStateEntry("angry_fingerwag", ANIM_AGENT_FINGER_WAG),
+ LLAnimStateEntry("fist_pump", ANIM_AGENT_FIST_PUMP),
+ LLAnimStateEntry("yoga_float", ANIM_AGENT_YOGA_FLOAT),
+ LLAnimStateEntry("express_frown", ANIM_AGENT_EXPRESS_FROWN),
+ LLAnimStateEntry("impatient", ANIM_AGENT_IMPATIENT),
+ LLAnimStateEntry("jumpforjoy", ANIM_AGENT_JUMP_FOR_JOY),
+ LLAnimStateEntry("kissmybutt", ANIM_AGENT_KISS_MY_BUTT),
+ LLAnimStateEntry("express_kiss", ANIM_AGENT_EXPRESS_KISS),
+ LLAnimStateEntry("laugh_short", ANIM_AGENT_LAUGH_SHORT),
+ LLAnimStateEntry("musclebeach", ANIM_AGENT_MUSCLE_BEACH),
+ LLAnimStateEntry("no_unhappy", ANIM_AGENT_NO_UNHAPPY),
+ LLAnimStateEntry("no_head", ANIM_AGENT_NO),
+ LLAnimStateEntry("nyanya", ANIM_AGENT_NYAH_NYAH),
+ LLAnimStateEntry("punch_onetwo", ANIM_AGENT_ONETWO_PUNCH),
+ LLAnimStateEntry("express_open_mouth", ANIM_AGENT_EXPRESS_OPEN_MOUTH),
+ LLAnimStateEntry("peace", ANIM_AGENT_PEACE),
+ LLAnimStateEntry("point_you", ANIM_AGENT_POINT_YOU),
+ LLAnimStateEntry("point_me", ANIM_AGENT_POINT_ME),
+ LLAnimStateEntry("punch_l", ANIM_AGENT_PUNCH_LEFT),
+ LLAnimStateEntry("punch_r", ANIM_AGENT_PUNCH_RIGHT),
+ LLAnimStateEntry("rps_countdown", ANIM_AGENT_RPS_COUNTDOWN),
+ LLAnimStateEntry("rps_paper", ANIM_AGENT_RPS_PAPER),
+ LLAnimStateEntry("rps_rock", ANIM_AGENT_RPS_ROCK),
+ LLAnimStateEntry("rps_scissors", ANIM_AGENT_RPS_SCISSORS),
+ LLAnimStateEntry("express_repulsed", ANIM_AGENT_EXPRESS_REPULSED),
+ LLAnimStateEntry("kick_roundhouse_r", ANIM_AGENT_ROUNDHOUSE_KICK),
+ LLAnimStateEntry("express_sad", ANIM_AGENT_SAD),
+ LLAnimStateEntry("salute", ANIM_AGENT_SALUTE),
+ LLAnimStateEntry("shout", ANIM_AGENT_SHOUT),
+ LLAnimStateEntry("express_shrug", ANIM_AGENT_SHRUG),
+ LLAnimStateEntry("express_smile", ANIM_AGENT_EXPRESS_SMILE),
+ LLAnimStateEntry("smoke_idle", ANIM_AGENT_SMOKE_IDLE),
+ LLAnimStateEntry("smoke_inhale", ANIM_AGENT_SMOKE_INHALE),
+ LLAnimStateEntry("smoke_throw_down", ANIM_AGENT_SMOKE_THROW_DOWN),
+ LLAnimStateEntry("express_surprise", ANIM_AGENT_SURPRISE),
+ LLAnimStateEntry("sword_strike_r", ANIM_AGENT_SWORD_STRIKE),
+ LLAnimStateEntry("angry_tantrum", ANIM_AGENT_TANTRUM),
+ LLAnimStateEntry("express_tongue_out", ANIM_AGENT_EXPRESS_TONGUE_OUT),
+ LLAnimStateEntry("hello", ANIM_AGENT_HELLO),
+ LLAnimStateEntry("whisper", ANIM_AGENT_WHISPER),
+ LLAnimStateEntry("whistle", ANIM_AGENT_WHISTLE),
+ LLAnimStateEntry("express_wink", ANIM_AGENT_WINK),
+ LLAnimStateEntry("wink_hollywood", ANIM_AGENT_WINK_HOLLYWOOD),
+ LLAnimStateEntry("express_worry", ANIM_AGENT_EXPRESS_WORRY),
+ LLAnimStateEntry("yes_happy", ANIM_AGENT_YES_HAPPY),
+ LLAnimStateEntry("yes_head", ANIM_AGENT_YES),
};
const S32 gUserAnimStatesCount = sizeof(gUserAnimStates) / sizeof(gUserAnimStates[0]);
diff --git a/linden/indra/llcharacter/llanimationstates.h b/linden/indra/llcharacter/llanimationstates.h
index b2ed27a..dd269de 100644
--- a/linden/indra/llcharacter/llanimationstates.h
+++ b/linden/indra/llcharacter/llanimationstates.h
@@ -227,13 +227,18 @@ public:
struct LLAnimStateEntry
{
- LLAnimStateEntry(const char* label, const char* name, const LLUUID& id)
- : mLabel(label),
+ LLAnimStateEntry(const char* name, const LLUUID& id) :
mName(name),
mID(id)
- { }
+ {
+ // LABELS:
+ // Look to newview/LLAnimStateLabels.* for how to get the labels.
+ // The labels should no longer be stored in this structure. The server
+ // shouldn't care about the local friendly name of an animation, and
+ // this is common code.
+ }
+
- const char* mLabel;
const char* mName;
const LLUUID mID;
};
diff --git a/linden/indra/llcharacter/llcharacter.cpp b/linden/indra/llcharacter/llcharacter.cpp
index 0339cf0..ad648f8 100644
--- a/linden/indra/llcharacter/llcharacter.cpp
+++ b/linden/indra/llcharacter/llcharacter.cpp
@@ -377,6 +377,27 @@ void LLCharacter::clearVisualParamWeights()
}
//-----------------------------------------------------------------------------
+// BOOL visualParamWeightsAreDefault()
+//-----------------------------------------------------------------------------
+BOOL LLCharacter::visualParamWeightsAreDefault()
+{
+ for (LLVisualParam *param = getFirstVisualParam();
+ param;
+ param = getNextVisualParam())
+ {
+ if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE)
+ {
+ if (param->getWeight() != param->getDefaultWeight())
+ return false;
+ }
+ }
+
+ return true;
+}
+
+
+
+//-----------------------------------------------------------------------------
// getVisualParam()
//-----------------------------------------------------------------------------
LLVisualParam* LLCharacter::getVisualParam(const char *param_name)
diff --git a/linden/indra/llcharacter/llcharacter.h b/linden/indra/llcharacter/llcharacter.h
index 46faab1..7a841ef 100644
--- a/linden/indra/llcharacter/llcharacter.h
+++ b/linden/indra/llcharacter/llcharacter.h
@@ -207,6 +207,9 @@ public:
// set all morph weights to 0
void clearVisualParamWeights();
+ // see if all the weights are default
+ BOOL visualParamWeightsAreDefault();
+
// visual parameter accessors
LLVisualParam* getFirstVisualParam()
{
diff --git a/linden/indra/llcharacter/llmotion.cpp b/linden/indra/llcharacter/llmotion.cpp
index 899796c..f7b8f1f 100644
--- a/linden/indra/llcharacter/llmotion.cpp
+++ b/linden/indra/llcharacter/llmotion.cpp
@@ -47,22 +47,20 @@
// LLMotion()
// Class Constructor
//-----------------------------------------------------------------------------
-LLMotion::LLMotion( const LLUUID &id )
+LLMotion::LLMotion( const LLUUID &id ) :
+ mStopped(TRUE),
+ mActive(FALSE),
+ mID(id),
+ mActivationTimestamp(0.f),
+ mStopTimestamp(0.f),
+ mSendStopTimestamp(F32_MAX),
+ mResidualWeight(0.f),
+ mFadeWeight(1.f),
+ mDeactivateCallback(NULL),
+ mDeactivateCallbackUserData(NULL)
{
- mActivationTimestamp = 0.f;
- mStopTimestamp = 0.f;
- mSendStopTimestamp = F32_MAX;
- mResidualWeight = 0.f;
- mFadeWeight = 1.f;
- mStopped = TRUE;
- mActive = FALSE;
- mDeactivateCallback = NULL;
-
- memset(&mJointSignature[0][0], 0, sizeof(U8) * LL_CHARACTER_MAX_JOINTS);
- memset(&mJointSignature[1][0], 0, sizeof(U8) * LL_CHARACTER_MAX_JOINTS);
- memset(&mJointSignature[2][0], 0, sizeof(U8) * LL_CHARACTER_MAX_JOINTS);
-
- mID = id;
+ for (int i=0; i<3; ++i)
+ memset(&mJointSignature[i][0], 0, sizeof(U8) * LL_CHARACTER_MAX_JOINTS);
}
//-----------------------------------------------------------------------------
diff --git a/linden/indra/llcharacter/llmotion.h b/linden/indra/llcharacter/llmotion.h
index 188937d..c7bb55d 100644
--- a/linden/indra/llcharacter/llmotion.h
+++ b/linden/indra/llcharacter/llmotion.h
@@ -49,13 +49,13 @@ class LLCharacter;
class LLMotion
{
public:
- enum LLMotionBlendType
+ typedef enum LLMotionBlendType
{
NORMAL_BLEND,
ADDITIVE_BLEND
};
- enum LLMotionInitStatus
+ typedef enum LLMotionInitStatus
{
STATUS_FAILURE,
STATUS_SUCCESS,
diff --git a/linden/indra/llcommon/files.lst b/linden/indra/llcommon/files.lst
index 6f03155..fd6a07c 100644
--- a/linden/indra/llcommon/files.lst
+++ b/linden/indra/llcommon/files.lst
@@ -12,12 +12,16 @@ llcommon/llerrorthread.cpp
llcommon/llevent.cpp
llcommon/llfasttimer.cpp
llcommon/llfile.cpp
+llcommon/llfindlocale.cpp
llcommon/llfixedbuffer.cpp
llcommon/llformat.cpp
llcommon/llframetimer.cpp
+llcommon/llheartbeat.cpp
+llcommon/llindraconfigfile.cpp
llcommon/lllog.cpp
llcommon/llliveappconfig.cpp
llcommon/lllivefile.cpp
+llcommon/lllog.cpp
llcommon/llmemory.cpp
llcommon/llmemorystream.cpp
llcommon/llmetrics.cpp
diff --git a/linden/indra/llcommon/llapp.cpp b/linden/indra/llcommon/llapp.cpp
index bd2e377..ebace4e 100644
--- a/linden/indra/llcommon/llapp.cpp
+++ b/linden/indra/llcommon/llapp.cpp
@@ -49,11 +49,24 @@
LONG WINAPI default_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop);
BOOL ConsoleCtrlHandler(DWORD fdwCtrlType);
#else
-#include // for fork()
+# include
+# include // for fork()
void setup_signals();
void default_unix_signal_handler(int signum, siginfo_t *info, void *);
-const S32 LL_SMACKDOWN_SIGNAL = SIGUSR1;
-#endif
+# if LL_DARWIN
+/* OSX doesn't support SIGRT* */
+S32 LL_SMACKDOWN_SIGNAL = SIGUSR1;
+S32 LL_HEARTBEAT_SIGNAL = SIGUSR2;
+# else
+/* We want reliable delivery of our signals - SIGRT* is it. */
+/* Old LinuxThreads versions eat SIGRTMIN+0 to SIGRTMIN+2, avoid those. */
+/* Note that SIGRTMIN/SIGRTMAX may expand to a glibc function call with a
+ nonconstant result so these are not consts and cannot be used in constant-
+ expressions. SIGRTMAX may return -1 on rare broken setups. */
+S32 LL_SMACKDOWN_SIGNAL = (SIGRTMAX >= 0) ? (SIGRTMAX-1) : SIGUSR1;
+S32 LL_HEARTBEAT_SIGNAL = (SIGRTMAX >= 0) ? (SIGRTMAX-0) : SIGUSR2;
+# endif // LL_DARWIN
+#endif // LL_WINDOWS
// the static application instance
LLApp* LLApp::sApplication = NULL;
@@ -523,6 +536,9 @@ void setup_signals()
sigaction(SIGSEGV, &act, NULL);
sigaction(SIGSYS, &act, NULL);
+ sigaction(LL_HEARTBEAT_SIGNAL, &act, NULL);
+ sigaction(LL_SMACKDOWN_SIGNAL, &act, NULL);
+
// Asynchronous signals that are normally ignored
sigaction(SIGCHLD, &act, NULL);
sigaction(SIGUSR2, &act, NULL);
@@ -533,7 +549,6 @@ void setup_signals()
sigaction(SIGINT, &act, NULL);
// Asynchronous signals that result in core
- sigaction(LL_SMACKDOWN_SIGNAL, &act, NULL);
sigaction(SIGQUIT, &act, NULL);
}
@@ -555,6 +570,9 @@ void clear_signals()
sigaction(SIGSEGV, &act, NULL);
sigaction(SIGSYS, &act, NULL);
+ sigaction(LL_HEARTBEAT_SIGNAL, &act, NULL);
+ sigaction(LL_SMACKDOWN_SIGNAL, &act, NULL);
+
// Asynchronous signals that are normally ignored
sigaction(SIGCHLD, &act, NULL);
@@ -565,7 +583,6 @@ void clear_signals()
// Asynchronous signals that result in core
sigaction(SIGUSR2, &act, NULL);
- sigaction(LL_SMACKDOWN_SIGNAL, &act, NULL);
sigaction(SIGQUIT, &act, NULL);
}
@@ -586,16 +603,7 @@ void default_unix_signal_handler(int signum, siginfo_t *info, void *)
switch (signum)
{
- case SIGALRM:
- case SIGPIPE:
- case SIGUSR2:
- // We don't care about these signals, ignore them
- if (LLApp::sLogInSignal)
- {
- llinfos << "Signal handler - Ignoring this signal" << llendl;
- }
- return;
- case SIGCHLD:
+ case SIGCHLD:
if (LLApp::sLogInSignal)
{
llinfos << "Signal handler - Got SIGCHLD from " << info->si_pid << llendl;
@@ -624,59 +632,6 @@ void default_unix_signal_handler(int signum, siginfo_t *info, void *)
clear_signals();
raise(signum);
return;
- case LL_SMACKDOWN_SIGNAL: // Smackdown treated just like any other app termination, for now
- if (LLApp::sLogInSignal)
- {
- llwarns << "Signal handler - Handling smackdown signal!" << llendl;
- }
- else
- {
- // Don't log anything, even errors - this is because this signal could happen anywhere.
- LLError::setDefaultLevel(LLError::LEVEL_NONE);
- }
-
- // Change the signal that we reraise to SIGABRT, so we generate a core dump.
- signum = SIGABRT;
- case SIGBUS:
- case SIGSEGV:
- case SIGQUIT:
- if (LLApp::sLogInSignal)
- {
- llwarns << "Signal handler - Handling fatal signal!" << llendl;
- }
- if (LLApp::isError())
- {
- // Received second fatal signal while handling first, just die right now
- // Set the signal handlers back to default before handling the signal - this makes the next signal wipe out the app.
- clear_signals();
-
- if (LLApp::sLogInSignal)
- {
- llwarns << "Signal handler - Got another fatal signal while in the error handler, die now!" << llendl;
- }
- raise(signum);
- return;
- }
-
- if (LLApp::sLogInSignal)
- {
- llwarns << "Signal handler - Flagging error status and waiting for shutdown" << llendl;
- }
- // Flag status to ERROR, so thread_error does its work.
- LLApp::setError();
- // Block in the signal handler until somebody says that we're done.
- while (LLApp::sErrorThreadRunning && !LLApp::isStopped())
- {
- ms_sleep(10);
- }
-
- if (LLApp::sLogInSignal)
- {
- llwarns << "Signal handler - App is stopped, reraising signal" << llendl;
- }
- clear_signals();
- raise(signum);
- return;
case SIGINT:
case SIGHUP:
case SIGTERM:
@@ -697,10 +652,76 @@ void default_unix_signal_handler(int signum, siginfo_t *info, void *)
}
LLApp::setQuitting();
return;
+ case SIGALRM:
+ case SIGPIPE:
+ case SIGUSR2:
default:
- if (LLApp::sLogInSignal)
- {
- llwarns << "Signal handler - Unhandled signal, ignoring!" << llendl;
+ if (signum == LL_SMACKDOWN_SIGNAL ||
+ signum == SIGBUS ||
+ signum == SIGILL ||
+ signum == SIGFPE ||
+ signum == SIGSEGV ||
+ signum == SIGQUIT)
+ {
+ if (signum == LL_SMACKDOWN_SIGNAL)
+ {
+ // Smackdown treated just like any other app termination, for now
+ if (LLApp::sLogInSignal)
+ {
+ llwarns << "Signal handler - Handling smackdown signal!" << llendl;
+ }
+ else
+ {
+ // Don't log anything, even errors - this is because this signal could happen anywhere.
+ LLError::setDefaultLevel(LLError::LEVEL_NONE);
+ }
+
+ // Change the signal that we reraise to SIGABRT, so we generate a core dump.
+ signum = SIGABRT;
+ }
+
+ if (LLApp::sLogInSignal)
+ {
+ llwarns << "Signal handler - Handling fatal signal!" << llendl;
+ }
+ if (LLApp::isError())
+ {
+ // Received second fatal signal while handling first, just die right now
+ // Set the signal handlers back to default before handling the signal - this makes the next signal wipe out the app.
+ clear_signals();
+
+ if (LLApp::sLogInSignal)
+ {
+ llwarns << "Signal handler - Got another fatal signal while in the error handler, die now!" << llendl;
+ }
+ raise(signum);
+ return;
+ }
+
+ if (LLApp::sLogInSignal)
+ {
+ llwarns << "Signal handler - Flagging error status and waiting for shutdown" << llendl;
+ }
+ // Flag status to ERROR, so thread_error does its work.
+ LLApp::setError();
+ // Block in the signal handler until somebody says that we're done.
+ while (LLApp::sErrorThreadRunning && !LLApp::isStopped())
+ {
+ ms_sleep(10);
+ }
+
+ if (LLApp::sLogInSignal)
+ {
+ llwarns << "Signal handler - App is stopped, reraising signal" << llendl;
+ }
+ clear_signals();
+ raise(signum);
+ return;
+ } else {
+ if (LLApp::sLogInSignal)
+ {
+ llinfos << "Signal handler - Unhandled signal " << signum << ", ignoring!" << llendl;
+ }
}
}
}
diff --git a/linden/indra/llcommon/llapp.h b/linden/indra/llcommon/llapp.h
index 50a70ae..9d8ff88 100644
--- a/linden/indra/llcommon/llapp.h
+++ b/linden/indra/llcommon/llapp.h
@@ -46,7 +46,8 @@ typedef void (*LLAppErrorHandler)();
typedef void (*LLAppChildCallback)(int pid, bool exited, int status);
#if !LL_WINDOWS
-extern const S32 LL_SMACKDOWN_SIGNAL;
+extern S32 LL_SMACKDOWN_SIGNAL;
+extern S32 LL_HEARTBEAT_SIGNAL;
// Clear all of the signal handlers (which we want to do for the child process when we fork
void clear_signals();
diff --git a/linden/indra/llcommon/llapr.cpp b/linden/indra/llcommon/llapr.cpp
index 08c40a4..78bf876 100644
--- a/linden/indra/llcommon/llapr.cpp
+++ b/linden/indra/llcommon/llapr.cpp
@@ -54,7 +54,7 @@ void ll_init_apr()
void ll_cleanup_apr()
{
- llinfos << "Cleaning up APR" << llendl;
+ LL_INFOS("APR") << "Cleaning up APR" << LL_ENDL;
if (gLogMutexp)
{
@@ -118,7 +118,7 @@ bool ll_apr_warn_status(apr_status_t status)
if(APR_SUCCESS == status) return false;
#ifndef LL_WINDOWS
char buf[MAX_STRING]; /* Flawfinder: ignore */
- llwarns << "APR: " << apr_strerror(status, buf, MAX_STRING) << llendl;
+ LL_WARNS_ONCE("APR") << "APR: " << apr_strerror(status, buf, MAX_STRING) << LL_ENDL;
#endif
return true;
}
@@ -294,7 +294,7 @@ bool ll_apr_file_remove(const LLString& filename, apr_pool_t* pool)
s = apr_file_remove(filename.c_str(), pool);
if (s != APR_SUCCESS)
{
- lldebugs << "ll_apr_file_remove failed on file: " << filename << llendl;
+ LL_DEBUGS("APR") << "ll_apr_file_remove failed on file: " << filename << LL_ENDL;
ll_apr_warn_status(s);
return false;
}
@@ -308,7 +308,7 @@ bool ll_apr_file_rename(const LLString& filename, const LLString& newname, apr_p
s = apr_file_rename(filename.c_str(), newname.c_str(), pool);
if (s != APR_SUCCESS)
{
- lldebugs << "ll_apr_file_rename failed on file: " << filename << llendl;
+ LL_DEBUGS("APR") << "ll_apr_file_rename failed on file: " << filename << LL_ENDL;
ll_apr_warn_status(s);
return false;
}
@@ -365,7 +365,7 @@ bool ll_apr_dir_make(const LLString& dirname, apr_pool_t* pool)
s = apr_dir_make(dirname.c_str(), APR_FPROT_OS_DEFAULT, pool);
if (s != APR_SUCCESS)
{
- lldebugs << "ll_apr_dir_make failed on file: " << dirname << llendl;
+ LL_DEBUGS("APR") << "ll_apr_dir_make failed on file: " << dirname << LL_ENDL;
ll_apr_warn_status(s);
return false;
}
@@ -379,7 +379,7 @@ bool ll_apr_dir_remove(const LLString& dirname, apr_pool_t* pool)
s = apr_file_remove(dirname.c_str(), pool);
if (s != APR_SUCCESS)
{
- lldebugs << "ll_apr_dir_remove failed on file: " << dirname << llendl;
+ LL_DEBUGS("APR") << "ll_apr_dir_remove failed on file: " << dirname << LL_ENDL;
ll_apr_warn_status(s);
return false;
}
diff --git a/linden/indra/llcommon/llares.cpp b/linden/indra/llcommon/llares.cpp
index 4adf0c3..4d054e4 100644
--- a/linden/indra/llcommon/llares.cpp
+++ b/linden/indra/llcommon/llares.cpp
@@ -154,7 +154,7 @@ void LLAres::getSrvRecords(const std::string &name, SrvResponder *resp)
void LLAres::rewriteURI(const std::string &uri, UriRewriteResponder *resp)
{
- llinfos << "Rewriting " << uri << llendl;
+ LL_DEBUGS2("AppInit","Rewrite") << "Rewriting " << uri << LL_ENDL;
resp->mUri = LLURI(uri);
search("_" + resp->mUri.scheme() + "._tcp." + resp->mUri.hostName(),
@@ -163,7 +163,8 @@ void LLAres::rewriteURI(const std::string &uri, UriRewriteResponder *resp)
LLQueryResponder::LLQueryResponder()
: LLAres::QueryResponder(),
- mResult(ARES_ENODATA)
+ mResult(ARES_ENODATA),
+ mType(RES_INVALID)
{
}
diff --git a/linden/indra/llcommon/llcommon.vcproj b/linden/indra/llcommon/llcommon.vcproj
index ab4e67a..f54ea13 100644
--- a/linden/indra/llcommon/llcommon.vcproj
+++ b/linden/indra/llcommon/llcommon.vcproj
@@ -199,6 +199,9 @@
RelativePath=".\llfile.cpp">
+
+
+
+
+
+
+
+
+
+
+
+
@@ -301,6 +305,14 @@
>
+
+
+
+
@@ -563,6 +575,10 @@
>
+
+
@@ -587,6 +603,10 @@
>
+
+
@@ -759,6 +779,22 @@
>
+
+
+
+
+
+
+
+
diff --git a/linden/indra/llcommon/llcommon_vc9.vcproj b/linden/indra/llcommon/llcommon_vc9.vcproj
index 0bb2d11..1ae534d 100644
--- a/linden/indra/llcommon/llcommon_vc9.vcproj
+++ b/linden/indra/llcommon/llcommon_vc9.vcproj
@@ -290,6 +290,10 @@
>
+
+
@@ -302,6 +306,14 @@
>
+
+
+
+
@@ -564,6 +576,10 @@
>
+
+
@@ -588,6 +604,10 @@
>
+
+
diff --git a/linden/indra/llcommon/llerror.cpp b/linden/indra/llcommon/llerror.cpp
index 0e7db89..b74b288 100644
--- a/linden/indra/llcommon/llerror.cpp
+++ b/linden/indra/llcommon/llerror.cpp
@@ -408,6 +408,8 @@ namespace LLError
LevelMap functionLevelMap;
LevelMap classLevelMap;
LevelMap fileLevelMap;
+ LevelMap tagLevelMap;
+ std::map uniqueLogMessages;
LLError::FatalFunction crashFunction;
LLError::TimeFunction timeFunction;
@@ -494,11 +496,17 @@ namespace LLError
namespace LLError
{
CallSite::CallSite(ELevel level,
- const char* file, int line,
- const std::type_info& class_info, const char* function)
+ const char* file,
+ int line,
+ const std::type_info& class_info,
+ const char* function,
+ const char* broadTag,
+ const char* narrowTag,
+ bool printOnce)
: mLevel(level), mFile(file), mLine(line),
mClassInfo(class_info), mFunction(function),
- mCached(false), mShouldLog(false)
+ mCached(false), mShouldLog(false),
+ mBroadTag(broadTag), mNarrowTag(narrowTag), mPrintOnce(printOnce)
{ }
@@ -552,6 +560,15 @@ namespace
#endif
LogControlFile& e = LogControlFile::fromDirectory(dir);
+
+ // NOTE: We want to explicitly load the file before we add it to the event timer
+ // that checks for changes to the file. Else, we're not actually loading the file yet,
+ // and most of the initialization happens without any attention being paid to the
+ // log control file. Not to mention that when it finally gets checked later,
+ // all log statements that have been evaluated already become dirty and need to be
+ // evaluated for printing again. So, make sure to call checkAndReload()
+ // before addToEventTimer().
+ e.checkAndReload();
e.addToEventTimer();
}
}
@@ -625,6 +642,14 @@ namespace LLError
g.invalidateCallSites();
s.fileLevelMap[file_name] = level;
}
+
+ void setTagLevel(const std::string& tag_name, ELevel level)
+ {
+ Globals& g = Globals::get();
+ Settings& s = Settings::get();
+ g.invalidateCallSites();
+ s.tagLevelMap[tag_name] = level;
+ }
}
namespace {
@@ -674,6 +699,8 @@ namespace LLError
s.functionLevelMap.clear();
s.classLevelMap.clear();
s.fileLevelMap.clear();
+ s.tagLevelMap.clear();
+ s.uniqueLogMessages.clear();
setPrintLocation(config["print-location"]);
setDefaultLevel(decodeLevel(config["default-level"]));
@@ -689,6 +716,7 @@ namespace LLError
setLevels(s.functionLevelMap, entry["functions"], level);
setLevels(s.classLevelMap, entry["classes"], level);
setLevels(s.fileLevelMap, entry["files"], level);
+ setLevels(s.tagLevelMap, entry["tags"], level);
}
}
}
@@ -850,7 +878,7 @@ namespace {
return false;
}
- level = i->second;
+ level = i->second;
return true;
}
@@ -929,9 +957,15 @@ namespace LLError
ELevel compareLevel = s.defaultLevel;
- checkLevelMap(s.functionLevelMap, function_name, compareLevel)
+ // The most specific match found will be used as the log level,
+ // since the computation short circuits.
+ // So, in increasing order of importance:
+ // Default < Broad Tag < File < Class < Function < Narrow Tag
+ ((site.mNarrowTag != NULL) ? checkLevelMap(s.tagLevelMap, site.mNarrowTag, compareLevel) : false)
+ || checkLevelMap(s.functionLevelMap, function_name, compareLevel)
|| checkLevelMap(s.classLevelMap, class_name, compareLevel)
- || checkLevelMap(s.fileLevelMap, abbreviateFile(site.mFile), compareLevel);
+ || checkLevelMap(s.fileLevelMap, abbreviateFile(site.mFile), compareLevel)
+ || ((site.mBroadTag != NULL) ? checkLevelMap(s.tagLevelMap, site.mBroadTag, compareLevel) : false);
site.mCached = true;
g.addCallSite(site);
@@ -1018,6 +1052,29 @@ namespace LLError
#endif
prefix << site.mFunction << ": ";
}
+
+ if (site.mPrintOnce)
+ {
+ std::map::iterator messageIter = s.uniqueLogMessages.find(message);
+ if (messageIter != s.uniqueLogMessages.end())
+ {
+ messageIter->second++;
+ unsigned int num_messages = messageIter->second;
+ if (num_messages == 10 || num_messages == 50 || (num_messages % 100) == 0)
+ {
+ prefix << "ONCE (" << num_messages << "th time seen): ";
+ }
+ else
+ {
+ return;
+ }
+ }
+ else
+ {
+ prefix << "ONCE: ";
+ s.uniqueLogMessages[message] = 1;
+ }
+ }
prefix << message;
message = prefix.str();
diff --git a/linden/indra/llcommon/llerror.h b/linden/indra/llcommon/llerror.h
index e1ace39..0a066bf 100644
--- a/linden/indra/llcommon/llerror.h
+++ b/linden/indra/llcommon/llerror.h
@@ -45,23 +45,23 @@
Code can log messages with constuctions like this:
- llinfos << "request to fizzbip agent " << agent_id
- << " denied due to timeout" << llendl;
+ LL_INFOS("StringTag") << "request to fizzbip agent " << agent_id
+ << " denied due to timeout" << LL_ENDL;
Messages can be logged to one of four increasing levels of concern,
using one of four "streams":
- lldebugs - debug messages that are normally supressed
- llinfos - informational messages that are normall shown
- llwarns - warning messages that singal a problem
- llerrs - error messages that are major, unrecoverable failures
+ LL_DEBUGS("StringTag") - debug messages that are normally supressed
+ LL_INFOS("StringTag") - informational messages that are normall shown
+ LL_WARNS("StringTag") - warning messages that singal a problem
+ LL_ERRS("StringTag") - error messages that are major, unrecoverable failures
- The later (llerrs) automatically crashes the process after the message
+ The later (LL_ERRS("StringTag")) automatically crashes the process after the message
is logged.
Note that these "streams" are actually #define magic. Rules for use:
* they cannot be used as normal streams, only to start a message
- * messages written to them MUST be terminated with llendl
+ * messages written to them MUST be terminated with LL_ENDL
* between the opening and closing, the << operator is indeed
writing onto a std::ostream, so all conversions and stream
formating are available
@@ -85,7 +85,7 @@
{
if (i > 100)
{
- llwanrs << "called with a big value for i: " << i << llendl;
+ LL_WARNS("FooBarTag") << "called with a big value for i: " << i << LL_ENDL;
}
...
}
@@ -100,7 +100,7 @@
Lastly, logging is now very efficient in both compiled code and execution
when skipped. There is no need to wrap messages, even debugging ones, in
- #ifdef _DEBUG constructs. lldebugs messages are compiled into all builds,
+ #ifdef _DEBUG constructs. LL_DEBUGS("StringTag") messages are compiled into all builds,
even release. Which means you can use them to help debug even when deployed
to a real grid.
*/
@@ -144,7 +144,7 @@ namespace LLError
// intended for public use.
public:
CallSite(ELevel, const char* file, int line,
- const std::type_info& class_info, const char* function);
+ const std::type_info& class_info, const char* function, const char* broadTag, const char* narrowTag, bool printOnce);
bool shouldLog()
{ return mCached ? mShouldLog : Log::shouldLog(*this); }
@@ -156,9 +156,12 @@ namespace LLError
// these describe the call site and never change
const ELevel mLevel;
const char* const mFile;
- const int mLine;
- const std::type_info& mClassInfo;
+ const int mLine;
+ const std::type_info& mClassInfo;
const char* const mFunction;
+ const char* const mBroadTag;
+ const char* const mNarrowTag;
+ const bool mPrintOnce;
// these implement a cache of the call to shouldLog()
bool mCached;
@@ -200,39 +203,66 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG;
See top of file for common usage.
*/
-#define lllog(level) \
+#define lllog(level, broadTag, narrowTag, once) \
{ \
static LLError::CallSite _site( \
- level, __FILE__, __LINE__, typeid(_LL_CLASS_TO_LOG), __FUNCTION__);\
+ level, __FILE__, __LINE__, typeid(_LL_CLASS_TO_LOG), __FUNCTION__, broadTag, narrowTag, once);\
if (_site.shouldLog()) \
{ \
std::ostringstream* _out = LLError::Log::out(); \
(*_out)
-
+
+// DEPRECATED: Don't call directly, use LL_ENDL instead, which actually looks like a macro
#define llendl \
LLError::End(); \
LLError::Log::flush(_out, _site); \
} \
}
-#define llinfos lllog(LLError::LEVEL_INFO)
-#define lldebugs lllog(LLError::LEVEL_DEBUG)
-#define llwarns lllog(LLError::LEVEL_WARN)
-#define llerrs lllog(LLError::LEVEL_ERROR)
-
+// DEPRECATED: Use the new macros that allow tags and *look* like macros.
+#define lldebugs lllog(LLError::LEVEL_DEBUG, NULL, NULL, false)
+#define llinfos lllog(LLError::LEVEL_INFO, NULL, NULL, false)
+#define llwarns lllog(LLError::LEVEL_WARN, NULL, NULL, false)
+#define llerrs lllog(LLError::LEVEL_ERROR, NULL, NULL, false)
#define llcont (*_out)
+
+// NEW Macros for debugging, allow the passing of a string tag
+
+// One Tag
+#define LL_DEBUGS(broadTag) lllog(LLError::LEVEL_DEBUG, broadTag, NULL, false)
+#define LL_INFOS(broadTag) lllog(LLError::LEVEL_INFO, broadTag, NULL, false)
+#define LL_WARNS(broadTag) lllog(LLError::LEVEL_WARN, broadTag, NULL, false)
+#define LL_ERRS(broadTag) lllog(LLError::LEVEL_ERROR, broadTag, NULL, false)
+// Two Tags
+#define LL_DEBUGS2(broadTag, narrowTag) lllog(LLError::LEVEL_DEBUG, broadTag, narrowTag, false)
+#define LL_INFOS2(broadTag, narrowTag) lllog(LLError::LEVEL_INFO, broadTag, narrowTag, false)
+#define LL_WARNS2(broadTag, narrowTag) lllog(LLError::LEVEL_WARN, broadTag, narrowTag, false)
+#define LL_ERRS2(broadTag, narrowTag) lllog(LLError::LEVEL_ERROR, broadTag, narrowTag, false)
+
+// Only print the log message once (good for warnings or infos that would otherwise
+// spam the log file over and over, such as tighter loops).
+#define LL_DEBUGS_ONCE(broadTag) lllog(LLError::LEVEL_DEBUG, broadTag, NULL, true)
+#define LL_INFOS_ONCE(broadTag) lllog(LLError::LEVEL_INFO, broadTag, NULL, true)
+#define LL_WARNS_ONCE(broadTag) lllog(LLError::LEVEL_WARN, broadTag, NULL, true)
+#define LL_DEBUGS2_ONCE(broadTag, narrowTag) lllog(LLError::LEVEL_DEBUG, broadTag, narrowTag, true)
+#define LL_INFOS2_ONCE(broadTag, narrowTag) lllog(LLError::LEVEL_INFO, broadTag, narrowTag, true)
+#define LL_WARNS2_ONCE(broadTag, narrowTag) lllog(LLError::LEVEL_WARN, broadTag, narrowTag, true)
+
+#define LL_ENDL llendl
+#define LL_CONT (*_out)
+
/*
Use this construct if you need to do computation in the middle of a
message:
- llinfos << "the agent " << agend_id;
+ LL_INFOS("AgentGesture") << "the agent " << agend_id;
switch (f)
{
- case FOP_SHRUGS: llcont << "shrugs"; break;
- case FOP_TAPS: llcont << "points at " << who; break;
- case FOP_SAYS: llcont << "says " << message; break;
+ case FOP_SHRUGS: LL_CONT << "shrugs"; break;
+ case FOP_TAPS: LL_CONT << "points at " << who; break;
+ case FOP_SAYS: LL_CONT << "says " << message; break;
}
- llcont << " for " << t << " seconds" << llendl;
+ LL_CONT << " for " << t << " seconds" << LL_ENDL;
Such computation is done iff the message will be logged.
*/
diff --git a/linden/indra/llcommon/llfile.cpp b/linden/indra/llcommon/llfile.cpp
index 32e9622..fc0d481 100644
--- a/linden/indra/llcommon/llfile.cpp
+++ b/linden/indra/llcommon/llfile.cpp
@@ -160,7 +160,7 @@ LLFILE * LLFile::_Fiopen(const char *filename, std::ios::openmode mode,int) // p
| ios_base::binary,
0};
- FILE *fp = 0;
+ LLFILE *fp = 0;
int n;
ios_base::openmode atendflag = mode & ios_base::ate;
ios_base::openmode norepflag = mode & ios_base::_Noreplace;
@@ -207,7 +207,7 @@ void llifstream::open(const char* _Filename, /* Flawfinder: ignore */
int _Prot)
{ // open a C stream with specified mode
- FILE* filep = LLFile::_Fiopen(_Filename,_Mode | ios_base::in, _Prot);
+ LLFILE* filep = LLFile::_Fiopen(_Filename,_Mode | ios_base::in, _Prot);
if(filep == NULL)
{
_Myios::setstate(ios_base::failbit); /*Flawfinder: ignore*/
@@ -258,7 +258,7 @@ void llofstream::open(const char* _Filename, /* Flawfinder: ignore */
int _Prot)
{ // open a C stream with specified mode
- FILE* filep = LLFile::_Fiopen(_Filename,_Mode | ios_base::out, _Prot);
+ LLFILE* filep = LLFile::_Fiopen(_Filename,_Mode | ios_base::out, _Prot);
if(filep == NULL)
{
_Myios::setstate(ios_base::failbit); /*Flawfinder: ignore*/
diff --git a/linden/indra/llcommon/llfile.h b/linden/indra/llcommon/llfile.h
index d449ec9..189edbf 100644
--- a/linden/indra/llcommon/llfile.h
+++ b/linden/indra/llcommon/llfile.h
@@ -42,6 +42,8 @@
typedef FILE LLFILE;
+#include
+
#ifdef LL_WINDOWS
#define USE_LLFILESTREAMS 1
#else
diff --git a/linden/indra/llcommon/llfindlocale.cpp b/linden/indra/llcommon/llfindlocale.cpp
new file mode 100644
index 0000000..47da974
--- /dev/null
+++ b/linden/indra/llcommon/llfindlocale.cpp
@@ -0,0 +1,525 @@
+/**
+ * @file llfindlocale.cpp
+ * @brief Detect system language setting
+ *
+ * $LicenseInfo:firstyear=2008&license=viewergpl$
+ *
+ * Copyright (c) 2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+/* Yes, this was originally C code. */
+
+#include "linden_common.h"
+
+#include
+#include
+#include
+
+#ifdef WIN32
+#include
+#include
+#endif
+
+#include "llfindlocale.h"
+
+static int
+is_lcchar(const int c) {
+ return isalnum(c);
+}
+
+static void
+lang_country_variant_from_envstring(const char *str,
+ char **lang,
+ char **country,
+ char **variant) {
+ int end = 0;
+ int start;
+
+ /* get lang, if any */
+ start = end;
+ while (is_lcchar(str[end])) {
+ ++end;
+ }
+ if (start != end) {
+ int i;
+ int len = end - start;
+ char *s = (char*)malloc(len + 1);
+ for (i=0; ilang = lang;
+ l->country = country;
+ l->variant = variant;
+ return 1;
+ }
+ }
+ free(lang); free(country); free(variant);
+ return 0;
+}
+
+
+static int
+accumulate_env(const char *name, FL_Locale *l) {
+ char *env;
+ char *lang = NULL;
+ char *country = NULL;
+ char *variant = NULL;
+ env = getenv(name);
+ if (env) {
+ return accumulate_locstring(env, l);
+ }
+ free(lang); free(country); free(variant);
+ return 0;
+}
+
+
+static void
+canonise_fl(FL_Locale *l) {
+ /* this function fixes some common locale-specifying mistakes */
+ /* en_UK -> en_GB */
+ if (l->lang && 0 == strcmp(l->lang, "en")) {
+ if (l->country && 0 == strcmp(l->country, "UK")) {
+ free((void*)l->country);
+ l->country = strdup("GB");
+ }
+ }
+ /* ja_JA -> ja_JP */
+ if (l->lang && 0 == strcmp(l->lang, "ja")) {
+ if (l->country && 0 == strcmp(l->country, "JA")) {
+ free((void*)l->country);
+ l->country = strdup("JP");
+ }
+ }
+}
+
+
+#ifdef WIN32
+#include
+#define ML(pn,sn) MAKELANGID(LANG_##pn, SUBLANG_##pn##_##sn)
+#define MLN(pn) MAKELANGID(LANG_##pn, SUBLANG_DEFAULT)
+#define RML(pn,sn) MAKELANGID(LANG_##pn, SUBLANG_##sn)
+typedef struct {
+ LANGID id;
+ char* code;
+} IDToCode;
+static const IDToCode both_to_code[] = {
+ {ML(ENGLISH,US), "en_US.ISO_8859-1"},
+ {ML(ENGLISH,CAN), "en_CA"}, /* english / canadian */
+ {ML(ENGLISH,UK), "en_GB"},
+ {ML(ENGLISH,EIRE), "en_IE"},
+ {ML(ENGLISH,AUS), "en_AU"},
+ {MLN(GERMAN), "de_DE"},
+ {MLN(SPANISH), "es_ES"},
+ {ML(SPANISH,MEXICAN), "es_MX"},
+ {MLN(FRENCH), "fr_FR"},
+ {ML(FRENCH,CANADIAN), "fr_CA"},
+ {ML(FRENCH,BELGIAN), "fr_BE"}, /* ? */
+ {ML(DUTCH,BELGIAN), "nl_BE"}, /* ? */
+ {ML(PORTUGUESE,BRAZILIAN), "pt_BR"},
+ {MLN(PORTUGUESE), "pt_PT"},
+ {MLN(SWEDISH), "sv_SE"},
+ {ML(CHINESE,HONGKONG), "zh_HK"},
+ /* these are machine-generated and not yet verified */
+ {RML(AFRIKAANS,DEFAULT), "af_ZA"},
+ {RML(ALBANIAN,DEFAULT), "sq_AL"},
+ {RML(ARABIC,ARABIC_ALGERIA), "ar_DZ"},
+ {RML(ARABIC,ARABIC_BAHRAIN), "ar_BH"},
+ {RML(ARABIC,ARABIC_EGYPT), "ar_EG"},
+ {RML(ARABIC,ARABIC_IRAQ), "ar_IQ"},
+ {RML(ARABIC,ARABIC_JORDAN), "ar_JO"},
+ {RML(ARABIC,ARABIC_KUWAIT), "ar_KW"},
+ {RML(ARABIC,ARABIC_LEBANON), "ar_LB"},
+ {RML(ARABIC,ARABIC_LIBYA), "ar_LY"},
+ {RML(ARABIC,ARABIC_MOROCCO), "ar_MA"},
+ {RML(ARABIC,ARABIC_OMAN), "ar_OM"},
+ {RML(ARABIC,ARABIC_QATAR), "ar_QA"},
+ {RML(ARABIC,ARABIC_SAUDI_ARABIA), "ar_SA"},
+ {RML(ARABIC,ARABIC_SYRIA), "ar_SY"},
+ {RML(ARABIC,ARABIC_TUNISIA), "ar_TN"},
+ {RML(ARABIC,ARABIC_UAE), "ar_AE"},
+ {RML(ARABIC,ARABIC_YEMEN), "ar_YE"},
+ {RML(ARMENIAN,DEFAULT), "hy_AM"},
+ {RML(AZERI,AZERI_CYRILLIC), "az_AZ"},
+ {RML(AZERI,AZERI_LATIN), "az_AZ"},
+ {RML(BASQUE,DEFAULT), "eu_ES"},
+ {RML(BELARUSIAN,DEFAULT), "be_BY"},
+/*{RML(BRETON,DEFAULT), "br_FR"},*/
+ {RML(BULGARIAN,DEFAULT), "bg_BG"},
+ {RML(CATALAN,DEFAULT), "ca_ES"},
+ {RML(CHINESE,CHINESE_HONGKONG), "zh_HK"},
+ {RML(CHINESE,CHINESE_MACAU), "zh_MO"},
+ {RML(CHINESE,CHINESE_SIMPLIFIED), "zh_CN"},
+ {RML(CHINESE,CHINESE_SINGAPORE), "zh_SG"},
+ {RML(CHINESE,CHINESE_TRADITIONAL), "zh_TW"},
+/*{RML(CORNISH,DEFAULT), "kw_GB"},*/
+ {RML(CZECH,DEFAULT), "cs_CZ"},
+ {RML(DANISH,DEFAULT), "da_DK"},
+ {RML(DUTCH,DUTCH), "nl_NL"},
+ {RML(DUTCH,DUTCH_BELGIAN), "nl_BE"},
+/*{RML(DUTCH,DUTCH_SURINAM), "nl_SR"},*/
+ {RML(ENGLISH,ENGLISH_AUS), "en_AU"},
+ {RML(ENGLISH,ENGLISH_BELIZE), "en_BZ"},
+ {RML(ENGLISH,ENGLISH_CAN), "en_CA"},
+ {RML(ENGLISH,ENGLISH_CARIBBEAN), "en_CB"},
+ {RML(ENGLISH,ENGLISH_EIRE), "en_IE"},
+ {RML(ENGLISH,ENGLISH_JAMAICA), "en_JM"},
+ {RML(ENGLISH,ENGLISH_NZ), "en_NZ"},
+ {RML(ENGLISH,ENGLISH_PHILIPPINES), "en_PH"},
+ {RML(ENGLISH,ENGLISH_SOUTH_AFRICA), "en_ZA"},
+ {RML(ENGLISH,ENGLISH_TRINIDAD), "en_TT"},
+ {RML(ENGLISH,ENGLISH_UK), "en_GB"},
+ {RML(ENGLISH,ENGLISH_US), "en_US"},
+ {RML(ENGLISH,ENGLISH_ZIMBABWE), "en_ZW"},
+/*{RML(ESPERANTO,DEFAULT), "eo_"},*/
+ {RML(ESTONIAN,DEFAULT), "et_EE"},
+ {RML(FAEROESE,DEFAULT), "fo_FO"},
+ {RML(FARSI,DEFAULT), "fa_IR"},
+ {RML(FINNISH,DEFAULT), "fi_FI"},
+ {RML(FRENCH,FRENCH), "fr_FR"},
+ {RML(FRENCH,FRENCH_BELGIAN), "fr_BE"},
+ {RML(FRENCH,FRENCH_CANADIAN), "fr_CA"},
+ {RML(FRENCH,FRENCH_LUXEMBOURG), "fr_LU"},
+ {RML(FRENCH,FRENCH_MONACO), "fr_MC"},
+ {RML(FRENCH,FRENCH_SWISS), "fr_CH"},
+/*{RML(GAELIC,GAELIC), "ga_IE"},*/
+/*{RML(GAELIC,GAELIC_MANX), "gv_GB"},*/
+/*{RML(GAELIC,GAELIC_SCOTTISH), "gd_GB"},*/
+/*{RML(GALICIAN,DEFAULT), "gl_ES"},*/
+ {RML(GEORGIAN,DEFAULT), "ka_GE"},
+ {RML(GERMAN,GERMAN), "de_DE"},
+ {RML(GERMAN,GERMAN_AUSTRIAN), "de_AT"},
+ {RML(GERMAN,GERMAN_LIECHTENSTEIN), "de_LI"},
+ {RML(GERMAN,GERMAN_LUXEMBOURG), "de_LU"},
+ {RML(GERMAN,GERMAN_SWISS), "de_CH"},
+ {RML(GREEK,DEFAULT), "el_GR"},
+ {RML(GUJARATI,DEFAULT), "gu_IN"},
+ {RML(HEBREW,DEFAULT), "he_IL"},
+ {RML(HINDI,DEFAULT), "hi_IN"},
+ {RML(HUNGARIAN,DEFAULT), "hu_HU"},
+ {RML(ICELANDIC,DEFAULT), "is_IS"},
+ {RML(INDONESIAN,DEFAULT), "id_ID"},
+ {RML(ITALIAN,ITALIAN), "it_IT"},
+ {RML(ITALIAN,ITALIAN_SWISS), "it_CH"},
+ {RML(JAPANESE,DEFAULT), "ja_JP"},
+ {RML(KANNADA,DEFAULT), "kn_IN"},
+ {RML(KAZAK,DEFAULT), "kk_KZ"},
+ {RML(KONKANI,DEFAULT), "kok_IN"},
+ {RML(KOREAN,KOREAN), "ko_KR"},
+/*{RML(KYRGYZ,DEFAULT), "ky_KG"},*/
+ {RML(LATVIAN,DEFAULT), "lv_LV"},
+ {RML(LITHUANIAN,LITHUANIAN), "lt_LT"},
+ {RML(MACEDONIAN,DEFAULT), "mk_MK"},
+ {RML(MALAY,MALAY_BRUNEI_DARUSSALAM), "ms_BN"},
+ {RML(MALAY,MALAY_MALAYSIA), "ms_MY"},
+ {RML(MARATHI,DEFAULT), "mr_IN"},
+/*{RML(MONGOLIAN,DEFAULT), "mn_MN"},*/
+ {RML(NORWEGIAN,NORWEGIAN_BOKMAL), "nb_NO"},
+ {RML(NORWEGIAN,NORWEGIAN_NYNORSK), "nn_NO"},
+ {RML(POLISH,DEFAULT), "pl_PL"},
+ {RML(PORTUGUESE,PORTUGUESE), "pt_PT"},
+ {RML(PORTUGUESE,PORTUGUESE_BRAZILIAN), "pt_BR"},
+ {RML(PUNJABI,DEFAULT), "pa_IN"},
+ {RML(ROMANIAN,DEFAULT), "ro_RO"},
+ {RML(RUSSIAN,DEFAULT), "ru_RU"},
+ {RML(SANSKRIT,DEFAULT), "sa_IN"},
+ {RML(SERBIAN,DEFAULT), "hr_HR"},
+ {RML(SERBIAN,SERBIAN_CYRILLIC), "sr_SP"},
+ {RML(SERBIAN,SERBIAN_LATIN), "sr_SP"},
+ {RML(SLOVAK,DEFAULT), "sk_SK"},
+ {RML(SLOVENIAN,DEFAULT), "sl_SI"},
+ {RML(SPANISH,SPANISH), "es_ES"},
+ {RML(SPANISH,SPANISH_ARGENTINA), "es_AR"},
+ {RML(SPANISH,SPANISH_BOLIVIA), "es_BO"},
+ {RML(SPANISH,SPANISH_CHILE), "es_CL"},
+ {RML(SPANISH,SPANISH_COLOMBIA), "es_CO"},
+ {RML(SPANISH,SPANISH_COSTA_RICA), "es_CR"},
+ {RML(SPANISH,SPANISH_DOMINICAN_REPUBLIC), "es_DO"},
+ {RML(SPANISH,SPANISH_ECUADOR), "es_EC"},
+ {RML(SPANISH,SPANISH_EL_SALVADOR), "es_SV"},
+ {RML(SPANISH,SPANISH_GUATEMALA), "es_GT"},
+ {RML(SPANISH,SPANISH_HONDURAS), "es_HN"},
+ {RML(SPANISH,SPANISH_MEXICAN), "es_MX"},
+ {RML(SPANISH,SPANISH_MODERN), "es_ES"},
+ {RML(SPANISH,SPANISH_NICARAGUA), "es_NI"},
+ {RML(SPANISH,SPANISH_PANAMA), "es_PA"},
+ {RML(SPANISH,SPANISH_PARAGUAY), "es_PY"},
+ {RML(SPANISH,SPANISH_PERU), "es_PE"},
+ {RML(SPANISH,SPANISH_PUERTO_RICO), "es_PR"},
+ {RML(SPANISH,SPANISH_URUGUAY), "es_UY"},
+ {RML(SPANISH,SPANISH_VENEZUELA), "es_VE"},
+ {RML(SWAHILI,DEFAULT), "sw_KE"},
+ {RML(SWEDISH,SWEDISH), "sv_SE"},
+ {RML(SWEDISH,SWEDISH_FINLAND), "sv_FI"},
+/*{RML(SYRIAC,DEFAULT), "syr_SY"},*/
+ {RML(TAMIL,DEFAULT), "ta_IN"},
+ {RML(TATAR,DEFAULT), "tt_TA"},
+ {RML(TELUGU,DEFAULT), "te_IN"},
+ {RML(THAI,DEFAULT), "th_TH"},
+ {RML(TURKISH,DEFAULT), "tr_TR"},
+ {RML(UKRAINIAN,DEFAULT), "uk_UA"},
+ {RML(URDU,URDU_PAKISTAN), "ur_PK"},
+ {RML(UZBEK,UZBEK_CYRILLIC), "uz_UZ"},
+ {RML(UZBEK,UZBEK_LATIN), "uz_UZ"},
+ {RML(VIETNAMESE,DEFAULT), "vi_VN"},
+/*{RML(WALON,DEFAULT), "wa_BE"},*/
+/*{RML(WELSH,DEFAULT), "cy_GB"},*/
+};
+static const IDToCode primary_to_code[] = {
+ {LANG_AFRIKAANS, "af"},
+ {LANG_ARABIC, "ar"},
+ {LANG_AZERI, "az"},
+ {LANG_BULGARIAN, "bg"},
+/*{LANG_BRETON, "br"},*/
+ {LANG_BELARUSIAN, "by"},
+ {LANG_CATALAN, "ca"},
+ {LANG_CZECH, "cs"},
+/*{LANG_WELSH, "cy"},*/
+ {LANG_DANISH, "da"},
+ {LANG_GERMAN, "de"},
+ {LANG_GREEK, "el"},
+ {LANG_ENGLISH, "en"},
+/*{LANG_ESPERANTO, "eo"},*/
+ {LANG_SPANISH, "es"},
+ {LANG_ESTONIAN, "et"},
+ {LANG_BASQUE, "eu"},
+ {LANG_FARSI, "fa"},
+ {LANG_FINNISH, "fi"},
+ {LANG_FAEROESE, "fo"},
+ {LANG_FRENCH, "fr"},
+/*{LANG_GAELIC, "ga"},*/
+/*{LANG_GALICIAN, "gl"},*/
+ {LANG_GUJARATI, "gu"},
+ {LANG_HEBREW, "he"},
+ {LANG_HINDI, "hi"},
+ {LANG_SERBIAN, "hr"},
+ {LANG_HUNGARIAN, "hu"},
+ {LANG_ARMENIAN, "hy"},
+ {LANG_INDONESIAN, "id"},
+ {LANG_ITALIAN, "it"},
+ {LANG_JAPANESE, "ja"},
+ {LANG_GEORGIAN, "ka"},
+ {LANG_KAZAK, "kk"},
+ {LANG_KANNADA, "kn"},
+ {LANG_KOREAN, "ko"},
+/*{LANG_KYRGYZ, "ky"},*/
+ {LANG_LITHUANIAN, "lt"},
+ {LANG_LATVIAN, "lv"},
+ {LANG_MACEDONIAN, "mk"},
+/*{LANG_MONGOLIAN, "mn"},*/
+ {LANG_MARATHI, "mr"},
+ {LANG_MALAY, "ms"},
+ {LANG_NORWEGIAN, "nb"},
+ {LANG_DUTCH, "nl"},
+ {LANG_NORWEGIAN, "nn"},
+ {LANG_NORWEGIAN, "no"},/* unofficial? */
+ {LANG_PUNJABI, "pa"},
+ {LANG_POLISH, "pl"},
+ {LANG_PORTUGUESE, "pt"},
+ {LANG_ROMANIAN, "ro"},
+ {LANG_RUSSIAN, "ru"},
+ {LANG_SLOVAK, "sk"},
+ {LANG_SLOVENIAN, "sl"},
+ {LANG_ALBANIAN, "sq"},
+ {LANG_SERBIAN, "sr"},
+ {LANG_SWEDISH, "sv"},
+ {LANG_SWAHILI, "sw"},
+ {LANG_TAMIL, "ta"},
+ {LANG_THAI, "th"},
+ {LANG_TURKISH, "tr"},
+ {LANG_TATAR, "tt"},
+ {LANG_UKRAINIAN, "uk"},
+ {LANG_URDU, "ur"},
+ {LANG_UZBEK, "uz"},
+ {LANG_VIETNAMESE, "vi"},
+/*{LANG_WALON, "wa"},*/
+ {LANG_CHINESE, "zh"},
+};
+static int num_primary_to_code =
+ sizeof(primary_to_code) / sizeof(*primary_to_code);
+static int num_both_to_code =
+ sizeof(both_to_code) / sizeof(*both_to_code);
+
+static const int
+lcid_to_fl(LCID lcid,
+ FL_Locale *rtn) {
+ LANGID langid = LANGIDFROMLCID(lcid);
+ LANGID primary_lang = PRIMARYLANGID(langid);
+ /*LANGID sub_lang = SUBLANGID(langid);*/
+ int i;
+ /* try to find an exact primary/sublanguage combo that we know about */
+ for (i=0; ilang = NULL;
+ rtn->country = NULL;
+ rtn->variant = NULL;
+
+#ifdef WIN32
+ /* win32 >= mswindows95 */
+ {
+ LCID lcid = GetThreadLocale();
+ if (lcid_to_fl(lcid, rtn)) {
+ success = FL_CONFIDENT;
+ }
+ if (success == FL_FAILED) {
+ /* assume US English on mswindows systems unless we know otherwise */
+ if (accumulate_locstring("en_US.ISO_8859-1", rtn)) {
+ success = FL_DEFAULT_GUESS;
+ }
+ }
+ }
+#else
+ /* assume unixoid */
+ {
+ /* examples: */
+ /* sv_SE.ISO_8859-1 */
+ /* fr_FR.ISO8859-1 */
+ /* no_NO_NB */
+ /* no_NO_NY */
+ /* no_NO */
+ /* de_DE */
+ /* try the various vars in decreasing order of authority */
+ if (accumulate_env("LC_ALL", rtn) ||
+ accumulate_env("LC_MESSAGES", rtn) ||
+ accumulate_env("LANG", rtn) ||
+ accumulate_env("LANGUAGE", rtn)) {
+ success = FL_CONFIDENT;
+ }
+ if (success == FL_FAILED) {
+ /* assume US English on unixoid systems unless we know otherwise */
+ if (accumulate_locstring("en_US.ISO_8859-1", rtn)) {
+ success = FL_DEFAULT_GUESS;
+ }
+ }
+ }
+#endif
+
+ if (success != FL_FAILED) {
+ canonise_fl(rtn);
+ }
+
+ *locale = rtn;
+ return success;
+}
+
+
+void
+FL_FreeLocale(FL_Locale **locale) {
+ if (locale) {
+ FL_Locale *l = *locale;
+ if (l) {
+ if (l->lang) {
+ free((void*)l->lang);
+ }
+ if (l->country) {
+ free((void*)l->country);
+ }
+ if (l->variant) {
+ free((void*)l->variant);
+ }
+ free(l);
+ *locale = NULL;
+ }
+ }
+}
diff --git a/linden/indra/llcommon/llfindlocale.h b/linden/indra/llcommon/llfindlocale.h
new file mode 100644
index 0000000..6cc2dbb
--- /dev/null
+++ b/linden/indra/llcommon/llfindlocale.h
@@ -0,0 +1,65 @@
+/**
+ * @file llfindlocale.h
+ * @brief Detect system language setting
+ *
+ * $LicenseInfo:firstyear=2008&license=viewergpl$
+ *
+ * Copyright (c) 2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef __findlocale_h_
+#define __findlocale_h_
+
+typedef const char* FL_Lang;
+typedef const char* FL_Country;
+typedef const char* FL_Variant;
+
+typedef struct {
+ FL_Lang lang;
+ FL_Country country;
+ FL_Variant variant;
+} FL_Locale;
+
+typedef enum {
+ /* for some reason we failed to even guess: this should never happen */
+ FL_FAILED = 0,
+ /* couldn't query locale -- returning a guess (almost always English) */
+ FL_DEFAULT_GUESS = 1,
+ /* the returned locale type was found by successfully asking the system */
+ FL_CONFIDENT = 2
+} FL_Success;
+
+typedef enum {
+ FL_MESSAGES = 0
+} FL_Domain;
+
+/* This allocates/fills in a FL_Locale structure with pointers to
+ strings (which should be treated as static), or NULL for inappropriate /
+ undetected fields. */
+FL_Success FL_FindLocale(FL_Locale **locale, FL_Domain domain);
+/* This should be used to free the struct written by FL_FindLocale */
+void FL_FreeLocale(FL_Locale **locale);
+
+#endif /*__findlocale_h_*/
diff --git a/linden/indra/llcommon/llheartbeat.cpp b/linden/indra/llcommon/llheartbeat.cpp
new file mode 100644
index 0000000..13bcd46
--- /dev/null
+++ b/linden/indra/llcommon/llheartbeat.cpp
@@ -0,0 +1,165 @@
+/**
+ * @file llheartbeat.cpp
+ * @brief Class encapsulating logic for telling a watchdog that we live.
+ *
+ * $LicenseInfo:firstyear=2008&license=viewergpl$
+ *
+ * Copyright (c) 2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include
+#include
+
+#include "linden_common.h"
+#include "llapp.h"
+
+#include "llheartbeat.h"
+
+LLHeartbeat::LLHeartbeat(F32 secs_between_heartbeat,
+ F32 aggressive_heartbeat_panic_secs,
+ F32 aggressive_heartbeat_max_blocking_secs)
+ : mSecsBetweenHeartbeat(secs_between_heartbeat),
+ mAggressiveHeartbeatPanicSecs(aggressive_heartbeat_panic_secs),
+ mAggressiveHeartbeatMaxBlockingSecs(aggressive_heartbeat_max_blocking_secs),
+ mSuppressed(false)
+{
+ mBeatTimer.reset();
+ mBeatTimer.setTimerExpirySec(mSecsBetweenHeartbeat);
+ mPanicTimer.reset();
+ mPanicTimer.setTimerExpirySec(mAggressiveHeartbeatPanicSecs);
+}
+
+LLHeartbeat::~LLHeartbeat()
+{
+ // do nothing.
+}
+
+void
+LLHeartbeat::setSuppressed(bool is_suppressed)
+{
+ mSuppressed = is_suppressed;
+}
+
+// returns 0 on success, -1 on permanent failure, 1 on temporary failure
+int
+LLHeartbeat::rawSend()
+{
+#if LL_WINDOWS
+ return 0; // Pretend we succeeded.
+#else
+ if (mSuppressed)
+ return 0; // Pretend we succeeded.
+
+ union sigval dummy;
+ int result = sigqueue(getppid(), LL_HEARTBEAT_SIGNAL, dummy);
+ if (result == 0)
+ return 0; // success
+
+ int err = errno;
+ if (err == EAGAIN)
+ return 1; // failed to queue, try again
+
+ return -1; // other failure.
+#endif
+}
+
+int
+LLHeartbeat::rawSendWithTimeout(F32 timeout_sec)
+{
+ int result = 0;
+
+ // Spin tightly until our heartbeat is digested by the watchdog
+ // or we time-out. We don't really want to sleep because our
+ // wake-up time might be undesirably synchronised to a hidden
+ // clock by the system's scheduler.
+ mTimeoutTimer.reset();
+ mTimeoutTimer.setTimerExpirySec(timeout_sec);
+ do {
+ result = rawSend();
+ //llinfos << " HEARTSENDc=" << result << llendl;
+ } while (result==1 && !mTimeoutTimer.hasExpired());
+
+ return result;
+}
+
+bool
+LLHeartbeat::send(F32 timeout_sec)
+{
+ bool total_success = false;
+ int result = 1;
+
+ if (timeout_sec > 0.f) {
+ // force a spin until success or timeout
+ result = rawSendWithTimeout(timeout_sec);
+ } else {
+ if (mBeatTimer.hasExpired()) {
+ // zero-timeout; we don't care too much whether our
+ // heartbeat was digested.
+ result = rawSend();
+ //llinfos << " HEARTSENDb=" << result << llendl;
+ }
+ }
+
+ if (result == -1) {
+ // big failure.
+ } else if (result == 0) {
+ total_success = true;
+ } else {
+ // need to retry at some point
+ }
+
+ if (total_success) {
+ mBeatTimer.reset();
+ mBeatTimer.setTimerExpirySec(mSecsBetweenHeartbeat);
+ // reset the time until we start panicking about lost
+ // heartbeats again.
+ mPanicTimer.reset();
+ mPanicTimer.setTimerExpirySec(mAggressiveHeartbeatPanicSecs);
+ } else {
+ // leave mBeatTimer as expired so we'll lazily poke the
+ // watchdog again next time through.
+ }
+
+ if (mPanicTimer.hasExpired()) {
+ // It's been ages since we successfully had a heartbeat
+ // digested by the watchdog. Sit here and spin a while
+ // in the hope that we can force it through.
+ llwarns << "Unable to deliver heartbeat to launcher for " << mPanicTimer.getElapsedTimeF32() << " seconds. Going to try very hard for up to " << mAggressiveHeartbeatMaxBlockingSecs << " seconds." << llendl;
+ result = rawSendWithTimeout(mAggressiveHeartbeatMaxBlockingSecs);
+ if (result == 0) {
+ total_success = true;
+ } else {
+ // we couldn't even force it through. That's bad,
+ // but we'll try again in a while.
+ llwarns << "Could not deliver heartbeat to launcher even after trying very hard for " << mAggressiveHeartbeatMaxBlockingSecs << " seconds." << llendl;
+ }
+
+ // in any case, reset the panic timer.
+ mPanicTimer.reset();
+ mPanicTimer.setTimerExpirySec(mAggressiveHeartbeatPanicSecs);
+ }
+
+ return total_success;
+}
diff --git a/linden/indra/llcommon/llheartbeat.h b/linden/indra/llcommon/llheartbeat.h
new file mode 100644
index 0000000..8a2fa0a
--- /dev/null
+++ b/linden/indra/llcommon/llheartbeat.h
@@ -0,0 +1,73 @@
+/**
+ * @file llheartbeat.h
+ * @brief Class encapsulating logic for telling a watchdog that we live.
+ *
+ * $LicenseInfo:firstyear=2008&license=viewergpl$
+ *
+ * Copyright (c) 2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLHEARTBEAT_H
+#define LL_LLHEARTBEAT_H
+
+#include "linden_common.h"
+
+#include "lltimer.h"
+
+// Note: Win32 does not support the heartbeat/smackdown system;
+// heartbeat-delivery turns into a no-op there.
+
+class LLHeartbeat
+{
+public:
+ // secs_between_heartbeat: after a heartbeat is successfully delivered,
+ // we suppress sending more for this length of time.
+ // aggressive_heartbeat_panic_secs: if we've been failing to
+ // successfully deliver heartbeats for this length of time then
+ // we block for a while until we're really sure we got one delivered.
+ // aggressive_heartbeat_max_blocking_secs: this is the length of
+ // time we block for when we're aggressively ensuring that a 'panic'
+ // heartbeat was delivered.
+ LLHeartbeat(F32 secs_between_heartbeat = 5.0f,
+ F32 aggressive_heartbeat_panic_secs = 10.0f,
+ F32 aggressive_heartbeat_max_blocking_secs = 4.0f);
+ ~LLHeartbeat();
+
+ bool send(F32 timeout_sec = 0.0f);
+ void setSuppressed(bool is_suppressed);
+
+private:
+ int rawSend();
+ int rawSendWithTimeout(F32 timeout_sec);
+ F32 mSecsBetweenHeartbeat;
+ F32 mAggressiveHeartbeatPanicSecs;
+ F32 mAggressiveHeartbeatMaxBlockingSecs;
+ bool mSuppressed;
+ LLTimer mBeatTimer;
+ LLTimer mPanicTimer;
+ LLTimer mTimeoutTimer;
+};
+
+#endif // LL_HEARTBEAT_H
diff --git a/linden/indra/llcommon/llindraconfigfile.cpp b/linden/indra/llcommon/llindraconfigfile.cpp
new file mode 100644
index 0000000..7ef1a9b
--- /dev/null
+++ b/linden/indra/llcommon/llindraconfigfile.cpp
@@ -0,0 +1,107 @@
+/**
+ * @file llindraconfigfile.cpp
+ *
+ *
+ * This class is an LLLiveFile that has config info for indra
+ * Currently only whether it's blacklisted
+ *
+ * $LicenseInfo:firstyear=2007&license=internal$
+ *
+ * Copyright (c) 2007-2008, Linden Research, Inc.
+ *
+ * The following source code is PROPRIETARY AND CONFIDENTIAL. Use of
+ * this source code is governed by the Linden Lab Source Code Disclosure
+ * Agreement ("Agreement") previously entered between you and Linden
+ * Lab. By accessing, using, copying, modifying or distributing this
+ * software, you acknowledge that you have been informed of your
+ * obligations under the Agreement and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llindraconfigfile.h"
+
+#include "llfile.h"
+#include "llsd.h"
+#include "llsdserialize.h"
+#include "llframetimer.h"
+
+static std::string sConfigDir = "";
+static const char indraConfigFileName[] = "indra.xml";
+
+
+LLIndraConfigFile::LLIndraConfigFile()
+ : LLLiveFile(filename(), configFileRefreshRate),
+ mConfig(LLSD())
+{
+}
+
+//static
+void LLIndraConfigFile::initClass(const std::string& config_dir)
+{
+ sConfigDir = config_dir;
+ llinfos << "LLIndraConfigFile::initClass config dir "
+ << config_dir << "/" << indraConfigFileName << llendl;
+}
+
+LLSD LLIndraConfigFile::getConfig(const std::string& config_name)
+{
+ if (sConfigDir.empty())
+ {
+ llerrs << "LLIndraConfigFile::initClass() not called" << llendl;
+ }
+
+ LLFrameTimer::updateFrameTime();
+
+ static LLIndraConfigFile the_file;
+ the_file.checkAndReload();
+
+ return the_file.mConfig[config_name];
+}
+
+std::string LLIndraConfigFile::filename()
+{
+ std::ostringstream ostr;
+
+ ostr << sConfigDir
+ << "/" << indraConfigFileName;
+
+ return ostr.str();
+}
+
+/* virtual */
+void LLIndraConfigFile::loadFile()
+{
+ llinfos << "LLIndraConfigFile::loadFile: reading from "
+ << filename() << llendl;
+
+ LLSD config;
+
+ {
+ llifstream file(filename().c_str());
+ if (file.is_open())
+ {
+ LLSDSerialize::fromXML(config, file);
+ }
+
+ if (config.isUndefined())
+ {
+ llinfos << "LLIndraConfigFile::loadFile: file missing, ill-formed,"
+ " or simply undefined; not changing the blacklist" << llendl;
+ return;
+ }
+ }
+
+ if (config.isMap())
+ {
+ mConfig = config;
+ }
+ else
+ {
+ llwarns << "LLIndraConfigFile: " << indraConfigFileName << " expects a map; wrong format" << llendl;
+ return;
+ }
+}
diff --git a/linden/indra/llcommon/llindraconfigfile.h b/linden/indra/llcommon/llindraconfigfile.h
new file mode 100644
index 0000000..271a848
--- /dev/null
+++ b/linden/indra/llcommon/llindraconfigfile.h
@@ -0,0 +1,50 @@
+/**
+ * @file llindraconfigfile.h
+ * @brief manages configuration file for indra.xml
+ *
+ * $LicenseInfo:firstyear=2007&license=internal$
+ *
+ * Copyright (c) 2007-2008, Linden Research, Inc.
+ *
+ * The following source code is PROPRIETARY AND CONFIDENTIAL. Use of
+ * this source code is governed by the Linden Lab Source Code Disclosure
+ * Agreement ("Agreement") previously entered between you and Linden
+ * Lab. By accessing, using, copying, modifying or distributing this
+ * software, you acknowledge that you have been informed of your
+ * obligations under the Agreement and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLINDRACONFIGFILE_H
+#define LL_LLINDRACONFIGFILE_H
+
+#include
+#include "linden_common.h"
+
+#include "lllivefile.h"
+#include "llsd.h"
+
+
+// To use, call LLIndraConfigFile::initClass(config_dir);
+// Then whenever getConfig is called, it will check and reload automatically
+
+class LLIndraConfigFile : public LLLiveFile
+{
+public:
+ LLIndraConfigFile();
+ static void initClass(const std::string& config_dir);
+ static LLSD getConfig(const std::string& config_name);
+
+private:
+ static std::string filename();
+
+protected:
+ /* virtual */ void loadFile();
+ LLSD mConfig;
+};
+
+#endif //LL_LLINDRACONFIGFILE_H
diff --git a/linden/indra/llcommon/llkeyusetracker.h b/linden/indra/llcommon/llkeyusetracker.h
new file mode 100644
index 0000000..c37ba24
--- /dev/null
+++ b/linden/indra/llcommon/llkeyusetracker.h
@@ -0,0 +1,220 @@
+/**
+ * @file llkeyusetracker.h
+ * @brief Declaration of the LLKeyUseTracker class.
+ *
+ * $LicenseInfo:firstyear=2003&license=viewergpl$
+ *
+ * Copyright (c) 2003-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_KEYUSETRACKER_H
+#define LL_KEYUSETRACKER_H
+
+// This is a generic cache for an arbitrary data type indexed against an
+// arbitrary key type. The cache length is determined by expiration time
+// tince against last use and set size. The age of elements and the size
+// of the cache are queryable.
+//
+// This is implemented as a list, which makes search O(n). If you reuse this
+// for something with a large dataset, consider reimplementing with a Boost
+// multimap based on both a map(key) and priority queue(last_use).
+
+template
+class KeyUseTrackerNodeImpl
+{
+public:
+ U64 mLastUse;
+ U32 mUseCount;
+ TKey mKey;
+ TData mData;
+
+ KeyUseTrackerNodeImpl( TKey k, TData d ) :
+ mLastUse(0),
+ mUseCount(0),
+ mKey( k ),
+ mData( d )
+ {
+ }
+};
+
+
+template
+class LLKeyUseTracker
+{
+ typedef KeyUseTrackerNodeImpl TKeyUseTrackerNode;
+ typedef std::list TKeyList;
+ TKeyList mKeyList;
+ U64 mMemUsecs;
+ U64 mLastExpire;
+ U32 mMaxCount;
+ U32 mCount;
+
+ static U64 getTime()
+ {
+ // This function operates on a frame basis, not instantaneous.
+ // We can rely on its output for determining first use in a
+ // frame.
+ return LLFrameTimer::getTotalTime();
+ }
+
+ void ageKeys()
+ {
+ U64 now = getTime();
+ if( now == mLastExpire )
+ {
+ return;
+ }
+ mLastExpire = now;
+
+ while( !mKeyList.empty() && (now - mKeyList.front()->mLastUse > mMemUsecs ) )
+ {
+ delete mKeyList.front();
+ mKeyList.pop_front();
+ mCount--;
+ }
+ }
+
+ TKeyUseTrackerNode *findNode( TKey key )
+ {
+ ageKeys();
+
+ typename TKeyList::iterator i;
+ for( i = mKeyList.begin(); i != mKeyList.end(); i++ )
+ {
+ if( (*i)->mKey == key )
+ return *i;
+ }
+
+ return NULL;
+ }
+
+ TKeyUseTrackerNode *removeNode( TKey key )
+ {
+ TKeyUseTrackerNode *i;
+ i = findNode( key );
+ if( i )
+ {
+ mKeyList.remove( i );
+ mCount--;
+ return i;
+ }
+
+ return NULL;
+ }
+
+public:
+ LLKeyUseTracker( U32 memory_seconds, U32 max_count ) :
+ mLastExpire(0),
+ mMaxCount( max_count ),
+ mCount(0)
+ {
+ mMemUsecs = ((U64)memory_seconds) * 1000000;
+ }
+
+ ~LLKeyUseTracker()
+ {
+ // Flush list
+ while( !mKeyList.empty() )
+ {
+ delete mKeyList.front();
+ mKeyList.pop_front();
+ mCount--;
+ }
+ }
+
+ void markUse( TKey key, TData data )
+ {
+ TKeyUseTrackerNode *node = removeNode( key );
+ if( !node )
+ {
+ node = new TKeyUseTrackerNode(key, data);
+ }
+ else
+ {
+ // Update data
+ node->mData = data;
+ }
+ node->mLastUse = getTime();
+ node->mUseCount++;
+ mKeyList.push_back( node );
+ mCount++;
+
+ // Too many items? Drop head
+ if( mCount > mMaxCount )
+ {
+ delete mKeyList.front();
+ mKeyList.pop_front();
+ mCount--;
+ }
+ }
+
+ void forgetKey( TKey key )
+ {
+ TKeyUseTrackerNode *node = removeNode( key );
+ if( node )
+ {
+ delete node;
+ }
+ }
+
+ U32 getUseCount( TKey key )
+ {
+ TKeyUseTrackerNode *node = findNode( key );
+ if( node )
+ {
+ return node->mUseCount;
+ }
+ return 0;
+ }
+
+ U64 getTimeSinceUse( TKey key )
+ {
+ TKeyUseTrackerNode *node = findNode( key );
+ if( node )
+ {
+ U64 now = getTime();
+ U64 delta = now - node->mLastUse;
+ return (U32)( delta / 1000000 );
+ }
+ return 0;
+ }
+
+ TData *getLastUseData( TKey key )
+ {
+ TKeyUseTrackerNode *node = findNode( key );
+ if( node )
+ {
+ return &node->mData;
+ }
+ return NULL;
+ }
+
+ U32 getKeyCount()
+ {
+ return mCount;
+ }
+};
+
+#endif
diff --git a/linden/indra/llcommon/lllivefile.h b/linden/indra/llcommon/lllivefile.h
index 1d55f7b..0a18fe0 100644
--- a/linden/indra/llcommon/lllivefile.h
+++ b/linden/indra/llcommon/lllivefile.h
@@ -32,6 +32,8 @@
#ifndef LL_LLLIVEFILE_H
#define LL_LLLIVEFILE_H
+const F32 configFileRefreshRate = 5.0; // seconds
+
class LLLiveFile
{
diff --git a/linden/indra/llcommon/llmemory.cpp b/linden/indra/llcommon/llmemory.cpp
index 0f08877..5edeb4b 100644
--- a/linden/indra/llcommon/llmemory.cpp
+++ b/linden/indra/llcommon/llmemory.cpp
@@ -387,7 +387,7 @@ U64 getCurrentRSS()
U64 getCurrentRSS()
{
static const char statPath[] = "/proc/self/stat";
- FILE *fp = fopen(statPath, "r");
+ LLFILE *fp = LLFile::fopen(statPath, "r");
U64 rss = 0;
if (fp == NULL)
diff --git a/linden/indra/llcommon/llprocessor.cpp b/linden/indra/llcommon/llprocessor.cpp
index d67a9c4..1c0f7e0 100644
--- a/linden/indra/llcommon/llprocessor.cpp
+++ b/linden/indra/llcommon/llprocessor.cpp
@@ -2230,7 +2230,7 @@ bool CProcessor::WriteInfoTextFile(const char *strFilename)
return false;
// Then we create a new file (CREATE_ALWAYS)
- FILE *file = LLFile::fopen(strFilename, "w"); /* Flawfinder: ignore */
+ LLFILE *file = LLFile::fopen(strFilename, "w"); /* Flawfinder: ignore */
if (!file)
return false;
diff --git a/linden/indra/llcommon/llptrskipmap.h b/linden/indra/llcommon/llptrskipmap.h
index b369d77..8592197 100644
--- a/linden/indra/llcommon/llptrskipmap.h
+++ b/linden/indra/llcommon/llptrskipmap.h
@@ -238,7 +238,8 @@ private:
template
inline LLPtrSkipMap::LLPtrSkipMap()
: mInsertFirst(NULL),
- mEquals(defaultEquals)
+ mEquals(defaultEquals),
+ mNumberOfSteps(0)
{
if (BINARY_DEPTH < 2)
{
@@ -259,7 +260,8 @@ template
inline LLPtrSkipMap::LLPtrSkipMap(insert_func insert_first,
equals_func equals)
: mInsertFirst(insert_first),
- mEquals(equals)
+ mEquals(equals),
+ mNumberOfSteps(0)
{
if (BINARY_DEPTH < 2)
{
diff --git a/linden/indra/llcommon/llsdserialize.h b/linden/indra/llcommon/llsdserialize.h
index 41e0aa5..f5282b4 100644
--- a/linden/indra/llcommon/llsdserialize.h
+++ b/linden/indra/llcommon/llsdserialize.h
@@ -390,7 +390,7 @@ public:
/**
* Options for output
*/
- enum e_formatter_options_type
+ typedef enum e_formatter_options_type
{
OPTIONS_NONE = 0,
OPTIONS_PRETTY = 1
diff --git a/linden/indra/llcommon/llsdutil.h b/linden/indra/llcommon/llsdutil.h
index c058185..ae6d694 100644
--- a/linden/indra/llcommon/llsdutil.h
+++ b/linden/indra/llcommon/llsdutil.h
@@ -101,4 +101,16 @@ BOOL compare_llsd_with_template(
const LLSD& template_llsd,
LLSD& resultant_llsd);
+// Simple function to copy data out of input & output iterators if
+// there is no need for casting.
+template LLSD llsd_copy_array(Input iter, Input end)
+{
+ LLSD dest;
+ for (; iter != end; ++iter)
+ {
+ dest.append(*iter);
+ }
+ return dest;
+}
+
#endif // LL_LLSDUTIL_H
diff --git a/linden/indra/llcommon/llsys.cpp b/linden/indra/llcommon/llsys.cpp
index ccdcd00..1285851 100644
--- a/linden/indra/llcommon/llsys.cpp
+++ b/linden/indra/llcommon/llsys.cpp
@@ -293,7 +293,7 @@ U32 LLOSInfo::getProcessVirtualSizeKB()
#if LL_WINDOWS
#endif
#if LL_LINUX
- FILE* status_filep = LLFile::fopen("/proc/self/status", "rb");
+ LLFILE* status_filep = LLFile::fopen("/proc/self/status", "rb");
S32 numRead = 0;
char buff[STATUS_SIZE]; /* Flawfinder: ignore */
@@ -336,7 +336,7 @@ U32 LLOSInfo::getProcessResidentSizeKB()
#if LL_WINDOWS
#endif
#if LL_LINUX
- FILE* status_filep = LLFile::fopen("/proc/self/status", "rb");
+ LLFILE* status_filep = LLFile::fopen("/proc/self/status", "rb");
if (status_filep != NULL)
{
S32 numRead = 0;
@@ -398,7 +398,7 @@ LLCPUInfo::LLCPUInfo()
#elif LL_LINUX
std::map< LLString, LLString > cpuinfo;
- FILE* cpuinfo_fp = LLFile::fopen(CPUINFO_FILE, "rb");
+ LLFILE* cpuinfo_fp = LLFile::fopen(CPUINFO_FILE, "rb");
if(cpuinfo_fp)
{
char line[MAX_STRING];
@@ -486,7 +486,7 @@ void LLCPUInfo::stream(std::ostream& s) const
}
#else
// *NOTE: This works on linux. What will it do on other systems?
- FILE* cpuinfo = LLFile::fopen(CPUINFO_FILE, "rb");
+ LLFILE* cpuinfo = LLFile::fopen(CPUINFO_FILE, "rb");
if(cpuinfo)
{
char line[MAX_STRING];
@@ -621,7 +621,7 @@ void LLMemoryInfo::stream(std::ostream& s) const
s << "Total Physical KB: " << phys << std::endl;
#else
// *NOTE: This works on linux. What will it do on other systems?
- FILE* meminfo = LLFile::fopen(MEMINFO_FILE,"rb");
+ LLFILE* meminfo = LLFile::fopen(MEMINFO_FILE,"rb");
if(meminfo)
{
char line[MAX_STRING]; /* Flawfinder: ignore */
@@ -665,7 +665,7 @@ BOOL gunzip_file(const char *srcfile, const char *dstfile)
BOOL retval = FALSE;
gzFile src = NULL;
U8 buffer[UNCOMPRESS_BUFFER_SIZE];
- FILE *dst = NULL;
+ LLFILE *dst = NULL;
S32 bytes = 0;
(void *) strcpy(tmpfile, dstfile); /* Flawfinder: ignore */
(void *) strncat(tmpfile, ".t", sizeof(tmpfile) - strlen(tmpfile) -1); /* Flawfinder: ignore */
@@ -700,7 +700,7 @@ BOOL gzip_file(const char *srcfile, const char *dstfile)
BOOL retval = FALSE;
U8 buffer[COMPRESS_BUFFER_SIZE];
gzFile dst = NULL;
- FILE *src = NULL;
+ LLFILE *src = NULL;
S32 bytes = 0;
(void *) strcpy(tmpfile, dstfile); /* Flawfinder: ignore */
(void *) strncat(tmpfile, ".t", sizeof(tmpfile) - strlen(tmpfile) -1); /* Flawfinder: ignore */
diff --git a/linden/indra/llcommon/lltimer.cpp b/linden/indra/llcommon/lltimer.cpp
index a421dce..25d9897 100644
--- a/linden/indra/llcommon/lltimer.cpp
+++ b/linden/indra/llcommon/lltimer.cpp
@@ -39,10 +39,8 @@
# define WIN32_LEAN_AND_MEAN
# include
# include
-#elif LL_LINUX || LL_SOLARIS
-# include
-# include
-#elif LL_DARWIN
+#elif LL_LINUX || LL_SOLARIS || LL_DARWIN
+# include
# include
#else
# error "architecture not supported"
@@ -81,42 +79,55 @@ U64 gLastTotalTimeClockCount = 0;
//---------------------------------------------------------------------------
#if LL_WINDOWS
-void ms_sleep(long ms)
+void ms_sleep(U32 ms)
{
- Sleep((U32)ms);
+ Sleep(ms);
}
-
-void llyield()
+#elif LL_LINUX || LL_SOLARIS || LL_DARWIN
+void ms_sleep(U32 ms)
{
- SleepEx(0, TRUE); // Relinquishes time slice to any thread of equal priority, can be woken up by extended IO functions
-}
-#elif LL_LINUX || LL_SOLARIS
-void ms_sleep(long ms)
-{
- struct timespec t;
- t.tv_sec = ms / 1000;
- t.tv_nsec = (ms % 1000) * 1000000l;
- nanosleep(&t, NULL);
-}
+ long mslong = ms; // tv_nsec is a long
+ struct timespec thiswait, nextwait;
+ bool sleep_more = false;
-void llyield()
-{
- sched_yield();
-}
-#elif LL_DARWIN
-void ms_sleep(long ms)
-{
- struct timespec t;
- t.tv_sec = ms / 1000;
- t.tv_nsec = (ms % 1000) * 1000000l;
- nanosleep(&t, NULL);
-}
+ thiswait.tv_sec = ms / 1000;
+ thiswait.tv_nsec = (mslong % 1000) * 1000000l;
+ do {
+ int result = nanosleep(&thiswait, &nextwait);
-void llyield()
-{
-// sched_yield();
+ // check if sleep was interrupted by a signal; unslept
+ // remainder was written back into 't' and we just nanosleep
+ // again.
+ sleep_more = (result == -1 && EINTR == errno);
+
+ if (sleep_more)
+ {
+ if ( nextwait.tv_sec > thiswait.tv_sec ||
+ (nextwait.tv_sec == thiswait.tv_sec &&
+ nextwait.tv_nsec >= thiswait.tv_nsec) )
+ {
+ // if the remaining time isn't actually going
+ // down then we're being shafted by low clock
+ // resolution - manually massage the sleep time
+ // downward.
+ if (nextwait.tv_nsec > 1000000) {
+ // lose 1ms
+ nextwait.tv_nsec -= 1000000;
+ } else {
+ if (nextwait.tv_sec == 0) {
+ // already so close to finished
+ sleep_more = false;
+ } else {
+ // lose up to 1ms
+ nextwait.tv_nsec = 0;
+ }
+ }
+ }
+ thiswait = nextwait;
+ }
+ } while (sleep_more);
}
-#else
+#else
# error "architecture not supported"
#endif
@@ -323,7 +334,7 @@ void LLTimer::setTimerExpirySec(F32 expiration)
+ (U64)((F32)(expiration * gClockFrequency));
}
-F32 LLTimer::getRemainingTimeF32()
+F32 LLTimer::getRemainingTimeF32() const
{
U64 cur_ticks = get_clock_count();
if (cur_ticks > mExpirationTicks)
@@ -348,7 +359,7 @@ BOOL LLTimer::checkExpirationAndReset(F32 expiration)
}
-BOOL LLTimer::hasExpired()
+BOOL LLTimer::hasExpired() const
{
return (get_clock_count() >= mExpirationTicks)
? TRUE : FALSE;
@@ -550,3 +561,4 @@ void LLEventTimer::updateClass()
}
}
+
diff --git a/linden/indra/llcommon/lltimer.h b/linden/indra/llcommon/lltimer.h
index 8a4bc76..91b93d6 100644
--- a/linden/indra/llcommon/lltimer.h
+++ b/linden/indra/llcommon/lltimer.h
@@ -87,11 +87,11 @@ public:
void setLastClockCount(U64 current_count); // Sets the timer so that the next elapsed call will be relative to this time
void setTimerExpirySec(F32 expiration);
BOOL checkExpirationAndReset(F32 expiration);
- BOOL hasExpired();
+ BOOL hasExpired() const;
F32 getElapsedTimeAndResetF32(); // Returns elapsed time in seconds with reset
F64 getElapsedTimeAndResetF64();
- F32 getRemainingTimeF32();
+ F32 getRemainingTimeF32() const;
static BOOL knownBadTimer();
@@ -112,12 +112,8 @@ U64 get_clock_count();
F64 calc_clock_frequency(U32 msecs);
void update_clock_frequencies();
-
// Sleep for milliseconds
-void ms_sleep(long ms);
-
-// Yield
-//void llyield(); // Yield your timeslice - not implemented yet for Mac, so commented out.
+void ms_sleep(U32 ms);
// Returns the correct UTC time in seconds, like time(NULL).
// Useful on the viewer, which may have its local clock set wrong.
diff --git a/linden/indra/llcommon/llversionserver.h b/linden/indra/llcommon/llversionserver.h
index e865b6a..e3ceadf 100644
--- a/linden/indra/llcommon/llversionserver.h
+++ b/linden/indra/llcommon/llversionserver.h
@@ -33,9 +33,9 @@
#define LL_LLVERSIONSERVER_H
const S32 LL_VERSION_MAJOR = 1;
-const S32 LL_VERSION_MINOR = 20;
-const S32 LL_VERSION_PATCH = 0;
-const S32 LL_VERSION_BUILD = 83892;
+const S32 LL_VERSION_MINOR = 21;
+const S32 LL_VERSION_PATCH = 1;
+const S32 LL_VERSION_BUILD = 86526;
const char * const LL_CHANNEL = "Second Life Server";
diff --git a/linden/indra/llcommon/llversionviewer.h b/linden/indra/llcommon/llversionviewer.h
index 71bb12e..db3d42d 100644
--- a/linden/indra/llcommon/llversionviewer.h
+++ b/linden/indra/llcommon/llversionviewer.h
@@ -34,7 +34,7 @@
const S32 LL_VERSION_MAJOR = 1;
const S32 LL_VERSION_MINOR = 20;
-const S32 LL_VERSION_PATCH = 5;
+const S32 LL_VERSION_PATCH = 7;
const S32 LL_VERSION_BUILD = 0;
const char * const LL_CHANNEL = "Second Life Release";
diff --git a/linden/indra/llimage/llimagetga.cpp b/linden/indra/llimage/llimagetga.cpp
index 4da374e..bd03abb 100644
--- a/linden/indra/llimage/llimagetga.cpp
+++ b/linden/indra/llimage/llimagetga.cpp
@@ -1128,7 +1128,7 @@ bool LLImageTGA::loadFile( const LLString& path )
return false;
}
- FILE* file = LLFile::fopen(path.c_str(), "rb"); /* Flawfinder: ignore */
+ LLFILE* file = LLFile::fopen(path.c_str(), "rb"); /* Flawfinder: ignore */
if( !file )
{
llwarns << "Couldn't open file " << path << llendl;
diff --git a/linden/indra/llimagej2coj/llimagej2coj.cpp b/linden/indra/llimagej2coj/llimagej2coj.cpp
index 01868fd..478cc84 100644
--- a/linden/indra/llimagej2coj/llimagej2coj.cpp
+++ b/linden/indra/llimagej2coj/llimagej2coj.cpp
@@ -58,14 +58,14 @@ void fallbackDestroyLLImageJ2CImpl(LLImageJ2CImpl* impl)
}
/**
-sample error callback expecting a FILE* client object
+sample error callback expecting a LLFILE* client object
*/
void error_callback(const char* msg, void*)
{
lldebugs << "LLImageJ2CImpl error_callback: " << msg << llendl;
}
/**
-sample warning callback expecting a FILE* client object
+sample warning callback expecting a LLFILE* client object
*/
void warning_callback(const char* msg, void*)
{
diff --git a/linden/indra/llinventory/llinventory.cpp b/linden/indra/llinventory/llinventory.cpp
index 4c58789..8cd0700 100644
--- a/linden/indra/llinventory/llinventory.cpp
+++ b/linden/indra/llinventory/llinventory.cpp
@@ -217,7 +217,7 @@ BOOL LLInventoryObject::importLegacyStream(std::istream& input_stream)
// exportFile should be replaced with exportLegacyStream
// not sure whether exportLegacyStream(llofstream(fp)) would work, fp may need to get icramented...
-BOOL LLInventoryObject::exportFile(FILE* fp, BOOL) const
+BOOL LLInventoryObject::exportFile(LLFILE* fp, BOOL) const
{
char uuid_str[UUID_STR_LENGTH]; /* Flawfinder: ignore */
fprintf(fp, "\tinv_object\t0\n\t{\n");
@@ -520,7 +520,7 @@ BOOL LLInventoryItem::unpackMessage(LLMessageSystem* msg, const char* block, S32
}
// virtual
-BOOL LLInventoryItem::importFile(FILE* fp)
+BOOL LLInventoryItem::importFile(LLFILE* fp)
{
// *NOTE: Changing the buffer size will require changing the scanf
// calls below.
@@ -674,7 +674,7 @@ BOOL LLInventoryItem::importFile(FILE* fp)
return success;
}
-BOOL LLInventoryItem::exportFile(FILE* fp, BOOL include_asset_key) const
+BOOL LLInventoryItem::exportFile(LLFILE* fp, BOOL include_asset_key) const
{
char uuid_str[UUID_STR_LENGTH]; /* Flawfinder: ignore */
fprintf(fp, "\tinv_item\t0\n\t{\n");
@@ -1429,7 +1429,7 @@ void LLInventoryCategory::unpackMessage(LLMessageSystem* msg,
}
// virtual
-BOOL LLInventoryCategory::importFile(FILE* fp)
+BOOL LLInventoryCategory::importFile(LLFILE* fp)
{
// *NOTE: Changing the buffer size will require changing the scanf
// calls below.
@@ -1495,7 +1495,7 @@ BOOL LLInventoryCategory::importFile(FILE* fp)
return TRUE;
}
-BOOL LLInventoryCategory::exportFile(FILE* fp, BOOL) const
+BOOL LLInventoryCategory::exportFile(LLFILE* fp, BOOL) const
{
char uuid_str[UUID_STR_LENGTH]; /* Flawfinder: ignore */
fprintf(fp, "\tinv_category\t0\n\t{\n");
diff --git a/linden/indra/llinventory/llinventory.h b/linden/indra/llinventory/llinventory.h
index b4199db..1bb6b85 100644
--- a/linden/indra/llinventory/llinventory.h
+++ b/linden/indra/llinventory/llinventory.h
@@ -101,8 +101,8 @@ public:
// file support - implemented here so that a minimal information
// set can be transmitted between simulator and viewer.
-// virtual BOOL importFile(FILE* fp);
- virtual BOOL exportFile(FILE* fp, BOOL include_asset_key = TRUE) const;
+// virtual BOOL importFile(LLFILE* fp);
+ virtual BOOL exportFile(LLFILE* fp, BOOL include_asset_key = TRUE) const;
virtual BOOL importLegacyStream(std::istream& input_stream);
virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;
@@ -259,8 +259,8 @@ public:
// we want to detect network mangling somehow.
virtual BOOL unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0);
// file support
- virtual BOOL importFile(FILE* fp);
- virtual BOOL exportFile(FILE* fp, BOOL include_asset_key = TRUE) const;
+ virtual BOOL importFile(LLFILE* fp);
+ virtual BOOL exportFile(LLFILE* fp, BOOL include_asset_key = TRUE) const;
virtual BOOL importLegacyStream(std::istream& input_stream);
virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;
@@ -319,8 +319,8 @@ public:
bool fromLLSD(LLSD& sd);
// file support
- virtual BOOL importFile(FILE* fp);
- virtual BOOL exportFile(FILE* fp, BOOL include_asset_key = TRUE) const;
+ virtual BOOL importFile(LLFILE* fp);
+ virtual BOOL exportFile(LLFILE* fp, BOOL include_asset_key = TRUE) const;
virtual BOOL importLegacyStream(std::istream& input_stream);
virtual BOOL exportLegacyStream(std::ostream& output_stream, BOOL include_asset_key = TRUE) const;
diff --git a/linden/indra/llinventory/llpermissions.cpp b/linden/indra/llinventory/llpermissions.cpp
index 8d800aa..afa2772 100644
--- a/linden/indra/llinventory/llpermissions.cpp
+++ b/linden/indra/llinventory/llpermissions.cpp
@@ -544,7 +544,7 @@ void LLPermissions::unpackMessage(LLMessageSystem* msg, const char* block, S32 b
// File support
//
-BOOL LLPermissions::importFile(FILE* fp)
+BOOL LLPermissions::importFile(LLFILE* fp)
{
init(LLUUID::null, LLUUID::null, LLUUID::null, LLUUID::null);
const S32 BUFSIZE = 16384;
@@ -648,7 +648,7 @@ BOOL LLPermissions::importFile(FILE* fp)
}
-BOOL LLPermissions::exportFile(FILE* fp) const
+BOOL LLPermissions::exportFile(LLFILE* fp) const
{
char uuid_str[256]; /* Flawfinder: ignore */
diff --git a/linden/indra/llinventory/llpermissions.h b/linden/indra/llinventory/llpermissions.h
index 05a30f6..6c858bf 100644
--- a/linden/indra/llinventory/llpermissions.h
+++ b/linden/indra/llinventory/llpermissions.h
@@ -302,8 +302,8 @@ public:
void unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0);
// Load/save support
- BOOL importFile(FILE* fp);
- BOOL exportFile(FILE* fp) const;
+ BOOL importFile(LLFILE* fp);
+ BOOL exportFile(LLFILE* fp) const;
BOOL importLegacyStream(std::istream& input_stream);
BOOL exportLegacyStream(std::ostream& output_stream) const;
diff --git a/linden/indra/llinventory/llsaleinfo.cpp b/linden/indra/llinventory/llsaleinfo.cpp
index bff075b..7aabdda 100644
--- a/linden/indra/llinventory/llsaleinfo.cpp
+++ b/linden/indra/llinventory/llsaleinfo.cpp
@@ -84,7 +84,7 @@ U32 LLSaleInfo::getCRC32() const
}
-BOOL LLSaleInfo::exportFile(FILE* fp) const
+BOOL LLSaleInfo::exportFile(LLFILE* fp) const
{
fprintf(fp, "\tsale_info\t0\n\t{\n");
fprintf(fp, "\t\tsale_type\t%s\n", lookup(mSaleType));
@@ -158,7 +158,7 @@ BOOL LLSaleInfo::importXML(LLXMLNode* node)
return success;
}
-BOOL LLSaleInfo::importFile(FILE* fp, BOOL& has_perm_mask, U32& perm_mask)
+BOOL LLSaleInfo::importFile(LLFILE* fp, BOOL& has_perm_mask, U32& perm_mask)
{
has_perm_mask = FALSE;
diff --git a/linden/indra/llinventory/llsaleinfo.h b/linden/indra/llinventory/llsaleinfo.h
index 0af8d89..9aa1024 100644
--- a/linden/indra/llinventory/llsaleinfo.h
+++ b/linden/indra/llinventory/llsaleinfo.h
@@ -91,8 +91,8 @@ public:
// file serialization
- BOOL exportFile(FILE* fp) const;
- BOOL importFile(FILE* fp, BOOL& has_perm_mask, U32& perm_mask);
+ BOOL exportFile(LLFILE* fp) const;
+ BOOL importFile(LLFILE* fp, BOOL& has_perm_mask, U32& perm_mask);
BOOL exportLegacyStream(std::ostream& output_stream) const;
LLSD asLLSD() const;
diff --git a/linden/indra/llmath/llcrc.cpp b/linden/indra/llmath/llcrc.cpp
index 2338691..447521a 100644
--- a/linden/indra/llmath/llcrc.cpp
+++ b/linden/indra/llmath/llcrc.cpp
@@ -171,7 +171,7 @@ void LLCRC::update(const char* filename)
return;
}
- FILE* fp = LLFile::fopen(filename, "rb"); /* Flawfinder: ignore */
+ LLFILE* fp = LLFile::fopen(filename, "rb"); /* Flawfinder: ignore */
if (fp)
{
diff --git a/linden/indra/llmath/llcrc.h b/linden/indra/llmath/llcrc.h
index 64e939c..59f58ce 100644
--- a/linden/indra/llmath/llcrc.h
+++ b/linden/indra/llmath/llcrc.h
@@ -41,7 +41,7 @@
// example (don't try this at work kids):
//
// LLCRC crc;
-// FILE* fp = LLFile::fopen(filename,"rb");
+// LLFILE* fp = LLFile::fopen(filename,"rb");
// while(!feof(fp)) {
// crc.update(fgetc(fp));
// }
diff --git a/linden/indra/llmath/llmath_vc8.vcproj b/linden/indra/llmath/llmath_vc8.vcproj
index e85a852..3b4413a 100644
--- a/linden/indra/llmath/llmath_vc8.vcproj
+++ b/linden/indra/llmath/llmath_vc8.vcproj
@@ -246,6 +246,10 @@
>
+
+
@@ -266,6 +270,10 @@
>
+
+
@@ -352,6 +360,10 @@
>
+
+
@@ -384,6 +396,10 @@
>
+
+
diff --git a/linden/indra/llmath/llmath_vc9.vcproj b/linden/indra/llmath/llmath_vc9.vcproj
index 6d60d1e..03bc780 100644
--- a/linden/indra/llmath/llmath_vc9.vcproj
+++ b/linden/indra/llmath/llmath_vc9.vcproj
@@ -247,6 +247,10 @@
>
+
+
@@ -267,6 +271,10 @@
>
+
+
@@ -353,6 +361,10 @@
>
+
+
@@ -385,6 +397,10 @@
>
+
+
diff --git a/linden/indra/llmath/llmd5.cpp b/linden/indra/llmath/llmd5.cpp
index a0ac92f..ea69002 100644
--- a/linden/indra/llmath/llmd5.cpp
+++ b/linden/indra/llmath/llmd5.cpp
@@ -157,7 +157,7 @@ void LLMD5::update (const uint1 *input, const uint4 input_length) {
// MD5 update for files.
// Like above, except that it works on files (and uses above as a primitive.)
-void LLMD5::update(FILE* file){
+void LLMD5::update(LLFILE* file){
unsigned char buffer[BLOCK_LEN]; /* Flawfinder: ignore */
int len;
@@ -237,7 +237,7 @@ void LLMD5::finalize (){
-LLMD5::LLMD5(FILE *file){
+LLMD5::LLMD5(LLFILE *file){
init(); // must be called be all constructors
update(file);
diff --git a/linden/indra/llmath/llmd5.h b/linden/indra/llmath/llmd5.h
index 6d21b31..9ba0a9f 100644
--- a/linden/indra/llmath/llmd5.h
+++ b/linden/indra/llmath/llmd5.h
@@ -93,14 +93,14 @@ public:
LLMD5 (); // simple initializer
void update (const uint1 *input, const uint4 input_length);
void update (std::istream& stream);
- void update (FILE *file);
+ void update (LLFILE *file);
void finalize ();
// constructors for special circumstances. All these constructors finalize
// the MD5 context.
LLMD5 (const unsigned char *string); // digest string, finalize
LLMD5 (std::istream& stream); // digest stream, finalize
- LLMD5 (FILE *file); // digest file, close, finalize
+ LLMD5 (LLFILE *file); // digest file, close, finalize
LLMD5 (const unsigned char *string, const unsigned int number);
// methods to acquire finalized result
diff --git a/linden/indra/llmath/lloctree.h b/linden/indra/llmath/lloctree.h
index 52ad1bb..e26bae5 100644
--- a/linden/indra/llmath/lloctree.h
+++ b/linden/indra/llmath/lloctree.h
@@ -38,9 +38,9 @@
#include
#ifdef LL_RELEASE_FOR_DOWNLOAD
-#define OCT_ERRS llwarns
+#define OCT_ERRS LL_WARNS("OctreeErrors")
#else
-#define OCT_ERRS llerrs
+#define OCT_ERRS LL_ERRS("OctreeErrors")
#endif
#define LL_OCTREE_PARANOIA_CHECK 0
diff --git a/linden/indra/llmath/llvolume.cpp b/linden/indra/llmath/llvolume.cpp
index 527100a..f7c9286 100644
--- a/linden/indra/llmath/llvolume.cpp
+++ b/linden/indra/llmath/llvolume.cpp
@@ -770,7 +770,7 @@ BOOL LLProfile::generate(const LLProfileParams& params, BOOL path_open,F32 detai
-BOOL LLProfileParams::importFile(FILE *fp)
+BOOL LLProfileParams::importFile(LLFILE *fp)
{
LLMemType m1(LLMemType::MTYPE_VOLUME);
@@ -834,7 +834,7 @@ BOOL LLProfileParams::importFile(FILE *fp)
}
-BOOL LLProfileParams::exportFile(FILE *fp) const
+BOOL LLProfileParams::exportFile(LLFILE *fp) const
{
fprintf(fp,"\t\tprofile 0\n");
fprintf(fp,"\t\t{\n");
@@ -1282,7 +1282,7 @@ BOOL LLDynamicPath::generate(const LLPathParams& params, F32 detail, S32 split,
}
-BOOL LLPathParams::importFile(FILE *fp)
+BOOL LLPathParams::importFile(LLFILE *fp)
{
LLMemType m1(LLMemType::MTYPE_VOLUME);
@@ -1403,7 +1403,7 @@ BOOL LLPathParams::importFile(FILE *fp)
}
-BOOL LLPathParams::exportFile(FILE *fp) const
+BOOL LLPathParams::exportFile(LLFILE *fp) const
{
fprintf(fp, "\t\tpath 0\n");
fprintf(fp, "\t\t{\n");
@@ -1874,7 +1874,6 @@ inline LLVector3 sculpt_rgb_to_vector(U8 r, U8 g, U8 b)
inline U32 sculpt_xy_to_index(U32 x, U32 y, U16 sculpt_width, U16 sculpt_height, S8 sculpt_components)
{
U32 index = (x + y * sculpt_width) * sculpt_components;
-
return index;
}
@@ -3560,18 +3559,22 @@ BOOL LLVolume::cleanupTriangleData( const S32 num_input_vertices,
LLMemType m1(LLMemType::MTYPE_VOLUME);
/* Testing: avoid any cleanup
- num_output_vertices = num_input_vertices;
- num_output_triangles = num_input_triangles;
-
- *output_vertices = new LLVector3[num_input_vertices];
- for (S32 i = 0; i < num_input_vertices; i++)
+ static BOOL skip_cleanup = TRUE;
+ if ( skip_cleanup )
{
- (*output_vertices)[i] = input_vertices[i].mPos;
- }
+ num_output_vertices = num_input_vertices;
+ num_output_triangles = num_input_triangles;
- *output_triangles = new S32[num_input_triangles*3];
- memcpy(*output_triangles, input_triangles, 3*num_input_triangles*sizeof(S32)); // Flawfinder: ignore
- return TRUE;
+ *output_vertices = new LLVector3[num_input_vertices];
+ for (S32 index = 0; index < num_input_vertices; index++)
+ {
+ (*output_vertices)[index] = input_vertices[index].mPos;
+ }
+
+ *output_triangles = new S32[num_input_triangles*3];
+ memcpy(*output_triangles, input_triangles, 3*num_input_triangles*sizeof(S32)); // Flawfinder: ignore
+ return TRUE;
+ }
*/
// Here's how we do this:
@@ -3637,8 +3640,8 @@ BOOL LLVolume::cleanupTriangleData( const S32 num_input_vertices,
for (i = 0; i < num_input_triangles; i++)
{
S32 v1 = i*3;
- S32 v2 = i*3 + 1;
- S32 v3 = i*3 + 2;
+ S32 v2 = v1 + 1;
+ S32 v3 = v1 + 2;
//llinfos << "Checking triangle " << input_triangles[v1] << ":" << input_triangles[v2] << ":" << input_triangles[v3] << llendl;
input_triangles[v1] = vertex_mapping[input_triangles[v1]];
@@ -3774,7 +3777,7 @@ BOOL LLVolume::cleanupTriangleData( const S32 num_input_vertices,
}
-BOOL LLVolumeParams::importFile(FILE *fp)
+BOOL LLVolumeParams::importFile(LLFILE *fp)
{
LLMemType m1(LLMemType::MTYPE_VOLUME);
@@ -3819,7 +3822,7 @@ BOOL LLVolumeParams::importFile(FILE *fp)
return TRUE;
}
-BOOL LLVolumeParams::exportFile(FILE *fp) const
+BOOL LLVolumeParams::exportFile(LLFILE *fp) const
{
fprintf(fp,"\tshape 0\n");
fprintf(fp,"\t{\n");
@@ -3938,16 +3941,19 @@ const F32 MIN_CONCAVE_PATH_WEDGE = 0.111111f; // 1/9 unity
BOOL LLVolumeParams::isConvex() const
{
F32 path_length = mPathParams.getEnd() - mPathParams.getBegin();
+ F32 hollow = mProfileParams.getHollow();
- if ( mPathParams.getTwist() != mPathParams.getTwistBegin()
- && path_length > MIN_CONCAVE_PATH_WEDGE )
+ U8 path_type = mPathParams.getCurveType();
+ if ( path_length > MIN_CONCAVE_PATH_WEDGE
+ && ( mPathParams.getTwist() != mPathParams.getTwistBegin()
+ || (hollow > 0.f
+ && LL_PCODE_PATH_LINE != path_type) ) )
{
// twist along a "not too short" path is concave
return FALSE;
}
F32 profile_length = mProfileParams.getEnd() - mProfileParams.getBegin();
- F32 hollow = mProfileParams.getHollow();
BOOL same_hole = hollow == 0.f
|| (mProfileParams.getCurveType() & LL_PCODE_HOLE_MASK) == LL_PCODE_HOLE_SAME;
@@ -3971,7 +3977,6 @@ BOOL LLVolumeParams::isConvex() const
return FALSE;
}
- U8 path_type = mPathParams.getCurveType();
if ( LL_PCODE_PATH_LINE == path_type )
{
// straight paths with convex profile
@@ -4176,18 +4181,6 @@ std::ostream& operator<<(std::ostream &s, const LLVolume *volumep)
}
-LLVolumeFace::LLVolumeFace()
-{
- mTypeMask = 0;
- mID = 0;
- mBeginS = 0;
- mBeginT = 0;
- mNumS = 0;
- mNumT = 0;
- mHasBinormals = FALSE;
-}
-
-
BOOL LLVolumeFace::create(LLVolume* volume, BOOL partial_build)
{
if (mTypeMask & CAP_MASK)
@@ -4796,6 +4789,11 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build)
mIndices.resize(num_indices);
mEdge.resize(num_indices);
}
+ else
+ {
+ mHasBinormals = FALSE;
+ }
+
LLVector3& face_min = mExtents[0];
LLVector3& face_max = mExtents[1];
diff --git a/linden/indra/llmath/llvolume.h b/linden/indra/llmath/llvolume.h
index c239685..5b48cfc 100644
--- a/linden/indra/llmath/llvolume.h
+++ b/linden/indra/llmath/llvolume.h
@@ -52,6 +52,7 @@ class LLVolume;
#include "llstrider.h"
#include "v4coloru.h"
#include "llmemory.h"
+#include "llfile.h"
//============================================================================
@@ -229,8 +230,8 @@ public:
void copyParams(const LLProfileParams ¶ms);
- BOOL importFile(FILE *fp);
- BOOL exportFile(FILE *fp) const;
+ BOOL importFile(LLFILE *fp);
+ BOOL exportFile(LLFILE *fp) const;
BOOL importLegacyStream(std::istream& input_stream);
BOOL exportLegacyStream(std::ostream& output_stream) const;
@@ -354,8 +355,8 @@ public:
void copyParams(const LLPathParams ¶ms);
- BOOL importFile(FILE *fp);
- BOOL exportFile(FILE *fp) const;
+ BOOL importFile(LLFILE *fp);
+ BOOL exportFile(LLFILE *fp) const;
BOOL importLegacyStream(std::istream& input_stream);
BOOL exportLegacyStream(std::ostream& output_stream) const;
@@ -545,8 +546,8 @@ public:
const LLPathParams &getPathParams() const {return mPathParams;}
LLPathParams &getPathParams() {return mPathParams;}
- BOOL importFile(FILE *fp);
- BOOL exportFile(FILE *fp) const;
+ BOOL importFile(LLFILE *fp);
+ BOOL exportFile(LLFILE *fp) const;
BOOL importLegacyStream(std::istream& input_stream);
BOOL exportLegacyStream(std::ostream& output_stream) const;
@@ -760,7 +761,17 @@ public:
class LLVolumeFace
{
public:
- LLVolumeFace();
+ LLVolumeFace() :
+ mID(0),
+ mTypeMask(0),
+ mHasBinormals(FALSE),
+ mBeginS(0),
+ mBeginT(0),
+ mNumS(0),
+ mNumT(0)
+ {
+ }
+
BOOL create(LLVolume* volume, BOOL partial_build = FALSE);
void createBinormals();
diff --git a/linden/indra/llmath/m4math.h b/linden/indra/llmath/m4math.h
index 27eb865..96e0a31 100644
--- a/linden/indra/llmath/m4math.h
+++ b/linden/indra/llmath/m4math.h
@@ -1,6 +1,6 @@
/**
* @file m4math.h
- * @brief LLMatrix3 class header file.
+ * @brief LLMatrix4 class header file.
*
* $LicenseInfo:firstyear=2000&license=viewergpl$
*
@@ -101,9 +101,13 @@ class LLMatrix4
public:
F32 mMatrix[NUM_VALUES_IN_MAT4][NUM_VALUES_IN_MAT4];
- LLMatrix4(); // Initializes Matrix to identity matrix
+ // Initializes Matrix to identity matrix
+ LLMatrix4()
+ {
+ setIdentity();
+ }
explicit LLMatrix4(const F32 *mat); // Initializes Matrix to values in mat
- explicit LLMatrix4(const LLMatrix3 &mat); // Initializes Matrix to valuee in mat and sets position to (0,0,0)
+ explicit LLMatrix4(const LLMatrix3 &mat); // Initializes Matrix to values in mat and sets position to (0,0,0)
explicit LLMatrix4(const LLQuaternion &q); // Initializes Matrix with rotation q and sets position to (0,0,0)
LLMatrix4(const LLMatrix3 &mat, const LLVector4 &pos); // Initializes Matrix to values in mat and pos
@@ -240,12 +244,6 @@ public:
friend std::ostream& operator<<(std::ostream& s, const LLMatrix4 &a); // Stream a
};
-
-inline LLMatrix4::LLMatrix4()
-{
- setIdentity();
-}
-
inline const LLMatrix4& LLMatrix4::setIdentity()
{
mMatrix[0][0] = 1.f;
diff --git a/linden/indra/llmedia/llmediaimplcommon.cpp b/linden/indra/llmedia/llmediaimplcommon.cpp
index a0705bb..abb61e1 100644
--- a/linden/indra/llmedia/llmediaimplcommon.cpp
+++ b/linden/indra/llmedia/llmediaimplcommon.cpp
@@ -52,6 +52,7 @@
LLMediaImplCommon::LLMediaImplCommon() :
mMimeType( std::string() ),
mInitialURL( std::string() ),
+ mImplMaker( NULL ),
mAutoScaled( false ),
mMediaWidth( 0 ),
mMediaPrevWidth( 0 ),
diff --git a/linden/indra/llmedia/llmediaimplgstreamer.cpp b/linden/indra/llmedia/llmediaimplgstreamer.cpp
index 8b0363a..5bf30d9 100644
--- a/linden/indra/llmedia/llmediaimplgstreamer.cpp
+++ b/linden/indra/llmedia/llmediaimplgstreamer.cpp
@@ -186,7 +186,8 @@ startup ( LLMediaManagerData* init_data )
WARNMSG("gst_segtrap_set_enabled() is not available; Automated crash-reporter may cease to function until next restart.");
// Protect against GStreamer resetting the locale, yuck.
- std::string saved_locale = setlocale(LC_ALL, NULL);
+ static std::string saved_locale;
+ saved_locale = setlocale(LC_ALL, NULL);
if (0 == llgst_init_check(NULL, NULL, NULL))
{
WARNMSG("GST init failed for unspecified reason.");
diff --git a/linden/indra/llmedia/llmediaimplllmozlib.cpp b/linden/indra/llmedia/llmediaimplllmozlib.cpp
index 53cb344..9e2564a 100644
--- a/linden/indra/llmedia/llmediaimplllmozlib.cpp
+++ b/linden/indra/llmedia/llmediaimplllmozlib.cpp
@@ -94,7 +94,8 @@ bool LLMediaImplLLMozLib::startup( LLMediaManagerData* init_data )
// the locale to protect it, as exotic/non-C locales
// causes our code lots of general critical weirdness
// and crashness. (SL-35450)
- std::string saved_locale = setlocale(LC_ALL, NULL);
+ static std::string saved_locale;
+ saved_locale = setlocale(LC_ALL, NULL);
#endif // LL_LINUX
bool result = LLMozLib::getInstance()->init( init_data->getBrowserApplicationDir(),
@@ -132,7 +133,8 @@ bool LLMediaImplLLMozLib::init()
return false;
#if LL_LINUX
- std::string saved_locale = setlocale(LC_ALL, NULL);
+ static std::string saved_locale;
+ saved_locale = setlocale(LC_ALL, NULL);
#endif // LL_LINUX
mWindowId = LLMozLib::getInstance()->createBrowserWindow( mBrowserWindowWidth, mBrowserWindowHeight );
diff --git a/linden/indra/llmedia/llmediaimplquicktime.cpp b/linden/indra/llmedia/llmediaimplquicktime.cpp
index b126e2f..8f7686d 100644
--- a/linden/indra/llmedia/llmediaimplquicktime.cpp
+++ b/linden/indra/llmedia/llmediaimplquicktime.cpp
@@ -116,11 +116,19 @@ bool LLMediaImplQuickTime::load( const std::string url )
if ( url.empty() )
return false;
+ //In case std::string::c_str() makes a copy of the url data,
+ //make sure there is memory to hold it before allocating memory for handle.
+ //if fails, NewHandleClear(...) should return NULL.
+ const char* url_string = url.c_str() ;
Handle handle = NewHandleClear( ( Size )( url.length() + 1 ) );
if ( NULL == handle )
return false;
+ if(noErr != MemError() || NULL == *handle)
+ {
+ return false ;
+ }
- BlockMove( url.c_str(), *handle, ( Size )( url.length() + 1 ) );
+ BlockMove( url_string, *handle, ( Size )( url.length() + 1 ) );
//std::cout << "LLMediaImplQuickTime::load( " << url << " )" << std::endl;
diff --git a/linden/indra/llmedia/llmediaobserver.h b/linden/indra/llmedia/llmediaobserver.h
index ec9f881..079cb29 100644
--- a/linden/indra/llmedia/llmediaobserver.h
+++ b/linden/indra/llmedia/llmediaobserver.h
@@ -38,22 +38,22 @@ class LLMediaEvent
{
public:
LLMediaEvent( LLMediaBase* subject ) :
- mSubject( subject )
+ mSubject( subject ), mIntValue(-1)
{
};
LLMediaEvent( LLMediaBase* subject, std::string in ) :
- mSubject( subject ), mStringValue(in)
+ mSubject( subject ), mIntValue(-1), mStringValue(in)
{
};
LLMediaEvent( LLMediaBase* subject, std::string string_in, std::string string_ex_in ) :
- mSubject( subject ), mStringValue(string_in), mStringValueEx(string_ex_in)
+ mSubject( subject ), mIntValue(-1), mStringValue(string_in), mStringValueEx(string_ex_in)
{
};
LLMediaEvent( LLMediaBase* subject, std::string string_in, int int_in ) :
- mSubject( subject ), mStringValue(string_in), mIntValue(int_in)
+ mSubject( subject ), mIntValue(int_in), mStringValue(string_in)
{
};
diff --git a/linden/indra/llmessage/llassetstorage.cpp b/linden/indra/llmessage/llassetstorage.cpp
index 13b1525..a6077e5 100644
--- a/linden/indra/llmessage/llassetstorage.cpp
+++ b/linden/indra/llmessage/llassetstorage.cpp
@@ -318,7 +318,7 @@ LLAssetStorage::~LLAssetStorage()
void LLAssetStorage::setUpstream(const LLHost &upstream_host)
{
- llinfos << "AssetStorage: Setting upstream provider to " << upstream_host << llendl;
+ LL_DEBUGS("AppInit") << "AssetStorage: Setting upstream provider to " << upstream_host << LL_ENDL;
mUpstreamHost = upstream_host;
}
@@ -1242,7 +1242,7 @@ void LLAssetStorage::legacyGetDataCallback(LLVFS *vfs, const LLUUID &uuid, LLAss
uuid.toString(uuid_str);
snprintf(filename,sizeof(filename),"%s.%s",gDirUtilp->getExpandedFilename(LL_PATH_CACHE,uuid_str).c_str(),LLAssetType::lookup(type)); /* Flawfinder: ignore */
- FILE* fp = LLFile::fopen(filename, "wb"); /* Flawfinder: ignore */
+ LLFILE* fp = LLFile::fopen(filename, "wb"); /* Flawfinder: ignore */
if (fp)
{
const S32 buf_size = 65536;
diff --git a/linden/indra/llmessage/llblowfishcipher.cpp b/linden/indra/llmessage/llblowfishcipher.cpp
index 45ff045..a0fe157 100644
--- a/linden/indra/llmessage/llblowfishcipher.cpp
+++ b/linden/indra/llmessage/llblowfishcipher.cpp
@@ -30,8 +30,8 @@
*/
#include "linden_common.h"
-
#include "llblowfishcipher.h"
+#include
LLBlowfishCipher::LLBlowfishCipher(const U8* secret, size_t secret_size)
@@ -50,11 +50,6 @@ LLBlowfishCipher::~LLBlowfishCipher()
mSecret = NULL;
}
-
-#if LL_LINUX
-
-#include
-
// virtual
U32 LLBlowfishCipher::encrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len)
{
@@ -133,29 +128,3 @@ U32 LLBlowfishCipher::requiredEncryptionSpace(U32 len) const
len -= (len % BLOCK_SIZE);
return len;
}
-
-#else // !LL_LINUX
-
-// virtual
-U32 LLBlowfishCipher::encrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len)
-{
- llerrs << "LLBlowfishCipher only supported on Linux" << llendl;
- return 0;
-}
-
-// virtual
-U32 LLBlowfishCipher::decrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len)
-{
- llerrs << "LLBlowfishCipher only supported on Linux" << llendl;
- return 0;
-}
-
-// virtual
-U32 LLBlowfishCipher::requiredEncryptionSpace(U32 len) const
-{
- llerrs << "LLBlowfishCipher only supported on Linux" << llendl;
- return 0;
-}
-
-#endif
-
diff --git a/linden/indra/llmessage/llcachename.cpp b/linden/indra/llmessage/llcachename.cpp
index e8208cc..9adf10d 100644
--- a/linden/indra/llmessage/llcachename.cpp
+++ b/linden/indra/llmessage/llcachename.cpp
@@ -323,7 +323,7 @@ void LLCacheName::cancelCallback(const LLUUID& id, LLCacheNameCallback callback,
}
}
-void LLCacheName::importFile(FILE* fp)
+void LLCacheName::importFile(LLFILE* fp)
{
S32 count = 0;
diff --git a/linden/indra/llmessage/llcachename.h b/linden/indra/llmessage/llcachename.h
index 26a873f..e7d5a44 100644
--- a/linden/indra/llmessage/llcachename.h
+++ b/linden/indra/llmessage/llcachename.h
@@ -64,7 +64,7 @@ public:
void cancelCallback(const LLUUID& id, LLCacheNameCallback callback, void* user_data = NULL);
// janky old format. Remove after a while. Phoenix. 2008-01-30
- void importFile(FILE* fp);
+ void importFile(LLFILE* fp);
// storing cache on disk; for viewer, in name.cache
bool importFile(std::istream& istr);
diff --git a/linden/indra/llmessage/llcurl.cpp b/linden/indra/llmessage/llcurl.cpp
index a8bb46b..f03cebc 100644
--- a/linden/indra/llmessage/llcurl.cpp
+++ b/linden/indra/llmessage/llcurl.cpp
@@ -674,8 +674,9 @@ std::string LLCurl::strerror(CURLcode errorcode)
// For generating a simple request for data
// using one multi and one easy per request
-LLCurlRequest::LLCurlRequest()
- : mActiveMulti(NULL)
+LLCurlRequest::LLCurlRequest() :
+ mActiveMulti(NULL),
+ mActiveRequestCount(0)
{
}
diff --git a/linden/indra/llmessage/lldatapacker.h b/linden/indra/llmessage/lldatapacker.h
index f41fb76..b1aa8fe 100644
--- a/linden/indra/llmessage/lldatapacker.h
+++ b/linden/indra/llmessage/lldatapacker.h
@@ -330,7 +330,7 @@ inline BOOL LLDataPackerAsciiBuffer::verifyLength(const S32 data_size, const cha
class LLDataPackerAsciiFile : public LLDataPacker
{
public:
- LLDataPackerAsciiFile(FILE *fp, const S32 indent = 2)
+ LLDataPackerAsciiFile(LLFILE *fp, const S32 indent = 2)
: LLDataPacker(),
mIndent(indent),
mFP(fp),
@@ -407,7 +407,7 @@ protected:
protected:
S32 mIndent;
- FILE *mFP;
+ LLFILE *mFP;
std::ostream* mOutputStream;
std::istream* mInputStream;
};
diff --git a/linden/indra/llmessage/llfiltersd2xmlrpc.cpp b/linden/indra/llmessage/llfiltersd2xmlrpc.cpp
index 4e38924..b3ebd0b 100644
--- a/linden/indra/llmessage/llfiltersd2xmlrpc.cpp
+++ b/linden/indra/llmessage/llfiltersd2xmlrpc.cpp
@@ -695,6 +695,24 @@ LLIOPipe::EStatus LLFilterXMLRPCRequest2LLSD::process_impl(
buffer->readAfter(channels.in(), NULL, (U8*)buf, bytes);
//lldebugs << "xmlrpc request: " << buf << llendl;
+
+ // Check the value in the buffer. XMLRPC_REQUEST_FromXML will report a error code 4 if
+ // values that are less than 0x20 are passed to it, except
+ // 0x09: Horizontal tab; 0x0a: New Line; 0x0d: Carriage
+ U8* cur_pBuf = (U8*)buf;
+ U8 cur_char;
+ for (S32 i=0; ifirst << llendl;
+ LL_DEBUGS("AppInit") << "LLHTTPRegistrar::buildAllServices adding node for path "
+ << i->first << LL_ENDL;
root.addNode(i->first, i->second->build());
}
diff --git a/linden/indra/llmessage/llmessageconfig.cpp b/linden/indra/llmessage/llmessageconfig.cpp
index 807a35b..e23ed07 100644
--- a/linden/indra/llmessage/llmessageconfig.cpp
+++ b/linden/indra/llmessage/llmessageconfig.cpp
@@ -66,6 +66,7 @@ public:
/* virtual */ void loadFile();
void loadServerDefaults(const LLSD& data);
+ void loadMaxQueuedEvents(const LLSD& data);
void loadMessages(const LLSD& data);
void loadCapBans(const LLSD& blacklist);
void loadMessageBans(const LLSD& blacklist);
@@ -73,6 +74,7 @@ public:
public:
LLSD mCapBans;
+ S32 mMaxQueuedEvents;
};
std::string LLMessageConfigFile::filename()
@@ -99,19 +101,20 @@ void LLMessageConfigFile::loadFile()
if (file.is_open())
{
- llinfos << "Loading message.xml file at " << filename() << llendl;
+ LL_DEBUGS("AppInit") << "Loading message.xml file at " << filename() << LL_ENDL;
LLSDSerialize::fromXML(data, file);
}
if (data.isUndefined())
{
- llinfos << "LLMessageConfigFile::loadFile: file missing,"
+ LL_INFOS("AppInit") << "LLMessageConfigFile::loadFile: file missing,"
" ill-formed, or simply undefined; not changing the"
- " file" << llendl;
+ " file" << LL_ENDL;
return;
}
}
loadServerDefaults(data);
+ loadMaxQueuedEvents(data);
loadMessages(data);
loadCapBans(data);
loadMessageBans(data);
@@ -122,6 +125,19 @@ void LLMessageConfigFile::loadServerDefaults(const LLSD& data)
mServerDefault = data["serverDefaults"][sServerName].asString();
}
+const S32 DEFAULT_MAX_QUEUED_EVENTS = 100;
+void LLMessageConfigFile::loadMaxQueuedEvents(const LLSD& data)
+{
+ if (data.has("maxQueuedEvents"))
+ {
+ mMaxQueuedEvents = data["maxQueuedEvents"].asInteger();
+ }
+ else
+ {
+ mMaxQueuedEvents = DEFAULT_MAX_QUEUED_EVENTS;
+ }
+}
+
void LLMessageConfigFile::loadMessages(const LLSD& data)
{
mMessages = data["messages"];
@@ -141,15 +157,15 @@ void LLMessageConfigFile::loadCapBans(const LLSD& data)
LLSD bans = data["capBans"];
if (!bans.isMap())
{
- llinfos << "LLMessageConfigFile::loadCapBans: missing capBans section"
- << llendl;
+ LL_INFOS("AppInit") << "LLMessageConfigFile::loadCapBans: missing capBans section"
+ << LL_ENDL;
return;
}
mCapBans = bans;
- llinfos << "LLMessageConfigFile::loadCapBans: "
- << bans.size() << " ban tests" << llendl;
+ LL_DEBUGS("AppInit") << "LLMessageConfigFile::loadCapBans: "
+ << bans.size() << " ban tests" << LL_ENDL;
}
void LLMessageConfigFile::loadMessageBans(const LLSD& data)
@@ -157,8 +173,8 @@ void LLMessageConfigFile::loadMessageBans(const LLSD& data)
LLSD bans = data["messageBans"];
if (!bans.isMap())
{
- llinfos << "LLMessageConfigFile::loadMessageBans: missing messageBans section"
- << llendl;
+ LL_INFOS("AppInit") << "LLMessageConfigFile::loadMessageBans: missing messageBans section"
+ << LL_ENDL;
return;
}
@@ -182,8 +198,8 @@ void LLMessageConfig::initClass(const std::string& server_name,
sServerName = server_name;
sConfigDir = config_dir;
(void) LLMessageConfigFile::instance();
- llinfos << "LLMessageConfig::initClass config file "
- << config_dir << "/" << messageConfigFileName << llendl;
+ LL_DEBUGS("AppInit") << "LLMessageConfig::initClass config file "
+ << config_dir << "/" << messageConfigFileName << LL_ENDL;
}
//static
@@ -191,10 +207,10 @@ void LLMessageConfig::useConfig(const LLSD& config)
{
LLMessageConfigFile &the_file = LLMessageConfigFile::instance();
the_file.loadServerDefaults(config);
+ the_file.loadMaxQueuedEvents(config);
the_file.loadMessages(config);
the_file.loadCapBans(config);
the_file.loadMessageBans(config);
-
}
//static
@@ -213,6 +229,13 @@ LLMessageConfig::Flavor LLMessageConfig::getServerDefaultFlavor()
}
//static
+S32 LLMessageConfig::getMaxQueuedEvents()
+{
+ LLMessageConfigFile& file = LLMessageConfigFile::instance();
+ return file.mMaxQueuedEvents;
+}
+
+//static
LLMessageConfig::Flavor LLMessageConfig::getMessageFlavor(const std::string& msg_name)
{
LLMessageConfigFile& file = LLMessageConfigFile::instance();
diff --git a/linden/indra/llmessage/llmessageconfig.h b/linden/indra/llmessage/llmessageconfig.h
index 9b62f06..61788c7 100644
--- a/linden/indra/llmessage/llmessageconfig.h
+++ b/linden/indra/llmessage/llmessageconfig.h
@@ -48,6 +48,7 @@ public:
static void useConfig(const LLSD& config);
static Flavor getServerDefaultFlavor();
+ static S32 getMaxQueuedEvents();
// For individual messages
static Flavor getMessageFlavor(const std::string& msg_name);
diff --git a/linden/indra/llmessage/llregionhandle.h b/linden/indra/llmessage/llregionhandle.h
index ac7fb14..7e62e96 100644
--- a/linden/indra/llmessage/llregionhandle.h
+++ b/linden/indra/llmessage/llregionhandle.h
@@ -115,7 +115,7 @@ inline LLVector3d from_region_handle(const U64 ®ion_handle)
// grid-based region handle encoding. pass in a grid position
// (eg: 1000,1000) and this will return the region handle.
-inline U64 grid_to_region_handle(U32 grid_x, U32 grid_y)
+inline U64 grid_to_region_handle(const U32 grid_x, const U32 grid_y)
{
return to_region_handle(grid_x * REGION_WIDTH_UNITS,
grid_y * REGION_WIDTH_UNITS);
diff --git a/linden/indra/llmessage/lltransfermanager.cpp b/linden/indra/llmessage/lltransfermanager.cpp
index 6fbb4f9..7817dba 100644
--- a/linden/indra/llmessage/lltransfermanager.cpp
+++ b/linden/indra/llmessage/lltransfermanager.cpp
@@ -1336,7 +1336,9 @@ BOOL LLTransferSourceParamsInvItem::unpackParams(LLDataPacker &dp)
}
LLTransferSourceParamsEstate::LLTransferSourceParamsEstate() :
- LLTransferSourceParams(LLTST_SIM_ESTATE), mEstateAssetType(ET_NONE)
+ LLTransferSourceParams(LLTST_SIM_ESTATE),
+ mEstateAssetType(ET_NONE),
+ mAssetType(LLAssetType::AT_NONE)
{
}
diff --git a/linden/indra/llmessage/lltransfersourcefile.cpp b/linden/indra/llmessage/lltransfersourcefile.cpp
index 55f368f..4b60cf3 100644
--- a/linden/indra/llmessage/lltransfersourcefile.cpp
+++ b/linden/indra/llmessage/lltransfersourcefile.cpp
@@ -153,7 +153,9 @@ BOOL LLTransferSourceFile::unpackParams(LLDataPacker &dp)
}
-LLTransferSourceParamsFile::LLTransferSourceParamsFile() : LLTransferSourceParams(LLTST_FILE)
+LLTransferSourceParamsFile::LLTransferSourceParamsFile() :
+ LLTransferSourceParams(LLTST_FILE),
+ mDeleteOnCompletion(FALSE)
{
}
diff --git a/linden/indra/llmessage/lltransfersourcefile.h b/linden/indra/llmessage/lltransfersourcefile.h
index 1a9ff9e..030f80e 100644
--- a/linden/indra/llmessage/lltransfersourcefile.h
+++ b/linden/indra/llmessage/lltransfersourcefile.h
@@ -74,7 +74,7 @@ protected:
protected:
LLTransferSourceParamsFile mParams;
- FILE *mFP;
+ LLFILE *mFP;
};
#endif // LL_LLTRANSFERSOURCEFILE_H
diff --git a/linden/indra/llmessage/lltransfertargetfile.h b/linden/indra/llmessage/lltransfertargetfile.h
index 3f5284e..02c0c11 100644
--- a/linden/indra/llmessage/lltransfertargetfile.h
+++ b/linden/indra/llmessage/lltransfertargetfile.h
@@ -69,7 +69,7 @@ protected:
LLTransferTargetParamsFile mParams;
- FILE *mFP;
+ LLFILE *mFP;
};
#endif // LL_LLTRANSFERTARGETFILE_H
diff --git a/linden/indra/llmessage/llxfer_file.cpp b/linden/indra/llmessage/llxfer_file.cpp
index 027bacb..840d84c 100644
--- a/linden/indra/llmessage/llxfer_file.cpp
+++ b/linden/indra/llmessage/llxfer_file.cpp
@@ -353,7 +353,7 @@ S32 LLXfer_File::processEOF()
}
else
{
- //FILE* fp = LLFile::fopen(mTempFilename, "r");
+ //LLFILE* fp = LLFile::fopen(mTempFilename, "r");
//llwarns << "File " << mTempFilename << " does "
// << (!fp ? "not" : "" ) << " exit." << llendl;
//if(fp) fclose(fp);
@@ -424,8 +424,8 @@ U32 LLXfer_File::getXferTypeTag()
S32 copy_file(const char* from, const char* to)
{
S32 rv = 0;
- FILE* in = LLFile::fopen(from, "rb"); /*Flawfinder: ignore*/
- FILE* out = LLFile::fopen(to, "wb"); /*Flawfinder: ignore*/
+ LLFILE* in = LLFile::fopen(from, "rb"); /*Flawfinder: ignore*/
+ LLFILE* out = LLFile::fopen(to, "wb"); /*Flawfinder: ignore*/
if(in && out)
{
S32 read = 0;
diff --git a/linden/indra/llmessage/llxfer_file.h b/linden/indra/llmessage/llxfer_file.h
index 7958af1..b5294ad 100644
--- a/linden/indra/llmessage/llxfer_file.h
+++ b/linden/indra/llmessage/llxfer_file.h
@@ -38,7 +38,7 @@
class LLXfer_File : public LLXfer
{
protected:
- FILE *mFp;
+ LLFILE *mFp;
char mLocalFilename[LL_MAX_PATH]; /* Flawfinder : ignore */
char mRemoteFilename[LL_MAX_PATH]; /* Flawfinder : ignore */
ELLPath mRemotePath;
diff --git a/linden/indra/llmessage/llxfermanager.cpp b/linden/indra/llmessage/llxfermanager.cpp
index 47c950b..f7b83ec 100644
--- a/linden/indra/llmessage/llxfermanager.cpp
+++ b/linden/indra/llmessage/llxfermanager.cpp
@@ -143,8 +143,8 @@ void LLXferManager::setAckThrottleBPS(const F32 bps)
// Set
F32 actual_rate = llmax(min_bps*1.1f, bps);
- llinfos << "LLXferManager ack throttle min rate: " << min_bps << llendl;
- llinfos << "LLXferManager ack throttle actual rate: " << actual_rate << llendl;
+ LL_DEBUGS("AppInit") << "LLXferManager ack throttle min rate: " << min_bps << LL_ENDL;
+ LL_DEBUGS("AppInit") << "LLXferManager ack throttle actual rate: " << actual_rate << LL_ENDL;
mAckThrottle.setRate(actual_rate);
}
diff --git a/linden/indra/llmessage/message.cpp b/linden/indra/llmessage/message.cpp
index c572341..f3aac29 100644
--- a/linden/indra/llmessage/message.cpp
+++ b/linden/indra/llmessage/message.cpp
@@ -120,7 +120,7 @@ namespace
// don't spam when agent communication disconnected already
if (status != 410)
{
- llwarns << "error status " << status
+ LL_WARNS("Messaging") << "error status " << status
<< " for message " << mMessageName
<< " reason " << reason << llendl;
}
@@ -176,7 +176,7 @@ void LLTrustedMessageService::post(LLHTTPNode::ResponsePtr response,
gMessageSystem->isTrustedMessage(name)))
&& !gMessageSystem->isTrustedSender(LLHost(sender)))
{
- llwarns << "trusted message POST to /trusted-message/"
+ LL_WARNS("Messaging") << "trusted message POST to /trusted-message/"
<< name << " from unknown or untrusted sender "
<< sender << llendl;
response->status(403, "Unknown or untrusted sender");
@@ -326,14 +326,14 @@ LLMessageSystem::LLMessageSystem(const char *filename, U32 port,
mbError = TRUE;
mErrorCode = error;
}
- //llinfos << << "*** port: " << mPort << llendl;
+// LL_DEBUGS("Messaging") << << "*** port: " << mPort << llendl;
//
// Create the data structure that we can poll on
//
if (!gAPRPoolp)
{
- llerrs << "No APR pool before message system initialization!" << llendl;
+ LL_ERRS("Messaging") << "No APR pool before message system initialization!" << llendl;
ll_init_apr();
}
apr_socket_t *aprSocketp = NULL;
@@ -369,7 +369,7 @@ void LLMessageSystem::loadTemplateFile(const char* filename)
{
if(!filename)
{
- llerrs << "No template filename specified" << llendl;
+ LL_ERRS("Messaging") << "No template filename specified" << llendl;
mbError = TRUE;
return;
}
@@ -377,7 +377,7 @@ void LLMessageSystem::loadTemplateFile(const char* filename)
std::string template_body;
if(!_read_file_into_string(template_body, filename))
{
- llwarns << "Failed to open template: " << filename << llendl;
+ LL_WARNS("Messaging") << "Failed to open template: " << filename << llendl;
mbError = TRUE;
return;
}
@@ -588,7 +588,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
// Ones that are non-zero but below the minimum packet size are worrisome.
if (receive_size > 0)
{
- llwarns << "Invalid (too short) packet discarded " << receive_size << llendl;
+ LL_WARNS("Messaging") << "Invalid (too short) packet discarded " << receive_size << llendl;
callExceptionFunc(MX_PACKET_TOO_SHORT);
}
// no data in packet receive buffer
@@ -612,7 +612,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
{
// mal-formed packet. ignore it and continue with
// the next one
- llwarns << "Malformed packet received. Packet size "
+ LL_WARNS("Messaging") << "Malformed packet received. Packet size "
<< receive_size << " with invalid no. of acks " << acks
<< llendl;
valid_packet = FALSE;
@@ -642,7 +642,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
memcpy(&mem_id, &mTrueReceiveBuffer[true_rcv_size], /* Flawfinder: ignore*/
sizeof(TPACKETID));
packet_id = ntohl(mem_id);
- //llinfos << "got ack: " << packet_id << llendl;
+ //LL_INFOS("Messaging") << "got ack: " << packet_id << llendl;
cdp->ackReliablePacket(packet_id);
}
if (!cdp->getUnackedPacketCount())
@@ -671,7 +671,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
// TESTING CODE
//if(mCircuitInfo.mCurrentCircuit->mHost != host)
//{
- // llwarns << "DISCARDED PACKET HOST MISMATCH! HOST: "
+ // LL_WARNS("Messaging") << "DISCARDED PACKET HOST MISMATCH! HOST: "
// << host << " CIRCUIT: "
// << mCircuitInfo.mCurrentCircuit->mHost
// << llendl;
@@ -681,7 +681,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
cdp->collectRAck(mCurrentRecvPacketID);
}
- //llinfos << "Discarding duplicate resend from " << host << llendl;
+ LL_DEBUGS("Messaging") << "Discarding duplicate resend from " << host << llendl;
if(mVerboseLog)
{
std::ostringstream str;
@@ -693,7 +693,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
<< " resent "
<< ((acks > 0) ? "acks" : "")
<< " DISCARD DUPLICATE";
- llinfos << str.str() << llendl;
+ LL_INFOS("Messaging") << str.str() << llendl;
}
mPacketsIn++;
valid_packet = FALSE;
@@ -740,7 +740,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
valid_packet &&
mTemplateMessageReader->isBanned(cdp && cdp->getTrusted()))
{
- llwarns << "LLMessageSystem::checkMessages "
+ LL_WARNS("Messaging") << "LLMessageSystem::checkMessages "
<< "received banned message "
<< mTemplateMessageReader->getMessageName()
<< " from "
@@ -764,7 +764,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
if (valid_packet)
{
// enable this for output of message names
- //llinfos << "< \"" << mTemplateMessageReader->getMessageName()
+ //LL_INFOS("Messaging") << "< \"" << mTemplateMessageReader->getMessageName()
//<< "\"" << llendl;
/* Code for dumping the complete contents of a message. Keep for future use in optimizing messages.
@@ -773,23 +773,23 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
static char* object_update = LLMessageStringTable::getInstance()->getString("ObjectUpdate");
if(object_update == mTemplateMessageReader->getMessageName() )
{
- llinfos << "ObjectUpdate:" << llendl;
+ LL_INFOS("Messaging") << "ObjectUpdate:" << llendl;
U32 i;
- llinfos << " Zero Encoded: " << zero_unexpanded_size << llendl;
+ LL_INFOS("Messaging") << " Zero Encoded: " << zero_unexpanded_size << llendl;
for( i = 0; imMemberBlocks.begin(),
@@ -807,7 +807,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
if( getNumberOfBlocksFast( block_name ) < 1 )
{
- llinfos << var_name << " has no blocks" << llendl;
+ LL_INFOS("Messaging") << var_name << " has no blocks" << llendl;
}
for( S32 blocknum = 0; blocknum < getNumberOfBlocksFast( block_name ); blocknum++ )
{
@@ -820,7 +820,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
if (!msg_block_data)
{
sprintf(errmsg, "Block %s #%d not in message %s", block_name, blocknum, mCurrentRMessageData->mName);
- llerrs << errmsg << llendl;
+ LL_ERRS("Messaging") << errmsg << llendl;
}
LLMsgVarData vardata = msg_block_data->mMemberVarData[vnamep];
@@ -828,7 +828,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
if (!vardata.getName())
{
sprintf(errmsg, "Variable %s not in message %s block %s", vnamep, mCurrentRMessageData->mName, bnamep);
- llerrs << errmsg << llendl;
+ LL_ERRS("Messaging") << errmsg << llendl;
}
const S32 vardata_size = vardata.getSize();
@@ -837,17 +837,17 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
for( i = 0; i < vardata_size; i++ )
{
byte_count++;
- llinfos << block_name << " " << var_name << " [" << blocknum << "][" << i << "]= " << (U32)(((U8*)vardata.getData())[i]) << llendl;
+ LL_INFOS("Messaging") << block_name << " " << var_name << " [" << blocknum << "][" << i << "]= " << (U32)(((U8*)vardata.getData())[i]) << llendl;
}
}
else
{
- llinfos << block_name << " " << var_name << " [" << blocknum << "] 0 bytes" << llendl;
+ LL_INFOS("Messaging") << block_name << " " << var_name << " [" << blocknum << "] 0 bytes" << llendl;
}
}
}
}
- llinfos << "Byte count =" << byte_count << llendl;
+ LL_INFOS("Messaging") << "Byte count =" << byte_count << llendl;
}
}
*/
@@ -871,7 +871,7 @@ BOOL LLMessageSystem::checkMessages( S64 frame_count )
{
if (mbProtected && (!cdp))
{
- llwarns << "Invalid Packet from invalid circuit " << host << llendl;
+ LL_WARNS("Messaging") << "Invalid Packet from invalid circuit " << host << llendl;
mOffCircuitPackets++;
}
else
@@ -944,7 +944,7 @@ void LLMessageSystem::processAcks()
if (!mDenyTrustedCircuitSet.empty())
{
- llinfos << "Sending queued DenyTrustedCircuit messages." << llendl;
+ LL_INFOS("Messaging") << "Sending queued DenyTrustedCircuit messages." << llendl;
for (host_set_t::iterator hostit = mDenyTrustedCircuitSet.begin(); hostit != mDenyTrustedCircuitSet.end(); ++hostit)
{
reallySendDenyTrustedCircuit(*hostit);
@@ -1176,7 +1176,7 @@ LLHTTPClient::ResponderPtr LLMessageSystem::createResponder(const std::string& n
{
// These messages aren't really unreliable, they just weren't
// explicitly sent as reliable, so they don't have a callback
-// llwarns << "LLMessageSystem::sendMessage: Sending unreliable "
+// LL_WARNS("Messaging") << "LLMessageSystem::sendMessage: Sending unreliable "
// << mMessageBuilder->getMessageName() << " message via HTTP"
// << llendl;
return new LLFnPtrResponder(
@@ -1213,10 +1213,10 @@ S32 LLMessageSystem::sendMessage(const LLHost &host)
// yup! don't send packets to an unknown circuit
if(mVerboseLog)
{
- llinfos << "MSG: -> " << host << "\tUNKNOWN CIRCUIT:\t"
+ LL_INFOS_ONCE("Messaging") << "MSG: -> " << host << "\tUNKNOWN CIRCUIT:\t"
<< mMessageBuilder->getMessageName() << llendl;
}
- llwarns << "sendMessage - Trying to send "
+ LL_WARNS_ONCE("Messaging") << "sendMessage - Trying to send "
<< mMessageBuilder->getMessageName() << " on unknown circuit "
<< host << llendl;
return 0;
@@ -1236,10 +1236,10 @@ S32 LLMessageSystem::sendMessage(const LLHost &host)
// nope. don't send to dead circuits
if(mVerboseLog)
{
- llinfos << "MSG: -> " << host << "\tDEAD CIRCUIT\t\t"
+ LL_INFOS("Messaging") << "MSG: -> " << host << "\tDEAD CIRCUIT\t\t"
<< mMessageBuilder->getMessageName() << llendl;
}
- llwarns << "sendMessage - Trying to send message "
+ LL_WARNS("Messaging") << "sendMessage - Trying to send message "
<< mMessageBuilder->getMessageName() << " to dead circuit "
<< host << llendl;
return 0;
@@ -1283,7 +1283,7 @@ S32 LLMessageSystem::sendMessage(const LLHost &host)
if((mMessageBuilder->getMessageName() != _PREHASH_ChildAgentUpdate)
&& (mMessageBuilder->getMessageName() != _PREHASH_SendXferPacket))
{
- llwarns << "sendMessage - Trying to send "
+ LL_WARNS("Messaging") << "sendMessage - Trying to send "
<< ((buffer_length > 4000) ? "EXTRA " : "")
<< "BIG message " << mMessageBuilder->getMessageName() << " - "
<< buffer_length << llendl;
@@ -1348,7 +1348,7 @@ S32 LLMessageSystem::sendMessage(const LLHost &host)
// append_acout_count is incorrect or that
// MAX_BUFFER_SIZE has fallen below MTU which is bad
// and probably programmer error.
- llerrs << "Buffer packing failed due to size.." << llendl;
+ LL_ERRS("Messaging") << "Buffer packing failed due to size.." << llendl;
}
}
@@ -1389,13 +1389,9 @@ S32 LLMessageSystem::sendMessage(const LLHost &host)
std::ostream_iterator append(str, " ");
std::copy(acks.begin(), acks.end(), append);
}
- llinfos << str.str() << llendl;
+ LL_INFOS("Messaging") << str.str() << llendl;
}
- /*lldebugst(LLERR_MESSAGE) << "MessageSent at: " << (S32)totalTime()
- << "," << mMessageBuilder->getMessageName()
- << " to " << host
- << llendl;*/
mPacketsOut++;
mBytesOut += buffer_length;
@@ -1417,7 +1413,7 @@ void LLMessageSystem::logMsgFromInvalidCircuit( const LLHost& host, BOOL recv_re
<< nullToEmpty(mMessageReader->getMessageName())
<< (recv_reliable ? " reliable" : "")
<< " REJECTED";
- llinfos << str.str() << llendl;
+ LL_INFOS("Messaging") << str.str() << llendl;
}
// nope!
// cout << "Rejecting unexpected message " << mCurrentMessageTemplate->mName << " from " << hex << ip << " , " << dec << port << endl;
@@ -1425,7 +1421,7 @@ void LLMessageSystem::logMsgFromInvalidCircuit( const LLHost& host, BOOL recv_re
// Keep track of rejected messages as well
if (mNumMessageCounts >= MAX_MESSAGE_COUNT_NUM)
{
- llwarns << "Got more than " << MAX_MESSAGE_COUNT_NUM << " packets without clearing counts" << llendl;
+ LL_WARNS("Messaging") << "Got more than " << MAX_MESSAGE_COUNT_NUM << " packets without clearing counts" << llendl;
}
else
{
@@ -1444,13 +1440,13 @@ S32 LLMessageSystem::sendMessage(
{
if (!(host.isOk()))
{
- llwarns << "trying to send message to invalid host" << llendl;
+ LL_WARNS("Messaging") << "trying to send message to invalid host" << llendl;
return 0;
}
newMessage(name);
if (mMessageBuilder != mLLSDMessageBuilder)
{
- llwarns << "trying to send llsd message when builder is not LLSD!"
+ LL_WARNS("Messaging") << "trying to send llsd message when builder is not LLSD!"
<< llendl;
return 0;
}
@@ -1466,7 +1462,7 @@ void LLMessageSystem::logTrustedMsgFromUntrustedCircuit( const LLHost& host )
// if it's received on a trusted circuit. JC
if (strcmp(mMessageReader->getMessageName(), "RequestTrustedCircuit"))
{
- llwarns << "Received trusted message on untrusted circuit. "
+ LL_WARNS("Messaging") << "Received trusted message on untrusted circuit. "
<< "Will reply with deny. "
<< "Message: " << nullToEmpty(mMessageReader->getMessageName())
<< " Host: " << host << llendl;
@@ -1474,7 +1470,7 @@ void LLMessageSystem::logTrustedMsgFromUntrustedCircuit( const LLHost& host )
if (mNumMessageCounts >= MAX_MESSAGE_COUNT_NUM)
{
- llwarns << "got more than " << MAX_MESSAGE_COUNT_NUM
+ LL_WARNS("Messaging") << "got more than " << MAX_MESSAGE_COUNT_NUM
<< " packets without clearing counts"
<< llendl;
}
@@ -1494,7 +1490,7 @@ void LLMessageSystem::logValidMsg(LLCircuitData *cdp, const LLHost& host, BOOL r
{
if (mNumMessageCounts >= MAX_MESSAGE_COUNT_NUM)
{
- llwarns << "Got more than " << MAX_MESSAGE_COUNT_NUM << " packets without clearing counts" << llendl;
+ LL_WARNS("Messaging") << "Got more than " << MAX_MESSAGE_COUNT_NUM << " packets without clearing counts" << llendl;
}
else
{
@@ -1523,7 +1519,7 @@ void LLMessageSystem::logValidMsg(LLCircuitData *cdp, const LLHost& host, BOOL r
<< (recv_reliable ? " reliable" : "")
<< (recv_resent ? " resent" : "")
<< (recv_acks ? " acks" : "");
- llinfos << str.str() << llendl;
+ LL_INFOS("Messaging") << str.str() << llendl;
}
}
@@ -1533,48 +1529,48 @@ void LLMessageSystem::sanityCheck()
// if (!mCurrentRMessageData)
// {
-// llerrs << "mCurrentRMessageData is NULL" << llendl;
+// LL_ERRS("Messaging") << "mCurrentRMessageData is NULL" << llendl;
// }
// if (!mCurrentRMessageTemplate)
// {
-// llerrs << "mCurrentRMessageTemplate is NULL" << llendl;
+// LL_ERRS("Messaging") << "mCurrentRMessageTemplate is NULL" << llendl;
// }
// if (!mCurrentRTemplateBlock)
// {
-// llerrs << "mCurrentRTemplateBlock is NULL" << llendl;
+// LL_ERRS("Messaging") << "mCurrentRTemplateBlock is NULL" << llendl;
// }
// if (!mCurrentRDataBlock)
// {
-// llerrs << "mCurrentRDataBlock is NULL" << llendl;
+// LL_ERRS("Messaging") << "mCurrentRDataBlock is NULL" << llendl;
// }
// if (!mCurrentSMessageData)
// {
-// llerrs << "mCurrentSMessageData is NULL" << llendl;
+// LL_ERRS("Messaging") << "mCurrentSMessageData is NULL" << llendl;
// }
// if (!mCurrentSMessageTemplate)
// {
-// llerrs << "mCurrentSMessageTemplate is NULL" << llendl;
+// LL_ERRS("Messaging") << "mCurrentSMessageTemplate is NULL" << llendl;
// }
// if (!mCurrentSTemplateBlock)
// {
-// llerrs << "mCurrentSTemplateBlock is NULL" << llendl;
+// LL_ERRS("Messaging") << "mCurrentSTemplateBlock is NULL" << llendl;
// }
// if (!mCurrentSDataBlock)
// {
-// llerrs << "mCurrentSDataBlock is NULL" << llendl;
+// LL_ERRS("Messaging") << "mCurrentSDataBlock is NULL" << llendl;
// }
}
void LLMessageSystem::showCircuitInfo()
{
- llinfos << mCircuitInfo << llendl;
+ LL_INFOS("Messaging") << mCircuitInfo << llendl;
}
@@ -1624,7 +1620,7 @@ void LLMessageSystem::enableCircuit(const LLHost &host, BOOL trusted)
void LLMessageSystem::disableCircuit(const LLHost &host)
{
- llinfos << "LLMessageSystem::disableCircuit for " << host << llendl;
+ LL_INFOS("Messaging") << "LLMessageSystem::disableCircuit for " << host << llendl;
U32 code = gMessageSystem->findCircuitCode( host );
// Don't need to do this, as we're removing the circuit info anyway - djs 01/28/03
@@ -1637,7 +1633,7 @@ void LLMessageSystem::disableCircuit(const LLHost &host)
code_session_map_t::iterator it = mCircuitCodes.find(code);
if(it != mCircuitCodes.end())
{
- llinfos << "Circuit " << code << " removed from list" << llendl;
+ LL_INFOS("Messaging") << "Circuit " << code << " removed from list" << llendl;
//mCircuitCodes.removeData(code);
mCircuitCodes.erase(it);
}
@@ -1653,7 +1649,7 @@ void LLMessageSystem::disableCircuit(const LLHost &host)
U32 old_port = (U32)(ip_port & (U64)0xFFFFFFFF);
U32 old_ip = (U32)(ip_port >> 32);
- llinfos << "Host " << LLHost(old_ip, old_port) << " circuit " << code << " removed from lookup table" << llendl;
+ LL_INFOS("Messaging") << "Host " << LLHost(old_ip, old_port) << " circuit " << code << " removed from lookup table" << llendl;
gMessageSystem->mIPPortToCircuitCode.erase(ip_port);
}
mCircuitInfo.removeCircuitData(host);
@@ -1663,7 +1659,7 @@ void LLMessageSystem::disableCircuit(const LLHost &host)
// Sigh, since we can open circuits which don't have circuit
// codes, it's possible for this to happen...
- llwarns << "Couldn't find circuit code for " << host << llendl;
+ LL_WARNS("Messaging") << "Couldn't find circuit code for " << host << llendl;
}
}
@@ -1694,7 +1690,7 @@ BOOL LLMessageSystem::checkCircuitBlocked(const U32 circuit)
if (!host.isOk())
{
- //llinfos << "checkCircuitBlocked: Unknown circuit " << circuit << llendl;
+ LL_DEBUGS("Messaging") << "checkCircuitBlocked: Unknown circuit " << circuit << llendl;
return TRUE;
}
@@ -1705,7 +1701,7 @@ BOOL LLMessageSystem::checkCircuitBlocked(const U32 circuit)
}
else
{
- llinfos << "checkCircuitBlocked(circuit): Unknown host - " << host << llendl;
+ LL_INFOS("Messaging") << "checkCircuitBlocked(circuit): Unknown host - " << host << llendl;
return FALSE;
}
}
@@ -1716,7 +1712,7 @@ BOOL LLMessageSystem::checkCircuitAlive(const U32 circuit)
if (!host.isOk())
{
- //llinfos << "checkCircuitAlive: Unknown circuit " << circuit << llendl;
+ LL_DEBUGS("Messaging") << "checkCircuitAlive: Unknown circuit " << circuit << llendl;
return FALSE;
}
@@ -1727,7 +1723,7 @@ BOOL LLMessageSystem::checkCircuitAlive(const U32 circuit)
}
else
{
- llinfos << "checkCircuitAlive(circuit): Unknown host - " << host << llendl;
+ LL_INFOS("Messaging") << "checkCircuitAlive(circuit): Unknown host - " << host << llendl;
return FALSE;
}
}
@@ -1741,7 +1737,7 @@ BOOL LLMessageSystem::checkCircuitAlive(const LLHost &host)
}
else
{
- //llinfos << "checkCircuitAlive(host): Unknown host - " << host << llendl;
+ LL_DEBUGS("Messaging") << "checkCircuitAlive(host): Unknown host - " << host << llendl;
return FALSE;
}
}
@@ -1891,7 +1887,7 @@ void LLMessageSystem::processAssignCircuitCode(LLMessageSystem* msg, void**)
msg->getUUIDFast(_PREHASH_CircuitCode, _PREHASH_SessionID, session_id);
if(session_id != msg->getMySessionID())
{
- llwarns << "AssignCircuitCode, bad session id. Expecting "
+ LL_WARNS("Messaging") << "AssignCircuitCode, bad session id. Expecting "
<< msg->getMySessionID() << " but got " << session_id
<< llendl;
return;
@@ -1900,11 +1896,11 @@ void LLMessageSystem::processAssignCircuitCode(LLMessageSystem* msg, void**)
msg->getU32Fast(_PREHASH_CircuitCode, _PREHASH_Code, code);
if (!code)
{
- llerrs << "Assigning circuit code of zero!" << llendl;
+ LL_ERRS("Messaging") << "Assigning circuit code of zero!" << llendl;
}
msg->mOurCircuitCode = code;
- llinfos << "Circuit code " << code << " assigned." << llendl;
+ LL_INFOS("Messaging") << "Circuit code " << code << " assigned." << llendl;
}
*/
@@ -1928,20 +1924,20 @@ bool LLMessageSystem::addCircuitCode(U32 code, const LLUUID& session_id)
{
if(!code)
{
- llwarns << "addCircuitCode: zero circuit code" << llendl;
+ LL_WARNS("Messaging") << "addCircuitCode: zero circuit code" << llendl;
return false;
}
code_session_map_t::iterator it = mCircuitCodes.find(code);
if(it == mCircuitCodes.end())
{
- llinfos << "New circuit code " << code << " added" << llendl;
+ LL_INFOS("Messaging") << "New circuit code " << code << " added" << llendl;
//msg->mCircuitCodes[circuit_code] = circuit_code;
mCircuitCodes.insert(code_session_map_t::value_type(code, session_id));
}
else
{
- llinfos << "Duplicate circuit code " << code << " added" << llendl;
+ LL_INFOS("Messaging") << "Duplicate circuit code " << code << " added" << llendl;
}
return true;
}
@@ -1973,7 +1969,7 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg,
if(it == msg->mCircuitCodes.end())
{
// Whoah, abort! We don't know anything about this circuit code.
- llwarns << "UseCircuitCode for " << circuit_code_in
+ LL_WARNS("Messaging") << "UseCircuitCode for " << circuit_code_in
<< " received without AddCircuitCode message - aborting"
<< llendl;
return;
@@ -1985,7 +1981,7 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg,
msg->getUUIDFast(_PREHASH_CircuitCode, _PREHASH_SessionID, session_id);
if(session_id != (*it).second)
{
- llwarns << "UseCircuitCode unmatched session id. Got "
+ LL_WARNS("Messaging") << "UseCircuitCode unmatched session id. Got "
<< session_id << " but expected " << (*it).second
<< llendl;
return;
@@ -2000,7 +1996,7 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg,
if ((ip_port_old == ip_port_in) && (circuit_code_old == circuit_code_in))
{
// Current information is the same as incoming info, ignore
- llinfos << "Got duplicate UseCircuitCode for circuit " << circuit_code_in << " to " << msg->getSender() << llendl;
+ LL_INFOS("Messaging") << "Got duplicate UseCircuitCode for circuit " << circuit_code_in << " to " << msg->getSender() << llendl;
return;
}
@@ -2010,25 +2006,25 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg,
msg->mIPPortToCircuitCode.erase(ip_port_old);
U32 old_port = (U32)(ip_port_old & (U64)0xFFFFFFFF);
U32 old_ip = (U32)(ip_port_old >> 32);
- llinfos << "Removing derelict lookup entry for circuit " << circuit_code_old << " to " << LLHost(old_ip, old_port) << llendl;
+ LL_INFOS("Messaging") << "Removing derelict lookup entry for circuit " << circuit_code_old << " to " << LLHost(old_ip, old_port) << llendl;
}
if (circuit_code_old)
{
LLHost cur_host(ip, port);
- llwarns << "Disabling existing circuit for " << cur_host << llendl;
+ LL_WARNS("Messaging") << "Disabling existing circuit for " << cur_host << llendl;
msg->disableCircuit(cur_host);
if (circuit_code_old == circuit_code_in)
{
- llwarns << "Asymmetrical circuit to ip/port lookup!" << llendl;
- llwarns << "Multiple circuit codes for " << cur_host << " probably!" << llendl;
- llwarns << "Permanently disabling circuit" << llendl;
+ LL_WARNS("Messaging") << "Asymmetrical circuit to ip/port lookup!" << llendl;
+ LL_WARNS("Messaging") << "Multiple circuit codes for " << cur_host << " probably!" << llendl;
+ LL_WARNS("Messaging") << "Permanently disabling circuit" << llendl;
return;
}
else
{
- llwarns << "Circuit code changed for " << msg->getSender()
+ LL_WARNS("Messaging") << "Circuit code changed for " << msg->getSender()
<< " from " << circuit_code_old << " to "
<< circuit_code_in << llendl;
}
@@ -2070,7 +2066,7 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg,
msg->mIPPortToCircuitCode[ip_port_in] = circuit_code_in;
msg->mCircuitCodeToIPPort[circuit_code_in] = ip_port_in;
- llinfos << "Circuit code " << circuit_code_in << " from "
+ LL_INFOS("Messaging") << "Circuit code " << circuit_code_in << " from "
<< msg->getSender() << " for agent " << id << " in session "
<< session_id << llendl;
@@ -2083,7 +2079,7 @@ void LLMessageSystem::processUseCircuitCode(LLMessageSystem* msg,
}
else
{
- llwarns << "Got zero circuit code in use_circuit_code" << llendl;
+ LL_WARNS("Messaging") << "Got zero circuit code in use_circuit_code" << llendl;
}
}
@@ -2105,7 +2101,7 @@ void LLMessageSystem::processError(LLMessageSystem* msg, void**)
msg->getString("Data", "Message", MTUBYTES, buffer);
error_message.assign(buffer);
- llwarns << "Message error from " << msg->getSender() << " - "
+ LL_WARNS("Messaging") << "Message error from " << msg->getSender() << " - "
<< error_code << " " << error_token << " " << error_id << " \""
<< error_system << "\" \"" << error_message << "\"" << llendl;
}
@@ -2143,7 +2139,7 @@ void LLMessageSystem::dispatch(
gMessageSystem->mMessageTemplates.end()) &&
!LLMessageConfig::isValidMessage(msg_name))
{
- llwarns << "Ignoring unknown message " << msg_name << llendl;
+ LL_WARNS("Messaging") << "Ignoring unknown message " << msg_name << llendl;
responsep->notFound("Invalid message name");
return;
}
@@ -2153,12 +2149,12 @@ void LLMessageSystem::dispatch(
const LLHTTPNode* handler = messageRootNode().traverse(path, context);
if (!handler)
{
- llwarns << "LLMessageService::dispatch > no handler for "
+ LL_WARNS("Messaging") << "LLMessageService::dispatch > no handler for "
<< path << llendl;
return;
}
// enable this for output of message names
- //llinfos << "< \"" << msg_name << "\"" << llendl;
+ //LL_INFOS("Messaging") << "< \"" << msg_name << "\"" << llendl;
//lldebugs << "data: " << LLSDNotationStreamer(message) << llendl;
handler->post(responsep, context, message);
@@ -2177,9 +2173,9 @@ static void check_for_unrecognized_messages(
if (templates.find(name) == templates.end())
{
- llinfos << " " << type
+ LL_INFOS("AppInit") << " " << type
<< " ban list contains unrecognized message "
- << name << llendl;
+ << name << LL_ENDL;
}
}
}
@@ -2187,7 +2183,7 @@ static void check_for_unrecognized_messages(
void LLMessageSystem::setMessageBans(
const LLSD& trusted, const LLSD& untrusted)
{
- llinfos << "LLMessageSystem::setMessageBans:" << llendl;
+ LL_DEBUGS("AppInit") << "LLMessageSystem::setMessageBans:" << LL_ENDL;
bool any_set = false;
for (message_template_name_map_t::iterator iter = mMessageTemplates.begin(),
@@ -2207,17 +2203,17 @@ void LLMessageSystem::setMessageBans(
if (ban_from_trusted || ban_from_untrusted)
{
- llinfos << " " << name << " banned from "
+ LL_INFOS("AppInit") << " " << name << " banned from "
<< (ban_from_trusted ? "TRUSTED " : " ")
<< (ban_from_untrusted ? "UNTRUSTED " : " ")
- << llendl;
+ << LL_ENDL;
any_set = true;
}
}
if (!any_set)
{
- llinfos << " no messages banned" << llendl;
+ LL_DEBUGS("AppInit") << " no messages banned" << LL_ENDL;
}
check_for_unrecognized_messages("trusted", trusted, mMessageTemplates);
@@ -2267,7 +2263,7 @@ S32 LLMessageSystem::sendError(
}
else
{
- llwarns << "Data and message were too large -- data removed."
+ LL_WARNS("Messaging") << "Data and message were too large -- data removed."
<< llendl;
addBinaryData("Data", NULL, 0);
}
@@ -2288,7 +2284,7 @@ void process_packet_ack(LLMessageSystem *msgsystem, void** /*user_data*/)
for (S32 i = 0; i < ack_count; i++)
{
msgsystem->getU32Fast(_PREHASH_Packets, _PREHASH_ID, packet_id, i);
-// llinfos << "ack recvd' from " << host << " for packet " << (TPACKETID)packet_id << llendl;
+// LL_DEBUGS("Messaging") << "ack recvd' from " << host << " for packet " << (TPACKETID)packet_id << llendl;
cdp->ackReliablePacket(packet_id);
}
if (!cdp->getUnackedPacketCount())
@@ -2309,12 +2305,12 @@ void process_log_messages(LLMessageSystem* msg, void**)
if (log_message)
{
- llinfos << "Starting logging via message" << llendl;
+ LL_INFOS("Messaging") << "Starting logging via message" << llendl;
msg->startLogging();
}
else
{
- llinfos << "Stopping logging via message" << llendl;
+ LL_INFOS("Messaging") << "Stopping logging via message" << llendl;
msg->stopLogging();
}
}*/
@@ -2333,7 +2329,7 @@ void process_create_trusted_circuit(LLMessageSystem *msg, void **)
LLCircuitData *cdp = msg->mCircuitInfo.findCircuit(msg->getSender());
if (!cdp)
{
- llwarns << "Attempt to create trusted circuit without circuit data: "
+ LL_WARNS("Messaging") << "Attempt to create trusted circuit without circuit data: "
<< msg->getSender() << llendl;
return;
}
@@ -2358,7 +2354,7 @@ void process_create_trusted_circuit(LLMessageSystem *msg, void **)
if(msg->isMatchingDigestForWindowAndUUIDs(their_digest, TRUST_TIME_WINDOW, local_id, remote_id))
{
cdp->setTrusted(TRUE);
- llinfos << "Trusted digest from " << msg->getSender() << llendl;
+ LL_INFOS("Messaging") << "Trusted digest from " << msg->getSender() << llendl;
return;
}
else if (cdp->getTrusted())
@@ -2367,13 +2363,13 @@ void process_create_trusted_circuit(LLMessageSystem *msg, void **)
// This means that this could just be the result of a stale deny sent from a while back, and
// the message system is being slow. Don't bother sending the deny, as it may continually
// ping-pong back and forth on a very hosed circuit.
- llwarns << "Ignoring bad digest from known trusted circuit: " << their_digest
+ LL_WARNS("Messaging") << "Ignoring bad digest from known trusted circuit: " << their_digest
<< " host: " << msg->getSender() << llendl;
return;
}
else
{
- llwarns << "Bad digest from known circuit: " << their_digest
+ LL_WARNS("Messaging") << "Bad digest from known circuit: " << their_digest
<< " host: " << msg->getSender() << llendl;
msg->sendDenyTrustedCircuit(msg->getSender());
return;
@@ -2410,7 +2406,7 @@ void process_deny_trusted_circuit(LLMessageSystem *msg, void **)
// spin.
// *TODO: probably should keep a count of number of resends
// per circuit, and stop resending after a while.
- llinfos << "Got DenyTrustedCircuit. Sending CreateTrustedCircuit to "
+ LL_INFOS("Messaging") << "Got DenyTrustedCircuit. Sending CreateTrustedCircuit to "
<< msg->getSender() << llendl;
msg->sendCreateTrustedCircuit(msg->getSender(), local_id, remote_id);
}
@@ -2419,7 +2415,7 @@ void process_deny_trusted_circuit(LLMessageSystem *msg, void **)
void dump_prehash_files()
{
U32 i;
- FILE* fp = LLFile::fopen("../../indra/llmessage/message_prehash.h", "w"); /* Flawfinder: ignore */
+ LLFILE* fp = LLFile::fopen("../../indra/llmessage/message_prehash.h", "w"); /* Flawfinder: ignore */
if (fp)
{
fprintf(
@@ -2499,7 +2495,7 @@ BOOL start_messaging_system(
if (!gMessageSystem)
{
- llerrs << "Messaging system initialization failed." << llendl;
+ LL_ERRS("AppInit") << "Messaging system initialization failed." << LL_ENDL;
return FALSE;
}
@@ -2518,12 +2514,12 @@ BOOL start_messaging_system(
{
if (gMessageSystem->mMessageFileVersionNumber != gPrehashVersionNumber)
{
- llinfos << "Message template version does not match prehash version number" << llendl;
- llinfos << "Run simulator with -prehash command line option to rebuild prehash data" << llendl;
+ LL_INFOS("AppInit") << "Message template version does not match prehash version number" << LL_ENDL;
+ LL_INFOS("AppInit") << "Run simulator with -prehash command line option to rebuild prehash data" << llendl;
}
else
{
- llinfos << "Message template version matches prehash version number" << llendl;
+ LL_DEBUGS("AppInit") << "Message template version matches prehash version number" << llendl;
}
}
@@ -2569,7 +2565,7 @@ void LLMessageSystem::startLogging()
str << "\t<-\tincoming message" <\toutgoing message" << std::endl;
str << " <> host size zero id name";
- llinfos << str.str() << llendl;
+ LL_INFOS("Messaging") << str.str() << llendl;
}
void LLMessageSystem::stopLogging()
@@ -2577,7 +2573,7 @@ void LLMessageSystem::stopLogging()
if(mVerboseLog)
{
mVerboseLog = FALSE;
- llinfos << "END MESSAGE LOG" << llendl;
+ LL_INFOS("Messaging") << "END MESSAGE LOG" << llendl;
}
}
@@ -2683,7 +2679,7 @@ void end_messaging_system()
std::ostringstream str;
gMessageSystem->summarizeLogs(str);
- llinfos << str.str().c_str() << llendl;
+ LL_INFOS("Messaging") << str.str().c_str() << llendl;
delete gMessageSystem;
gMessageSystem = NULL;
@@ -2735,7 +2731,7 @@ void LLMessageSystem::dumpReceiveCounts()
if(mNumMessageCounts > 0)
{
- llinfos << "Dump: " << mNumMessageCounts << " messages processed in " << mReceiveTime << " seconds" << llendl;
+ LL_DEBUGS("Messaging") << "Dump: " << mNumMessageCounts << " messages processed in " << mReceiveTime << " seconds" << llendl;
for (message_template_name_map_t::const_iterator iter = mMessageTemplates.begin(),
end = mMessageTemplates.end();
iter != end; iter++)
@@ -2743,7 +2739,7 @@ void LLMessageSystem::dumpReceiveCounts()
const LLMessageTemplate* mt = iter->second;
if (mt->mReceiveCount > 0)
{
- llinfos << "Num: " << std::setw(3) << mt->mReceiveCount << " Bytes: " << std::setw(6) << mt->mReceiveBytes
+ LL_INFOS("Messaging") << "Num: " << std::setw(3) << mt->mReceiveCount << " Bytes: " << std::setw(6) << mt->mReceiveBytes
<< " Invalid: " << std::setw(3) << mt->mReceiveInvalid << " " << mt->mName << " " << llround(100 * mt->mDecodeTimeThisFrame / mReceiveTime) << "%" << llendl;
}
}
@@ -2860,7 +2856,7 @@ S32 LLMessageSystem::zeroCodeExpand(U8** data, S32* data_size)
{
if ((*data_size ) < LL_MINIMUM_VALID_PACKET_SIZE)
{
- llwarns << "zeroCodeExpand() called with data_size of " << *data_size
+ LL_WARNS("Messaging") << "zeroCodeExpand() called with data_size of " << *data_size
<< llendl;
}
@@ -2900,7 +2896,7 @@ S32 LLMessageSystem::zeroCodeExpand(U8** data, S32* data_size)
{
if (outptr > (&mEncodedRecvBuffer[MAX_BUFFER_SIZE-1]))
{
- llwarns << "attempt to write past reasonable encoded buffer size 1" << llendl;
+ LL_WARNS("Messaging") << "attempt to write past reasonable encoded buffer size 1" << llendl;
callExceptionFunc(MX_WROTE_PAST_BUFFER_SIZE);
outptr = mEncodedRecvBuffer;
break;
@@ -2912,7 +2908,7 @@ S32 LLMessageSystem::zeroCodeExpand(U8** data, S32* data_size)
*outptr++ = *inptr++;
if (outptr > (&mEncodedRecvBuffer[MAX_BUFFER_SIZE-256]))
{
- llwarns << "attempt to write past reasonable encoded buffer size 2" << llendl;
+ LL_WARNS("Messaging") << "attempt to write past reasonable encoded buffer size 2" << llendl;
callExceptionFunc(MX_WROTE_PAST_BUFFER_SIZE);
outptr = mEncodedRecvBuffer;
count = -1;
@@ -2931,7 +2927,7 @@ S32 LLMessageSystem::zeroCodeExpand(U8** data, S32* data_size)
{
if (outptr > (&mEncodedRecvBuffer[MAX_BUFFER_SIZE-(*inptr)]))
{
- llwarns << "attempt to write past reasonable encoded buffer size 3" << llendl;
+ LL_WARNS("Messaging") << "attempt to write past reasonable encoded buffer size 3" << llendl;
callExceptionFunc(MX_WROTE_PAST_BUFFER_SIZE);
outptr = mEncodedRecvBuffer;
}
@@ -2954,7 +2950,7 @@ void LLMessageSystem::addTemplate(LLMessageTemplate *templatep)
{
if (mMessageTemplates.count(templatep->mName) > 0)
{
- llerrs << templatep->mName << " already used as a template name!"
+ LL_ERRS("Messaging") << templatep->mName << " already used as a template name!"
<< llendl;
}
mMessageTemplates[templatep->mName] = templatep;
@@ -2971,7 +2967,7 @@ void LLMessageSystem::setHandlerFuncFast(const char *name, void (*handler_func)(
}
else
{
- llerrs << name << " is not a known message name!" << llendl;
+ LL_ERRS("Messaging") << name << " is not a known message name!" << llendl;
}
}
@@ -2983,7 +2979,7 @@ bool LLMessageSystem::callHandler(const char *name,
iter = mMessageTemplates.find(name);
if(iter == mMessageTemplates.end())
{
- llwarns << "LLMessageSystem::callHandler: unknown message "
+ LL_WARNS("Messaging") << "LLMessageSystem::callHandler: unknown message "
<< name << llendl;
return false;
}
@@ -2991,7 +2987,7 @@ bool LLMessageSystem::callHandler(const char *name,
const LLMessageTemplate* msg_template = iter->second;
if (msg_template->isBanned(trustedSource))
{
- llwarns << "LLMessageSystem::callHandler: banned message "
+ LL_WARNS("Messaging") << "LLMessageSystem::callHandler: banned message "
<< name
<< " from "
<< (trustedSource ? "trusted " : "untrusted ")
@@ -3131,7 +3127,7 @@ bool LLMessageSystem::generateDigestForWindowAndUUIDs(char* digest, const S32 wi
std::string shared_secret = get_shared_secret();
if(shared_secret.empty())
{
- llerrs << "Trying to generate complex digest on a machine without a shared secret!" << llendl;
+ LL_ERRS("Messaging") << "Trying to generate complex digest on a machine without a shared secret!" << llendl;
}
U32 now = time(NULL);
@@ -3150,7 +3146,7 @@ bool LLMessageSystem::isMatchingDigestForWindowAndUUIDs(const char* digest, cons
std::string shared_secret = get_shared_secret();
if(shared_secret.empty())
{
- llerrs << "Trying to compare complex digests on a machine without a shared secret!" << llendl;
+ LL_ERRS("Messaging") << "Trying to compare complex digests on a machine without a shared secret!" << llendl;
}
char our_digest[MD5HEX_STR_SIZE]; /* Flawfinder: ignore */
@@ -3197,7 +3193,7 @@ bool LLMessageSystem::generateDigestForWindow(char* digest, const S32 window) co
std::string shared_secret = get_shared_secret();
if(shared_secret.empty())
{
- llerrs << "Trying to generate simple digest on a machine without a shared secret!" << llendl;
+ LL_ERRS("Messaging") << "Trying to generate simple digest on a machine without a shared secret!" << llendl;
}
U32 now = time(NULL);
@@ -3216,7 +3212,7 @@ bool LLMessageSystem::isMatchingDigestForWindow(const char* digest, S32 const wi
std::string shared_secret = get_shared_secret();
if(shared_secret.empty())
{
- llerrs << "Trying to compare simple digests on a machine without a shared secret!" << llendl;
+ LL_ERRS("Messaging") << "Trying to compare simple digests on a machine without a shared secret!" << llendl;
}
char our_digest[MD5HEX_STR_SIZE]; /* Flawfinder: ignore */
@@ -3250,12 +3246,12 @@ void LLMessageSystem::sendCreateTrustedCircuit(const LLHost &host, const LLUUID
char digest[MD5HEX_STR_SIZE]; /* Flawfinder: ignore */
if (id1.isNull())
{
- llwarns << "Can't send CreateTrustedCircuit to " << host << " because we don't have the local end point ID" << llendl;
+ LL_WARNS("Messaging") << "Can't send CreateTrustedCircuit to " << host << " because we don't have the local end point ID" << llendl;
return;
}
if (id2.isNull())
{
- llwarns << "Can't send CreateTrustedCircuit to " << host << " because we don't have the remote end point ID" << llendl;
+ LL_WARNS("Messaging") << "Can't send CreateTrustedCircuit to " << host << " because we don't have the remote end point ID" << llendl;
return;
}
generateDigestForWindowAndUUIDs(digest, TRUST_TIME_WINDOW, id1, id2);
@@ -3263,7 +3259,7 @@ void LLMessageSystem::sendCreateTrustedCircuit(const LLHost &host, const LLUUID
nextBlockFast(_PREHASH_DataBlock);
addUUIDFast(_PREHASH_EndPointID, id1);
addBinaryDataFast(_PREHASH_Digest, digest, MD5HEX_STR_BYTES);
- llinfos << "xmitting digest: " << digest << " Host: " << host << llendl;
+ LL_INFOS("Messaging") << "xmitting digest: " << digest << " Host: " << host << llendl;
sendMessage(host);
}
@@ -3277,10 +3273,10 @@ void LLMessageSystem::reallySendDenyTrustedCircuit(const LLHost &host)
LLCircuitData *cdp = mCircuitInfo.findCircuit(host);
if (!cdp)
{
- llwarns << "Not sending DenyTrustedCircuit to host without a circuit." << llendl;
+ LL_WARNS("Messaging") << "Not sending DenyTrustedCircuit to host without a circuit." << llendl;
return;
}
- llinfos << "Sending DenyTrustedCircuit to " << host << llendl;
+ LL_INFOS("Messaging") << "Sending DenyTrustedCircuit to " << host << llendl;
newMessageFast(_PREHASH_DenyTrustedCircuit);
nextBlockFast(_PREHASH_DataBlock);
addUUIDFast(_PREHASH_EndPointID, cdp->getLocalEndPointID());
@@ -3301,7 +3297,7 @@ void LLMessageSystem::establishBidirectionalTrust(const LLHost &host, S64 frame_
std::string shared_secret = get_shared_secret();
if(shared_secret.empty())
{
- llerrs << "Trying to establish bidirectional trust on a machine without a shared secret!" << llendl;
+ LL_ERRS("Messaging") << "Trying to establish bidirectional trust on a machine without a shared secret!" << llendl;
}
LLTimer timeout;
@@ -3353,8 +3349,8 @@ void LLMessageSystem::establishBidirectionalTrust(const LLHost &host, S64 frame_
void LLMessageSystem::dumpPacketToLog()
{
- llwarns << "Packet Dump from:" << mPacketRing.getLastSender() << llendl;
- llwarns << "Packet Size:" << mTrueReceiveSize << llendl;
+ LL_WARNS("Messaging") << "Packet Dump from:" << mPacketRing.getLastSender() << llendl;
+ LL_WARNS("Messaging") << "Packet Size:" << mTrueReceiveSize << llendl;
char line_buffer[256]; /* Flawfinder: ignore */
S32 i;
S32 cur_line_pos = 0;
@@ -3369,13 +3365,13 @@ void LLMessageSystem::dumpPacketToLog()
if (cur_line_pos >= 16)
{
cur_line_pos = 0;
- llwarns << "PD:" << cur_line << "PD:" << line_buffer << llendl;
+ LL_WARNS("Messaging") << "PD:" << cur_line << "PD:" << line_buffer << llendl;
cur_line++;
}
}
if (cur_line_pos)
{
- llwarns << "PD:" << cur_line << "PD:" << line_buffer << llendl;
+ LL_WARNS("Messaging") << "PD:" << cur_line << "PD:" << line_buffer << llendl;
}
}
@@ -3919,7 +3915,7 @@ void LLMessageSystem::getStringFast(const char *block, const char *var,
{
if(buffer_size <= 0)
{
- llwarns << "buffer_size <= 0" << llendl;
+ LL_WARNS("Messaging") << "buffer_size <= 0" << llendl;
}
mMessageReader->getString(block, var, buffer_size, s, blocknum);
}
diff --git a/linden/indra/llmessage/net.cpp b/linden/indra/llmessage/net.cpp
index 40c19a7..aa095a1 100644
--- a/linden/indra/llmessage/net.cpp
+++ b/linden/indra/llmessage/net.cpp
@@ -185,7 +185,7 @@ S32 start_net(S32& socket_out, int& nPort)
{
S32 err = WSAGetLastError();
WSACleanup();
- llwarns << "Windows Sockets initialization failed, err " << err << llendl;
+ LL_WARNS("AppInit") << "Windows Sockets initialization failed, err " << err << LL_ENDL;
return 1;
}
@@ -195,7 +195,7 @@ S32 start_net(S32& socket_out, int& nPort)
{
S32 err = WSAGetLastError();
WSACleanup();
- llwarns << "socket() failed, err " << err << llendl;
+ LL_WARNS("AppInit") << "socket() failed, err " << err << LL_ENDL;
return 2;
}
@@ -205,7 +205,7 @@ S32 start_net(S32& socket_out, int& nPort)
stLclAddr.sin_port = htons(nPort);
S32 attempt_port = nPort;
- llinfos << "attempting to connect on port " << attempt_port << llendl;
+ LL_DEBUGS("AppInit") << "attempting to connect on port " << attempt_port << LL_ENDL;
nRet = bind(hSocket, (struct sockaddr*) &stLclAddr, sizeof(stLclAddr));
if (nRet == SOCKET_ERROR)
@@ -219,7 +219,7 @@ S32 start_net(S32& socket_out, int& nPort)
attempt_port++)
{
stLclAddr.sin_port = htons(attempt_port);
- llinfos << "trying port " << attempt_port << llendl;
+ LL_DEBUGS("AppInit") << "trying port " << attempt_port << LL_ENDL;
nRet = bind(hSocket, (struct sockaddr*) &stLclAddr, sizeof(stLclAddr));
if (!(nRet == SOCKET_ERROR &&
@@ -231,7 +231,7 @@ S32 start_net(S32& socket_out, int& nPort)
if (nRet == SOCKET_ERROR)
{
- llwarns << "startNet() : Couldn't find available network port." << llendl;
+ LL_WARNS("AppInit") << "startNet() : Couldn't find available network port." << LL_ENDL;
// Fail gracefully here in release
return 3;
}
@@ -239,7 +239,7 @@ S32 start_net(S32& socket_out, int& nPort)
else
// Some other socket error
{
- llwarns << llformat("bind() port: %d failed, Err: %d\n", nPort, WSAGetLastError()) << llendl;
+ LL_WARNS("AppInit") << llformat("bind() port: %d failed, Err: %d\n", nPort, WSAGetLastError()) << LL_ENDL;
// Fail gracefully in release.
return 4;
}
@@ -250,7 +250,7 @@ S32 start_net(S32& socket_out, int& nPort)
getsockname(hSocket, (SOCKADDR*) &socket_address, &socket_address_size);
attempt_port = ntohs(socket_address.sin_port);
- llinfos << "connected on port " << attempt_port << llendl;
+ LL_INFOS("AppInit") << "connected on port " << attempt_port << LL_ENDL;
nPort = attempt_port;
// Set socket to be non-blocking
@@ -266,20 +266,20 @@ S32 start_net(S32& socket_out, int& nPort)
nRet = setsockopt(hSocket, SOL_SOCKET, SO_RCVBUF, (char *)&rec_size, buff_size);
if (nRet)
{
- llinfos << "Can't set receive buffer size!" << llendl;
+ LL_INFOS("AppInit") << "Can't set receive buffer size!" << LL_ENDL;
}
nRet = setsockopt(hSocket, SOL_SOCKET, SO_SNDBUF, (char *)&snd_size, buff_size);
if (nRet)
{
- llinfos << "Can't set send buffer size!" << llendl;
+ LL_INFOS("AppInit") << "Can't set send buffer size!" << LL_ENDL;
}
getsockopt(hSocket, SOL_SOCKET, SO_RCVBUF, (char *)&rec_size, &buff_size);
getsockopt(hSocket, SOL_SOCKET, SO_SNDBUF, (char *)&snd_size, &buff_size);
- llinfos << "startNet - receive buffer size : " << rec_size << llendl;
- llinfos << "startNet - send buffer size : " << snd_size << llendl;
+ LL_DEBUGS("AppInit") << "startNet - receive buffer size : " << rec_size << LL_ENDL;
+ LL_DEBUGS("AppInit") << "startNet - send buffer size : " << snd_size << LL_ENDL;
// Setup a destination address
char achMCAddr[MAXADDRSTR] = " "; /* Flawfinder: ignore */
diff --git a/linden/indra/llrender/files.lst b/linden/indra/llrender/files.lst
index 3ada47b..5dc9579 100644
--- a/linden/indra/llrender/files.lst
+++ b/linden/indra/llrender/files.lst
@@ -1,7 +1,7 @@
llrender/llfont.cpp
llrender/llfontgl.cpp
llrender/llgldbg.cpp
-llrender/llglimmediate.cpp
+llrender/llrender.cpp
llrender/llimagegl.cpp
llrender/llrendertarget.cpp
llrender/llvertexbuffer.cpp
diff --git a/linden/indra/llrender/llfontgl.cpp b/linden/indra/llrender/llfontgl.cpp
index 938dd73..253bf50 100644
--- a/linden/indra/llrender/llfontgl.cpp
+++ b/linden/indra/llrender/llfontgl.cpp
@@ -36,7 +36,7 @@
#include "llfont.h"
#include "llfontgl.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "v4color.h"
#include "llstl.h"
@@ -56,6 +56,7 @@ LLFontGL* LLFontGL::sSansSerif = NULL;
LLFontGL* LLFontGL::sSansSerifBig = NULL;
LLFontGL* LLFontGL::sSansSerifHuge = NULL;
LLFontGL* LLFontGL::sSansSerifBold = NULL;
+LLFontList* LLFontGL::sMonospaceFallback = NULL;
LLFontList* LLFontGL::sSSFallback = NULL;
LLFontList* LLFontGL::sSSSmallFallback = NULL;
LLFontList* LLFontGL::sSSBigFallback = NULL;
@@ -240,7 +241,7 @@ bool LLFontGL::loadFaceFallback(LLFontList *fontlistp, const LLString& fontname,
font_path = sys_path + *token_iter;
if (!fontp->loadFace(font_path, point_size, sVertDPI, sHorizDPI, 2, TRUE))
{
- llwarns << "Couldn't load font " << *token_iter << llendl;
+ LL_INFOS_ONCE("ViewerImages") << "Couldn't load font " << *token_iter << LL_ENDL;
delete fontp;
fontp = NULL;
}
@@ -267,7 +268,7 @@ bool LLFontGL::loadFace(LLFontGL *fontp, const LLString& fontname, const F32 poi
font_path = sys_path + fontname;
if (!fontp->loadFace(font_path, point_size, sVertDPI, sHorizDPI, 2, FALSE))
{
- llwarns << "Couldn't load font " << fontname << llendl;
+ LL_WARNS("ViewerImages") << "Couldn't load font " << fontname << LL_ENDL;
return false;
}
}
@@ -279,12 +280,12 @@ bool LLFontGL::loadFace(LLFontGL *fontp, const LLString& fontname, const F32 poi
// static
BOOL LLFontGL::initDefaultFonts(F32 screen_dpi, F32 x_scale, F32 y_scale,
- const LLString& monospace_file, F32 monospace_size,
- const LLString& sansserif_file,
- const LLString& sanserif_fallback_file, F32 ss_fallback_scale,
- F32 small_size, F32 medium_size, F32 big_size, F32 huge_size,
- const LLString& sansserif_bold_file, F32 bold_size,
- const LLString& app_dir)
+ const LLString& monospace_file, F32 monospace_size,
+ const LLString& sansserif_file,
+ const LLString& sanserif_fallback_file, F32 ss_fallback_scale,
+ F32 small_size, F32 medium_size, F32 big_size, F32 huge_size,
+ const LLString& sansserif_bold_file, F32 bold_size,
+ const LLString& app_dir)
{
BOOL failed = FALSE;
sVertDPI = (F32)llfloor(screen_dpi * y_scale);
@@ -306,7 +307,21 @@ BOOL LLFontGL::initDefaultFonts(F32 screen_dpi, F32 x_scale, F32 y_scale,
sMonospace->reset();
}
- failed |= !loadFace(sMonospace, monospace_file, monospace_size, NULL);
+ if (sMonospaceFallback)
+ {
+ delete sMonospaceFallback;
+ }
+ sMonospaceFallback = new LLFontList();
+ if (!loadFaceFallback(
+ sMonospaceFallback,
+ sanserif_fallback_file,
+ monospace_size * ss_fallback_scale))
+ {
+ delete sMonospaceFallback;
+ sMonospaceFallback = NULL;
+ }
+
+ failed |= !loadFace(sMonospace, monospace_file, monospace_size, sMonospaceFallback);
//
// Sans-serif fonts
@@ -466,6 +481,9 @@ void LLFontGL::destroyDefaultFonts()
delete sSansSerifBold;
sSansSerifBold = NULL;
+ delete sMonospaceFallback;
+ sMonospaceFallback = NULL;
+
delete sSSHugeFallback;
sSSHugeFallback = NULL;
@@ -647,7 +665,8 @@ S32 LLFontGL::render(const LLWString &wstr,
mImageGLp->bind(0);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Not guaranteed to be set correctly
+ // Not guaranteed to be set correctly
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
cur_x = ((F32)x * sScaleX);
cur_y = ((F32)y * sScaleY);
diff --git a/linden/indra/llrender/llfontgl.h b/linden/indra/llrender/llfontgl.h
index 4df1063..01046af 100644
--- a/linden/indra/llrender/llfontgl.h
+++ b/linden/indra/llrender/llfontgl.h
@@ -228,6 +228,7 @@ public:
static LLString sAppDir; // For loading fonts
static LLFontGL* sMonospace; // medium
+ static LLFontList* sMonospaceFallback;
static LLFontGL* sSansSerifSmall; // small
static LLFontList* sSSSmallFallback;
diff --git a/linden/indra/llrender/llglimmediate.cpp b/linden/indra/llrender/llglimmediate.cpp
index edc694a..17c2182 100644
--- a/linden/indra/llrender/llglimmediate.cpp
+++ b/linden/indra/llrender/llglimmediate.cpp
@@ -1,302 +1 @@
-/**
- * @file llglimmediate.cpp
- * @brief LLGLImmediate implementation
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2008, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-
-#include "llglimmediate.h"
-#include "llvertexbuffer.h"
-
-LLGLImmediate gGL;
-
-bool LLGLImmediate::sClever = false;
-
-const U32 immediate_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR | LLVertexBuffer::MAP_TEXCOORD;
-
-LLGLImmediate::LLGLImmediate()
-{
- mCount = 0;
- mMode = LLVertexBuffer::TRIANGLES;
- mBuffer = new LLVertexBuffer(immediate_mask, 0);
- mBuffer->allocateBuffer(4096, 0, TRUE);
- mBuffer->getVertexStrider(mVerticesp);
- mBuffer->getTexCoordStrider(mTexcoordsp);
- mBuffer->getColorStrider(mColorsp);
-}
-
-void LLGLImmediate::translatef(const GLfloat& x, const GLfloat& y, const GLfloat& z)
-{
- flush();
- glTranslatef(x,y,z);
-}
-
-void LLGLImmediate::pushMatrix()
-{
- flush();
- glPushMatrix();
-}
-
-void LLGLImmediate::popMatrix()
-{
- flush();
- glPopMatrix();
-}
-
-void LLGLImmediate::blendFunc(GLenum sfactor, GLenum dfactor)
-{
- flush();
- glBlendFunc(sfactor, dfactor);
-}
-
-void LLGLImmediate::begin(const GLuint& mode)
-{
- if (sClever)
- {
- if (mode != mMode)
- {
- if (mMode == LLVertexBuffer::QUADS ||
- mMode == LLVertexBuffer::LINES ||
- mMode == LLVertexBuffer::TRIANGLES ||
- mMode == LLVertexBuffer::POINTS)
- {
- flush();
- }
- else if (mCount != 0)
- {
- llerrs << "gGL.begin() called redundantly." << llendl;
- }
-
- mMode = mode;
- }
- }
- else
- {
- glBegin(LLVertexBuffer::sGLMode[mode]);
- }
-}
-
-void LLGLImmediate::end()
-{
- if (sClever)
- {
- if (mCount == 0)
- {
- return;
- //IMM_ERRS << "GL begin and end called with no vertices specified." << llendl;
- }
-
- if ((mMode != LLVertexBuffer::QUADS &&
- mMode != LLVertexBuffer::LINES &&
- mMode != LLVertexBuffer::TRIANGLES &&
- mMode != LLVertexBuffer::POINTS) ||
- mCount > 2048)
- {
- flush();
- }
- }
- else
- {
- glEnd();
- }
-}
-
-void LLGLImmediate::flush()
-{
- if (sClever)
- {
- if (mCount > 0)
- {
-#if 0
- if (!glIsEnabled(GL_VERTEX_ARRAY))
- {
- llerrs << "foo 1" << llendl;
- }
-
- if (!glIsEnabled(GL_COLOR_ARRAY))
- {
- llerrs << "foo 2" << llendl;
- }
-
- if (!glIsEnabled(GL_TEXTURE_COORD_ARRAY))
- {
- llerrs << "foo 3" << llendl;
- }
-
- if (glIsEnabled(GL_NORMAL_ARRAY))
- {
- llerrs << "foo 7" << llendl;
- }
-
- GLvoid* pointer;
-
- glGetPointerv(GL_VERTEX_ARRAY_POINTER, &pointer);
- if (pointer != &(mBuffer[0].v))
- {
- llerrs << "foo 4" << llendl;
- }
-
- glGetPointerv(GL_COLOR_ARRAY_POINTER, &pointer);
- if (pointer != &(mBuffer[0].c))
- {
- llerrs << "foo 5" << llendl;
- }
-
- glGetPointerv(GL_TEXTURE_COORD_ARRAY_POINTER, &pointer);
- if (pointer != &(mBuffer[0].uv))
- {
- llerrs << "foo 6" << llendl;
- }
-#endif
-
- mBuffer->setBuffer(immediate_mask);
- mBuffer->drawArrays(mMode, 0, mCount);
-
- mVerticesp[0] = mVerticesp[mCount];
- mTexcoordsp[0] = mTexcoordsp[mCount];
- mColorsp[0] = mColorsp[mCount];
- mCount = 0;
- }
- }
-}
-
-void LLGLImmediate::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)
-{
- if (sClever)
- {
- if (mCount >= 4096)
- {
- // llwarns << "GL immediate mode overflow. Some geometry not drawn." << llendl;
- return;
- }
-
- mVerticesp[mCount] = LLVector3(x,y,z);
- mCount++;
- if (mCount < 4096)
- {
- mVerticesp[mCount] = mVerticesp[mCount-1];
- mColorsp[mCount] = mColorsp[mCount-1];
- mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
- }
- }
- else
- {
- glVertex3f(x,y,z);
- }
-}
-
-void LLGLImmediate::vertex2i(const GLint& x, const GLint& y)
-{
- vertex3f((GLfloat) x, (GLfloat) y, 0);
-}
-
-void LLGLImmediate::vertex2f(const GLfloat& x, const GLfloat& y)
-{
- vertex3f(x,y,0);
-}
-
-void LLGLImmediate::vertex2fv(const GLfloat* v)
-{
- vertex3f(v[0], v[1], 0);
-}
-
-void LLGLImmediate::vertex3fv(const GLfloat* v)
-{
- vertex3f(v[0], v[1], v[2]);
-}
-
-void LLGLImmediate::texCoord2f(const GLfloat& x, const GLfloat& y)
-{
- if (sClever)
- {
- mTexcoordsp[mCount] = LLVector2(x,y);
- }
- else
- {
- glTexCoord2f(x,y);
- }
-}
-
-void LLGLImmediate::texCoord2i(const GLint& x, const GLint& y)
-{
- texCoord2f((GLfloat) x, (GLfloat) y);
-}
-
-void LLGLImmediate::texCoord2fv(const GLfloat* tc)
-{
- texCoord2f(tc[0], tc[1]);
-}
-
-void LLGLImmediate::color4ub(const GLubyte& r, const GLubyte& g, const GLubyte& b, const GLubyte& a)
-{
- if (sClever)
- {
- mColorsp[mCount] = LLColor4U(r,g,b,a);
- }
- else
- {
- glColor4ub(r,g,b,a);
- }
-}
-
-void LLGLImmediate::color4ubv(const GLubyte* c)
-{
- color4ub(c[0], c[1], c[2], c[3]);
-}
-
-void LLGLImmediate::color4f(const GLfloat& r, const GLfloat& g, const GLfloat& b, const GLfloat& a)
-{
- color4ub((GLubyte) (llclamp(r, 0.f, 1.f)*255),
- (GLubyte) (llclamp(g, 0.f, 1.f)*255),
- (GLubyte) (llclamp(b, 0.f, 1.f)*255),
- (GLubyte) (llclamp(a, 0.f, 1.f)*255));
-}
-
-void LLGLImmediate::color4fv(const GLfloat* c)
-{
- color4f(c[0],c[1],c[2],c[3]);
-}
-
-void LLGLImmediate::color3f(const GLfloat& r, const GLfloat& g, const GLfloat& b)
-{
- color4f(r,g,b,1);
-}
-
-void LLGLImmediate::color3fv(const GLfloat* c)
-{
- color4f(c[0],c[1],c[2],1);
-}
-
-void LLGLImmediate::setClever(bool do_clever)
-{
- llassert(mCount == 0);
-
- sClever = do_clever;
-}
-
+#error This file has been renamed llrender.cpp
diff --git a/linden/indra/llrender/llglimmediate.h b/linden/indra/llrender/llglimmediate.h
index e0cddff..4a7a0eb 100644
--- a/linden/indra/llrender/llglimmediate.h
+++ b/linden/indra/llrender/llglimmediate.h
@@ -1,106 +1 @@
-/**
- * @file llglimmediate.h
- * @brief LLGLImmediate definition
- *
- * This class acts as a wrapper for OpenGL immediate calls concerning glBegin and glEnd.
- * The goal of this class is to minimize the number of api calls due to legacy rendering
- * code, and to define an interface for a multiple rendering API abstraction of the UI
- * rendering.
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2008, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLGLIMMEDIATE_H
-#define LL_LLGLIMMEDIATE_H
-
-#include "stdtypes.h"
-#include "llgltypes.h"
-#include "llglheaders.h"
-#include "llvertexbuffer.h"
-
-class LLGLImmediate
-{
-public:
- LLGLImmediate();
-
- void translatef(const GLfloat& x, const GLfloat& y, const GLfloat& z);
- void pushMatrix();
- void popMatrix();
- void blendFunc(GLenum sfactor, GLenum dfactor);
- void flush();
-
- void begin(const GLuint& mode);
- void end();
- void vertex2i(const GLint& x, const GLint& y);
- void vertex2f(const GLfloat& x, const GLfloat& y);
- void vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z);
- void vertex2fv(const GLfloat* v);
- void vertex3fv(const GLfloat* v);
-
- void texCoord2i(const GLint& x, const GLint& y);
- void texCoord2f(const GLfloat& x, const GLfloat& y);
- void texCoord2fv(const GLfloat* tc);
-
- void color4ub(const GLubyte& r, const GLubyte& g, const GLubyte& b, const GLubyte& a);
- void color4f(const GLfloat& r, const GLfloat& g, const GLfloat& b, const GLfloat& a);
- void color4fv(const GLfloat* c);
- void color3f(const GLfloat& r, const GLfloat& g, const GLfloat& b);
- void color3fv(const GLfloat* c);
- void color4ubv(const GLubyte* c);
-
- // switch clever mode GL immediate rendering on or off. Setting to true builds
- // client arrays manually, setting to false passes through the GL immediate mode
- // commands to the GL implementation. Controllable by the RenderUseCleverUI
- // debug setting.
- // *NOTE: I have measured that this has about a 9% performance cost (0.6ms) for the
- // Render/UI fasttimer vs the old #if CLEVER compile time switch. Dave Parks and I
- // agreed that this was acceptable at the time due to it enabling better regression
- // testing for QA.
- // -Brad
- void setClever(bool do_clever);
-
- typedef struct Vertex
- {
- GLfloat v[3];
- GLubyte c[4];
- GLfloat uv[2];
- };
-
-private:
- static bool sClever;
-
- U32 mCount;
- U32 mMode;
- LLPointer mBuffer;
- LLStrider mVerticesp;
- LLStrider mTexcoordsp;
- LLStrider mColorsp;
-};
-
-extern LLGLImmediate gGL;
-
-#endif
+#error This file has been renamed llrender.h
diff --git a/linden/indra/llrender/llimagegl.cpp b/linden/indra/llrender/llimagegl.cpp
index 92d8eb4..fd934b9 100644
--- a/linden/indra/llrender/llimagegl.cpp
+++ b/linden/indra/llrender/llimagegl.cpp
@@ -41,7 +41,7 @@
#include "llmath.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
//----------------------------------------------------------------------------
@@ -130,13 +130,13 @@ void LLImageGL::bindExternalTexture(LLGLuint gl_name, S32 stage, LLGLenum bind_t
gGL.flush();
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB + stage);
+ gGL.getTexUnit(stage)->activate();
}
glBindTexture(bind_target, gl_name);
sCurrentBoundTextures[stage] = gl_name;
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
}
@@ -149,9 +149,9 @@ void LLImageGL::unbindTexture(S32 stage, LLGLenum bind_target)
gGL.flush();
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB + stage);
+ gGL.getTexUnit(stage)->activate();
glBindTexture(GL_TEXTURE_2D, 0);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
else
{
@@ -304,7 +304,9 @@ void LLImageGL::init(BOOL usemipmaps)
mIsResident = 0;
mClampS = FALSE;
mClampT = FALSE;
- mMipFilterNearest = FALSE;
+ mClampR = FALSE;
+ mMagFilterNearest = FALSE;
+ mMinFilterNearest = FALSE;
mWidth = 0;
mHeight = 0;
mComponents = 0;
@@ -439,7 +441,7 @@ BOOL LLImageGL::bindTextureInternal(const S32 stage) const
gGL.flush();
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB + stage);
+ gGL.getTexUnit(stage)->activate();
}
glBindTexture(mBindTarget, mTexName);
@@ -448,7 +450,7 @@ BOOL LLImageGL::bindTextureInternal(const S32 stage) const
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
if (mLastBindTime != sLastFrameTime)
@@ -466,12 +468,12 @@ BOOL LLImageGL::bindTextureInternal(const S32 stage) const
gGL.flush();
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB+stage);
+ gGL.getTexUnit(stage)->activate();
}
glBindTexture(mBindTarget, 0);
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB+stage);
+ gGL.getTexUnit(0)->activate();
}
sCurrentBoundTextures[stage] = 0;
return FALSE;
@@ -628,7 +630,7 @@ void LLImageGL::setImage(const U8* data_in, BOOL data_hasmips)
{
S32 bytes = w * h * mComponents;
llassert(prev_mip_data);
- llassert(prev_mip_size == bytes);
+ llassert(prev_mip_size == bytes*4);
U8* new_data = new U8[bytes];
llassert_always(new_data);
LLImageBase::generateMip(prev_mip_data, new_data, w, h, mComponents);
@@ -941,7 +943,7 @@ BOOL LLImageGL::createGLTexture(S32 discard_level, const U8* data_in, BOOL data_
setImage(data_in, data_hasmips);
setClamp(mClampS, mClampT);
- setMipFilterNearest(mMipFilterNearest);
+ setMipFilterNearest(mMagFilterNearest);
// things will break if we don't unbind after creation
unbindTexture(0, mBindTarget);
@@ -1044,8 +1046,23 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
S32 gl_discard = discard_level - mCurrentDiscardLevel;
- llverify(bindTextureInternal(0));
-
+ //explicitly unbind texture
+ LLImageGL::unbindTexture(0, mTarget);
+ llverify(bindTextureInternal(0));
+
+ if (gDebugGL)
+ {
+ if (mTarget == GL_TEXTURE_2D)
+ {
+ GLint texname;
+ glGetIntegerv(GL_TEXTURE_BINDING_2D, &texname);
+ if (texname != mTexName)
+ {
+ llerrs << "Invalid texture bound!" << llendl;
+ }
+ }
+ }
+
LLGLint glwidth = 0;
glGetTexLevelParameteriv(mTarget, gl_discard, GL_TEXTURE_WIDTH, (GLint*)&glwidth);
if (glwidth == 0)
@@ -1067,40 +1084,63 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
llerrs << llformat("LLImageGL::readBackRaw: bogus params: %d x %d x %d",width,height,ncomponents) << llendl;
}
- BOOL return_result = TRUE ;
LLGLint is_compressed = 0;
if (compressed_ok)
{
glGetTexLevelParameteriv(mTarget, is_compressed, GL_TEXTURE_COMPRESSED, (GLint*)&is_compressed);
}
+
+ //-----------------------------------------------------------------------------------------------
+ GLenum error ;
+ while((error = glGetError()) != GL_NO_ERROR)
+ {
+ llwarns << "GL Error happens before reading back texture. Error code: " << error << llendl ;
+ }
+ //-----------------------------------------------------------------------------------------------
+
if (is_compressed)
{
LLGLint glbytes;
glGetTexLevelParameteriv(mTarget, gl_discard, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, (GLint*)&glbytes);
- imageraw->allocateDataSize(width, height, ncomponents, glbytes);
- glGetCompressedTexImageARB(mTarget, gl_discard, (GLvoid*)(imageraw->getData()));
- if(glGetError() != GL_NO_ERROR)
+ if(!imageraw->allocateDataSize(width, height, ncomponents, glbytes))
{
- llwarns << "Error happens when reading back the compressed texture image." << llendl ;
- imageraw->deleteData() ;
- return_result = FALSE ;
+ llwarns << "Memory allocation failed for reading back texture. Size is: " << glbytes << llendl ;
+ llwarns << "width: " << width << "height: " << height << "components: " << ncomponents << llendl ;
+ return FALSE ;
}
- stop_glerror();
+
+ glGetCompressedTexImageARB(mTarget, gl_discard, (GLvoid*)(imageraw->getData()));
+ //stop_glerror();
}
else
{
- imageraw->allocateDataSize(width, height, ncomponents);
- glGetTexImage(GL_TEXTURE_2D, gl_discard, mFormatPrimary, mFormatType, (GLvoid*)(imageraw->getData()));
- if(glGetError() != GL_NO_ERROR)
+ if(!imageraw->allocateDataSize(width, height, ncomponents))
{
- llwarns << "Error happens when reading back the texture image." << llendl ;
- imageraw->deleteData() ;
- return_result = FALSE ;
+ llwarns << "Memory allocation failed for reading back texture." << llendl ;
+ llwarns << "width: " << width << "height: " << height << "components: " << ncomponents << llendl ;
+ return FALSE ;
}
- stop_glerror();
+
+ glGetTexImage(GL_TEXTURE_2D, gl_discard, mFormatPrimary, mFormatType, (GLvoid*)(imageraw->getData()));
+ //stop_glerror();
}
- return return_result ;
+ //-----------------------------------------------------------------------------------------------
+ if((error = glGetError()) != GL_NO_ERROR)
+ {
+ llwarns << "GL Error happens after reading back texture. Error code: " << error << llendl ;
+ imageraw->deleteData() ;
+
+ while((error = glGetError()) != GL_NO_ERROR)
+ {
+ llwarns << "GL Error happens after reading back texture. Error code: " << error << llendl ;
+ }
+
+ return FALSE ;
+ }
+ //-----------------------------------------------------------------------------------------------
+
+ return TRUE ;
}
void LLImageGL::destroyGLTexture()
@@ -1130,25 +1170,55 @@ void LLImageGL::destroyGLTexture()
//----------------------------------------------------------------------------
-void LLImageGL::setClamp(BOOL clamps, BOOL clampt)
+void LLImageGL::glClampCubemap (BOOL clamps, BOOL clampt, BOOL clampr)
+{
+ glTexParameteri (GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, clamps ? GL_CLAMP_TO_EDGE : GL_REPEAT);
+ glTexParameteri (GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, clamps ? GL_CLAMP_TO_EDGE : GL_REPEAT);
+ glTexParameteri (GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_R, clamps ? GL_CLAMP_TO_EDGE : GL_REPEAT);
+}
+
+void LLImageGL::glClamp (BOOL clamps, BOOL clampt)
{
- mClampS = clamps;
- mClampT = clampt;
if (mTexName != 0)
{
- glTexParameteri(mBindTarget, GL_TEXTURE_WRAP_S, clamps ? GL_CLAMP_TO_EDGE : GL_REPEAT);
- glTexParameteri(mBindTarget, GL_TEXTURE_WRAP_T, clampt ? GL_CLAMP_TO_EDGE : GL_REPEAT);
+ glTexParameteri (mBindTarget, GL_TEXTURE_WRAP_S, clamps ? GL_CLAMP_TO_EDGE : GL_REPEAT);
+ glTexParameteri (mBindTarget, GL_TEXTURE_WRAP_T, clampt ? GL_CLAMP_TO_EDGE : GL_REPEAT);
}
- stop_glerror();
}
-void LLImageGL::setMipFilterNearest(BOOL nearest, BOOL min_nearest)
+void LLImageGL::setClampCubemap (BOOL clamps, BOOL clampt, BOOL clampr)
+{
+ mClampS = clamps;
+ mClampT = clampt;
+ mClampR = clampr;
+ glClampCubemap (clamps, clampt, clampr);
+}
+
+void LLImageGL::setClamp(BOOL clamps, BOOL clampt)
+{
+ mClampS = clamps;
+ mClampT = clampt;
+ glClamp (clamps, clampt);
+}
+
+void LLImageGL::overrideClamp (BOOL clamps, BOOL clampt)
+{
+ glClamp (clamps, clampt);
+}
+
+void LLImageGL::restoreClamp (void)
+{
+ glClamp (mClampS, mClampT);
+}
+
+void LLImageGL::setMipFilterNearest(BOOL mag_nearest, BOOL min_nearest)
{
- mMipFilterNearest = nearest;
+ mMagFilterNearest = mag_nearest;
+ mMinFilterNearest = min_nearest;
if (mTexName != 0)
{
- if (min_nearest)
+ if (mMinFilterNearest)
{
glTexParameteri(mBindTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
}
@@ -1160,7 +1230,7 @@ void LLImageGL::setMipFilterNearest(BOOL nearest, BOOL min_nearest)
{
glTexParameteri(mBindTarget, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
}
- if (mMipFilterNearest)
+ if (mMagFilterNearest)
{
glTexParameteri(mBindTarget, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
}
@@ -1170,7 +1240,7 @@ void LLImageGL::setMipFilterNearest(BOOL nearest, BOOL min_nearest)
}
if (gGLManager.mHasAnisotropic)
{
- if (sGlobalUseAnisotropic && !mMipFilterNearest)
+ if (sGlobalUseAnisotropic && !mMagFilterNearest)
{
F32 largest_anisotropy;
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_anisotropy);
diff --git a/linden/indra/llrender/llimagegl.h b/linden/indra/llrender/llimagegl.h
index b386294..3f231ee 100644
--- a/linden/indra/llrender/llimagegl.h
+++ b/linden/indra/llrender/llimagegl.h
@@ -81,6 +81,10 @@ protected:
virtual ~LLImageGL();
BOOL bindTextureInternal(const S32 stage = 0) const;
+private:
+ void glClamp (BOOL clamps, BOOL clampt);
+ void glClampCubemap (BOOL clamps, BOOL clampt, BOOL clampr = FALSE);
+
public:
virtual void dump(); // debugging info to llinfos
virtual BOOL bind(const S32 stage = 0) const;
@@ -99,8 +103,11 @@ public:
BOOL readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compressed_ok);
void destroyGLTexture();
+ void setClampCubemap (BOOL clamps, BOOL clampt, BOOL clampr = FALSE);
void setClamp(BOOL clamps, BOOL clampt);
- void setMipFilterNearest(BOOL nearest, BOOL min_nearest = FALSE);
+ void overrideClamp (BOOL clamps, BOOL clampt);
+ void restoreClamp (void);
+ void setMipFilterNearest(BOOL mag_nearest, BOOL min_nearest = FALSE);
void setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE);
void dontDiscard() { mDontDiscard = 1; }
@@ -117,7 +124,8 @@ public:
BOOL getClampS() const { return mClampS; }
BOOL getClampT() const { return mClampT; }
- BOOL getMipFilterNearest() const { return mMipFilterNearest; }
+ BOOL getClampR() const { return mClampR; }
+ BOOL getMipFilterNearest() const { return mMagFilterNearest; }
BOOL getHasGLTexture() const { return mTexName != 0; }
LLGLuint getTexName() const { return mTexName; }
@@ -167,7 +175,9 @@ protected:
S8 mClampS; // Need to save clamp state
S8 mClampT;
- S8 mMipFilterNearest; // if TRUE, set magfilter to GL_NEAREST
+ S8 mClampR;
+ S8 mMagFilterNearest; // if TRUE, set magfilter to GL_NEAREST
+ S8 mMinFilterNearest; // if TRUE, set minfilter to GL_NEAREST
LLGLint mFormatInternal; // = GL internalformat
LLGLenum mFormatPrimary; // = GL format (pixel data format)
diff --git a/linden/indra/llrender/llrender.cpp b/linden/indra/llrender/llrender.cpp
new file mode 100644
index 0000000..e9c1227
--- /dev/null
+++ b/linden/indra/llrender/llrender.cpp
@@ -0,0 +1,704 @@
+/**
+ * @file llrender.cpp
+ * @brief LLRender implementation
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "llrender.h"
+#include "llvertexbuffer.h"
+
+LLRender gGL;
+
+static const U32 LL_NUM_TEXTURE_LAYERS = 8;
+
+static GLenum sGLCompareFunc[] =
+{
+ GL_NEVER,
+ GL_ALWAYS,
+ GL_LESS,
+ GL_LEQUAL,
+ GL_EQUAL,
+ GL_NOTEQUAL,
+ GL_GEQUAL,
+ GL_GREATER
+};
+
+const U32 immediate_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_COLOR | LLVertexBuffer::MAP_TEXCOORD;
+
+static GLenum sGLBlendFactor[] =
+{
+ GL_ONE,
+ GL_ZERO,
+ GL_DST_COLOR,
+ GL_SRC_COLOR,
+ GL_ONE_MINUS_DST_COLOR,
+ GL_ONE_MINUS_SRC_COLOR,
+ GL_DST_ALPHA,
+ GL_SRC_ALPHA,
+ GL_ONE_MINUS_DST_ALPHA,
+ GL_ONE_MINUS_SRC_ALPHA
+};
+
+LLTexUnit::LLTexUnit(U32 index)
+: mIsEnabled(false), mCurrBlendType(TB_MULT),
+mCurrColorOp(TBO_MULT), mCurrAlphaOp(TBO_MULT),
+mCurrColorSrc1(TBS_TEX_COLOR), mCurrColorSrc2(TBS_PREV_COLOR),
+mCurrAlphaSrc1(TBS_TEX_ALPHA), mCurrAlphaSrc2(TBS_PREV_ALPHA),
+mCurrColorScale(1), mCurrAlphaScale(1)
+{
+ llassert_always(index < LL_NUM_TEXTURE_LAYERS);
+ mIndex = index;
+}
+
+U32 LLTexUnit::getIndex(void)
+{
+ return mIndex;
+}
+
+void LLTexUnit::enable(void)
+{
+ if (!mIsEnabled)
+ {
+ activate();
+ glEnable(GL_TEXTURE_2D);
+ mIsEnabled = true;
+ }
+}
+
+void LLTexUnit::disable(void)
+{
+ if (mIsEnabled)
+ {
+ activate();
+ glDisable(GL_TEXTURE_2D);
+ mIsEnabled = false;
+ }
+}
+
+void LLTexUnit::activate(void)
+{
+ //if (gGL.mCurrTextureUnitIndex != mIndex)
+ {
+ glActiveTextureARB(GL_TEXTURE0_ARB + mIndex);
+ gGL.mCurrTextureUnitIndex = mIndex;
+ }
+}
+
+// Useful for debugging that you've manually assigned a texture operation to the correct
+// texture unit based on the currently set active texture in opengl.
+void LLTexUnit::debugTextureUnit(void)
+{
+ GLint activeTexture;
+ glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &activeTexture);
+ if ((GL_TEXTURE0_ARB + mIndex) != activeTexture)
+ {
+ llerrs << "Incorrect Texture Unit! Expected: " << (activeTexture - GL_TEXTURE0_ARB) << " Actual: " << mIndex << llendl;
+ }
+}
+
+void LLTexUnit::bindTexture(const LLImageGL* texture)
+{
+ if (texture != NULL)
+ {
+ activate();
+ texture->bind(mIndex);
+ }
+}
+
+void LLTexUnit::unbindTexture(void)
+{
+ activate();
+ glBindTexture(GL_TEXTURE_2D, 0);
+}
+
+void LLTexUnit::setTextureBlendType(eTextureBlendType type)
+{
+ // Do nothing if it's already correctly set.
+ if (mCurrBlendType == type)
+ {
+ return;
+ }
+
+ activate();
+ mCurrBlendType = type;
+ S32 scale_amount = 1;
+ switch (type)
+ {
+ case TB_REPLACE:
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
+ break;
+ case TB_ADD:
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD);
+ break;
+ case TB_MULT:
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ break;
+ case TB_MULT_X2:
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ scale_amount = 2;
+ break;
+ case TB_ALPHA_BLEND:
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
+ break;
+ case TB_COMBINE:
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
+ break;
+ default:
+ llerrs << "Unknown Texture Blend Type: " << type << llendl;
+ break;
+ }
+ setColorScale(scale_amount);
+ setAlphaScale(1);
+}
+
+GLint LLTexUnit::getTextureSource(eTextureBlendSrc src)
+{
+ switch(src)
+ {
+ // All four cases should return the same value.
+ case TBS_PREV_COLOR:
+ case TBS_PREV_ALPHA:
+ case TBS_ONE_MINUS_PREV_COLOR:
+ case TBS_ONE_MINUS_PREV_ALPHA:
+ return GL_PREVIOUS_ARB;
+
+ // All four cases should return the same value.
+ case TBS_TEX_COLOR:
+ case TBS_TEX_ALPHA:
+ case TBS_ONE_MINUS_TEX_COLOR:
+ case TBS_ONE_MINUS_TEX_ALPHA:
+ return GL_TEXTURE;
+
+ // All four cases should return the same value.
+ case TBS_VERT_COLOR:
+ case TBS_VERT_ALPHA:
+ case TBS_ONE_MINUS_VERT_COLOR:
+ case TBS_ONE_MINUS_VERT_ALPHA:
+ return GL_PRIMARY_COLOR_ARB;
+
+ // All four cases should return the same value.
+ case TBS_CONST_COLOR:
+ case TBS_CONST_ALPHA:
+ case TBS_ONE_MINUS_CONST_COLOR:
+ case TBS_ONE_MINUS_CONST_ALPHA:
+ return GL_CONSTANT_ARB;
+
+ default:
+ llwarns << "Unknown eTextureBlendSrc: " << src << ". Using Vertex Color instead." << llendl;
+ return GL_PRIMARY_COLOR_ARB;
+ }
+}
+
+GLint LLTexUnit::getTextureSourceType(eTextureBlendSrc src, bool isAlpha)
+{
+ switch(src)
+ {
+ // All four cases should return the same value.
+ case TBS_PREV_COLOR:
+ case TBS_TEX_COLOR:
+ case TBS_VERT_COLOR:
+ case TBS_CONST_COLOR:
+ return (isAlpha) ? GL_SRC_ALPHA: GL_SRC_COLOR;
+
+ // All four cases should return the same value.
+ case TBS_PREV_ALPHA:
+ case TBS_TEX_ALPHA:
+ case TBS_VERT_ALPHA:
+ case TBS_CONST_ALPHA:
+ return GL_SRC_ALPHA;
+
+ // All four cases should return the same value.
+ case TBS_ONE_MINUS_PREV_COLOR:
+ case TBS_ONE_MINUS_TEX_COLOR:
+ case TBS_ONE_MINUS_VERT_COLOR:
+ case TBS_ONE_MINUS_CONST_COLOR:
+ return (isAlpha) ? GL_ONE_MINUS_SRC_ALPHA : GL_ONE_MINUS_SRC_COLOR;
+
+ // All four cases should return the same value.
+ case TBS_ONE_MINUS_PREV_ALPHA:
+ case TBS_ONE_MINUS_TEX_ALPHA:
+ case TBS_ONE_MINUS_VERT_ALPHA:
+ case TBS_ONE_MINUS_CONST_ALPHA:
+ return GL_ONE_MINUS_SRC_ALPHA;
+
+ default:
+ llwarns << "Unknown eTextureBlendSrc: " << src << ". Using Source Color or Alpha instead." << llendl;
+ return (isAlpha) ? GL_SRC_ALPHA: GL_SRC_COLOR;
+ }
+}
+
+void LLTexUnit::setTextureCombiner(eTextureBlendOp op, eTextureBlendSrc src1, eTextureBlendSrc src2, bool isAlpha)
+{
+ activate();
+ if (mCurrBlendType != TB_COMBINE)
+ {
+ mCurrBlendType = TB_COMBINE;
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
+ }
+
+ // We want an early out, because this function does a LOT of stuff.
+ if ( (isAlpha && (mCurrAlphaOp == op) && (mCurrAlphaSrc1 == src1) && (mCurrAlphaSrc2 == src2) )
+ || (!isAlpha && (mCurrColorOp == op) && (mCurrColorSrc1 == src1) && (mCurrColorSrc2 == src2) ))
+ {
+ return;
+ }
+
+ // Get the gl source enums according to the eTextureBlendSrc sources passed in
+ GLint source1 = getTextureSource(src1);
+ GLint source2 = getTextureSource(src2);
+ // Get the gl operand enums according to the eTextureBlendSrc sources passed in
+ GLint operand1 = getTextureSourceType(src1, isAlpha);
+ GLint operand2 = getTextureSourceType(src2, isAlpha);
+ // Default the scale amount to 1
+ S32 scale_amount = 1;
+ GLenum comb_enum, src0_enum, src1_enum, src2_enum, operand0_enum, operand1_enum, operand2_enum;
+
+ if (isAlpha)
+ {
+ // Set enums to ALPHA ones
+ comb_enum = GL_COMBINE_ALPHA_ARB;
+ src0_enum = GL_SOURCE0_ALPHA_ARB;
+ src1_enum = GL_SOURCE1_ALPHA_ARB;
+ src2_enum = GL_SOURCE2_ALPHA_ARB;
+ operand0_enum = GL_OPERAND0_ALPHA_ARB;
+ operand1_enum = GL_OPERAND1_ALPHA_ARB;
+ operand2_enum = GL_OPERAND2_ALPHA_ARB;
+
+ // cache current combiner
+ mCurrAlphaOp = op;
+ mCurrAlphaSrc1 = src1;
+ mCurrAlphaSrc2 = src2;
+ }
+ else
+ {
+ // Set enums to ALPHA ones
+ comb_enum = GL_COMBINE_RGB_ARB;
+ src0_enum = GL_SOURCE0_RGB_ARB;
+ src1_enum = GL_SOURCE1_RGB_ARB;
+ src2_enum = GL_SOURCE2_RGB_ARB;
+ operand0_enum = GL_OPERAND0_RGB_ARB;
+ operand1_enum = GL_OPERAND1_RGB_ARB;
+ operand2_enum = GL_OPERAND2_RGB_ARB;
+
+ // cache current combiner
+ mCurrColorOp = op;
+ mCurrColorSrc1 = src1;
+ mCurrColorSrc2 = src2;
+ }
+
+ switch(op)
+ {
+ case TBO_REPLACE:
+ // Slightly special syntax (no second sources), just set all and return.
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_REPLACE);
+ glTexEnvi(GL_TEXTURE_ENV, src0_enum, source1);
+ glTexEnvi(GL_TEXTURE_ENV, operand0_enum, operand1);
+ (isAlpha) ? setAlphaScale(1) : setColorScale(1);
+ return;
+
+ case TBO_MULT:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_MODULATE);
+ break;
+
+ case TBO_MULT_X2:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_MODULATE);
+ scale_amount = 2;
+ break;
+
+ case TBO_MULT_X4:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_MODULATE);
+ scale_amount = 4;
+ break;
+
+ case TBO_ADD:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_ADD);
+ break;
+
+ case TBO_ADD_SIGNED:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_ADD_SIGNED_ARB);
+ break;
+
+ case TBO_SUBTRACT:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_SUBTRACT_ARB);
+ break;
+
+ case TBO_LERP_VERT_ALPHA:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_INTERPOLATE);
+ glTexEnvi(GL_TEXTURE_ENV, src2_enum, GL_PRIMARY_COLOR_ARB);
+ glTexEnvi(GL_TEXTURE_ENV, operand2_enum, GL_SRC_ALPHA);
+ break;
+
+ case TBO_LERP_TEX_ALPHA:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_INTERPOLATE);
+ glTexEnvi(GL_TEXTURE_ENV, src2_enum, GL_TEXTURE);
+ glTexEnvi(GL_TEXTURE_ENV, operand2_enum, GL_SRC_ALPHA);
+ break;
+
+ case TBO_LERP_PREV_ALPHA:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_INTERPOLATE);
+ glTexEnvi(GL_TEXTURE_ENV, src2_enum, GL_PREVIOUS_ARB);
+ glTexEnvi(GL_TEXTURE_ENV, operand2_enum, GL_SRC_ALPHA);
+ break;
+
+ case TBO_LERP_CONST_ALPHA:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_INTERPOLATE);
+ glTexEnvi(GL_TEXTURE_ENV, src2_enum, GL_CONSTANT_ARB);
+ glTexEnvi(GL_TEXTURE_ENV, operand2_enum, GL_SRC_ALPHA);
+ break;
+
+ case TBO_LERP_VERT_COLOR:
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_INTERPOLATE);
+ glTexEnvi(GL_TEXTURE_ENV, src2_enum, GL_PRIMARY_COLOR_ARB);
+ glTexEnvi(GL_TEXTURE_ENV, operand2_enum, (isAlpha) ? GL_SRC_ALPHA : GL_SRC_COLOR);
+ break;
+
+ default:
+ llwarns << "Unknown eTextureBlendOp: " << op << ". Setting op to replace." << llendl;
+ // Slightly special syntax (no second sources), just set all and return.
+ glTexEnvi(GL_TEXTURE_ENV, comb_enum, GL_REPLACE);
+ glTexEnvi(GL_TEXTURE_ENV, src0_enum, source1);
+ glTexEnvi(GL_TEXTURE_ENV, operand0_enum, operand1);
+ (isAlpha) ? setAlphaScale(1) : setColorScale(1);
+ return;
+ }
+
+ // Set sources, operands, and scale accordingly
+ glTexEnvi(GL_TEXTURE_ENV, src0_enum, source1);
+ glTexEnvi(GL_TEXTURE_ENV, operand0_enum, operand1);
+ glTexEnvi(GL_TEXTURE_ENV, src1_enum, source2);
+ glTexEnvi(GL_TEXTURE_ENV, operand1_enum, operand2);
+ (isAlpha) ? setAlphaScale(scale_amount) : setColorScale(scale_amount);
+}
+
+void LLTexUnit::setColorScale(S32 scale)
+{
+ if (mCurrColorScale != scale)
+ {
+ mCurrColorScale = scale;
+ glTexEnvi( GL_TEXTURE_ENV, GL_RGB_SCALE, scale );
+ }
+}
+
+void LLTexUnit::setAlphaScale(S32 scale)
+{
+ if (mCurrAlphaScale != scale)
+ {
+ mCurrAlphaScale = scale;
+ glTexEnvi( GL_TEXTURE_ENV, GL_ALPHA_SCALE, scale );
+ }
+}
+
+LLRender::LLRender()
+{
+ mCount = 0;
+ mMode = LLVertexBuffer::TRIANGLES;
+ mBuffer = new LLVertexBuffer(immediate_mask, 0);
+ mBuffer->allocateBuffer(4096, 0, TRUE);
+ mBuffer->getVertexStrider(mVerticesp);
+ mBuffer->getTexCoordStrider(mTexcoordsp);
+ mBuffer->getColorStrider(mColorsp);
+
+ for (unsigned int i = 0; i < LL_NUM_TEXTURE_LAYERS; i++)
+ {
+ mTexUnits.push_back(new LLTexUnit(i));
+ }
+}
+
+LLRender::~LLRender()
+{
+ for (U32 i = 0; i < mTexUnits.size(); i++)
+ {
+ delete mTexUnits[i];
+ }
+}
+
+void LLRender::translatef(const GLfloat& x, const GLfloat& y, const GLfloat& z)
+{
+ flush();
+ glTranslatef(x,y,z);
+}
+
+void LLRender::pushMatrix()
+{
+ flush();
+ glPushMatrix();
+}
+
+void LLRender::popMatrix()
+{
+ flush();
+ glPopMatrix();
+}
+
+void LLRender::setColorMask(bool writeColor, bool writeAlpha)
+{
+ setColorMask(writeColor, writeColor, writeColor, writeAlpha);
+}
+
+void LLRender::setColorMask(bool writeColorR, bool writeColorG, bool writeColorB, bool writeAlpha)
+{
+ flush();
+ glColorMask(writeColorR, writeColorG, writeColorB, writeAlpha);
+}
+
+void LLRender::setSceneBlendType(eBlendType type)
+{
+ flush();
+ switch (type)
+ {
+ case BT_ALPHA:
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ break;
+ case BT_ADD:
+ glBlendFunc(GL_ONE, GL_ONE);
+ break;
+ case BT_ADD_WITH_ALPHA:
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+ break;
+ case BT_MULT:
+ glBlendFunc(GL_DST_COLOR, GL_ZERO);
+ break;
+ case BT_MULT_X2:
+ glBlendFunc(GL_DST_COLOR, GL_SRC_COLOR);
+ break;
+ case BT_REPLACE:
+ glBlendFunc(GL_ONE, GL_ZERO);
+ break;
+ default:
+ llerrs << "Unknown Scene Blend Type: " << type << llendl;
+ break;
+ }
+}
+
+void LLRender::setAlphaRejectSettings(eCompareFunc func, F32 value)
+{
+ flush();
+ if (func == CF_DEFAULT)
+ {
+ glAlphaFunc(GL_GREATER, 0.01f);
+ }
+ else
+ {
+ glAlphaFunc(sGLCompareFunc[func], value);
+ }
+}
+
+void LLRender::blendFunc(eBlendFactor sfactor, eBlendFactor dfactor)
+{
+ flush();
+ glBlendFunc(sGLBlendFactor[sfactor], sGLBlendFactor[dfactor]);
+}
+
+LLTexUnit* LLRender::getTexUnit(U32 index)
+{
+ if (index < mTexUnits.size())
+ {
+ return mTexUnits[index];
+ }
+ llerrs << "Non-existing texture unit layer requested: " << index << llendl;
+ return NULL;
+}
+
+void LLRender::begin(const GLuint& mode)
+{
+ if (mode != mMode)
+ {
+ if (mMode == LLVertexBuffer::QUADS ||
+ mMode == LLVertexBuffer::LINES ||
+ mMode == LLVertexBuffer::TRIANGLES ||
+ mMode == LLVertexBuffer::POINTS)
+ {
+ flush();
+ }
+ else if (mCount != 0)
+ {
+ llerrs << "gGL.begin() called redundantly." << llendl;
+ }
+
+ mMode = mode;
+ }
+}
+
+void LLRender::end()
+{
+ if (mCount == 0)
+ {
+ return;
+ //IMM_ERRS << "GL begin and end called with no vertices specified." << llendl;
+ }
+
+ if ((mMode != LLVertexBuffer::QUADS &&
+ mMode != LLVertexBuffer::LINES &&
+ mMode != LLVertexBuffer::TRIANGLES &&
+ mMode != LLVertexBuffer::POINTS) ||
+ mCount > 2048)
+ {
+ flush();
+ }
+}
+void LLRender::flush()
+{
+ if (mCount > 0)
+ {
+#if 0
+ if (!glIsEnabled(GL_VERTEX_ARRAY))
+ {
+ llerrs << "foo 1" << llendl;
+ }
+
+ if (!glIsEnabled(GL_COLOR_ARRAY))
+ {
+ llerrs << "foo 2" << llendl;
+ }
+
+ if (!glIsEnabled(GL_TEXTURE_COORD_ARRAY))
+ {
+ llerrs << "foo 3" << llendl;
+ }
+
+ if (glIsEnabled(GL_NORMAL_ARRAY))
+ {
+ llerrs << "foo 7" << llendl;
+ }
+
+ GLvoid* pointer;
+
+ glGetPointerv(GL_VERTEX_ARRAY_POINTER, &pointer);
+ if (pointer != &(mBuffer[0].v))
+ {
+ llerrs << "foo 4" << llendl;
+ }
+
+ glGetPointerv(GL_COLOR_ARRAY_POINTER, &pointer);
+ if (pointer != &(mBuffer[0].c))
+ {
+ llerrs << "foo 5" << llendl;
+ }
+
+ glGetPointerv(GL_TEXTURE_COORD_ARRAY_POINTER, &pointer);
+ if (pointer != &(mBuffer[0].uv))
+ {
+ llerrs << "foo 6" << llendl;
+ }
+#endif
+
+ mBuffer->setBuffer(immediate_mask);
+ mBuffer->drawArrays(mMode, 0, mCount);
+
+ mVerticesp[0] = mVerticesp[mCount];
+ mTexcoordsp[0] = mTexcoordsp[mCount];
+ mColorsp[0] = mColorsp[mCount];
+ mCount = 0;
+ }
+}
+void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z)
+{
+ if (mCount >= 4096)
+ {
+ // llwarns << "GL immediate mode overflow. Some geometry not drawn." << llendl;
+ return;
+ }
+
+ mVerticesp[mCount] = LLVector3(x,y,z);
+ mCount++;
+ if (mCount < 4096)
+ {
+ mVerticesp[mCount] = mVerticesp[mCount-1];
+ mColorsp[mCount] = mColorsp[mCount-1];
+ mTexcoordsp[mCount] = mTexcoordsp[mCount-1];
+ }
+}
+void LLRender::vertex2i(const GLint& x, const GLint& y)
+{
+ vertex3f((GLfloat) x, (GLfloat) y, 0);
+}
+
+void LLRender::vertex2f(const GLfloat& x, const GLfloat& y)
+{
+ vertex3f(x,y,0);
+}
+
+void LLRender::vertex2fv(const GLfloat* v)
+{
+ vertex3f(v[0], v[1], 0);
+}
+
+void LLRender::vertex3fv(const GLfloat* v)
+{
+ vertex3f(v[0], v[1], v[2]);
+}
+
+void LLRender::texCoord2f(const GLfloat& x, const GLfloat& y)
+{
+ mTexcoordsp[mCount] = LLVector2(x,y);
+}
+
+void LLRender::texCoord2i(const GLint& x, const GLint& y)
+{
+ texCoord2f((GLfloat) x, (GLfloat) y);
+}
+
+void LLRender::texCoord2fv(const GLfloat* tc)
+{
+ texCoord2f(tc[0], tc[1]);
+}
+
+void LLRender::color4ub(const GLubyte& r, const GLubyte& g, const GLubyte& b, const GLubyte& a)
+{
+ mColorsp[mCount] = LLColor4U(r,g,b,a);
+}
+void LLRender::color4ubv(const GLubyte* c)
+{
+ color4ub(c[0], c[1], c[2], c[3]);
+}
+
+void LLRender::color4f(const GLfloat& r, const GLfloat& g, const GLfloat& b, const GLfloat& a)
+{
+ color4ub((GLubyte) (llclamp(r, 0.f, 1.f)*255),
+ (GLubyte) (llclamp(g, 0.f, 1.f)*255),
+ (GLubyte) (llclamp(b, 0.f, 1.f)*255),
+ (GLubyte) (llclamp(a, 0.f, 1.f)*255));
+}
+
+void LLRender::color4fv(const GLfloat* c)
+{
+ color4f(c[0],c[1],c[2],c[3]);
+}
+
+void LLRender::color3f(const GLfloat& r, const GLfloat& g, const GLfloat& b)
+{
+ color4f(r,g,b,1);
+}
+
+void LLRender::color3fv(const GLfloat* c)
+{
+ color4f(c[0],c[1],c[2],1);
+}
+
diff --git a/linden/indra/llrender/llrender.h b/linden/indra/llrender/llrender.h
new file mode 100644
index 0000000..03280fe
--- /dev/null
+++ b/linden/indra/llrender/llrender.h
@@ -0,0 +1,239 @@
+/**
+ * @file llrender.h
+ * @brief LLRender definition
+ *
+ * This class acts as a wrapper for OpenGL calls.
+ * The goal of this class is to minimize the number of api calls due to legacy rendering
+ * code, to define an interface for a multiple rendering API abstraction of the UI
+ * rendering, and to abstract out direct rendering calls in a way that is cleaner and easier to maintain.
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLGLRENDER_H
+#define LL_LLGLRENDER_H
+
+#include "stdtypes.h"
+#include "llgltypes.h"
+#include "llglheaders.h"
+#include "llvertexbuffer.h"
+
+class LLTexUnit
+{
+public:
+ typedef enum
+ {
+ TB_REPLACE = 0,
+ TB_ADD,
+ TB_MULT,
+ TB_MULT_X2,
+ TB_ALPHA_BLEND,
+ TB_COMBINE // Doesn't need to be set directly, setTexture___Blend() set TB_COMBINE automatically
+ } eTextureBlendType;
+
+ typedef enum
+ {
+ TBO_REPLACE = 0, // Use Source 1
+ TBO_MULT, // Multiply: ( Source1 * Source2 )
+ TBO_MULT_X2, // Multiply then scale by 2: ( 2.0 * ( Source1 * Source2 ) )
+ TBO_MULT_X4, // Multiply then scale by 4: ( 4.0 * ( Source1 * Source2 ) )
+ TBO_ADD, // Add: ( Source1 + Source2 )
+ TBO_ADD_SIGNED, // Add then subtract 0.5: ( ( Source1 + Source2 ) - 0.5 )
+ TBO_SUBTRACT, // Subtract Source2 from Source1: ( Source1 - Source2 )
+ TBO_LERP_VERT_ALPHA, // Interpolate based on Vertex Alpha (VA): ( Source1 * VA + Source2 * (1-VA) )
+ TBO_LERP_TEX_ALPHA, // Interpolate based on Texture Alpha (TA): ( Source1 * TA + Source2 * (1-TA) )
+ TBO_LERP_PREV_ALPHA, // Interpolate based on Previous Alpha (PA): ( Source1 * PA + Source2 * (1-PA) )
+ TBO_LERP_CONST_ALPHA, // Interpolate based on Const Alpha (CA): ( Source1 * CA + Source2 * (1-CA) )
+ TBO_LERP_VERT_COLOR // Interpolate based on Vertex Col (VC): ( Source1 * VC + Source2 * (1-VC) )
+ // *Note* TBO_LERP_VERTEX_COLOR only works with setTextureColorBlend(),
+ // and falls back to TBO_LERP_VERTEX_ALPHA for setTextureAlphaBlend().
+ } eTextureBlendOp;
+
+ typedef enum
+ {
+ TBS_PREV_COLOR = 0, // Color from the previous texture stage
+ TBS_PREV_ALPHA,
+ TBS_ONE_MINUS_PREV_COLOR,
+ TBS_ONE_MINUS_PREV_ALPHA,
+ TBS_TEX_COLOR, // Color from the texture bound to this stage
+ TBS_TEX_ALPHA,
+ TBS_ONE_MINUS_TEX_COLOR,
+ TBS_ONE_MINUS_TEX_ALPHA,
+ TBS_VERT_COLOR, // The vertex color currently set
+ TBS_VERT_ALPHA,
+ TBS_ONE_MINUS_VERT_COLOR,
+ TBS_ONE_MINUS_VERT_ALPHA,
+ TBS_CONST_COLOR, // The constant color value currently set
+ TBS_CONST_ALPHA,
+ TBS_ONE_MINUS_CONST_COLOR,
+ TBS_ONE_MINUS_CONST_ALPHA
+ } eTextureBlendSrc;
+
+ LLTexUnit(U32 index);
+ U32 getIndex(void);
+
+ void enable(void);
+ void disable(void);
+ void activate(void);
+
+ void bindTexture(const LLImageGL* texture);
+ void unbindTexture(void);
+
+ void setTextureBlendType(eTextureBlendType type);
+
+ inline void setTextureColorBlend(eTextureBlendOp op, eTextureBlendSrc src1, eTextureBlendSrc src2 = TBS_PREV_COLOR)
+ { setTextureCombiner(op, src1, src2, false); }
+
+ // NOTE: If *_COLOR enums are passed to src1 or src2, the corresponding *_ALPHA enum will be used instead.
+ inline void setTextureAlphaBlend(eTextureBlendOp op, eTextureBlendSrc src1, eTextureBlendSrc src2 = TBS_PREV_ALPHA)
+ { setTextureCombiner(op, src1, src2, true); }
+
+private:
+ U32 mIndex;
+ bool mIsEnabled;
+ eTextureBlendType mCurrBlendType;
+ eTextureBlendOp mCurrColorOp;
+ eTextureBlendSrc mCurrColorSrc1;
+ eTextureBlendSrc mCurrColorSrc2;
+ eTextureBlendOp mCurrAlphaOp;
+ eTextureBlendSrc mCurrAlphaSrc1;
+ eTextureBlendSrc mCurrAlphaSrc2;
+ S32 mCurrColorScale;
+ S32 mCurrAlphaScale;
+
+ void debugTextureUnit(void);
+ void setColorScale(S32 scale);
+ void setAlphaScale(S32 scale);
+ GLint getTextureSource(eTextureBlendSrc src);
+ GLint getTextureSourceType(eTextureBlendSrc src, bool isAlpha = false);
+ void setTextureCombiner(eTextureBlendOp op, eTextureBlendSrc src1, eTextureBlendSrc src2, bool isAlpha = false);
+};
+
+class LLRender
+{
+ friend class LLTexUnit;
+public:
+ typedef enum
+ {
+ CF_NEVER = 0,
+ CF_ALWAYS,
+ CF_LESS,
+ CF_LESS_EQUAL,
+ CF_EQUAL,
+ CF_NOT_EQUAL,
+ CF_GREATER_EQUAL,
+ CF_GREATER,
+ CF_DEFAULT
+ } eCompareFunc;
+
+ typedef enum
+ {
+ BT_ALPHA = 0,
+ BT_ADD,
+ BT_ADD_WITH_ALPHA, // Additive blend modulated by the fragment's alpha.
+ BT_MULT,
+ BT_MULT_X2,
+ BT_REPLACE
+ } eBlendType;
+
+ typedef enum
+ {
+ BF_ONE = 0,
+ BF_ZERO,
+ BF_DEST_COLOR,
+ BF_SOURCE_COLOR,
+ BF_ONE_MINUS_DEST_COLOR,
+ BF_ONE_MINUS_SOURCE_COLOR,
+ BF_DEST_ALPHA,
+ BF_SOURCE_ALPHA,
+ BF_ONE_MINUS_DEST_ALPHA,
+ BF_ONE_MINUS_SOURCE_ALPHA
+ } eBlendFactor;
+
+ LLRender();
+ ~LLRender();
+
+ void translatef(const GLfloat& x, const GLfloat& y, const GLfloat& z);
+ void pushMatrix();
+ void popMatrix();
+
+ void flush();
+
+ void begin(const GLuint& mode);
+ void end();
+ void vertex2i(const GLint& x, const GLint& y);
+ void vertex2f(const GLfloat& x, const GLfloat& y);
+ void vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z);
+ void vertex2fv(const GLfloat* v);
+ void vertex3fv(const GLfloat* v);
+
+ void texCoord2i(const GLint& x, const GLint& y);
+ void texCoord2f(const GLfloat& x, const GLfloat& y);
+ void texCoord2fv(const GLfloat* tc);
+
+ void color4ub(const GLubyte& r, const GLubyte& g, const GLubyte& b, const GLubyte& a);
+ void color4f(const GLfloat& r, const GLfloat& g, const GLfloat& b, const GLfloat& a);
+ void color4fv(const GLfloat* c);
+ void color3f(const GLfloat& r, const GLfloat& g, const GLfloat& b);
+ void color3fv(const GLfloat* c);
+ void color4ubv(const GLubyte* c);
+
+ void setColorMask(bool writeColor, bool writeAlpha);
+ void setColorMask(bool writeColorR, bool writeColorG, bool writeColorB, bool writeAlpha);
+ void setSceneBlendType(eBlendType type);
+
+ void setAlphaRejectSettings(eCompareFunc func, F32 value = 0.01f);
+
+ void blendFunc(eBlendFactor sfactor, eBlendFactor dfactor);
+
+ LLTexUnit* getTexUnit(U32 index);
+
+ typedef struct Vertex
+ {
+ GLfloat v[3];
+ GLubyte c[4];
+ GLfloat uv[2];
+ };
+
+public:
+
+private:
+ U32 mCount;
+ U32 mMode;
+ U32 mCurrTextureUnitIndex;
+ LLPointer mBuffer;
+ LLStrider mVerticesp;
+ LLStrider mTexcoordsp;
+ LLStrider mColorsp;
+ std::vector mTexUnits;
+};
+
+
+
+extern LLRender gGL;
+
+#endif
diff --git a/linden/indra/llrender/llrender.vcproj b/linden/indra/llrender/llrender.vcproj
index 2c6e2d2..d9144cb 100644
--- a/linden/indra/llrender/llrender.vcproj
+++ b/linden/indra/llrender/llrender.vcproj
@@ -165,7 +165,7 @@
RelativePath=".\llgldbg.cpp">
+ RelativePath=".\llrender.cpp">
@@ -206,7 +206,7 @@
RelativePath=".\llgldbg.h">
+ RelativePath=".\llrender.h">
diff --git a/linden/indra/llrender/llrender_vc8.vcproj b/linden/indra/llrender/llrender_vc8.vcproj
index 8c0f82a..2147cec 100644
--- a/linden/indra/llrender/llrender_vc8.vcproj
+++ b/linden/indra/llrender/llrender_vc8.vcproj
@@ -243,11 +243,11 @@
>
r("button");
@@ -574,9 +574,9 @@ void LLButton::draw()
mImagep->draw(getLocalRect(), getEnabled() ? mImageColor : mDisabledImageColor );
if (mCurGlowStrength > 0.01f)
{
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+ gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA);
mImagep->drawSolid(0, 0, getRect().getWidth(), getRect().getHeight(), LLColor4(1.f, 1.f, 1.f, mCurGlowStrength));
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
}
else
@@ -584,9 +584,9 @@ void LLButton::draw()
mImagep->draw(0, 0, getEnabled() ? mImageColor : mDisabledImageColor );
if (mCurGlowStrength > 0.01f)
{
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+ gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA);
mImagep->drawSolid(0, 0, LLColor4(1.f, 1.f, 1.f, mCurGlowStrength));
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
}
}
diff --git a/linden/indra/llui/llcombobox.cpp b/linden/indra/llui/llcombobox.cpp
index 0523a11..d5edba7 100644
--- a/linden/indra/llui/llcombobox.cpp
+++ b/linden/indra/llui/llcombobox.cpp
@@ -565,6 +565,8 @@ void LLComboBox::showList()
S32 min_width = getRect().getWidth();
S32 max_width = llmax(min_width, MAX_COMBO_WIDTH);
+ // make sure we have up to date content width metrics
+ mList->calcColumnWidths();
S32 list_width = llclamp(mList->getMaxContentWidth(), min_width, max_width);
if (mListPosition == BELOW)
@@ -781,8 +783,18 @@ BOOL LLComboBox::handleKeyHere(KEY key, MASK mask)
mList->highlightNthItem(mList->getItemIndex(last_selected_item));
}
result = mList->handleKeyHere(key, mask);
+
+ // will only see return key if it is originating from line editor
+ // since the dropdown button eats the key
+ if (key == KEY_RETURN)
+ {
+ // don't show list and don't eat key input when committing
+ // free-form text entry with RETURN since user already knows
+ // what they are trying to select
+ return FALSE;
+ }
// if selection has changed, pop open list
- if (mList->getLastSelectedItem() != last_selected_item)
+ else if (mList->getLastSelectedItem() != last_selected_item)
{
showList();
}
diff --git a/linden/indra/llui/llfloater.cpp b/linden/indra/llui/llfloater.cpp
index bf50830..759fae0 100644
--- a/linden/indra/llui/llfloater.cpp
+++ b/linden/indra/llui/llfloater.cpp
@@ -832,8 +832,14 @@ void LLFloater::setMinimized(BOOL minimize)
for (S32 i = 0; i < 4; i++)
{
- if (mResizeBar[i]) mResizeBar[i]->setEnabled(FALSE);
- if (mResizeHandle[i]) mResizeHandle[i]->setEnabled(FALSE);
+ if (mResizeBar[i] != NULL)
+ {
+ mResizeBar[i]->setEnabled(FALSE);
+ }
+ if (mResizeHandle[i] != NULL)
+ {
+ mResizeHandle[i]->setEnabled(FALSE);
+ }
}
mMinimized = TRUE;
@@ -875,8 +881,14 @@ void LLFloater::setMinimized(BOOL minimize)
for (S32 i = 0; i < 4; i++)
{
- if (mResizeBar[i]) mResizeBar[i]->setEnabled(isResizable());
- if (mResizeHandle[i]) mResizeHandle[i]->setEnabled(isResizable());
+ if (mResizeBar[i] != NULL)
+ {
+ mResizeBar[i]->setEnabled(isResizable());
+ }
+ if (mResizeHandle[i] != NULL)
+ {
+ mResizeHandle[i]->setEnabled(isResizable());
+ }
}
mMinimized = FALSE;
diff --git a/linden/indra/llui/lllineeditor.cpp b/linden/indra/llui/lllineeditor.cpp
index aeb906c..a12c9d8 100644
--- a/linden/indra/llui/lllineeditor.cpp
+++ b/linden/indra/llui/lllineeditor.cpp
@@ -132,7 +132,8 @@ LLLineEditor::LLLineEditor(const LLString& name, const LLRect& rect,
mSelectAllonFocusReceived( FALSE ),
mPassDelete(FALSE),
mReadOnly(FALSE),
- mImage( sImage )
+ mImage( sImage ),
+ mReplaceNewlinesWithSpaces( TRUE )
{
llassert( max_length_bytes > 0 );
@@ -961,7 +962,7 @@ void LLLineEditor::paste()
LLWString clean_string(paste);
LLWString::replaceTabsWithSpaces(clean_string, 1);
//clean_string = wstring_detabify(paste, 1);
- LLWString::replaceChar(clean_string, '\n', ' ');
+ LLWString::replaceChar(clean_string, '\n', mReplaceNewlinesWithSpaces ? ' ' : 182); // 182 == paragraph character
// Insert the string
@@ -2547,6 +2548,10 @@ S32 LLLineEditor::getPreeditFontSize() const
return llround(mGLFont->getLineHeight() * LLUI::sGLScaleFactor.mV[VY]);
}
+void LLLineEditor::setReplaceNewlinesWithSpaces(BOOL replace)
+{
+ mReplaceNewlinesWithSpaces = replace;
+}
static LLRegisterWidget r2("search_editor");
diff --git a/linden/indra/llui/lllineeditor.h b/linden/indra/llui/lllineeditor.h
index bf0dcb5..c96e34d 100644
--- a/linden/indra/llui/lllineeditor.h
+++ b/linden/indra/llui/lllineeditor.h
@@ -211,6 +211,8 @@ public:
void setEnableLineHistory( BOOL enabled ) { mHaveHistory = enabled; } // switches line history on or off
void updateHistory(); // stores current line in history
+ void setReplaceNewlinesWithSpaces(BOOL replace);
+
private:
// private helper methods
void removeChar();
@@ -311,6 +313,8 @@ private:
// Instances that by default point to the statics but can be overidden in XML.
LLPointer mImage;
+ BOOL mReplaceNewlinesWithSpaces; // if false, will replace pasted newlines with paragraph symbol.
+
// private helper class
class LLLineEditorRollback
{
diff --git a/linden/indra/llui/llmenugl.cpp b/linden/indra/llui/llmenugl.cpp
index f2486f1..5e46ab7 100644
--- a/linden/indra/llui/llmenugl.cpp
+++ b/linden/indra/llui/llmenugl.cpp
@@ -47,7 +47,7 @@
#include "llmath.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llfocusmgr.h"
#include "llfont.h"
#include "llcoord.h"
diff --git a/linden/indra/llui/llresizebar.cpp b/linden/indra/llui/llresizebar.cpp
index e89bfee..fd571a1 100644
--- a/linden/indra/llui/llresizebar.cpp
+++ b/linden/indra/llui/llresizebar.cpp
@@ -50,6 +50,7 @@ LLResizeBar::LLResizeBar( const LLString& name, LLView* resizing_view, const LLR
mMaxSize( max_size ),
mSide( side ),
mSnappingEnabled(TRUE),
+ mAllowDoubleClickSnapping(TRUE),
mResizingView(resizing_view)
{
// set up some generically good follow code.
@@ -260,27 +261,31 @@ BOOL LLResizeBar::handleDoubleClick(S32 x, S32 y, MASK mask)
LLRect orig_rect = mResizingView->getRect();
LLRect scaled_rect = orig_rect;
- if (mSnappingEnabled)
+ if (mSnappingEnabled && mAllowDoubleClickSnapping)
{
switch( mSide )
{
case LEFT:
mResizingView->findSnapEdge(scaled_rect.mLeft, LLCoordGL(0, 0), SNAP_LEFT, SNAP_PARENT_AND_SIBLINGS, S32_MAX);
+ scaled_rect.mLeft = scaled_rect.mRight - llclamp(scaled_rect.getWidth(), mMinSize, mMaxSize);
break;
case TOP:
mResizingView->findSnapEdge(scaled_rect.mTop, LLCoordGL(0, 0), SNAP_TOP, SNAP_PARENT_AND_SIBLINGS, S32_MAX);
+ scaled_rect.mTop = scaled_rect.mBottom + llclamp(scaled_rect.getHeight(), mMinSize, mMaxSize);
break;
case RIGHT:
mResizingView->findSnapEdge(scaled_rect.mRight, LLCoordGL(0, 0), SNAP_RIGHT, SNAP_PARENT_AND_SIBLINGS, S32_MAX);
+ scaled_rect.mRight = scaled_rect.mLeft + llclamp(scaled_rect.getWidth(), mMinSize, mMaxSize);
break;
case BOTTOM:
mResizingView->findSnapEdge(scaled_rect.mBottom, LLCoordGL(0, 0), SNAP_BOTTOM, SNAP_PARENT_AND_SIBLINGS, S32_MAX);
+ scaled_rect.mBottom = scaled_rect.mTop - llclamp(scaled_rect.getHeight(), mMinSize, mMaxSize);
break;
}
+
+ mResizingView->userSetShape(scaled_rect);
}
- mResizingView->reshape(scaled_rect.getWidth(), scaled_rect.getHeight());
- mResizingView->setOrigin(scaled_rect.mLeft, scaled_rect.mBottom);
return TRUE;
}
diff --git a/linden/indra/llui/llresizebar.h b/linden/indra/llui/llresizebar.h
index d03dafa..f8a7514 100644
--- a/linden/indra/llui/llresizebar.h
+++ b/linden/indra/llui/llresizebar.h
@@ -50,6 +50,7 @@ public:
void setResizeLimits( S32 min_size, S32 max_size ) { mMinSize = min_size; mMaxSize = max_size; }
void setEnableSnapping(BOOL enable) { mSnappingEnabled = enable; }
+ void setAllowDoubleClickSnapping(BOOL allow) { mAllowDoubleClickSnapping = allow; }
private:
S32 mDragLastScreenX;
@@ -61,6 +62,7 @@ private:
S32 mMaxSize;
const Side mSide;
BOOL mSnappingEnabled;
+ BOOL mAllowDoubleClickSnapping;
LLView* mResizingView;
};
diff --git a/linden/indra/llui/llscrollbar.cpp b/linden/indra/llui/llscrollbar.cpp
index 8940b80..3d412c1 100644
--- a/linden/indra/llui/llscrollbar.cpp
+++ b/linden/indra/llui/llscrollbar.cpp
@@ -46,7 +46,7 @@
#include "llwindow.h"
#include "llglheaders.h"
#include "llcontrol.h"
-#include "llglimmediate.h"
+#include "llrender.h"
LLScrollbar::LLScrollbar(
const LLString& name, LLRect rect,
@@ -520,9 +520,9 @@ void LLScrollbar::draw()
rounded_rect_imagep->draw(mThumbRect, mThumbColor);
if (mCurGlowStrength > 0.01f)
{
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+ gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA);
rounded_rect_imagep->drawSolid(mThumbRect, LLColor4(1.f, 1.f, 1.f, mCurGlowStrength));
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
}
diff --git a/linden/indra/llui/llscrollcontainer.cpp b/linden/indra/llui/llscrollcontainer.cpp
index f0b0b81..1217a58 100644
--- a/linden/indra/llui/llscrollcontainer.cpp
+++ b/linden/indra/llui/llscrollcontainer.cpp
@@ -33,7 +33,7 @@
#include "linden_common.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llscrollcontainer.h"
#include "llscrollbar.h"
diff --git a/linden/indra/llui/llscrolllistctrl.cpp b/linden/indra/llui/llscrolllistctrl.cpp
index 32c4e82..9693df4 100644
--- a/linden/indra/llui/llscrolllistctrl.cpp
+++ b/linden/indra/llui/llscrolllistctrl.cpp
@@ -43,7 +43,7 @@
#include "llclipboard.h"
#include "llfocusmgr.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llglheaders.h"
#include "llresmgr.h"
#include "llscrollbar.h"
@@ -1117,9 +1117,7 @@ BOOL LLScrollListCtrl::selectItemRange( S32 first_index, S32 last_index )
if( itemp->getEnabled() )
{
selectItem(itemp, FALSE);
- success = TRUE;
- if (!success)
- mOriginalSelection = first_index;
+ success = TRUE;
}
}
else
@@ -1198,7 +1196,7 @@ void LLScrollListCtrl::deleteItems(const LLSD& sd)
mLastSelected = NULL;
}
delete itemp;
- mItemList.erase(iter++);
+ iter = mItemList.erase(iter);
}
else
{
diff --git a/linden/indra/llui/llspinctrl.cpp b/linden/indra/llui/llspinctrl.cpp
index 9e85b20..f196975 100644
--- a/linden/indra/llui/llspinctrl.cpp
+++ b/linden/indra/llui/llspinctrl.cpp
@@ -249,6 +249,18 @@ void LLSpinCtrl::setValue(const LLSD& value )
}
}
+//no matter if Editor has the focus, update the value
+void LLSpinCtrl::forceSetValue(const LLSD& value )
+{
+ F32 v = (F32)value.asReal();
+ if (mValue != v || !mbHasBeenSet)
+ {
+ mbHasBeenSet = TRUE;
+ mValue = v;
+
+ updateEditor();
+ }
+}
void LLSpinCtrl::clear()
{
diff --git a/linden/indra/llui/llspinctrl.h b/linden/indra/llui/llspinctrl.h
index 790e216..5d040fd 100644
--- a/linden/indra/llui/llspinctrl.h
+++ b/linden/indra/llui/llspinctrl.h
@@ -66,6 +66,7 @@ public:
virtual LLXMLNodePtr getXML(bool save_children = true) const;
static LLView* fromXML(LLXMLNodePtr node, LLView *parent, class LLUICtrlFactory *factory);
+ virtual void forceSetValue(const LLSD& value ) ;
virtual void setValue(const LLSD& value );
virtual LLSD getValue() const { return mValue; }
F32 get() const { return (F32)getValue().asReal(); }
@@ -87,6 +88,7 @@ public:
virtual void setIncrement(F32 inc) { mIncrement = inc; }
virtual F32 getMinValue() { return mMinValue ; }
virtual F32 getMaxValue() { return mMaxValue ; }
+ virtual F32 getIncrement() { return mIncrement ; }
void setLabel(const LLStringExplicit& label);
void setLabelColor(const LLColor4& c) { mTextEnabledColor = c; }
diff --git a/linden/indra/llui/llstyle.h b/linden/indra/llui/llstyle.h
index 6f0099c..56f1398 100644
--- a/linden/indra/llui/llstyle.h
+++ b/linden/indra/llui/llstyle.h
@@ -37,7 +37,7 @@
#include "llfont.h"
#include "llui.h"
-class LLStyle
+class LLStyle : public LLRefCount
{
public:
LLStyle();
@@ -46,8 +46,6 @@ public:
LLStyle &operator=(const LLStyle &rhs);
- virtual ~LLStyle() { }
-
virtual void init (BOOL is_visible, const LLColor4 &color, const LLString& font_name);
virtual const LLColor4& getColor() const { return mColor; }
@@ -101,6 +99,9 @@ public:
S32 mImageWidth;
S32 mImageHeight;
+protected:
+ virtual ~LLStyle() { }
+
private:
BOOL mVisible;
LLColor4 mColor;
@@ -111,4 +112,6 @@ private:
BOOL mIsEmbeddedItem;
};
+typedef LLPointer LLStyleSP;
+
#endif // LL_LLSTYLE_H
diff --git a/linden/indra/llui/lltabcontainer.cpp b/linden/indra/llui/lltabcontainer.cpp
index 44f1f20..827d4fb 100644
--- a/linden/indra/llui/lltabcontainer.cpp
+++ b/linden/indra/llui/lltabcontainer.cpp
@@ -40,7 +40,7 @@
#include "llcriticaldamp.h"
#include "lluictrlfactory.h"
#include "lltabcontainervertical.h"
-#include "llglimmediate.h"
+#include "llrender.h"
const F32 SCROLL_STEP_TIME = 0.4f;
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp
index 4ed936f..71522e5 100644
--- a/linden/indra/llui/lltexteditor.cpp
+++ b/linden/indra/llui/lltexteditor.cpp
@@ -37,7 +37,7 @@
#include "llfontgl.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llui.h"
#include "lluictrlfactory.h"
#include "llrect.h"
@@ -1244,14 +1244,14 @@ BOOL LLTextEditor::handleHover(S32 x, S32 y, MASK mask)
const LLTextSegment* cur_segment = getSegmentAtLocalPos( x, y );
if( cur_segment )
{
- if(cur_segment->getStyle().isLink())
+ if(cur_segment->getStyle()->isLink())
{
lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << " (over link, inactive)" << llendl;
getWindow()->setCursor(UI_CURSOR_HAND);
handled = TRUE;
}
else
- if(cur_segment->getStyle().getIsEmbeddedItem())
+ if(cur_segment->getStyle()->getIsEmbeddedItem())
{
lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << " (over embedded item, inactive)" << llendl;
getWindow()->setCursor(UI_CURSOR_HAND);
@@ -2928,23 +2928,26 @@ void LLTextEditor::drawText()
S32 clipped_len = clipped_end - seg_start;
if( clipped_len > 0 )
{
- LLStyle style = cur_segment->getStyle();
- if ( style.isImage() && (cur_segment->getStart() >= seg_start) && (cur_segment->getStart() <= clipped_end))
+ LLStyleSP style = cur_segment->getStyle();
+ if ( style->isImage() && (cur_segment->getStart() >= seg_start) && (cur_segment->getStart() <= clipped_end))
{
- LLUIImagePtr image = style.getImage();
- image->draw(llround(text_x), llround(text_y)+line_height-style.mImageHeight, style.mImageWidth, style.mImageHeight);
+ S32 style_image_height = style->mImageHeight;
+ S32 style_image_width = style->mImageWidth;
+ LLUIImagePtr image = style->getImage();
+ image->draw(llround(text_x), llround(text_y)+line_height-style_image_height,
+ style_image_width, style_image_height);
}
- if (cur_segment == mHoverSegment && style.getIsEmbeddedItem())
+ if (cur_segment == mHoverSegment && style->getIsEmbeddedItem())
{
- style.mUnderline = TRUE;
+ style->mUnderline = TRUE;
}
S32 left_pos = llmin( mSelectionStart, mSelectionEnd );
if ( (mParseHTML) && (left_pos > seg_start) && (left_pos < clipped_end) && mIsSelecting && (mSelectionStart == mSelectionEnd) )
{
- mHTML = style.getLinkHREF();
+ mHTML = style->getLinkHREF();
}
drawClippedSegment( text, seg_start, clipped_end, text_x, text_y, selection_left, selection_right, style, &text_x );
@@ -2963,38 +2966,38 @@ void LLTextEditor::drawText()
}
// Draws a single text segment, reversing the color for selection if needed.
-void LLTextEditor::drawClippedSegment(const LLWString &text, S32 seg_start, S32 seg_end, F32 x, F32 y, S32 selection_left, S32 selection_right, const LLStyle& style, F32* right_x )
+void LLTextEditor::drawClippedSegment(const LLWString &text, S32 seg_start, S32 seg_end, F32 x, F32 y, S32 selection_left, S32 selection_right, const LLStyleSP& style, F32* right_x )
{
- if (!style.isVisible())
+ if (!style->isVisible())
{
return;
}
const LLFontGL* font = mGLFont;
- LLColor4 color = style.getColor();
+ LLColor4 color = style->getColor();
- if ( style.getFontString()[0] )
+ if ( style->getFontString()[0] )
{
- font = LLResMgr::getInstance()->getRes(style.getFontID());
+ font = LLResMgr::getInstance()->getRes(style->getFontID());
}
U8 font_flags = LLFontGL::NORMAL;
- if (style.mBold)
+ if (style->mBold)
{
font_flags |= LLFontGL::BOLD;
}
- if (style.mItalic)
+ if (style->mItalic)
{
font_flags |= LLFontGL::ITALIC;
}
- if (style.mUnderline)
+ if (style->mUnderline)
{
font_flags |= LLFontGL::UNDERLINE;
}
- if (style.getIsEmbeddedItem())
+ if (style->getIsEmbeddedItem())
{
if (mReadOnly)
{
@@ -3434,17 +3437,17 @@ void LLTextEditor::appendColoredText(const LLString &new_text,
const LLColor4 &color,
const LLString& font_name)
{
- LLStyle style;
- style.setVisible(true);
- style.setColor(color);
- style.setFontName(font_name);
+ LLStyleSP style(new LLStyle);
+ style->setVisible(true);
+ style->setColor(color);
+ style->setFontName(font_name);
appendStyledText(new_text, allow_undo, prepend_newline, &style);
}
void LLTextEditor::appendStyledText(const LLString &new_text,
bool allow_undo,
bool prepend_newline,
- const LLStyle* style)
+ const LLStyleSP *stylep)
{
if(mParseHTML)
{
@@ -3453,17 +3456,17 @@ void LLTextEditor::appendStyledText(const LLString &new_text,
LLString text = new_text;
while ( findHTML(text, &start, &end) )
{
- LLStyle html;
- html.setVisible(true);
- html.setColor(mLinkColor);
- if (style)
+ LLStyleSP html(new LLStyle);
+ html->setVisible(true);
+ html->setColor(mLinkColor);
+ if (stylep)
{
- html.setFontName(style->getFontString());
+ html->setFontName((*stylep)->getFontString());
}
- html.mUnderline = TRUE;
+ html->mUnderline = TRUE;
- if (start > 0) appendText(text.substr(0,start),allow_undo, prepend_newline, style);
- html.setLinkHREF(text.substr(start,end-start));
+ if (start > 0) appendText(text.substr(0,start),allow_undo, prepend_newline, stylep);
+ html->setLinkHREF(text.substr(start,end-start));
appendText(text.substr(start, end-start),allow_undo, prepend_newline, &html);
if (end < (S32)text.length())
{
@@ -3475,17 +3478,17 @@ void LLTextEditor::appendStyledText(const LLString &new_text,
break;
}
}
- if (end < (S32)text.length()) appendText(text,allow_undo, prepend_newline, style);
+ if (end < (S32)text.length()) appendText(text,allow_undo, prepend_newline, stylep);
}
else
{
- appendText(new_text, allow_undo, prepend_newline, style);
+ appendText(new_text, allow_undo, prepend_newline, stylep);
}
}
// Appends new text to end of document
void LLTextEditor::appendText(const LLString &new_text, bool allow_undo, bool prepend_newline,
- const LLStyle* segment_style)
+ const LLStyleSP *stylep)
{
// Save old state
BOOL was_scrolled_to_bottom = (mScrollbar->getDocPos() == mScrollbar->getDocPosMax());
@@ -3513,11 +3516,11 @@ void LLTextEditor::appendText(const LLString &new_text, bool allow_undo, bool pr
append(utf8str_to_wstring(new_text), TRUE );
}
- if (segment_style)
+ if (stylep)
{
S32 segment_start = old_length;
S32 segment_end = getLength();
- LLTextSegment* segment = new LLTextSegment(*segment_style, segment_start, segment_end );
+ LLTextSegment* segment = new LLTextSegment(*stylep, segment_start, segment_end );
mSegments.push_back(segment);
}
@@ -3803,8 +3806,8 @@ void LLTextEditor::findEmbeddedItemSegments()
in_text = TRUE;
}
- LLStyle embedded_style;
- embedded_style.setIsEmbeddedItem( TRUE );
+ LLStyleSP embedded_style(new LLStyle);
+ embedded_style->setIsEmbeddedItem( TRUE );
// Start with i just after the first embedded item
while ( text[idx] )
@@ -4003,7 +4006,7 @@ BOOL LLTextEditor::exportBuffer(LLString &buffer )
LLTextSegment::LLTextSegment(S32 start) : mStart(start)
{
}
-LLTextSegment::LLTextSegment( const LLStyle& style, S32 start, S32 end ) :
+LLTextSegment::LLTextSegment( const LLStyleSP& style, S32 start, S32 end ) :
mStyle( style ),
mStart( start),
mEnd( end ),
@@ -4011,9 +4014,8 @@ LLTextSegment::LLTextSegment( const LLStyle& style, S32 start, S32 end ) :
mIsDefault(FALSE)
{
}
-LLTextSegment::LLTextSegment(
- const LLColor4& color, S32 start, S32 end, BOOL is_visible) :
- mStyle( is_visible, color,"" ),
+LLTextSegment::LLTextSegment( const LLColor4& color, S32 start, S32 end, BOOL is_visible) :
+ mStyle(new LLStyle(is_visible,color,"")),
mStart( start),
mEnd( end ),
mToken(NULL),
@@ -4021,7 +4023,7 @@ LLTextSegment::LLTextSegment(
{
}
LLTextSegment::LLTextSegment( const LLColor4& color, S32 start, S32 end ) :
- mStyle( TRUE, color,"" ),
+ mStyle(new LLStyle(TRUE, color,"" )),
mStart( start),
mEnd( end ),
mToken(NULL),
@@ -4029,7 +4031,7 @@ LLTextSegment::LLTextSegment( const LLColor4& color, S32 start, S32 end ) :
{
}
LLTextSegment::LLTextSegment( const LLColor3& color, S32 start, S32 end ) :
- mStyle( TRUE, color,"" ),
+ mStyle(new LLStyle(TRUE, color,"" )),
mStart( start),
mEnd( end ),
mToken(NULL),
diff --git a/linden/indra/llui/lltexteditor.h b/linden/indra/llui/lltexteditor.h
index 54a34cc..d5a68ca 100644
--- a/linden/indra/llui/lltexteditor.h
+++ b/linden/indra/llui/lltexteditor.h
@@ -139,7 +139,7 @@ public:
void insertText(const LLString &text);
// appends text at end
void appendText(const LLString &wtext, bool allow_undo, bool prepend_newline,
- const LLStyle* segment_style = NULL);
+ const LLStyleSP *stylep = NULL);
void appendColoredText(const LLString &wtext, bool allow_undo,
bool prepend_newline,
@@ -148,7 +148,7 @@ public:
// if styled text starts a line, you need to prepend a newline.
void appendStyledText(const LLString &new_text, bool allow_undo,
bool prepend_newline,
- const LLStyle* style);
+ const LLStyleSP *stylep = NULL);
// Removes text from the end of document
// Does not change highlight or cursor position.
@@ -429,7 +429,7 @@ private:
void drawSelectionBackground();
void drawCursor();
void drawText();
- void drawClippedSegment(const LLWString &wtext, S32 seg_start, S32 seg_end, F32 x, F32 y, S32 selection_left, S32 selection_right, const LLStyle& color, F32* right_x);
+ void drawClippedSegment(const LLWString &wtext, S32 seg_start, S32 seg_end, F32 x, F32 y, S32 selection_left, S32 selection_right, const LLStyleSP& color, F32* right_x);
//
// Data
@@ -528,7 +528,7 @@ class LLTextSegment
public:
// for creating a compare value
LLTextSegment(S32 start);
- LLTextSegment( const LLStyle& style, S32 start, S32 end );
+ LLTextSegment( const LLStyleSP& style, S32 start, S32 end );
LLTextSegment( const LLColor4& color, S32 start, S32 end, BOOL is_visible);
LLTextSegment( const LLColor4& color, S32 start, S32 end );
LLTextSegment( const LLColor3& color, S32 start, S32 end );
@@ -536,10 +536,10 @@ public:
S32 getStart() const { return mStart; }
S32 getEnd() const { return mEnd; }
void setEnd( S32 end ) { mEnd = end; }
- const LLColor4& getColor() const { return mStyle.getColor(); }
- void setColor(const LLColor4 &color) { mStyle.setColor(color); }
- const LLStyle& getStyle() const { return mStyle; }
- void setStyle(const LLStyle &style) { mStyle = style; }
+ const LLColor4& getColor() const { return mStyle->getColor(); }
+ void setColor(const LLColor4 &color) { mStyle->setColor(color); }
+ const LLStyleSP& getStyle() const { return mStyle; }
+ void setStyle(const LLStyleSP &style) { mStyle = style; }
void setIsDefault(BOOL b) { mIsDefault = b; }
BOOL getIsDefault() const { return mIsDefault; }
void setToken( LLKeywordToken* token ) { mToken = token; }
@@ -557,7 +557,7 @@ public:
};
private:
- LLStyle mStyle;
+ LLStyleSP mStyle;
S32 mStart;
S32 mEnd;
LLKeywordToken* mToken;
diff --git a/linden/indra/llui/llui.cpp b/linden/indra/llui/llui.cpp
index 45b1175..d2084e3 100644
--- a/linden/indra/llui/llui.cpp
+++ b/linden/indra/llui/llui.cpp
@@ -42,7 +42,7 @@
#include "v2math.h"
#include "v4color.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llrect.h"
#include "llimagegl.h"
//#include "llviewerimage.h"
@@ -493,18 +493,8 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLIma
if (solid_color)
{
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_MODULATE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
}
gGL.pushMatrix();
@@ -640,7 +630,7 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLIma
if (solid_color)
{
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
}
diff --git a/linden/indra/llui/lluictrlfactory.cpp b/linden/indra/llui/lluictrlfactory.cpp
index cc8135c..7df6ebe 100644
--- a/linden/indra/llui/lluictrlfactory.cpp
+++ b/linden/indra/llui/lluictrlfactory.cpp
@@ -104,10 +104,17 @@ static LLRegisterWidget r2("pad");
// LLUICtrlFactory()
//-----------------------------------------------------------------------------
LLUICtrlFactory::LLUICtrlFactory()
+ : mDummyPanel(NULL)
{
setupPaths();
}
+LLUICtrlFactory::~LLUICtrlFactory()
+{
+ delete mDummyPanel;
+ mDummyPanel = NULL;
+}
+
void LLUICtrlFactory::setupPaths()
{
LLString filename = gDirUtilp->getExpandedFilename(LL_PATH_SKINS, "paths.xml");
@@ -428,10 +435,6 @@ void LLUICtrlFactory::rebuild()
LLView *LLUICtrlFactory::createCtrlWidget(LLPanel *parent, LLXMLNodePtr node)
{
- // panel for holding dummy widgets, so they have a parent for layout purposes, etc.
- // does not manage lifetime of child widgets
- static LLPanel dummy_panel;
-
LLString ctrl_type = node->getName()->mString;
LLString::toLower(ctrl_type);
@@ -445,7 +448,11 @@ LLView *LLUICtrlFactory::createCtrlWidget(LLPanel *parent, LLXMLNodePtr node)
if (parent == NULL)
{
- parent = &dummy_panel;
+ if (mDummyPanel == NULL)
+ {
+ mDummyPanel = new LLPanel;
+ }
+ parent = mDummyPanel;
}
LLView *ctrl = func(node, parent, this);
diff --git a/linden/indra/llui/lluictrlfactory.h b/linden/indra/llui/lluictrlfactory.h
index b9325a0..0c1d9dd 100644
--- a/linden/indra/llui/lluictrlfactory.h
+++ b/linden/indra/llui/lluictrlfactory.h
@@ -46,7 +46,7 @@ class LLUICtrlFactory : public LLSingleton
public:
LLUICtrlFactory();
// do not call! needs to be public so run-time can clean up the singleton
- virtual ~LLUICtrlFactory() {}
+ virtual ~LLUICtrlFactory();
void setupPaths();
@@ -88,6 +88,8 @@ private:
std::deque mFactoryStack;
static std::vector mXUIPaths;
+
+ LLPanel* mDummyPanel;
};
diff --git a/linden/indra/llui/llview.cpp b/linden/indra/llui/llview.cpp
index 750821c..91c9564 100644
--- a/linden/indra/llui/llview.cpp
+++ b/linden/indra/llui/llview.cpp
@@ -37,7 +37,7 @@
#include
#include
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llevent.h"
#include "llfontgl.h"
#include "llfocusmgr.h"
diff --git a/linden/indra/llui/llviewborder.cpp b/linden/indra/llui/llviewborder.cpp
index e9b7ca5..c354ac5 100644
--- a/linden/indra/llui/llviewborder.cpp
+++ b/linden/indra/llui/llviewborder.cpp
@@ -30,7 +30,7 @@
#include "linden_common.h"
#include "llviewborder.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llfocusmgr.h"
static LLRegisterWidget r("view_border");
diff --git a/linden/indra/llvfs/lldir.cpp b/linden/indra/llvfs/lldir.cpp
index dc0ffea..084d3aa 100644
--- a/linden/indra/llvfs/lldir.cpp
+++ b/linden/indra/llvfs/lldir.cpp
@@ -492,21 +492,21 @@ bool LLDir::setCacheDir(const std::string &path)
void LLDir::dumpCurrentDirectories()
{
- llinfos << "Current Directories:" << llendl;
-
- llinfos << " CurPath: " << getCurPath() << llendl;
- llinfos << " AppName: " << getAppName() << llendl;
- llinfos << " ExecutableFilename: " << getExecutableFilename() << llendl;
- llinfos << " ExecutableDir: " << getExecutableDir() << llendl;
- llinfos << " ExecutablePathAndName: " << getExecutablePathAndName() << llendl;
- llinfos << " WorkingDir: " << getWorkingDir() << llendl;
- llinfos << " AppRODataDir: " << getAppRODataDir() << llendl;
- llinfos << " OSUserDir: " << getOSUserDir() << llendl;
- llinfos << " OSUserAppDir: " << getOSUserAppDir() << llendl;
- llinfos << " LindenUserDir: " << getLindenUserDir() << llendl;
- llinfos << " TempDir: " << getTempDir() << llendl;
- llinfos << " CAFile: " << getCAFile() << llendl;
- llinfos << " SkinDir: " << getSkinDir() << llendl;
+ LL_DEBUGS2("AppInit","Directories") << "Current Directories:" << LL_ENDL;
+
+ LL_DEBUGS2("AppInit","Directories") << " CurPath: " << getCurPath() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " AppName: " << getAppName() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " ExecutableFilename: " << getExecutableFilename() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " ExecutableDir: " << getExecutableDir() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " ExecutablePathAndName: " << getExecutablePathAndName() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " WorkingDir: " << getWorkingDir() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " AppRODataDir: " << getAppRODataDir() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " OSUserDir: " << getOSUserDir() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " OSUserAppDir: " << getOSUserAppDir() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " LindenUserDir: " << getLindenUserDir() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " TempDir: " << getTempDir() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " CAFile: " << getCAFile() << LL_ENDL;
+ LL_DEBUGS2("AppInit","Directories") << " SkinDir: " << getSkinDir() << LL_ENDL;
}
diff --git a/linden/indra/llvfs/llvfs.cpp b/linden/indra/llvfs/llvfs.cpp
index e0957db..7903e83 100644
--- a/linden/indra/llvfs/llvfs.cpp
+++ b/linden/indra/llvfs/llvfs.cpp
@@ -248,7 +248,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
mDataFilename = new char[strlen(data_filename) + 1]; /* Flawfinder: ignore */
if (mIndexFilename == NULL || mDataFilename == NULL)
{
- llerrs << "Memory Allocation Failure" << llendl;
+ LL_ERRS("VFS") << "Memory Allocation Failure" << LL_ENDL;
return;
}
strcpy(mIndexFilename, index_filename); /* Flawfinder: ignore */
@@ -261,7 +261,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
if (mReadOnly)
{
- llwarns << "Can't find " << mDataFilename << " to open read-only VFS" << llendl;
+ LL_WARNS("VFS") << "Can't find " << mDataFilename << " to open read-only VFS" << LL_ENDL;
mValid = VFSVALID_BAD_CANNOT_OPEN_READONLY;
return;
}
@@ -274,18 +274,18 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
}
else
{
- llwarns << "Can't open VFS data file " << mDataFilename << " attempting to use alternate" << llendl;
+ LL_WARNS("VFS") << "Can't open VFS data file " << mDataFilename << " attempting to use alternate" << LL_ENDL;
char *temp_index = new char[strlen(mIndexFilename) + 10]; /* Flawfinder: ignore */
if (!temp_index)
{
- llerrs << "Out of the memory in LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL read_only, const U32 presize, const BOOL remove_after_crash)" << llendl;
+ LL_ERRS("VFS") << "Out of the memory in LLVFS::LLVFS()" << LL_ENDL;
return;
}
char *temp_data = new char[strlen(mDataFilename) + 10]; /* Flawfinder: ignore */
if (!temp_data)
{
- llerrs << "Out of the memory in LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL read_only, const U32 presize, const BOOL remove_after_crash)" << llendl;
+ LL_ERRS("VFS") << "Out of the memory in LLVFS::LLVFS()" << LL_ENDL;
return;
}
@@ -310,7 +310,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
if (! mDataFP)
{
- llwarns << "Couldn't open vfs data file after trying many alternates" << llendl;
+ LL_WARNS("VFS") << "Couldn't open vfs data file after trying many alternates" << LL_ENDL;
mValid = VFSVALID_BAD_CANNOT_CREATE;
delete[] temp_index;
delete[] temp_data;
@@ -338,7 +338,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
char* marker = new char[strlen(mDataFilename) + strlen(".open") + 1]; /* Flawfinder: ignore */
if (!marker )
{
- llerrs << "Out of memory in LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL read_only, const U32 presize, const BOOL remove_after_crash)" << llendl;
+ LL_ERRS("VFS") << "Out of memory in LLVFS::LLVFS()" << LL_ENDL;
return;
}
sprintf(marker, "%s.open", mDataFilename); /* Flawfinder: ignore */
@@ -348,7 +348,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
unlockAndClose(mDataFP);
mDataFP = NULL;
- llwarns << "VFS: File left open on last run, removing old VFS file " << mDataFilename << llendl;
+ LL_WARNS("VFS") << "VFS: File left open on last run, removing old VFS file " << mDataFilename << LL_ENDL;
LLFile::remove(mIndexFilename);
LLFile::remove(mDataFilename);
LLFile::remove(marker);
@@ -356,7 +356,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
mDataFP = openAndLock(mDataFilename, "w+b", FALSE);
if (!mDataFP)
{
- llwarns << "Can't open VFS data file in crash recovery" << llendl;
+ LL_WARNS("VFS") << "Can't open VFS data file in crash recovery" << LL_ENDL;
mValid = VFSVALID_BAD_CANNOT_CREATE;
return;
}
@@ -414,9 +414,9 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
if (block->mLength && block->mSize > 0)
{
// this is corrupt, not empty
- llwarns << "VFS corruption: " << block->mFileID << " (" << block->mFileType << ") at index " << block->mIndexLocation << " DS: " << data_size << llendl;
- llwarns << "Length: " << block->mLength << "\tLocation: " << block->mLocation << "\tSize: " << block->mSize << llendl;
- llwarns << "File has bad data - VFS removed" << llendl;
+ LL_WARNS("VFS") << "VFS corruption: " << block->mFileID << " (" << block->mFileType << ") at index " << block->mIndexLocation << " DS: " << data_size << LL_ENDL;
+ LL_WARNS("VFS") << "Length: " << block->mLength << "\tLocation: " << block->mLocation << "\tSize: " << block->mSize << LL_ENDL;
+ LL_WARNS("VFS") << "File has bad data - VFS removed" << LL_ENDL;
delete[] buffer;
delete block;
@@ -481,13 +481,13 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
if (cur_file_block->mLocation == last_file_block->mLocation
&& cur_file_block->mLength == last_file_block->mLength)
{
- llwarns << "VFS: removing duplicate entry"
+ LL_WARNS("VFS") << "VFS: removing duplicate entry"
<< " at " << cur_file_block->mLocation
<< " length " << cur_file_block->mLength
<< " size " << cur_file_block->mSize
<< " ID " << cur_file_block->mFileID
<< " type " << cur_file_block->mFileType
- << llendl;
+ << LL_ENDL;
// Duplicate entries. Nuke them both for safety.
mFileBlocks.erase(*cur_file_block); // remove ID/type entry
@@ -528,12 +528,12 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
mDataFP = NULL;
LLFile::remove( mDataFilename );
- llwarns << "VFS: overlapping entries"
+ LL_WARNS("VFS") << "VFS: overlapping entries"
<< " at " << cur_file_block->mLocation
<< " length " << cur_file_block->mLength
<< " ID " << cur_file_block->mFileID
<< " type " << cur_file_block->mFileType
- << llendl;
+ << LL_ENDL;
mValid = VFSVALID_BAD_CORRUPT;
return;
}
@@ -563,7 +563,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
{
if (mReadOnly)
{
- llwarns << "Can't find " << mIndexFilename << " to open read-only VFS" << llendl;
+ LL_WARNS("VFS") << "Can't find " << mIndexFilename << " to open read-only VFS" << LL_ENDL;
mValid = VFSVALID_BAD_CANNOT_OPEN_READONLY;
return;
}
@@ -572,7 +572,7 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
mIndexFP = openAndLock(mIndexFilename, "w+b", FALSE);
if (!mIndexFP)
{
- llwarns << "Couldn't open an index file for the VFS, probably a sharing violation!" << llendl;
+ LL_WARNS("VFS") << "Couldn't open an index file for the VFS, probably a sharing violation!" << LL_ENDL;
unlockAndClose( mDataFP );
mDataFP = NULL;
@@ -593,11 +593,11 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
char* marker = new char[strlen(mDataFilename) + strlen(".open") + 1];
if (!marker)
{
- llerrs << "Out of memory in LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL read_only, const U32 presize, const BOOL remove_after_crash)" << llendl;
+ LL_ERRS("VFS") << "Out of memory in LLVFS::LLVFS()" << LL_ENDL;
return;
}
sprintf(marker, "%s.open", mDataFilename); /* Flawfinder: ignore */
- FILE* marker_fp = LLFile::fopen(marker, "w"); /* Flawfinder: ignore */
+ LLFILE* marker_fp = LLFile::fopen(marker, "w"); /* Flawfinder: ignore */
if (marker_fp)
{
fclose(marker_fp);
@@ -607,7 +607,8 @@ LLVFS::LLVFS(const char *index_filename, const char *data_filename, const BOOL r
marker = NULL;
}
- llinfos << "VFS: Using index file " << mIndexFilename << " and data file " << mDataFilename << llendl;
+ LL_WARNS("VFS") << "Using index file " << mIndexFilename << LL_ENDL;
+ LL_WARNS("VFS") << "Using data file " << mDataFilename << LL_ENDL;
mValid = VFSVALID_OK;
}
@@ -616,7 +617,7 @@ LLVFS::~LLVFS()
{
if (mDataMutex->isLocked())
{
- llerrs << "LLVFS destroyed with mutex locked" << llendl;
+ LL_ERRS("VFS") << "LLVFS destroyed with mutex locked" << LL_ENDL;
}
unlockAndClose(mIndexFP);
@@ -642,7 +643,7 @@ LLVFS::~LLVFS()
char* marker_file = new char[strlen(mDataFilename) + strlen(".open") + 1];
if (marker_file == NULL)
{
- llerrs << "Memory Allocation Failure" << llendl;
+ LL_ERRS("VFS") << "Memory Allocation Failure" << LL_ENDL;
return;
}
sprintf(marker_file, "%s.open", mDataFilename); /* Flawfinder: ignore */
@@ -2134,7 +2135,7 @@ void LLVFS::dumpFiles()
//============================================================================
// static
-FILE *LLVFS::openAndLock(const char *filename, const char *mode, BOOL read_lock)
+LLFILE *LLVFS::openAndLock(const char *filename, const char *mode, BOOL read_lock)
{
#if LL_WINDOWS
@@ -2142,7 +2143,7 @@ FILE *LLVFS::openAndLock(const char *filename, const char *mode, BOOL read_lock)
#else
- FILE *fp;
+ LLFILE *fp;
int fd;
// first test the lock in a non-destructive way
@@ -2192,7 +2193,7 @@ FILE *LLVFS::openAndLock(const char *filename, const char *mode, BOOL read_lock)
}
// static
-void LLVFS::unlockAndClose(FILE *fp)
+void LLVFS::unlockAndClose(LLFILE *fp)
{
if (fp)
{
diff --git a/linden/indra/llvfs/llvfs.h b/linden/indra/llvfs/llvfs.h
index e07e85a..7465bb4 100644
--- a/linden/indra/llvfs/llvfs.h
+++ b/linden/indra/llvfs/llvfs.h
@@ -131,8 +131,8 @@ protected:
void sync(LLVFSFileBlock *block, BOOL remove = FALSE);
void presizeDataFile(const U32 size);
- static FILE *openAndLock(const char *filename, const char *mode, BOOL read_lock);
- static void unlockAndClose(FILE *fp);
+ static LLFILE *openAndLock(const char *filename, const char *mode, BOOL read_lock);
+ static void unlockAndClose(LLFILE *fp);
// Can initiate LRU-based file removal to make space.
// The immune file block will not be removed.
@@ -153,8 +153,8 @@ protected:
typedef std::multimap blocks_location_map_t;
blocks_location_map_t mFreeBlocksByLocation;
- FILE *mDataFP;
- FILE *mIndexFP;
+ LLFILE *mDataFP;
+ LLFILE *mIndexFP;
std::deque mIndexHoles;
diff --git a/linden/indra/llwindow/files.linux.lst b/linden/indra/llwindow/files.linux.lst
index e41ac2a..a2dfa07 100644
--- a/linden/indra/llwindow/files.linux.lst
+++ b/linden/indra/llwindow/files.linux.lst
@@ -1,4 +1,3 @@
llwindow/llkeyboardsdl.cpp
llwindow/llwindowsdl.cpp
-llwindow/llwindowlinux.cpp
llwindow/llwindowmesaheadless.cpp
diff --git a/linden/indra/llwindow/files.sunos5.lst b/linden/indra/llwindow/files.sunos5.lst
index ee20b05..a2dfa07 100644
--- a/linden/indra/llwindow/files.sunos5.lst
+++ b/linden/indra/llwindow/files.sunos5.lst
@@ -1,4 +1,3 @@
llwindow/llkeyboardsdl.cpp
llwindow/llwindowsdl.cpp
-llwindow/llwindowsolaris.cpp
llwindow/llwindowmesaheadless.cpp
diff --git a/linden/indra/llwindow/lldxhardware.cpp b/linden/indra/llwindow/lldxhardware.cpp
index 4eb8cab..c2d94c3 100644
--- a/linden/indra/llwindow/lldxhardware.cpp
+++ b/linden/indra/llwindow/lldxhardware.cpp
@@ -304,7 +304,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
IDxDiagContainer *driver_containerp = NULL;
// CoCreate a IDxDiagProvider*
- llinfos << "CoCreateInstance IID_IDxDiagProvider" << llendl;
+ LL_DEBUGS("AppInit") << "CoCreateInstance IID_IDxDiagProvider" << LL_ENDL;
hr = CoCreateInstance(CLSID_DxDiagProvider,
NULL,
CLSCTX_INPROC_SERVER,
@@ -313,7 +313,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
if (FAILED(hr))
{
- llwarns << "No DXDiag provider found! DirectX 9 not installed!" << llendl;
+ LL_WARNS("AppInit") << "No DXDiag provider found! DirectX 9 not installed!" << LL_ENDL;
gWriteDebug("No DXDiag provider found! DirectX 9 not installed!\n");
goto LCleanup;
}
@@ -331,14 +331,14 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
dx_diag_init_params.bAllowWHQLChecks = TRUE;
dx_diag_init_params.pReserved = NULL;
- llinfos << "dx_diag_providerp->Initialize" << llendl;
+ LL_DEBUGS("AppInit") << "dx_diag_providerp->Initialize" << LL_ENDL;
hr = dx_diag_providerp->Initialize(&dx_diag_init_params);
if(FAILED(hr))
{
goto LCleanup;
}
- llinfos << "dx_diag_providerp->GetRootContainer" << llendl;
+ LL_DEBUGS("AppInit") << "dx_diag_providerp->GetRootContainer" << LL_ENDL;
hr = dx_diag_providerp->GetRootContainer( &dx_diag_rootp );
if(FAILED(hr) || !dx_diag_rootp)
{
@@ -348,7 +348,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
HRESULT hr;
// Get display driver information
- llinfos << "dx_diag_rootp->GetChildContainer" << llendl;
+ LL_DEBUGS("AppInit") << "dx_diag_rootp->GetChildContainer" << LL_ENDL;
hr = dx_diag_rootp->GetChildContainer(L"DxDiag_DisplayDevices", &devices_containerp);
if(FAILED(hr) || !devices_containerp)
{
@@ -356,7 +356,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
}
// Get device 0
- llinfos << "devices_containerp->GetChildContainer" << llendl;
+ LL_DEBUGS("AppInit") << "devices_containerp->GetChildContainer" << LL_ENDL;
hr = devices_containerp->GetChildContainer(L"0", &device_containerp);
if(FAILED(hr) || !device_containerp)
{
@@ -373,10 +373,9 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
// Dump the string as an int into the structure
char *stopstring;
mVRAM = strtol(ram_str.c_str(), &stopstring, 10);
- llinfos << "VRAM Detected: " << mVRAM << " DX9 string: " << ram_str << llendl;
+ LL_INFOS("AppInit") << "VRAM Detected: " << mVRAM << " DX9 string: " << ram_str << LL_ENDL;
}
-
if (vram_only)
{
ok = TRUE;
@@ -393,7 +392,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
// This call may take some time while dxdiag gathers the info.
DWORD num_devices = 0;
WCHAR wszContainer[256];
- llinfos << "dx_diag_rootp->GetChildContainer DxDiag_SystemDevices" << llendl;
+ LL_DEBUGS("AppInit") << "dx_diag_rootp->GetChildContainer DxDiag_SystemDevices" << LL_ENDL;
hr = dx_diag_rootp->GetChildContainer(L"DxDiag_SystemDevices", &system_device_containerp);
if (FAILED(hr))
{
@@ -406,7 +405,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
goto LCleanup;
}
- llinfos << "DX9 iterating over devices" << llendl;
+ LL_DEBUGS("AppInit") << "DX9 iterating over devices" << LL_ENDL;
S32 device_num = 0;
for (device_num = 0; device_num < (S32)num_devices; device_num++)
{
@@ -523,7 +522,7 @@ BOOL LLDXHardware::getInfo(BOOL vram_only)
LCleanup:
if (!ok)
{
- llwarns << "DX9 probe failed" << llendl;
+ LL_WARNS("AppInit") << "DX9 probe failed" << LL_ENDL;
gWriteDebug("DX9 probe failed\n");
}
diff --git a/linden/indra/llwindow/llgl.cpp b/linden/indra/llwindow/llgl.cpp
index 229fdf2..e8169b6 100644
--- a/linden/indra/llwindow/llgl.cpp
+++ b/linden/indra/llwindow/llgl.cpp
@@ -41,7 +41,7 @@
#include "llsys.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llerror.h"
#include "llquaternion.h"
@@ -55,6 +55,7 @@
//#define GL_STATE_VERIFY
#endif
+BOOL gDebugGL = FALSE;
BOOL gClothRipple = FALSE;
BOOL gNoRender = FALSE;
LLMatrix4 gGLObliqueProjectionInverse;
@@ -253,50 +254,50 @@ PFNGLCOLORTABLEEXTPROC glColorTableEXT = NULL;
LLGLManager gGLManager;
-LLGLManager::LLGLManager()
-{
- mInited = FALSE;
- mIsDisabled = FALSE;
- mHasCubeMap = FALSE;
- mHasMultitexture = FALSE;
- mHasMipMapGeneration = FALSE;
- mHasAnisotropic = FALSE;
- mHasCompressedTextures = FALSE;
- mHasARBEnvCombine = FALSE;
- mIsGF2or4MX = FALSE;
- mIsGF3 = FALSE;
- mIsGFFX = FALSE;
- mIsATI = FALSE;
- mATIOffsetVerticalLines = FALSE;
- mHasVertexShader = FALSE;
- mHasFragmentShader = FALSE;
- mHasShaderObjects = FALSE;
- mHasPointParameters = FALSE;
-
-#if LL_WINDOWS
- mHasWGLARBPixelFormat = FALSE;
-#endif // LL_WINDOWS
-
-#if LL_DARWIN
- mHasAPPLEVertexArrayRange = FALSE;
- mHasAPPLEFence = FALSE;
- mHasAPPLEVAO = FALSE;
-#endif
-
- mIsNVIDIA = FALSE;
- mIsIntel = FALSE;
+LLGLManager::LLGLManager() :
+ mInited(FALSE),
+ mIsDisabled(FALSE),
+
+ mHasMultitexture(FALSE),
+ mNumTextureUnits(1),
+ mHasMipMapGeneration(FALSE),
+ mHasPalettedTextures(FALSE),
+ mHasCompressedTextures(FALSE),
+ mHasFramebufferObject(FALSE),
+
+ mHasVertexBufferObject(FALSE),
+ mHasPBuffer(FALSE),
+ mHasShaderObjects(FALSE),
+ mHasVertexShader(FALSE),
+ mHasFragmentShader(FALSE),
+ mHasOcclusionQuery(FALSE),
+ mHasPointParameters(FALSE),
+
+ mHasAnisotropic(FALSE),
+ mHasARBEnvCombine(FALSE),
+ mHasCubeMap(FALSE),
+
+ mIsATI(FALSE),
+ mIsNVIDIA(FALSE),
+ mIsIntel(FALSE),
+ mIsGF2or4MX(FALSE),
+ mIsGF3(FALSE),
+ mIsGFFX(FALSE),
+ mATIOffsetVerticalLines(FALSE),
+
+ mHasRequirements(TRUE),
+
+ mHasSeparateSpecularColor(FALSE),
+
+ mDriverVersionMajor(1),
+ mDriverVersionMinor(0),
+ mDriverVersionRelease(0),
+ mGLVersion(1.0f),
- mDriverVersionMajor = 1;
- mDriverVersionMinor = 0;
- mDriverVersionRelease = 0;
- mGLVersion = 1.0f;
-
- mNumTextureUnits = 1;
- mVRAM = 0;
- mGLMaxVertexRange = 0;
- mGLMaxIndexRange = 0;
-
- mHasRequirements = TRUE;
+ mVRAM(0),
+ mGLMaxVertexRange(0),
+ mGLMaxIndexRange(0)
+{
}
//---------------------------------------------------------------------
@@ -308,7 +309,7 @@ void LLGLManager::initWGL()
#if LL_WINDOWS && !LL_MESA_HEADLESS
if (!glh_init_extensions("WGL_ARB_pixel_format"))
{
- llwarns << "No ARB pixel format extensions" << llendl;
+ LL_WARNS("RenderInit") << "No ARB pixel format extensions" << LL_ENDL;
}
if (ExtensionExists("WGL_EXT_swap_control", gGLHExts.mSysExts))
@@ -316,15 +317,14 @@ void LLGLManager::initWGL()
GLH_EXT_NAME(wglSwapIntervalEXT) = (PFNWGLSWAPINTERVALEXTPROC)GLH_EXT_GET_PROC_ADDRESS("wglSwapIntervalEXT");
}
- mHasWGLARBPixelFormat = glh_init_extensions("WGL_ARB_pbuffer");
- if( !mHasWGLARBPixelFormat )
+ if( !glh_init_extensions("WGL_ARB_pbuffer") )
{
- llwarns << "No ARB WGL PBuffer extensions" << llendl;
+ LL_WARNS("RenderInit") << "No ARB WGL PBuffer extensions" << LL_ENDL;
}
if( !glh_init_extensions("WGL_ARB_render_texture") )
{
- llwarns << "No ARB WGL render texture extensions" << llendl;
+ LL_WARNS("RenderInit") << "No ARB WGL render texture extensions" << LL_ENDL;
}
mHasPBuffer = ExtensionExists("WGL_ARB_pbuffer", gGLHExts.mSysExts) &&
@@ -338,19 +338,15 @@ bool LLGLManager::initGL()
{
if (mInited)
{
- llerrs << "Calling init on LLGLManager after already initialized!" << llendl;
+ LL_ERRS("RenderInit") << "Calling init on LLGLManager after already initialized!" << LL_ENDL;
}
GLint alpha_bits;
glGetIntegerv( GL_ALPHA_BITS, &alpha_bits );
if( 8 != alpha_bits )
{
- llwarns << "Frame buffer has less than 8 bits of alpha. Avatar texture compositing will fail." << llendl;
+ LL_WARNS("RenderInit") << "Frame buffer has less than 8 bits of alpha. Avatar texture compositing will fail." << LL_ENDL;
}
-
- // This function uses at least one variable that's initialized below.
- // Moved this call down to after we figure out which card we're dealing with. -- MBW 2003.10.07
-// initExtensions();
// Extract video card strings and convert to upper case to
// work around driver-to-driver variation in capitalization.
@@ -445,7 +441,7 @@ bool LLGLManager::initGL()
mHasRequirements = FALSE;
// We don't support cards that don't support the GL_ARB_multitexture extension
- llwarns << "GL Drivers do not support GL_ARB_multitexture" << llendl;
+ LL_WARNS("RenderInit") << "GL Drivers do not support GL_ARB_multitexture" << LL_ENDL;
return false;
}
@@ -489,6 +485,22 @@ LLString LLGLManager::getGLInfoString()
return info_str;
}
+void LLGLManager::printGLInfoString()
+{
+ LLString info_str;
+ LLString all_exts, line;
+
+ LL_INFOS("RenderInit") << "GL_VENDOR: " << ((const char *)glGetString(GL_VENDOR)) << LL_ENDL;
+ LL_INFOS("RenderInit") << "GL_RENDERER: " << ((const char *)glGetString(GL_RENDERER)) << LL_ENDL;
+ LL_INFOS("RenderInit") << "GL_VERSION: " << ((const char *)glGetString(GL_VERSION)) << LL_ENDL;
+
+#if !LL_MESA_HEADLESS
+ all_exts = (const char *)gGLHExts.mSysExts;
+ LLString::replaceChar(all_exts, ' ', '\n');
+ LL_DEBUGS("RenderInit") << "GL_EXTENSIONS:\n" << all_exts << LL_ENDL;
+#endif
+}
+
LLString LLGLManager::getRawGLString()
{
LLString gl_string;
@@ -595,8 +607,7 @@ void LLGLManager::initExtensions()
mHasShaderObjects = FALSE;
mHasVertexShader = FALSE;
mHasFragmentShader = FALSE;
- llwarns << "GL extension support DISABLED via LL_GL_NOEXT" <<
- llendl;
+ LL_WARNS("RenderInit") << "GL extension support DISABLED via LL_GL_NOEXT" << LL_ENDL;
}
else if (getenv("LL_GL_BASICEXT")) /* Flawfinder: ignore */
{
@@ -612,8 +623,7 @@ void LLGLManager::initExtensions()
mHasShaderObjects = FALSE;
mHasVertexShader = FALSE;
mHasFragmentShader = FALSE;
- llwarns << "GL extension support forced to SIMPLE level via LL_GL_BASICEXT" <<
- llendl;
+ LL_WARNS("RenderInit") << "GL extension support forced to SIMPLE level via LL_GL_BASICEXT" << LL_ENDL;
}
if (getenv("LL_GL_BLACKLIST")) /* Flawfinder: ignore */
{
@@ -621,7 +631,7 @@ void LLGLManager::initExtensions()
// GL extensions to isolate problems with their hardware.
// SL-28126
const char *const blacklist = getenv("LL_GL_BLACKLIST"); /* Flawfinder: ignore */
- llwarns << "GL extension support partially disabled via LL_GL_BLACKLIST: " << blacklist << llendl;
+ LL_WARNS("RenderInit") << "GL extension support partially disabled via LL_GL_BLACKLIST: " << blacklist << LL_ENDL;
if (strchr(blacklist,'a')) mHasARBEnvCombine = FALSE;
if (strchr(blacklist,'b')) mHasCompressedTextures = FALSE;
if (strchr(blacklist,'c')) mHasVertexBufferObject = FALSE;
@@ -651,62 +661,62 @@ void LLGLManager::initExtensions()
if (!mHasMultitexture)
{
- llinfos << "Couldn't initialize multitexturing" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize multitexturing" << LL_ENDL;
}
if (!mHasMipMapGeneration)
{
- llinfos << "Couldn't initialize mipmap generation" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize mipmap generation" << LL_ENDL;
}
if (!mHasARBEnvCombine)
{
- llinfos << "Couldn't initialize GL_ARB_texture_env_combine" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_texture_env_combine" << LL_ENDL;
}
if (!mHasPalettedTextures)
{
- llinfos << "Couldn't initialize GL_EXT_paletted_texture" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize GL_EXT_paletted_texture" << LL_ENDL;
}
if (!mHasSeparateSpecularColor)
{
- llinfos << "Couldn't initialize separate specular color" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize separate specular color" << LL_ENDL;
}
if (!mHasAnisotropic)
{
- llinfos << "Couldn't initialize anisotropic filtering" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize anisotropic filtering" << LL_ENDL;
}
if (!mHasCompressedTextures)
{
- llinfos << "Couldn't initialize GL_ARB_texture_compression" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_texture_compression" << LL_ENDL;
}
if (!mHasOcclusionQuery)
{
- llinfos << "Couldn't initialize GL_ARB_occlusion_query" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_occlusion_query" << LL_ENDL;
}
if (!mHasPointParameters)
{
- llinfos << "Couldn't initialize GL_ARB_point_parameters" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_point_parameters" << LL_ENDL;
}
if (!mHasShaderObjects)
{
- llinfos << "Couldn't initialize GL_ARB_shader_objects" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_shader_objects" << LL_ENDL;
}
if (!mHasVertexShader)
{
- llinfos << "Couldn't initialize GL_ARB_vertex_shader" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_vertex_shader" << LL_ENDL;
}
if (!mHasFragmentShader)
{
- llinfos << "Couldn't initialize GL_ARB_fragment_shader" << llendl;
+ LL_INFOS("RenderInit") << "Couldn't initialize GL_ARB_fragment_shader" << LL_ENDL;
}
// Disable certain things due to known bugs
if (mIsIntel && mHasMipMapGeneration)
{
- llinfos << "Disabling mip-map generation for Intel GPUs" << llendl;
+ LL_INFOS("RenderInit") << "Disabling mip-map generation for Intel GPUs" << LL_ENDL;
mHasMipMapGeneration = FALSE;
}
if (mIsATI && mHasMipMapGeneration)
{
- llinfos << "Disabling mip-map generation for ATI GPUs (performance opt)" << llendl;
+ LL_INFOS("RenderInit") << "Disabling mip-map generation for ATI GPUs (performance opt)" << LL_ENDL;
mHasMipMapGeneration = FALSE;
}
@@ -714,30 +724,8 @@ void LLGLManager::initExtensions()
glGetIntegerv(GL_MAX_ELEMENTS_VERTICES, (GLint*) &mGLMaxVertexRange);
glGetIntegerv(GL_MAX_ELEMENTS_INDICES, (GLint*) &mGLMaxIndexRange);
- // Apple specific
-#if LL_DARWIN
- mHasAPPLEVertexArrayRange = glh_init_extensions("GL_APPLE_vertex_array_range");
- if (!mHasAPPLEVertexArrayRange)
- {
- llinfos << "Couldn't initialize GL_APPLE_vertex_array_range" << llendl;
- }
-
- mHasAPPLEFence = glh_init_extensions("GL_APPLE_fence");
- if (!mHasAPPLEFence)
- {
- llinfos << "Couldn't initialize GL_APPLE_fence" << llendl;
- }
-
- mHasAPPLEVAO = glh_init_extensions("GL_APPLE_vertex_array_object");
- if (mHasAPPLEVAO)
- {
- llinfos << "Has GL_APPLE_vertex_array_object!" << llendl;
- }
-
-#endif // LL_DARWIN
-
#if (LL_WINDOWS || LL_LINUX) && !LL_MESA_HEADLESS
- llinfos << "GL Probe: Getting symbols" << llendl;
+ LL_DEBUGS("RenderInit") << "GL Probe: Getting symbols" << LL_ENDL;
if (mHasVertexBufferObject)
{
glBindBufferARB = (PFNGLBINDBUFFERARBPROC)GLH_EXT_GET_PROC_ADDRESS("glBindBufferARB");
@@ -921,7 +909,7 @@ void LLGLManager::initExtensions()
glGetVertexAttribPointervARB = (PFNGLGETVERTEXATTRIBPOINTERVARBPROC) GLH_EXT_GET_PROC_ADDRESS("glgetVertexAttribPointervARB");
glIsProgramARB = (PFNGLISPROGRAMARBPROC) GLH_EXT_GET_PROC_ADDRESS("glIsProgramARB");
}
- llinfos << "GL Probe: Got symbols" << llendl;
+ LL_DEBUGS("RenderInit") << "GL Probe: Got symbols" << LL_ENDL;
#endif
mInited = TRUE;
@@ -941,33 +929,41 @@ void flush_glerror()
void assert_glerror()
{
- if (gNoRender)
+ if (gNoRender || !gDebugGL)
{
return;
}
if (!gGLManager.mInited)
{
- llerrs << "GL not initialized" << llendl;
+ LL_ERRS("RenderInit") << "GL not initialized" << LL_ENDL;
}
// Create or update texture to be used with this data
GLenum error;
error = glGetError();
- if (error)
+ BOOL quit = FALSE;
+ while (error)
{
+ quit = TRUE;
#ifndef LL_LINUX // *FIX: ! This should be an error for linux as well.
GLubyte const * gl_error_msg = gluErrorString(error);
if (NULL != gl_error_msg)
{
- llerrs << "GL Error:" << gl_error_msg << llendl;
+ LL_WARNS("RenderState") << "GL Error:" << gl_error_msg << LL_ENDL;
}
else
{
// gluErrorString returns NULL for some extensions' error codes.
// you'll probably have to grep for the number in glext.h.
- llerrs << "GL Error: UNKNOWN 0x" << std::hex << error << llendl;
+ LL_WARNS("RenderState") << "GL Error: UNKNOWN 0x" << std::hex << error << LL_ENDL;
}
+ error = glGetError();
#endif
}
+
+ if (quit)
+ {
+ llerrs << "One or more unhandled GL errors." << llendl;
+ }
}
void clear_glerror()
@@ -977,8 +973,7 @@ void clear_glerror()
error = glGetError();
}
-//============================================================================
-
+///////////////////////////////////////////////////////////////
//
// LLGLState
//
@@ -1014,7 +1009,7 @@ void LLGLState::resetTextureStates()
glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &maxTextureUnits);
for (S32 j = maxTextureUnits-1; j >=0; j--)
{
- glActiveTextureARB(GL_TEXTURE0_ARB+j);
+ gGL.getTexUnit(j)->activate();
glClientActiveTextureARB(GL_TEXTURE0_ARB+j);
j == 0 ? glEnable(GL_TEXTURE_2D) : glDisable(GL_TEXTURE_2D);
}
@@ -1022,17 +1017,21 @@ void LLGLState::resetTextureStates()
void LLGLState::dumpStates()
{
- llinfos << "GL States:" << llendl;
+ LL_INFOS("RenderState") << "GL States:" << LL_ENDL;
for (std::map::iterator iter = sStateMap.begin();
iter != sStateMap.end(); ++iter)
{
- llinfos << llformat(" 0x%04x : %s",(S32)iter->first,iter->second?"TRUE":"FALSE") << llendl;
+ LL_INFOS("RenderState") << llformat(" 0x%04x : %s",(S32)iter->first,iter->second?"TRUE":"FALSE") << LL_ENDL;
}
}
void LLGLState::checkStates()
{
-#if LL_DEBUG_GL
+ if (!gDebugGL)
+ {
+ return;
+ }
+
stop_glerror();
GLint activeTexture;
@@ -1040,7 +1039,7 @@ void LLGLState::checkStates()
if (activeTexture != GL_TEXTURE0_ARB)
{
- LL_GL_ERRS << "Texture channel corrupted. " << llendl;
+ LL_GL_ERRS << "Texture channel corrupted. " << LL_ENDL;
}
GLint src;
@@ -1050,7 +1049,7 @@ void LLGLState::checkStates()
if (src != GL_SRC_ALPHA || dst != GL_ONE_MINUS_SRC_ALPHA)
{
- LL_GL_ERRS << "Blend function corrupted: " << std::hex << src << " " << std::hex << dst << llendl;
+ LL_GL_ERRS << "Blend function corrupted: " << std::hex << src << " " << std::hex << dst << LL_ENDL;
}
for (std::map::iterator iter = sStateMap.begin();
@@ -1062,17 +1061,20 @@ void LLGLState::checkStates()
if(cur_state != gl_state)
{
dumpStates();
- LL_GL_ERRS << llformat("LLGLState error. State: 0x%04x",state) << llendl;
+ LL_GL_ERRS << llformat("LLGLState error. State: 0x%04x",state) << LL_ENDL;
}
}
stop_glerror();
-#endif
}
void LLGLState::checkTextureChannels()
{
-#if LL_DEBUG_GL
+ if (!gDebugGL)
+ {
+ return;
+ }
+
GLint activeTexture;
glGetIntegerv(GL_ACTIVE_TEXTURE_ARB, &activeTexture);
@@ -1081,12 +1083,12 @@ void LLGLState::checkTextureChannels()
if (activeTexture != GL_TEXTURE0_ARB)
{
error = TRUE;
- llwarns << "Active texture channel corrupted. " << llendl;
+ LL_WARNS("RenderState") << "Active texture channel corrupted. " << LL_ENDL;
}
else if (!glIsEnabled(GL_TEXTURE_2D))
{
error = TRUE;
- llwarns << "GL_TEXTURE_2D not enabled on texture channel 0." << llendl;
+ LL_WARNS("RenderState") << "GL_TEXTURE_2D not enabled on texture channel 0." << LL_ENDL;
}
else
{
@@ -1096,7 +1098,7 @@ void LLGLState::checkTextureChannels()
if (tex_env_mode != GL_MODULATE)
{
error = TRUE;
- llwarns << "GL_TEXTURE_ENV_MODE invalid: " << std::hex << tex_env_mode << llendl;
+ LL_WARNS("RenderState") << "GL_TEXTURE_ENV_MODE invalid: " << std::hex << tex_env_mode << LL_ENDL;
}
}
@@ -1133,7 +1135,7 @@ void LLGLState::checkTextureChannels()
for (GLint i = 0; i < maxTextureUnits; i++)
{
- glActiveTextureARB(GL_TEXTURE0_ARB+i);
+ gGL.getTexUnit(i)->activate();
glClientActiveTextureARB(GL_TEXTURE0_ARB+i);
glGetIntegerv(GL_TEXTURE_STACK_DEPTH, &stackDepth);
@@ -1141,7 +1143,7 @@ void LLGLState::checkTextureChannels()
if (stackDepth != 1)
{
error = TRUE;
- llwarns << "Texture matrix stack corrupted." << llendl;
+ LL_WARNS("RenderState") << "Texture matrix stack corrupted." << LL_ENDL;
}
glGetFloatv(GL_TEXTURE_MATRIX, (GLfloat*) matrix.mMatrix);
@@ -1149,7 +1151,7 @@ void LLGLState::checkTextureChannels()
if (matrix != identity)
{
error = TRUE;
- llwarns << "Texture matrix in channel " << i << " corrupt." << llendl;
+ LL_WARNS("RenderState") << "Texture matrix in channel " << i << " corrupt." << LL_ENDL;
}
for (S32 j = (i == 0 ? 1 : 0); j < 8; j++)
@@ -1157,24 +1159,27 @@ void LLGLState::checkTextureChannels()
if (glIsEnabled(value[j]))
{
error = TRUE;
- llwarns << "Texture channel " << i << " still has " << label[j] << " enabled." << llendl;
+ LL_WARNS("RenderState") << "Texture channel " << i << " still has " << label[j] << " enabled." << LL_ENDL;
}
}
}
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glClientActiveTextureARB(GL_TEXTURE0_ARB);
if (error)
{
- LL_GL_ERRS << "GL texture state corruption detected." << llendl;
+ LL_GL_ERRS << "GL texture state corruption detected." << LL_ENDL;
}
-#endif
}
void LLGLState::checkClientArrays(U32 data_mask)
{
-#if LL_DEBUG_GL
+ if (!gDebugGL)
+ {
+ return;
+ }
+
stop_glerror();
BOOL error = FALSE;
@@ -1226,7 +1231,7 @@ void LLGLState::checkClientArrays(U32 data_mask)
if (!(mask[j] & data_mask))
{
error = TRUE;
- llwarns << "GL still has " << label[j] << " enabled." << llendl;
+ LL_WARNS("RenderState") << "GL still has " << label[j] << " enabled." << LL_ENDL;
}
}
else
@@ -1234,19 +1239,19 @@ void LLGLState::checkClientArrays(U32 data_mask)
if (mask[j] & data_mask)
{
error = TRUE;
- llwarns << "GL does not have " << label[j] << " enabled." << llendl;
+ LL_WARNS("RenderState") << "GL does not have " << label[j] << " enabled." << LL_ENDL;
}
}
}
glClientActiveTextureARB(GL_TEXTURE1_ARB);
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
if (glIsEnabled(GL_TEXTURE_COORD_ARRAY))
{
if (!(data_mask & 0x0008))
{
error = TRUE;
- llwarns << "GL still has GL_TEXTURE_COORD_ARRAY enabled on channel 1." << llendl;
+ LL_WARNS("RenderState") << "GL still has GL_TEXTURE_COORD_ARRAY enabled on channel 1." << LL_ENDL;
}
}
else
@@ -1254,7 +1259,7 @@ void LLGLState::checkClientArrays(U32 data_mask)
if (data_mask & 0x0008)
{
error = TRUE;
- llwarns << "GL does not have GL_TEXTURE_COORD_ARRAY enabled on channel 1." << llendl;
+ LL_WARNS("RenderState") << "GL does not have GL_TEXTURE_COORD_ARRAY enabled on channel 1." << LL_ENDL;
}
}
@@ -1263,7 +1268,7 @@ void LLGLState::checkClientArrays(U32 data_mask)
if (!(data_mask & 0x0008))
{
error = TRUE;
- llwarns << "GL still has GL_TEXTURE_2D enabled on channel 1." << llendl;
+ LL_WARNS("RenderState") << "GL still has GL_TEXTURE_2D enabled on channel 1." << LL_ENDL;
}
}
else
@@ -1271,26 +1276,25 @@ void LLGLState::checkClientArrays(U32 data_mask)
if (data_mask & 0x0008)
{
error = TRUE;
- llwarns << "GL does not have GL_TEXTURE_2D enabled on channel 1." << llendl;
+ LL_WARNS("RenderState") << "GL does not have GL_TEXTURE_2D enabled on channel 1." << LL_ENDL;
}
}
glClientActiveTextureARB(GL_TEXTURE0_ARB);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
if (error)
{
- LL_GL_ERRS << "GL client array corruption detected." << llendl;
+ LL_GL_ERRS << "GL client array corruption detected." << LL_ENDL;
}
-#endif
}
-//============================================================================
+///////////////////////////////////////////////////////////////////////
-LLGLState::LLGLState(LLGLenum state, S32 enabled)
+LLGLState::LLGLState(LLGLenum state, S32 enabled) :
+ mState(state), mWasEnabled(FALSE), mIsEnabled(FALSE)
{
stop_glerror();
- mState = state;
if (state)
{
mWasEnabled = sStateMap[state];
@@ -1330,9 +1334,11 @@ LLGLState::~LLGLState()
stop_glerror();
if (mState)
{
-#if LL_DEBUG_GL
- llassert(sStateMap[mState] == glIsEnabled(mState));
-#endif
+ if (gDebugGL)
+ {
+ llassert_always(sStateMap[mState] == glIsEnabled(mState));
+ }
+
if (mIsEnabled != mWasEnabled)
{
gGL.flush();
@@ -1351,7 +1357,7 @@ LLGLState::~LLGLState()
stop_glerror();
}
-//============================================================================
+////////////////////////////////////////////////////////////////////////////////
void LLGLManager::initGLStates()
{
@@ -1359,7 +1365,7 @@ void LLGLManager::initGLStates()
LLGLState::initClass();
}
-//============================================================================
+////////////////////////////////////////////////////////////////////////////////
void enable_vertex_weighting(const S32 index)
{
diff --git a/linden/indra/llwindow/llgl.h b/linden/indra/llwindow/llgl.h
index e8f17bf..2618dca 100644
--- a/linden/indra/llwindow/llgl.h
+++ b/linden/indra/llwindow/llgl.h
@@ -48,9 +48,9 @@
#include "llglheaders.h"
#include "glh/glh_linear.h"
-#define LL_DEBUG_GL 1
+extern BOOL gDebugGL;
-#define LL_GL_ERRS llerrs
+#define LL_GL_ERRS LL_ERRS("RenderState")
class LLSD;
@@ -92,7 +92,7 @@ public:
BOOL mHasARBEnvCombine;
BOOL mHasCubeMap;
- // Vender specific extensions
+ // Vendor-specific extensions
BOOL mIsATI;
BOOL mIsNVIDIA;
BOOL mIsIntel;
@@ -104,18 +104,7 @@ public:
// Whether this version of GL is good enough for SL to use
BOOL mHasRequirements;
-#if LL_WINDOWS
- BOOL mHasWGLARBPixelFormat;
-#endif // LL_WINDOWS
-
-#if LL_DARWIN
- // Apple extensions.
- BOOL mHasAPPLEVertexArrayRange;
- BOOL mHasAPPLEFence;
- BOOL mHasAPPLEVAO;
-#endif
-
- // Misc exitensions
+ // Misc extensions
BOOL mHasSeparateSpecularColor;
S32 mDriverVersionMajor;
@@ -131,6 +120,7 @@ public:
void getPixelFormat(); // Get the best pixel format
LLString getGLInfoString();
+ void printGLInfoString();
void getGLInfo(LLSD& info);
// In ALL CAPS
@@ -159,13 +149,13 @@ void assert_glerror();
void clear_glerror();
-#if LL_DEBUG
+//#if LL_DEBUG
# define stop_glerror() assert_glerror()
# define llglassertok() assert_glerror()
-#else
-# define stop_glerror()
-# define llglassertok()
-#endif
+//#else
+//# define stop_glerror()
+//# define llglassertok()
+//#endif
#define llglassertok_always() assert_glerror()
diff --git a/linden/indra/llwindow/llwindow.cpp b/linden/indra/llwindow/llwindow.cpp
index 9963228..ffb6393 100644
--- a/linden/indra/llwindow/llwindow.cpp
+++ b/linden/indra/llwindow/llwindow.cpp
@@ -40,8 +40,6 @@
#include "llwindowwin32.h"
#elif LL_DARWIN
#include "llwindowmacosx.h"
-#elif LL_LINUX
-#include "llwindowlinux.h" // currently just a dummy wrapper
#endif
#include "llerror.h"
@@ -287,6 +285,20 @@ void LLWindow::setCallbacks(LLWindowCallbacks *callbacks)
}
}
+// static
+std::string LLWindow::getFontListSans()
+{
+#if LL_WINDOWS
+ return LLWindowWin32::getFontListSans();
+#elif LL_DARWIN
+ return LLWindowMacOSX::getFontListSans();
+#elif LL_SDL
+ return LLWindowSDL::getFontListSans();
+#else
+ return "";
+#endif
+}
+
#define UTF16_IS_HIGH_SURROGATE(U) ((U16)((U) - 0xD800) < 0x0400)
#define UTF16_IS_LOW_SURROGATE(U) ((U16)((U) - 0xDC00) < 0x0400)
#define UTF16_SURROGATE_PAIR_TO_UTF32(H,L) (((H) << 10) + (L) - (0xD800 << 10) - 0xDC00 + 0x00010000)
@@ -450,10 +462,6 @@ LLWindow* LLWindowManager::createWindow(
new_window = new LLWindowMacOSX(
title, name, x, y, width, height, flags,
fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth, fsaa_samples);
-#elif LL_LINUX
- new_window = new LLWindowLinux(
- title, name, x, y, width, height, flags,
- fullscreen, clearBg, disable_vsync, use_gl, ignore_pixel_depth);
#endif
}
else
diff --git a/linden/indra/llwindow/llwindow.h b/linden/indra/llwindow/llwindow.h
index 89de5a0..a63c8d5 100644
--- a/linden/indra/llwindow/llwindow.h
+++ b/linden/indra/llwindow/llwindow.h
@@ -234,6 +234,8 @@ public:
virtual void updateLanguageTextInputArea() {}
virtual void interruptLanguageTextInput() {}
+ static std::string getFontListSans();
+
protected:
LLWindow(BOOL fullscreen, U32 flags);
virtual ~LLWindow() {}
diff --git a/linden/indra/llwindow/llwindowlinux.cpp b/linden/indra/llwindow/llwindowlinux.cpp
deleted file mode 100644
index 6c026e4..0000000
--- a/linden/indra/llwindow/llwindowlinux.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * @file llwindowlinux.cpp
- * @brief Platform-dependent implementation of llwindow
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2008, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#if LL_LINUX
-
-#include "linden_common.h"
-#include "indra_constants.h"
-
-#include "llwindowlinux.h"
-#include "llgl.h"
-#include "llglheaders.h"
-
-//
-// LLWindowLinux
-//
-LLWindowLinux::LLWindowLinux(char *title, char *name, S32 x, S32 y, S32 width, S32 height,
- U32 flags, BOOL fullscreen, BOOL clearBg,
- BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth)
- : LLWindow(fullscreen, flags)
-{
- llerrs << "Linux window not yet supported" << llendl;
-}
-
-
-LLWindowLinux::~LLWindowLinux()
-{
-}
-
-void LLWindowLinux::swapBuffers()
-{
-}
-
-#endif // LL_LINUX
diff --git a/linden/indra/llwindow/llwindowlinux.h b/linden/indra/llwindow/llwindowlinux.h
deleted file mode 100644
index da80fd4..0000000
--- a/linden/indra/llwindow/llwindowlinux.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * @file llwindowlinux.h
- * @brief Linux implementation of LLWindow class
- *
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2008, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLWINDOWWIN32_H
-#define LL_LLWINDOWWIN32_H
-
-#include "llwindow.h"
-
-class LLWindowLinux : public LLWindow
-{
-public:
- /*virtual*/ void show() {};
- /*virtual*/ void hide() {};
- /*virtual*/ void close() {};
- /*virtual*/ BOOL getVisible() {return FALSE;};
- /*virtual*/ BOOL getMinimized() {return FALSE;};
- /*virtual*/ BOOL getMaximized() {return FALSE;};
- /*virtual*/ BOOL maximize() {return FALSE;};
- /*virtual*/ BOOL getFullscreen() {return FALSE;};
- /*virtual*/ BOOL getPosition(LLCoordScreen *position) {return FALSE;};
- /*virtual*/ BOOL getSize(LLCoordScreen *size) {return FALSE;};
- /*virtual*/ BOOL getSize(LLCoordWindow *size) {return FALSE;};
- /*virtual*/ BOOL setPosition(LLCoordScreen position) {return FALSE;};
- /*virtual*/ BOOL setSize(LLCoordScreen size) {return FALSE;};
- /*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL) {return FALSE;};
- /*virtual*/ BOOL setCursorPosition(LLCoordWindow position) {return FALSE;};
- /*virtual*/ BOOL getCursorPosition(LLCoordWindow *position) {return FALSE;};
- /*virtual*/ void showCursor() {};
- /*virtual*/ void hideCursor() {};
- /*virtual*/ void showCursorFromMouseMove() {};
- /*virtual*/ void hideCursorUntilMouseMove() {};
- /*virtual*/ BOOL isCursorHidden() {return FALSE;};
- /*virtual*/ void setCursor(ECursorType cursor) {};
- //virtual ECursorType getCursor() { return mCurrentCursor; };
- /*virtual*/ void captureMouse() {};
- /*virtual*/ void releaseMouse() {};
- /*virtual*/ void setMouseClipping( BOOL b ) {};
- /*virtual*/ BOOL isClipboardTextAvailable() {return FALSE; };
- /*virtual*/ BOOL pasteTextFromClipboard(LLWString &dst) {return FALSE; };
- /*virtual*/ BOOL copyTextToClipboard(const LLWString &src) {return FALSE; };
- /*virtual*/ void flashIcon(F32 seconds) {};
- /*virtual*/ F32 getGamma() {return 1.0f; };
- /*virtual*/ BOOL setGamma(const F32 gamma) {return FALSE; }; // Set the gamma
- /*virtual*/ BOOL restoreGamma() {return FALSE; }; // Restore original gamma table (before updating gamma)
- //virtual ESwapMethod getSwapMethod() { return mSwapMethod; }
- /*virtual*/ void gatherInput() {};
- /*virtual*/ void delayInputProcessing() {};
- /*virtual*/ void swapBuffers();
-
- /*virtual*/ LLString getTempFileName() {return LLString(""); };
- /*virtual*/ void deleteFile( const char* file_name ) {};
- /*virtual*/ S32 stat( const char* file_name, struct stat* stat_info ) {return 0; };
- /*virtual*/ BOOL sendEmail(const char* address,const char* subject,const char* body_text,const char* attachment=NULL, const char* attachment_displayed_name=NULL) { return FALSE; };
-
-
- // handy coordinate space conversion routines
- /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to) { return FALSE; };
- /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to) { return FALSE; };
- /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordGL *to) { return FALSE; };
- /*virtual*/ BOOL convertCoords(LLCoordGL from, LLCoordWindow *to) { return FALSE; };
- /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordGL *to) { return FALSE; };
- /*virtual*/ BOOL convertCoords(LLCoordGL from, LLCoordScreen *to) { return FALSE; };
-
- /*virtual*/ LLWindowResolution* getSupportedResolutions(S32 &num_resolutions) { return NULL; };
- /*virtual*/ F32 getNativeAspectRatio() { return 1.0f; };
- /*virtual*/ F32 getPixelAspectRatio() { return 1.0f; };
- /*virtual*/ void setNativeAspectRatio(F32 ratio) {}
-
- //virtual BOOL dialog_color_picker (F32 *r, F32 *g, F32 *b );
-
- /*virtual*/ void *getPlatformWindow() { return NULL; }
-
- LLWindowLinux(char *title, char *name, S32 x, S32 y, S32 width, S32 height,
- U32 flags, BOOL fullscreen, BOOL clearBg,
- BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth);
- ~LLWindowLinux();
-};
-
-class LLSplashScreenLinux : public LLSplashScreen
-{
-public:
- LLSplashScreenLinux() {};
- virtual ~LLSplashScreenLinux() {};
-
- /*virtual*/ void showImpl() {};
- /*virtual*/ void updateImpl(const char* mesg) {};
- /*virtual*/ void hideImpl() {};
-
-};
-
-#endif //LL_LLWINDOWWIN32_H
diff --git a/linden/indra/llwindow/llwindowmacosx-objc.mm b/linden/indra/llwindow/llwindowmacosx-objc.mm
index d2efd77..d4ea2be 100644
--- a/linden/indra/llwindow/llwindowmacosx-objc.mm
+++ b/linden/indra/llwindow/llwindowmacosx-objc.mm
@@ -47,6 +47,8 @@ void setupCocoa()
if(!inited)
{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+
// This is a bit of voodoo taken from the Apple sample code "CarbonCocoa_PictureCursor":
// http://developer.apple.com/samplecode/CarbonCocoa_PictureCursor/index.html
@@ -55,6 +57,8 @@ void setupCocoa()
// Must first call [[[NSWindow alloc] init] release] to get the NSWindow machinery set up so that NSCursor can use a window to cache the cursor image
[[[NSWindow alloc] init] release];
+
+ [pool release];
}
}
@@ -82,8 +86,10 @@ OSErr releaseImageCursor(CursorRef ref)
{
if( ref != NULL )
{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSCursor *cursor = (NSCursor*)ref;
[cursor release];
+ [pool release];
}
else
{
@@ -97,8 +103,10 @@ OSErr setImageCursor(CursorRef ref)
{
if( ref != NULL )
{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSCursor *cursor = (NSCursor*)ref;
[cursor set];
+ [pool release];
}
else
{
diff --git a/linden/indra/llwindow/llwindowmacosx.cpp b/linden/indra/llwindow/llwindowmacosx.cpp
index f5cc8c6..5ab0ba6 100644
--- a/linden/indra/llwindow/llwindowmacosx.cpp
+++ b/linden/indra/llwindow/llwindowmacosx.cpp
@@ -359,7 +359,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
if (mFullscreen && (mOldDisplayMode == NULL))
{
- llinfos << "createContext: setting up fullscreen " << width << "x" << height << llendl;
+ LL_INFOS("Window") << "createContext: setting up fullscreen " << width << "x" << height << LL_ENDL;
// NOTE: The refresh rate will be REPORTED AS 0 for many DVI and notebook displays. Plan accordingly.
double refresh = getDictDouble (CGDisplayCurrentMode (mDisplay), kCGDisplayRefreshRate);
@@ -380,18 +380,18 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
U32 closestWidth = 0;
int i;
- llinfos << "createContext: searching for a display mode, original aspect is " << mOriginalAspectRatio << llendl;
+ LL_DEBUGS("Window") << "createContext: searching for a display mode, original aspect is " << mOriginalAspectRatio << LL_ENDL;
for(i=0; i < resolutionCount; i++)
{
F32 aspect = (F32)resolutionList[i].mWidth / (F32)resolutionList[i].mHeight;
- llinfos << "createContext: width " << resolutionList[i].mWidth << " height " << resolutionList[i].mHeight << " aspect " << aspect << llendl;
+ LL_DEBUGS("Window") << "createContext: width " << resolutionList[i].mWidth << " height " << resolutionList[i].mHeight << " aspect " << aspect << LL_ENDL;
if( (resolutionList[i].mHeight >= 700) && (resolutionList[i].mHeight <= 800) &&
(fabs(aspect - mOriginalAspectRatio) < fabs(closestAspect - mOriginalAspectRatio)))
{
- llinfos << " (new closest mode) " << llendl;
+ LL_DEBUGS("Window") << " (new closest mode) " << LL_ENDL;
// This is the closest mode we've seen yet.
closestWidth = resolutionList[i].mWidth;
@@ -437,7 +437,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
if (refDisplayMode)
{
- llinfos << "createContext: switching display resolution" << llendl;
+ LL_DEBUGS("Window") << "createContext: switching display resolution" << LL_ENDL;
mOldDisplayMode = CGDisplayCurrentMode (mDisplay);
CGDisplaySwitchToMode (mDisplay, refDisplayMode);
// CFRelease(refDisplayMode);
@@ -452,11 +452,11 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
mFullscreenBits = CGDisplayBitsPerPixel(mDisplay);
mFullscreenRefresh = llround(getDictDouble (CGDisplayCurrentMode (mDisplay), kCGDisplayRefreshRate));
- llinfos << "Running at " << mFullscreenWidth
+ LL_INFOS("Window") << "Running at " << mFullscreenWidth
<< "x" << mFullscreenHeight
<< "x" << mFullscreenBits
<< " @ " << mFullscreenRefresh
- << llendl;
+ << LL_ENDL;
}
else
{
@@ -480,7 +480,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
//int displayHeight = CGDisplayPixelsHigh(mDisplay);
//const int menuBarPlusTitleBar = 44; // Ugly magic number.
- llinfos << "createContext: creating window" << llendl;
+ LL_DEBUGS("Window") << "createContext: creating window" << LL_ENDL;
window_rect.left = (long) x;
window_rect.right = (long) x + width;
@@ -534,7 +534,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
err = NewTSMDocument(1, types, &mTSMDocument, 0);
if (err != noErr)
{
- llwarns << "createContext: couldn't create a TSMDocument (" << err << ")" << llendl;
+ LL_WARNS("Window") << "createContext: couldn't create a TSMDocument (" << err << ")" << LL_ENDL;
}
if (mTSMDocument)
{
@@ -575,7 +575,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
AGL_NONE
};
- llinfos << "createContext: creating fullscreen pixelformat" << llendl;
+ LL_DEBUGS("Window") << "createContext: creating fullscreen pixelformat" << LL_ENDL;
GDHandle gdhDisplay = NULL;
err = DMGetGDeviceByDisplayID ((DisplayIDType)mDisplay, &gdhDisplay, false);
@@ -602,7 +602,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
AGL_NONE
};
- llinfos << "createContext: creating windowed pixelformat" << llendl;
+ LL_DEBUGS("Window") << "createContext: creating windowed pixelformat" << LL_ENDL;
mPixelFormat = aglChoosePixelFormat(NULL, 0, windowedAttrib);
@@ -622,7 +622,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
if(mPixelFormat)
{
- llinfos << "createContext: creating GL context" << llendl;
+ LL_DEBUGS("Window") << "createContext: creating GL context" << LL_ENDL;
mContext = aglCreateContext(mPixelFormat, NULL);
}
@@ -670,7 +670,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
{
// We successfully captured the display. Use a fullscreen drawable
- llinfos << "createContext: attaching fullscreen drawable" << llendl;
+ LL_DEBUGS("Window") << "createContext: attaching fullscreen drawable" << LL_ENDL;
#if CAPTURE_ALL_DISPLAYS
// Capture all displays (may want to do this for final build)
@@ -688,7 +688,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
}
else if(!mFullscreen && (mWindow != NULL))
{
- llinfos << "createContext: attaching windowed drawable" << llendl;
+ LL_DEBUGS("Window") << "createContext: attaching windowed drawable" << LL_ENDL;
// We created a window. Use it as the drawable.
if(!aglSetDrawable(mContext, GetWindowPort (mWindow)))
@@ -705,7 +705,7 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
if(mContext != NULL)
{
- llinfos << "createContext: setting current context" << llendl;
+ LL_DEBUGS("Window") << "createContext: setting current context" << LL_ENDL;
if (!aglSetCurrentContext(mContext))
{
@@ -759,11 +759,11 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
return FALSE;
}
- llinfos << "GL buffer: Color Bits " << S32(colorBits)
+ LL_INFOS("GLInit") << "GL buffer: Color Bits " << S32(colorBits)
<< " Alpha Bits " << S32(alphaBits)
<< " Depth Bits " << S32(depthBits)
<< " Stencil Bits" << S32(stencilBits)
- << llendl;
+ << LL_ENDL;
if (colorBits < 32)
{
@@ -798,12 +798,12 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
GLint frames_per_swap = 0;
if (disable_vsync)
{
- llinfos << "Disabling vertical sync" << llendl;
+ LL_DEBUGS("GLInit") << "Disabling vertical sync" << LL_ENDL;
frames_per_swap = 0;
}
else
{
- llinfos << "Keeping vertical sync" << llendl;
+ LL_DEBUGS("GLinit") << "Keeping vertical sync" << LL_ENDL;
frames_per_swap = 1;
}
aglSetInteger(mContext, AGL_SWAP_INTERVAL, &frames_per_swap);
@@ -818,11 +818,11 @@ BOOL LLWindowMacOSX::createContext(int x, int y, int width, int height, int bits
if (cgl_err != kCGLNoError )
{
- llinfos << "Multi-threaded OpenGL not available." << llendl;
+ LL_DEBUGS("GLInit") << "Multi-threaded OpenGL not available." << LL_ENDL;
}
else
{
- llinfos << "Multi-threaded OpenGL enabled." << llendl;
+ LL_DEBUGS("GLInit") << "Multi-threaded OpenGL enabled." << LL_ENDL;
}
}
@@ -869,11 +869,11 @@ BOOL LLWindowMacOSX::switchContext(BOOL fullscreen, const LLCoordScreen &size, B
mFullscreenBits = CGDisplayBitsPerPixel(mDisplay);
mFullscreenRefresh = llround(getDictDouble (CGDisplayCurrentMode (mDisplay), kCGDisplayRefreshRate));
- llinfos << "Switched resolution to " << mFullscreenWidth
+ LL_INFOS("Window") << "Switched resolution to " << mFullscreenWidth
<< "x" << mFullscreenHeight
<< "x" << mFullscreenBits
<< " @ " << mFullscreenRefresh
- << llendl;
+ << LL_ENDL;
// Update the GL context to the new screen size
if (!aglUpdateContext(mContext))
@@ -943,7 +943,7 @@ void LLWindowMacOSX::destroyContext()
// Unhook the GL context from any drawable it may have
if(mContext != NULL)
{
- llinfos << "destroyContext: unhooking drawable " << llendl;
+ LL_DEBUGS("Window") << "destroyContext: unhooking drawable " << LL_ENDL;
aglSetCurrentContext (NULL);
aglSetDrawable(mContext, NULL);
@@ -952,7 +952,7 @@ void LLWindowMacOSX::destroyContext()
// Make sure the display resolution gets restored
if(mOldDisplayMode != NULL)
{
- llinfos << "destroyContext: restoring display resolution " << llendl;
+ LL_DEBUGS("Window") << "destroyContext: restoring display resolution " << LL_ENDL;
CGDisplaySwitchToMode (mDisplay, mOldDisplayMode);
@@ -978,7 +978,7 @@ void LLWindowMacOSX::destroyContext()
// Clean up the pixel format
if(mPixelFormat != NULL)
{
- llinfos << "destroyContext: destroying pixel format " << llendl;
+ LL_DEBUGS("Window") << "destroyContext: destroying pixel format " << LL_ENDL;
aglDestroyPixelFormat(mPixelFormat);
mPixelFormat = NULL;
}
@@ -986,14 +986,14 @@ void LLWindowMacOSX::destroyContext()
// Remove any Carbon Event handlers we installed
if(mGlobalHandlerRef != NULL)
{
- llinfos << "destroyContext: removing global event handler" << llendl;
+ LL_DEBUGS("Window") << "destroyContext: removing global event handler" << LL_ENDL;
RemoveEventHandler(mGlobalHandlerRef);
mGlobalHandlerRef = NULL;
}
if(mWindowHandlerRef != NULL)
{
- llinfos << "destroyContext: removing window event handler" << llendl;
+ LL_DEBUGS("Window") << "destroyContext: removing window event handler" << LL_ENDL;
RemoveEventHandler(mWindowHandlerRef);
mWindowHandlerRef = NULL;
}
@@ -1001,7 +1001,7 @@ void LLWindowMacOSX::destroyContext()
// Cleanup any TSM document we created.
if(mTSMDocument != NULL)
{
- llinfos << "destroyContext: deleting TSM document" << llendl;
+ LL_DEBUGS("Window") << "destroyContext: deleting TSM document" << LL_ENDL;
DeactivateTSMDocument(mTSMDocument);
DeleteTSMDocument(mTSMDocument);
mTSMDocument = NULL;
@@ -1010,7 +1010,7 @@ void LLWindowMacOSX::destroyContext()
// Close the window
if(mWindow != NULL)
{
- llinfos << "destroyContext: disposing window" << llendl;
+ LL_DEBUGS("Window") << "destroyContext: disposing window" << LL_ENDL;
DisposeWindow(mWindow);
mWindow = NULL;
}
@@ -1018,7 +1018,7 @@ void LLWindowMacOSX::destroyContext()
// Clean up the GL context
if(mContext != NULL)
{
- llinfos << "destroyContext: destroying GL context" << llendl;
+ LL_DEBUGS("Window") << "destroyContext: destroying GL context" << LL_ENDL;
aglDestroyContext(mContext);
mContext = NULL;
}
@@ -3394,4 +3394,13 @@ void LLWindowMacOSX::interruptLanguageTextInput()
// Well, if Apple's TSM document is correct, we don't.
}
+//static
+std::string LLWindowMacOSX::getFontListSans()
+{
+ // This is a fairly complete Japanese font that ships with Mac OS X.
+ // The first filename is in UTF8, but it shows up in the font menu as "Hiragino Kaku Gothic Pro W3".
+ // The third filename is in UTF8, but it shows up in the font menu as "STHeiti Light"
+ return "\xE3\x83\x92\xE3\x83\xA9\xE3\x82\xAD\xE3\x82\x99\xE3\x83\x8E\xE8\xA7\x92\xE3\x82\xB3\xE3\x82\x99 Pro W3.otf;\xE3\x83\x92\xE3\x83\xA9\xE3\x82\xAD\xE3\x82\x99\xE3\x83\x8E\xE8\xA7\x92\xE3\x82\xB3\xE3\x82\x99 ProN W3.otf;AppleGothic.dfont;AppleGothic.ttf;\xe5\x8d\x8e\xe6\x96\x87\xe7\xbb\x86\xe9\xbb\x91.ttf";
+}
+
#endif // LL_DARWIN
diff --git a/linden/indra/llwindow/llwindowmacosx.h b/linden/indra/llwindow/llwindowmacosx.h
index 1edb218..d8a0788 100644
--- a/linden/indra/llwindow/llwindowmacosx.h
+++ b/linden/indra/llwindow/llwindowmacosx.h
@@ -116,6 +116,8 @@ public:
/*virtual*/ void allowLanguageTextInput(LLPreeditor *preeditor, BOOL b);
/*virtual*/ void interruptLanguageTextInput();
+ static std::string getFontListSans();
+
protected:
LLWindowMacOSX(
char *title, char *name, int x, int y, int width, int height, U32 flags,
diff --git a/linden/indra/llwindow/llwindowsdl.cpp b/linden/indra/llwindow/llwindowsdl.cpp
index d9dc040..0d1d622 100644
--- a/linden/indra/llwindow/llwindowsdl.cpp
+++ b/linden/indra/llwindow/llwindowsdl.cpp
@@ -39,6 +39,7 @@
#include "llgl.h"
#include "llstring.h"
#include "lldir.h"
+#include "llfindlocale.h"
#include "llglheaders.h"
@@ -51,6 +52,10 @@ extern "C" {
#include
#endif // LL_GTK
+extern "C" {
+# include "fontconfig/fontconfig.h"
+}
+
#if LL_LINUX || LL_SOLARIS
// not necessarily available on random SDL platforms, so #if LL_LINUX
// for execv(), waitpid(), fork()
@@ -2030,7 +2035,8 @@ void LLWindowSDL::gatherInput()
// the locale to protect it, as exotic/non-C locales
// causes our code lots of general critical weirdness
// and crashness. (SL-35450)
- std::string saved_locale = setlocale(LC_ALL, NULL);
+ static std::string saved_locale;
+ saved_locale = ll_safe_string(setlocale(LC_ALL, NULL));
// Pump until we've nothing left to do or passed 1/15th of a
// second pumping for this frame.
@@ -2751,8 +2757,8 @@ void spawn_web_browser(const char* escaped_url)
# endif // LL_X11
std::string cmd;
- cmd = gDirUtilp->getAppRODataDir().c_str();
- cmd += gDirUtilp->getDirDelimiter().c_str();
+ cmd = gDirUtilp->getAppRODataDir();
+ cmd += gDirUtilp->getDirDelimiter();
cmd += "launch_url.sh";
char* const argv[] = {(char*)cmd.c_str(), (char*)escaped_url, NULL};
@@ -2829,4 +2835,90 @@ void LLWindowSDL::bringToFront()
#endif // LL_X11
}
+//static
+std::string LLWindowSDL::getFontListSans()
+{
+ // Use libfontconfig to find us a nice ordered list of fallback fonts
+ // specific to this system.
+ std::string final_fallback("/usr/share/fonts/truetype/kochi/kochi-gothic.ttf");
+ // Our 'ideal' font properties which define the sorting results.
+ // slant=0 means Roman, index=0 means the first face in a font file
+ // (the one we actually use), weight=80 means medium weight,
+ // spacing=0 means proportional spacing.
+ std::string sort_order("slant=0:index=0:weight=80:spacing=0");
+ // elide_unicode_coverage removes fonts from the list whose unicode
+ // range is covered by fonts earlier in the list. This usually
+ // removes ~90% of the fonts as redundant (which is great because
+ // the font list can be huge), but might unnecessarily reduce the
+ // renderable range if for some reason our FreeType actually fails
+ // to use some of the fonts we want it to.
+ const bool elide_unicode_coverage = true;
+ std::string rtn;
+ FcFontSet *fs = NULL;
+ FcPattern *sortpat = NULL;
+ int font_count = 0;
+
+ llinfos << "Getting system font list from FontConfig..." << llendl;
+
+ // If the user has a system-wide language preference, then favor
+ // fonts from that language group. This doesn't affect the types
+ // of languages that can be displayed, but ensures that their
+ // preferred language is rendered from a single consistent font where
+ // possible.
+ FL_Locale *locale = NULL;
+ FL_Success success = FL_FindLocale(&locale, FL_MESSAGES);
+ if (success != 0)
+ {
+ if (success >= 2 && locale->lang) // confident!
+ {
+ llinfos << "Preferring fonts of language: "
+ << locale->lang
+ << llendl;
+ sort_order = "lang=" + std::string(locale->lang) + ":"
+ + sort_order;
+ }
+ FL_FreeLocale(&locale);
+ }
+
+ if (!FcInit())
+ {
+ llwarns << "FontConfig failed to initialize." << llendl;
+ return final_fallback;
+ }
+
+ sortpat = FcNameParse((FcChar8*) sort_order.c_str());
+ if (sortpat)
+ {
+ // Sort the list of system fonts from most-to-least-desirable.
+ fs = FcFontSort(NULL, sortpat, elide_unicode_coverage,
+ NULL, NULL);
+ FcPatternDestroy(sortpat);
+ }
+
+ if (fs)
+ {
+ // Get the full pathnames to the fonts, where available,
+ // which is what we really want.
+ int i;
+ for (i=0; infont; ++i)
+ {
+ FcChar8 *filename;
+ if (FcResultMatch == FcPatternGetString(fs->fonts[i],
+ FC_FILE, 0,
+ &filename)
+ && filename)
+ {
+ rtn += std::string((const char*)filename)+";";
+ ++font_count;
+ }
+ }
+ FcFontSetDestroy (fs);
+ }
+
+ lldebugs << "Using font list: " << rtn << llendl;
+ llinfos << "Using " << font_count << " system font(s)." << llendl;
+
+ return rtn + final_fallback;
+}
+
#endif // LL_SDL
diff --git a/linden/indra/llwindow/llwindowsdl.h b/linden/indra/llwindow/llwindowsdl.h
index d1b2b77..5aed4e6 100644
--- a/linden/indra/llwindow/llwindowsdl.h
+++ b/linden/indra/llwindow/llwindowsdl.h
@@ -120,6 +120,8 @@ public:
/*virtual*/ void *getPlatformWindow();
/*virtual*/ void bringToFront();
+ static std::string getFontListSans();
+
// Not great that these are public, but they have to be accessible
// by non-class code and it's better than making them global.
#if LL_X11
@@ -154,7 +156,6 @@ protected:
BOOL shouldPostQuit() { return mPostQuit; }
-
protected:
//
// Platform specific methods
diff --git a/linden/indra/llwindow/llwindowsolaris.cpp b/linden/indra/llwindow/llwindowsolaris.cpp
deleted file mode 100644
index 54a77ae..0000000
--- a/linden/indra/llwindow/llwindowsolaris.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * @file fmodwrapper.cpp
- * @brief dummy source file for building a shared library to wrap libfmod.a
- *
- * $LicenseInfo:firstyear=2005&license=viewergpl$
- *
- * Copyright (c) 2005-2008, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#if LL_SOLARIS
-
-#include "linden_common.h"
-#include "indra_constants.h"
-
-#include "llwindowsolaris.h"
-#include "llgl.h"
-#include "llglheaders.h"
-
-//
-// LLWindowSolaris
-//
-LLWindowSolaris::LLWindowSolaris(char *title, char *name, S32 x, S32 y, S32 width, S32 height,
- U32 flags, BOOL fullscreen, BOOL clearBg,
- BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth)
- : LLWindow(fullscreen, flags)
-{
- llerrs << "Solaris window not yet supported" << llendl;
-}
-
-
-LLWindowSolaris::~LLWindowSolaris()
-{
-}
-
-void LLWindowSolaris::swapBuffers()
-{
-}
-
-#endif // LL_SOLARIS
diff --git a/linden/indra/llwindow/llwindowsolaris.h b/linden/indra/llwindow/llwindowsolaris.h
deleted file mode 100644
index 7a271c0..0000000
--- a/linden/indra/llwindow/llwindowsolaris.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * @file fmodwrapper.cpp
- * @brief dummy source file for building a shared library to wrap libfmod.a
- *
- * $LicenseInfo:firstyear=2005&license=viewergpl$
- *
- * Copyright (c) 2005-2008, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLWINDOWSOLARIS_H
-#define LL_LLWINDOWSOLARIS_H
-
-#include "llwindow.h"
-
-class LLWindowSolaris : public LLWindow
-{
-public:
- /*virtual*/ void show() {};
- /*virtual*/ void hide() {};
- /*virtual*/ void close() {};
- /*virtual*/ BOOL getVisible() {return FALSE;};
- /*virtual*/ BOOL getMinimized() {return FALSE;};
- /*virtual*/ BOOL getMaximized() {return FALSE;};
- /*virtual*/ BOOL maximize() {return FALSE;};
- /*virtual*/ BOOL getFullscreen() {return FALSE;};
- /*virtual*/ BOOL getPosition(LLCoordScreen *position) {return FALSE;};
- /*virtual*/ BOOL getSize(LLCoordScreen *size) {return FALSE;};
- /*virtual*/ BOOL getSize(LLCoordWindow *size) {return FALSE;};
- /*virtual*/ BOOL setPosition(LLCoordScreen position) {return FALSE;};
- /*virtual*/ BOOL setSize(LLCoordScreen size) {return FALSE;};
- /*virtual*/ BOOL switchContext(BOOL fullscreen, const LLCoordScreen &size, BOOL disable_vsync, const LLCoordScreen * const posp = NULL) {return FALSE;};
- /*virtual*/ BOOL setCursorPosition(LLCoordWindow position) {return FALSE;};
- /*virtual*/ BOOL getCursorPosition(LLCoordWindow *position) {return FALSE;};
- /*virtual*/ void showCursor() {};
- /*virtual*/ void hideCursor() {};
- /*virtual*/ void showCursorFromMouseMove() {};
- /*virtual*/ void hideCursorUntilMouseMove() {};
- /*virtual*/ BOOL isCursorHidden() {return FALSE;};
- /*virtual*/ void setCursor(ECursorType cursor) {};
- //virtual ECursorType getCursor() { return mCurrentCursor; };
- /*virtual*/ void captureMouse() {};
- /*virtual*/ void releaseMouse() {};
- /*virtual*/ void setMouseClipping( BOOL b ) {};
- /*virtual*/ BOOL isClipboardTextAvailable() {return FALSE; };
- /*virtual*/ BOOL pasteTextFromClipboard(LLWString &dst) {return FALSE; };
- /*virtual*/ BOOL copyTextToClipboard(const LLWString &src) {return FALSE; };
- /*virtual*/ void flashIcon(F32 seconds) {};
- /*virtual*/ F32 getGamma() {return 1.0f; };
- /*virtual*/ BOOL setGamma(const F32 gamma) {return FALSE; }; // Set the gamma
- /*virtual*/ U32 getFSAASamples() { return 0; }
- /*virtual*/ void setFSAASamples(const U32 samples) { }
- /*virtual*/ BOOL restoreGamma() {return FALSE; }; // Restore original gamma table (before updating gamma)
- //virtual ESwapMethod getSwapMethod() { return mSwapMethod; }
- /*virtual*/ void gatherInput() {};
- /*virtual*/ void delayInputProcessing() {};
- /*virtual*/ void swapBuffers();
-
- /*virtual*/ LLString getTempFileName() {return LLString(""); };
- /*virtual*/ void deleteFile( const char* file_name ) {};
- /*virtual*/ S32 stat( const char* file_name, struct stat* stat_info ) {return 0; };
- /*virtual*/ BOOL sendEmail(const char* address,const char* subject,const char* body_text,const char* attachment=NULL, const char* attachment_displayed_name=NULL) { return FALSE; };
-
-
- // handy coordinate space conversion routines
- /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to) { return FALSE; };
- /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordScreen *to) { return FALSE; };
- /*virtual*/ BOOL convertCoords(LLCoordWindow from, LLCoordGL *to) { return FALSE; };
- /*virtual*/ BOOL convertCoords(LLCoordGL from, LLCoordWindow *to) { return FALSE; };
- /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordGL *to) { return FALSE; };
- /*virtual*/ BOOL convertCoords(LLCoordGL from, LLCoordScreen *to) { return FALSE; };
-
- /*virtual*/ LLWindowResolution* getSupportedResolutions(S32 &num_resolutions) { return NULL; };
- /*virtual*/ F32 getNativeAspectRatio() { return 1.0f; };
- /*virtual*/ F32 getPixelAspectRatio() { return 1.0f; };
- /*virtual*/ void setNativeAspectRatio(F32 ratio) {}
-
- //virtual BOOL dialog_color_picker (F32 *r, F32 *g, F32 *b );
-
- /*virtual*/ void *getPlatformWindow() { return NULL; }
-
- LLWindowSolaris(char *title, char *name, S32 x, S32 y, S32 width, S32 height,
- U32 flags, BOOL fullscreen, BOOL clearBg,
- BOOL disable_vsync, BOOL use_gl, BOOL ignore_pixel_depth);
- ~LLWindowSolaris();
-};
-
-class LLSplashScreenLinux : public LLSplashScreen
-{
-public:
- LLSplashScreenLinux() {};
- virtual ~LLSplashScreenLinux() {};
-
- /*virtual*/ void showImpl() {};
- /*virtual*/ void updateImpl(const char* mesg) {};
- /*virtual*/ void hideImpl() {};
-
-};
-
-#endif //LL_LLWINDOWSOLARIS_H
diff --git a/linden/indra/llwindow/llwindowwin32.cpp b/linden/indra/llwindow/llwindowwin32.cpp
index 9963493..f2a2727 100644
--- a/linden/indra/llwindow/llwindowwin32.cpp
+++ b/linden/indra/llwindow/llwindowwin32.cpp
@@ -84,7 +84,7 @@ LLW32MsgCallback gAsyncMsgCallback = NULL;
void show_window_creation_error(const char* title)
{
- llwarns << title << llendl;
+ LL_WARNS("Window") << title << LL_ENDL;
}
//static
@@ -534,7 +534,7 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width,
if (closest_refresh == 0)
{
- llwarns << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << llendl;
+ LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL;
success = FALSE;
}
@@ -557,11 +557,11 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width,
mFullscreenBits = dev_mode.dmBitsPerPel;
mFullscreenRefresh = dev_mode.dmDisplayFrequency;
- llinfos << "Running at " << dev_mode.dmPelsWidth
+ LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth
<< "x" << dev_mode.dmPelsHeight
<< "x" << dev_mode.dmBitsPerPel
<< " @ " << dev_mode.dmDisplayFrequency
- << llendl;
+ << LL_ENDL;
}
else
{
@@ -576,7 +576,7 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width,
OSMessageBox(error, "Error", OSMB_OK);
}
}
-
+
// TODO: add this after resolving _WIN32_WINNT issue
// if (!fullscreen)
// {
@@ -588,7 +588,7 @@ LLWindowWin32::LLWindowWin32(char *title, char *name, S32 x, S32 y, S32 width,
// TrackMouseEvent( &track_mouse_event );
// }
-
+
//-----------------------------------------------------------------------
// Create GL drawing context
//-----------------------------------------------------------------------
@@ -657,7 +657,7 @@ void LLWindowWin32::restore()
// Usually called from LLWindowManager::destroyWindow()
void LLWindowWin32::close()
{
- llinfos << "Closing LLWindowWin32" << llendl;
+ LL_DEBUGS("Window") << "Closing LLWindowWin32" << LL_ENDL;
// Is window is already closed?
if (!mWindowHandle)
{
@@ -675,20 +675,20 @@ void LLWindowWin32::close()
}
// Clean up remaining GL state
- llinfos << "Shutting down GL" << llendl;
+ LL_DEBUGS("Window") << "Shutting down GL" << LL_ENDL;
gGLManager.shutdownGL();
- llinfos << "Releasing Context" << llendl;
+ LL_DEBUGS("Window") << "Releasing Context" << LL_ENDL;
if (mhRC)
{
if (!wglMakeCurrent(NULL, NULL))
{
- llwarns << "Release of DC and RC failed" << llendl;
+ LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL;
}
if (!wglDeleteContext(mhRC))
{
- llwarns << "Release of rendering context failed" << llendl;
+ LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL;
}
mhRC = NULL;
@@ -699,11 +699,11 @@ void LLWindowWin32::close()
if (mhDC && !ReleaseDC(mWindowHandle, mhDC))
{
- llwarns << "Release of ghDC failed" << llendl;
+ LL_WARNS("Window") << "Release of ghDC failed" << LL_ENDL;
mhDC = NULL;
}
- llinfos << "Destroying Window" << llendl;
+ LL_DEBUGS("Window") << "Destroying Window" << LL_ENDL;
// Don't process events in our mainWindowProc any longer.
SetWindowLong(mWindowHandle, GWL_USERDATA, NULL);
@@ -866,12 +866,12 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
{
if (!wglMakeCurrent(NULL, NULL))
{
- llwarns << "Release of DC and RC failed" << llendl;
+ LL_WARNS("Window") << "Release of DC and RC failed" << LL_ENDL;
}
if (!wglDeleteContext(mhRC))
{
- llwarns << "Release of rendering context failed" << llendl;
+ LL_WARNS("Window") << "Release of rendering context failed" << LL_ENDL;
}
mhRC = NULL;
@@ -905,7 +905,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
if (closest_refresh == 0)
{
- llwarns << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << llendl;
+ LL_WARNS("Window") << "Couldn't find display mode " << width << " by " << height << " at " << BITS_PER_PIXEL << " bits per pixel" << LL_ENDL;
return FALSE;
}
@@ -927,11 +927,11 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
mFullscreenBits = dev_mode.dmBitsPerPel;
mFullscreenRefresh = dev_mode.dmDisplayFrequency;
- llinfos << "Running at " << dev_mode.dmPelsWidth
+ LL_INFOS("Window") << "Running at " << dev_mode.dmPelsWidth
<< "x" << dev_mode.dmPelsHeight
<< "x" << dev_mode.dmBitsPerPel
<< " @ " << dev_mode.dmDisplayFrequency
- << llendl;
+ << LL_ENDL;
window_rect.left = (long) 0;
window_rect.right = (long) width; // Windows GDI rects don't include rightmost pixel
@@ -952,8 +952,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
mFullscreenBits = -1;
mFullscreenRefresh = -1;
- llinfos << "Unable to run fullscreen at " << width << "x" << height << llendl;
- llinfos << "Running in window." << llendl;
+ LL_INFOS("Window") << "Unable to run fullscreen at " << width << "x" << height << LL_ENDL;
return FALSE;
}
}
@@ -1146,7 +1145,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
{
if (end_attrib > 0)
{
- llinfos << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << llendl;
+ LL_INFOS("Window") << "No valid pixel format for " << mFSAASamples << "x anti-aliasing." << LL_ENDL;
attrib_list[end_attrib] = 0;
BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
@@ -1160,7 +1159,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
if (!num_formats)
{
- llinfos << "No 32 bit z-buffer, trying 24 bits instead" << llendl;
+ LL_INFOS("Window") << "No 32 bit z-buffer, trying 24 bits instead" << LL_ENDL;
// Try 24-bit format
attrib_list[1] = 24;
BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
@@ -1173,7 +1172,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
if (!num_formats)
{
- llwarns << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << llendl;
+ LL_WARNS("Window") << "Couldn't get 24 bit z-buffer,trying 16 bits instead!" << LL_ENDL;
attrib_list[1] = 16;
BOOL result = wglChoosePixelFormatARB(mhDC, attrib_list, NULL, 256, pixel_formats, &num_formats);
if (!result || !num_formats)
@@ -1185,7 +1184,7 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
}
}
- llinfos << "Choosing pixel formats: " << num_formats << " pixel formats returned" << llendl;
+ LL_INFOS("Window") << "Choosing pixel formats: " << num_formats << " pixel formats returned" << LL_ENDL;
}
pixel_format = pixel_formats[0];
@@ -1241,26 +1240,26 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
{
case WGL_SWAP_EXCHANGE_ARB:
mSwapMethod = SWAP_METHOD_EXCHANGE;
- llinfos << "Swap Method: Exchange" << llendl;
+ LL_DEBUGS("Window") << "Swap Method: Exchange" << LL_ENDL;
break;
case WGL_SWAP_COPY_ARB:
mSwapMethod = SWAP_METHOD_COPY;
- llinfos << "Swap Method: Copy" << llendl;
+ LL_DEBUGS("Window") << "Swap Method: Copy" << LL_ENDL;
break;
case WGL_SWAP_UNDEFINED_ARB:
mSwapMethod = SWAP_METHOD_UNDEFINED;
- llinfos << "Swap Method: Undefined" << llendl;
+ LL_DEBUGS("Window") << "Swap Method: Undefined" << LL_ENDL;
break;
default:
mSwapMethod = SWAP_METHOD_UNDEFINED;
- llinfos << "Swap Method: Unknown" << llendl;
+ LL_DEBUGS("Window") << "Swap Method: Unknown" << LL_ENDL;
break;
}
}
}
else
{
- llwarns << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << llendl;
+ LL_WARNS("Window") << "No wgl_ARB_pixel_format extension, using default ChoosePixelFormat!" << LL_ENDL;
}
// Verify what pixel format we actually received.
@@ -1272,10 +1271,10 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
return FALSE;
}
- llinfos << "GL buffer: Color Bits " << S32(pfd.cColorBits)
+ LL_INFOS("Window") << "GL buffer: Color Bits " << S32(pfd.cColorBits)
<< " Alpha Bits " << S32(pfd.cAlphaBits)
<< " Depth Bits " << S32(pfd.cDepthBits)
- << llendl;
+ << LL_ENDL;
// make sure we have 32 bits per pixel
if (pfd.cColorBits < 32 || GetDeviceCaps(mhDC, BITSPIXEL) < 32)
@@ -1338,12 +1337,12 @@ BOOL LLWindowWin32::switchContext(BOOL fullscreen, const LLCoordScreen &size, BO
// Disable vertical sync for swap
if (disable_vsync && wglSwapIntervalEXT)
{
- llinfos << "Disabling vertical sync" << llendl;
+ LL_DEBUGS("Window") << "Disabling vertical sync" << LL_ENDL;
wglSwapIntervalEXT(0);
}
else
{
- llinfos << "Keeping vertical sync" << llendl;
+ LL_DEBUGS("Window") << "Keeping vertical sync" << LL_ENDL;
}
SetWindowLong(mWindowHandle, GWL_USERDATA, (U32)this);
@@ -1701,11 +1700,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
if (gDebugWindowProc)
{
- llinfos << "WINDOWPROC ActivateApp "
+ LL_INFOS("Window") << "WINDOWPROC ActivateApp "
<< " activating " << S32(activating)
<< " minimized " << S32(minimized)
<< " fullscreen " << S32(window_imp->mFullscreen)
- << llendl;
+ << LL_ENDL;
}
if (window_imp->mFullscreen)
@@ -1746,10 +1745,10 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
// properly when we run fullscreen.
if (gDebugWindowProc)
{
- llinfos << "WINDOWPROC Activate "
+ LL_INFOS("Window") << "WINDOWPROC Activate "
<< " activating " << S32(activating)
<< " minimized " << S32(minimized)
- << llendl;
+ << LL_ENDL;
}
// Don't handle this.
@@ -1805,9 +1804,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
{
if (gDebugWindowProc)
{
- llinfos << "Debug WindowProc WM_KEYDOWN "
+ LL_INFOS("Window") << "Debug WindowProc WM_KEYDOWN "
<< " key " << S32(w_param)
- << llendl;
+ << LL_ENDL;
}
if(gKeyboard->handleKeyDown(w_param, mask) && eat_keystroke)
{
@@ -1824,9 +1823,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
if (gDebugWindowProc)
{
- llinfos << "Debug WindowProc WM_KEYUP "
+ LL_INFOS("Window") << "Debug WindowProc WM_KEYUP "
<< " key " << S32(w_param)
- << llendl;
+ << LL_ENDL;
}
if (gKeyboard->handleKeyUp(w_param, mask) && eat_keystroke)
{
@@ -1909,13 +1908,11 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
// it is worth trying. The good old WM_CHAR works just fine even for supplementary
// characters. We just need to take care of surrogate pairs sent as two WM_CHAR's
// by ourselves. It is not that tough. -- Alissa Sabre @ SL
- //
- // llinfos << "WM_CHAR: " << w_param << llendl;
if (gDebugWindowProc)
{
- llinfos << "Debug WindowProc WM_CHAR "
+ LL_INFOS("Window") << "Debug WindowProc WM_CHAR "
<< " key " << S32(w_param)
- << llendl;
+ << LL_ENDL;
}
// Even if LLWindowCallbacks::handleUnicodeChar(llwchar, BOOL) returned FALSE,
// we *did* processed the event, so I believe we should not pass it to DefWindowProc...
@@ -1985,7 +1982,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
LLFastTimer t2(LLFastTimer::FTM_MOUSEHANDLER);
//if (gDebugClicks)
//{
- // llinfos << "WndProc left button up" << llendl;
+ // LL_INFOS("Window") << "WndProc left button up" << LL_ENDL;
//}
// Because we move the cursor position in the app, we need to query
// to find out where the cursor at the time the event is handled.
@@ -2181,12 +2178,12 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
BOOL restored = ( w_param == SIZE_RESTORED );
BOOL minimized = ( w_param == SIZE_MINIMIZED );
- llinfos << "WINDOWPROC Size "
+ LL_INFOS("Window") << "WINDOWPROC Size "
<< width << "x" << height
<< " max " << S32(maximized)
<< " min " << S32(minimized)
<< " rest " << S32(restored)
- << llendl;
+ << LL_ENDL;
}
// There's an odd behavior with WM_SIZE that I would call a bug. If
@@ -2232,7 +2229,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_SETFOCUS:
if (gDebugWindowProc)
{
- llinfos << "WINDOWPROC SetFocus" << llendl;
+ LL_INFOS("Window") << "WINDOWPROC SetFocus" << LL_ENDL;
}
window_imp->mCallbacks->handleFocus(window_imp);
return 0;
@@ -2240,7 +2237,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
case WM_KILLFOCUS:
if (gDebugWindowProc)
{
- llinfos << "WINDOWPROC KillFocus" << llendl;
+ LL_INFOS("Window") << "WINDOWPROC KillFocus" << LL_ENDL;
}
window_imp->mCallbacks->handleFocusLost(window_imp);
return 0;
@@ -2596,7 +2593,7 @@ BOOL LLWindowWin32::setGamma(const F32 gamma)
{
mCurrentGamma = gamma;
- llinfos << "Setting gamma to " << gamma << llendl;
+ LL_DEBUGS("Window") << "Setting gamma to " << gamma << LL_ENDL;
for ( int i = 0; i < 256; ++i )
{
@@ -2737,8 +2734,8 @@ BOOL LLWindowWin32::setDisplayResolution(S32 width, S32 height, S32 bits, S32 re
if (!success)
{
- llwarns << "setDisplayResolution failed, "
- << width << "x" << height << "x" << bits << " @ " << refresh << llendl;
+ LL_WARNS("Window") << "setDisplayResolution failed, "
+ << width << "x" << height << "x" << bits << " @ " << refresh << LL_ENDL;
}
return success;
@@ -2760,7 +2757,7 @@ BOOL LLWindowWin32::setFullscreenResolution()
// protected
BOOL LLWindowWin32::resetDisplayResolution()
{
- llinfos << "resetDisplayResolution START" << llendl;
+ LL_DEBUGS("Window") << "resetDisplayResolution START" << LL_ENDL;
LONG cds_result = ChangeDisplaySettings(NULL, 0);
@@ -2768,10 +2765,10 @@ BOOL LLWindowWin32::resetDisplayResolution()
if (!success)
{
- llwarns << "resetDisplayResolution failed" << llendl;
+ LL_WARNS("Window") << "resetDisplayResolution failed" << LL_ENDL;
}
- llinfos << "resetDisplayResolution END" << llendl;
+ LL_DEBUGS("Window") << "resetDisplayResolution END" << LL_ENDL;
return success;
}
@@ -2908,11 +2905,11 @@ void spawn_web_browser(const char* escaped_url )
if (!found)
{
- llwarns << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << llendl;
+ LL_WARNS("Window") << "spawn_web_browser() called for url with protocol not on whitelist: " << escaped_url << LL_ENDL;
return;
}
- llinfos << "Opening URL " << escaped_url << llendl;
+ LL_INFOS("Window") << "Opening URL " << escaped_url << LL_ENDL;
// replaced ShellExecute code with ShellExecuteEx since ShellExecute doesn't work
// reliablly on Vista.
@@ -2952,7 +2949,7 @@ void spawn_web_browser(const char* escaped_url )
if (browser_open_wstring.length() < 2)
{
- llwarns << "Invalid browser executable in registry " << browser_open_wstring << llendl;
+ LL_WARNS("Window") << "Invalid browser executable in registry " << browser_open_wstring << LL_ENDL;
return;
}
@@ -2972,8 +2969,8 @@ void spawn_web_browser(const char* escaped_url )
browser_executable = browser_open_wstring.substr(0, space_pos);
}
- llinfos << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << llendl;
- llinfos << "Browser executable: " << wstring_to_utf8str(browser_executable) << llendl;
+ LL_DEBUGS("Window") << "Browser reg key: " << wstring_to_utf8str(browser_open_wstring) << LL_ENDL;
+ LL_INFOS("Window") << "Browser executable: " << wstring_to_utf8str(browser_executable) << LL_ENDL;
// Convert URL to wide string for Windows API
// Assume URL is UTF8, as can come from scripts
@@ -2995,11 +2992,11 @@ void spawn_web_browser(const char* escaped_url )
SW_SHOWNORMAL);
if (retval > 32)
{
- llinfos << "load_url success with " << retval << llendl;
+ LL_DEBUGS("Window") << "load_url success with " << retval << LL_ENDL;
}
else
{
- llinfos << "load_url failure with " << retval << llendl;
+ LL_INFOS("Window") << "load_url failure with " << retval << LL_ENDL;
}
*/
}
@@ -3541,7 +3538,7 @@ BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result)
if (!mPreeditor->getPreeditLocation(position, &caret_coord, &preedit_bounds, &text_control))
{
- llwarns << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << llendl;
+ LL_WARNS("Window") << "*** IMR_QUERYCHARPOSITON called but getPreeditLocation failed." << LL_ENDL;
return FALSE;
}
fillCharPosition(caret_coord, preedit_bounds, text_control, char_position);
@@ -3628,5 +3625,13 @@ BOOL LLWindowWin32::handleImeRequests(U32 request, U32 param, LRESULT *result)
return FALSE;
}
+//static
+std::string LLWindowWin32::getFontListSans()
+{
+ // Lists Japanese, Korean, and Chinese sanserif fonts available in
+ // Windows XP and Vista, as well as "Arial Unicode MS".
+ return "MSGOTHIC.TTC;gulim.ttc;simhei.ttf;ArialUni.ttf";
+}
+
#endif // LL_WINDOWS
diff --git a/linden/indra/llwindow/llwindowwin32.h b/linden/indra/llwindow/llwindowwin32.h
index 5535af4..feb1c74 100644
--- a/linden/indra/llwindow/llwindowwin32.h
+++ b/linden/indra/llwindow/llwindowwin32.h
@@ -116,6 +116,8 @@ public:
/*virtual*/ void updateLanguageTextInputArea();
/*virtual*/ void interruptLanguageTextInput();
+ static std::string getFontListSans();
+
protected:
LLWindowWin32(
char *title, char *name, int x, int y, int width, int height, U32 flags,
diff --git a/linden/indra/llxml/llcontrol.cpp b/linden/indra/llxml/llcontrol.cpp
index 8c74127..09719a5 100644
--- a/linden/indra/llxml/llcontrol.cpp
+++ b/linden/indra/llxml/llcontrol.cpp
@@ -50,44 +50,53 @@
#include "llsdserialize.h"
#if LL_RELEASE_FOR_DOWNLOAD
-#define CONTROL_ERRS llwarns
+#define CONTROL_ERRS LL_WARNS("ControlErrors")
#else
-#define CONTROL_ERRS llerrs
+#define CONTROL_ERRS LL_ERRS("ControlErrors")
#endif
//this defines the current version of the settings file
const S32 CURRENT_VERSION = 101;
-BOOL LLControlVariable::llsd_compare(const LLSD& a, const LLSD & b)
+bool LLControlVariable::llsd_compare(const LLSD& a, const LLSD & b)
{
+ bool result = false;
switch (mType)
{
case TYPE_U32:
case TYPE_S32:
- return a.asInteger() == b.asInteger();
+ result = a.asInteger() == b.asInteger();
+ break;
case TYPE_BOOLEAN:
- return a.asBoolean() == b.asBoolean();
+ result = a.asBoolean() == b.asBoolean();
+ break;
case TYPE_F32:
- return a.asReal() == b.asReal();
+ result = a.asReal() == b.asReal();
+ break;
case TYPE_VEC3:
case TYPE_VEC3D:
- return LLVector3d(a) == LLVector3d(b);
+ result = LLVector3d(a) == LLVector3d(b);
+ break;
case TYPE_RECT:
- return LLRect(a) == LLRect(b);
+ result = LLRect(a) == LLRect(b);
+ break;
case TYPE_COL4:
- return LLColor4(a) == LLColor4(b);
+ result = LLColor4(a) == LLColor4(b);
+ break;
case TYPE_COL3:
- return LLColor3(a) == LLColor3(b);
+ result = LLColor3(a) == LLColor3(b);
+ break;
case TYPE_COL4U:
- return LLColor4U(a) == LLColor4U(b);
+ result = LLColor4U(a) == LLColor4U(b);
+ break;
case TYPE_STRING:
- return a.asString() == b.asString();
+ result = a.asString() == b.asString();
+ break;
default:
- // no-op
break;
}
- return FALSE;
+ return result;
}
LLControlVariable::LLControlVariable(const LLString& name, eControlType type,
@@ -114,14 +123,34 @@ LLControlVariable::~LLControlVariable()
void LLControlVariable::setValue(const LLSD& value, bool saved_value)
{
- bool value_changed = llsd_compare(getValue(), value) == FALSE;
+ // *FIX:MEP - The following is needed to make the LLSD::ImplString
+ // work with boolean controls...
+ LLSD storable_value;
+ if(TYPE_BOOLEAN == type() && value.isString())
+ {
+ BOOL temp;
+ if(LLString::convertToBOOL(value.asString(), temp))
+ {
+ storable_value = temp;
+ }
+ else
+ {
+ storable_value = FALSE;
+ }
+ }
+ else
+ {
+ storable_value = value;
+ }
+
+ bool value_changed = llsd_compare(getValue(), storable_value) == FALSE;
if(saved_value)
{
// If we're going to save this value, return to default but don't fire
resetToDefault(false);
- if (llsd_compare(mValues.back(), value) == FALSE)
+ if (llsd_compare(mValues.back(), storable_value) == FALSE)
{
- mValues.push_back(value);
+ mValues.push_back(storable_value);
}
}
else
@@ -129,7 +158,7 @@ void LLControlVariable::setValue(const LLSD& value, bool saved_value)
// This is a unsaved value. Its needs to reside at
// mValues[2] (or greater). It must not affect
// the result of getSaveValue()
- if (llsd_compare(mValues.back(), value) == FALSE)
+ if (llsd_compare(mValues.back(), storable_value) == FALSE)
{
while(mValues.size() > 2)
{
@@ -144,13 +173,14 @@ void LLControlVariable::setValue(const LLSD& value, bool saved_value)
}
// Add the 'un-save' value.
- mValues.push_back(value);
+ mValues.push_back(storable_value);
}
}
+
if(value_changed)
{
- mSignal(value);
+ mSignal(storable_value);
}
}
@@ -1147,3 +1177,4 @@ void main()
#endif
+
diff --git a/linden/indra/llxml/llcontrol.h b/linden/indra/llxml/llcontrol.h
index 2511940..91545ce 100644
--- a/linden/indra/llxml/llcontrol.h
+++ b/linden/indra/llxml/llcontrol.h
@@ -127,7 +127,7 @@ public:
{
mSignal(mValues.back());
}
- BOOL llsd_compare(const LLSD& a, const LLSD& b);
+ bool llsd_compare(const LLSD& a, const LLSD& b);
};
//const U32 STRING_CACHE_SIZE = 10000;
diff --git a/linden/indra/llxml/llxmlnode.cpp b/linden/indra/llxml/llxmlnode.cpp
index 757e2f7..f9852d3 100644
--- a/linden/indra/llxml/llxmlnode.cpp
+++ b/linden/indra/llxml/llxmlnode.cpp
@@ -572,7 +572,7 @@ bool LLXMLNode::parseFile(
LLXMLNode* defaults_tree)
{
// Read file
- FILE* fp = LLFile::fopen(filename.c_str(), "rb"); /* Flawfinder: ignore */
+ LLFILE* fp = LLFile::fopen(filename.c_str(), "rb"); /* Flawfinder: ignore */
if (fp == NULL)
{
node = new LLXMLNode();
@@ -741,12 +741,12 @@ BOOL LLXMLNode::isFullyDefault()
}
// static
-void LLXMLNode::writeHeaderToFile(FILE *fOut)
+void LLXMLNode::writeHeaderToFile(LLFILE *fOut)
{
fprintf(fOut, "\n");
}
-void LLXMLNode::writeToFile(FILE *fOut, LLString indent)
+void LLXMLNode::writeToFile(LLFILE *fOut, LLString indent)
{
if (isFullyDefault())
{
diff --git a/linden/indra/llxml/llxmlnode.h b/linden/indra/llxml/llxmlnode.h
index 6183ec1..269108c 100644
--- a/linden/indra/llxml/llxmlnode.h
+++ b/linden/indra/llxml/llxmlnode.h
@@ -32,7 +32,9 @@
#ifndef LL_LLXMLNODE_H
#define LL_LLXMLNODE_H
-#define XML_STATIC
+#ifndef XML_STATIC
+#define XML_STATIC 1
+#endif
#ifdef LL_STANDALONE
#include
#else
@@ -131,8 +133,8 @@ public:
static bool updateNode(
LLXMLNodePtr& node,
LLXMLNodePtr& update_node);
- static void writeHeaderToFile(FILE *fOut);
- void writeToFile(FILE *fOut, LLString indent = LLString());
+ static void writeHeaderToFile(LLFILE *fOut);
+ void writeToFile(LLFILE *fOut, LLString indent = LLString());
void writeToOstream(std::ostream& output_stream, const LLString& indent = LLString());
// Utility
diff --git a/linden/indra/llxml/llxmlparser.cpp b/linden/indra/llxml/llxmlparser.cpp
index 0cbb82b..3b4d944 100644
--- a/linden/indra/llxml/llxmlparser.cpp
+++ b/linden/indra/llxml/llxmlparser.cpp
@@ -77,7 +77,7 @@ BOOL LLXmlParser::parseFile(const std::string &path)
BOOL success = TRUE;
- FILE* file = LLFile::fopen(path.c_str(), "rb"); /* Flawfinder: ignore */
+ LLFILE* file = LLFile::fopen(path.c_str(), "rb"); /* Flawfinder: ignore */
if( !file )
{
snprintf( mAuxErrorString, sizeof(mAuxErrorString), "Couldn't open file %s", path.c_str()); /* Flawfinder: ignore */
@@ -393,7 +393,7 @@ int main()
{
char buf[1024];
- FILE* file = LLFile::fopen("test.xml", "rb");
+ LLFILE* file = LLFile::fopen("test.xml", "rb");
if( !file )
{
return 1;
diff --git a/linden/indra/llxml/llxmlparser.h b/linden/indra/llxml/llxmlparser.h
index 611605f..7ce5524 100644
--- a/linden/indra/llxml/llxmlparser.h
+++ b/linden/indra/llxml/llxmlparser.h
@@ -32,7 +32,9 @@
#ifndef LL_LLXMLPARSER_H
#define LL_LLXMLPARSER_H
-#define XML_STATIC
+#ifndef XML_STATIC
+#define XML_STATIC 1
+#endif
#ifdef LL_STANDALONE
#include
#else
diff --git a/linden/indra/lscript/lscript_alloc.h b/linden/indra/lscript/lscript_alloc.h
index 948eb26..2cdd03d 100644
--- a/linden/indra/lscript/lscript_alloc.h
+++ b/linden/indra/lscript/lscript_alloc.h
@@ -118,7 +118,7 @@ inline void bytestream2alloc_entry(LLScriptAllocEntry &entry, U8 *buffer, S32 &o
// create a heap from the HR to TM
BOOL lsa_create_heap(U8 *heap_start, S32 size);
-void lsa_fprint_heap(U8 *buffer, FILE *fp);
+void lsa_fprint_heap(U8 *buffer, LLFILE *fp);
void lsa_print_heap(U8 *buffer);
diff --git a/linden/indra/lscript/lscript_compile/indra.l b/linden/indra/lscript/lscript_compile/indra.l
index 03c8321..ba10ef6 100644
--- a/linden/indra/lscript/lscript_compile/indra.l
+++ b/linden/indra/lscript/lscript_compile/indra.l
@@ -606,6 +606,11 @@ extern "C" { int yyerror(const char *fmt, ...); }
"CLICK_ACTION_PLAY" { count(); yylval.ival = CLICK_ACTION_PLAY; return(INTEGER_CONSTANT); }
"CLICK_ACTION_OPEN_MEDIA" { count(); yylval.ival = CLICK_ACTION_OPEN_MEDIA; return(INTEGER_CONSTANT); }
+"TEXTURE_BLANK" { yylval.sval = new char[UUID_STR_LENGTH]; strcpy(yylval.sval, "5748decc-f629-461c-9a36-a35a221fe21f"); return(STRING_CONSTANT); }
+"TEXTURE_DEFAULT" { yylval.sval = new char[UUID_STR_LENGTH]; strcpy(yylval.sval, "8b5fec65-8d8d-9dc5-cda8-8fdf2716e361"); return(STRING_CONSTANT); }
+"TEXTURE_PLYWOOD" { yylval.sval = new char[UUID_STR_LENGTH]; strcpy(yylval.sval, "89556747-24cb-43ed-920b-47caed15465f"); return(STRING_CONSTANT); }
+"TEXTURE_TRANSPARENT" { yylval.sval = new char[UUID_STR_LENGTH]; strcpy(yylval.sval, "59facb66-4a72-40a2-815c-7d9b42c56f60"); return(STRING_CONSTANT); }
+
{L}({L}|{N})* { count(); yylval.sval = new char[strlen(yytext) + 1]; strcpy(yylval.sval, yytext); return(IDENTIFIER); }
{N}+{E} { count(); yylval.fval = (F32)atof(yytext); return(FP_CONSTANT); }
@@ -706,7 +711,7 @@ BOOL lscript_compile(const char* src_filename, const char* dst_filename,
#ifdef EMERGENCY_DEBUG_PRINTOUTS
char compiled[256];
sprintf(compiled, "%s.o", src_filename);
- FILE* compfile;
+ LLFILE* compfile;
compfile = LLFile::fopen(compiled, "w");
#endif
@@ -733,7 +738,7 @@ BOOL lscript_compile(const char* src_filename, const char* dst_filename,
#endif
#ifdef EMIT_CIL_ASSEMBLER
const char* cil_output_file_name = dst_filename? dst_filename : "lscript.cil";
- FILE* cilout = LLFile::fopen(cil_output_file_name, "w");
+ LLFILE* cilout = LLFile::fopen(cil_output_file_name, "w");
if(NULL == cilout)
{
fprintf(yyout, "Error opening cil output file %s\n", cil_output_file_name);
diff --git a/linden/indra/lscript/lscript_compile/lscript_bytecode.cpp b/linden/indra/lscript/lscript_compile/lscript_bytecode.cpp
index 5838bc3..31ab909 100644
--- a/linden/indra/lscript/lscript_compile/lscript_bytecode.cpp
+++ b/linden/indra/lscript/lscript_compile/lscript_bytecode.cpp
@@ -245,7 +245,7 @@ LLScriptScriptCodeChunk::~LLScriptScriptCodeChunk()
delete [] mCompleteCode;
}
-void LLScriptScriptCodeChunk::build(FILE *efp, FILE *bcfp)
+void LLScriptScriptCodeChunk::build(LLFILE *efp, LLFILE *bcfp)
{
S32 code_data_size = mRegisters->mCurrentOffset +
mGlobalVariables->mCurrentOffset +
diff --git a/linden/indra/lscript/lscript_compile/lscript_bytecode.h b/linden/indra/lscript/lscript_compile/lscript_bytecode.h
index 6526e13..272aa60 100644
--- a/linden/indra/lscript/lscript_compile/lscript_bytecode.h
+++ b/linden/indra/lscript/lscript_compile/lscript_bytecode.h
@@ -77,7 +77,7 @@ public:
LLScriptScriptCodeChunk(S32 total_size);
~LLScriptScriptCodeChunk();
- void build(FILE *efp, FILE *bcfp);
+ void build(LLFILE *efp, LLFILE *bcfp);
LLScriptByteCodeChunk *mRegisters;
LLScriptByteCodeChunk *mGlobalVariables;
diff --git a/linden/indra/lscript/lscript_compile/lscript_error.cpp b/linden/indra/lscript/lscript_compile/lscript_error.cpp
index 6e03b01..b3c1ffa 100644
--- a/linden/indra/lscript/lscript_compile/lscript_error.cpp
+++ b/linden/indra/lscript/lscript_compile/lscript_error.cpp
@@ -40,7 +40,7 @@ S32 gInternalLine = 0;
LLScriptGenerateErrorText gErrorToText;
-void LLScriptFilePosition::fdotabs(FILE *fp, S32 tabs, S32 tabsize)
+void LLScriptFilePosition::fdotabs(LLFILE *fp, S32 tabs, S32 tabsize)
{
S32 i;
for (i = 0; i < tabs * tabsize; i++)
@@ -75,25 +75,25 @@ char* gErrorText[LSERROR_EOF] = /*Flawfinder: ignore*/
"Declaration requires a new scope -- use { and }"
};
-void LLScriptGenerateErrorText::writeWarning(FILE *fp, LLScriptFilePosition *pos, LSCRIPTWarnings warning)
+void LLScriptGenerateErrorText::writeWarning(LLFILE *fp, LLScriptFilePosition *pos, LSCRIPTWarnings warning)
{
fprintf(fp, "(%d, %d) : WARNING : %s\n", pos->mLineNumber, pos->mColumnNumber, gWarningText[warning]);
mTotalWarnings++;
}
-void LLScriptGenerateErrorText::writeWarning(FILE *fp, S32 line, S32 col, LSCRIPTWarnings warning)
+void LLScriptGenerateErrorText::writeWarning(LLFILE *fp, S32 line, S32 col, LSCRIPTWarnings warning)
{
fprintf(fp, "(%d, %d) : WARNING : %s\n", line, col, gWarningText[warning]);
mTotalWarnings++;
}
-void LLScriptGenerateErrorText::writeError(FILE *fp, LLScriptFilePosition *pos, LSCRIPTErrors error)
+void LLScriptGenerateErrorText::writeError(LLFILE *fp, LLScriptFilePosition *pos, LSCRIPTErrors error)
{
fprintf(fp, "(%d, %d) : ERROR : %s\n", pos->mLineNumber, pos->mColumnNumber, gErrorText[error]);
mTotalErrors++;
}
-void LLScriptGenerateErrorText::writeError(FILE *fp, S32 line, S32 col, LSCRIPTErrors error)
+void LLScriptGenerateErrorText::writeError(LLFILE *fp, S32 line, S32 col, LSCRIPTErrors error)
{
fprintf(fp, "(%d, %d) : ERROR : %s\n", line, col, gErrorText[error]);
mTotalErrors++;
diff --git a/linden/indra/lscript/lscript_compile/lscript_error.h b/linden/indra/lscript/lscript_compile/lscript_error.h
index d52bdf7..b5fcadb 100644
--- a/linden/indra/lscript/lscript_compile/lscript_error.h
+++ b/linden/indra/lscript/lscript_compile/lscript_error.h
@@ -84,13 +84,13 @@ public:
virtual ~LLScriptFilePosition() {}
- virtual void recurse(FILE *fp, S32 tabs, S32 tabsize,
+ virtual void recurse(LLFILE *fp, S32 tabs, S32 tabsize,
LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg,
LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count,
LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata) = 0;
virtual S32 getSize() = 0;
- void fdotabs(FILE *fp, S32 tabs, S32 tabsize);
+ void fdotabs(LLFILE *fp, S32 tabs, S32 tabsize);
S32 mLineNumber;
S32 mColumnNumber;
@@ -135,10 +135,10 @@ public:
void init() { mTotalErrors = 0; mTotalWarnings = 0; }
- void writeWarning(FILE *fp, LLScriptFilePosition *pos, LSCRIPTWarnings warning);
- void writeWarning(FILE *fp, S32 line, S32 col, LSCRIPTWarnings warning);
- void writeError(FILE *fp, LLScriptFilePosition *pos, LSCRIPTErrors error);
- void writeError(FILE *fp, S32 line, S32 col, LSCRIPTErrors error);
+ void writeWarning(LLFILE *fp, LLScriptFilePosition *pos, LSCRIPTWarnings warning);
+ void writeWarning(LLFILE *fp, S32 line, S32 col, LSCRIPTWarnings warning);
+ void writeError(LLFILE *fp, LLScriptFilePosition *pos, LSCRIPTErrors error);
+ void writeError(LLFILE *fp, S32 line, S32 col, LSCRIPTErrors error);
BOOL getErrors() { return mTotalErrors; }
BOOL getWarnings() { return mTotalWarnings; }
diff --git a/linden/indra/lscript/lscript_compile/lscript_tree.cpp b/linden/indra/lscript/lscript_compile/lscript_tree.cpp
index 519d726..204f738 100644
--- a/linden/indra/lscript/lscript_compile/lscript_tree.cpp
+++ b/linden/indra/lscript/lscript_compile/lscript_tree.cpp
@@ -43,7 +43,7 @@
//#define LSL_INCLUDE_DEBUG_INFO
-void print_cil_box(FILE* fp, LSCRIPTType type)
+void print_cil_box(LLFILE* fp, LSCRIPTType type)
{
switch(type)
{
@@ -68,7 +68,7 @@ void print_cil_box(FILE* fp, LSCRIPTType type)
}
}
-void print_cil_type(FILE* fp, LSCRIPTType type)
+void print_cil_type(LLFILE* fp, LSCRIPTType type)
{
switch(type)
{
@@ -99,7 +99,7 @@ void print_cil_type(FILE* fp, LSCRIPTType type)
}
}
-void LLScriptType::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptType::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -127,7 +127,7 @@ S32 LLScriptType::getSize()
return LSCRIPTDataSize[mType];
}
-void LLScriptConstant::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptConstant::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -152,7 +152,7 @@ S32 LLScriptConstant::getSize()
-void LLScriptConstantInteger::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptConstantInteger::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -200,7 +200,7 @@ S32 LLScriptConstantInteger::getSize()
return LSCRIPTDataSize[LST_INTEGER];
}
-void LLScriptConstantFloat::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptConstantFloat::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -247,7 +247,7 @@ S32 LLScriptConstantFloat::getSize()
return LSCRIPTDataSize[LST_FLOATINGPOINT];
}
-void print_escape_quotes(FILE* fp, const char* str)
+void print_escape_quotes(LLFILE* fp, const char* str)
{
putc('"', fp);
for(const char* c = str; *c != '\0'; ++c)
@@ -261,7 +261,7 @@ void print_escape_quotes(FILE* fp, const char* str)
putc('"', fp);
}
-void LLScriptConstantString::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptConstantString::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -317,7 +317,7 @@ S32 LLScriptConstantString::getSize()
}
-void LLScriptIdentifier::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptIdentifier::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -412,7 +412,7 @@ void LLScriptSimpleAssignable::addAssignable(LLScriptSimpleAssignable *assign)
mNextp = assign;
}
-void LLScriptSimpleAssignable::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptSimpleAssignable::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -428,7 +428,7 @@ S32 LLScriptSimpleAssignable::getSize()
return 0;
}
-void LLScriptSAIdentifier::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptSAIdentifier::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -512,7 +512,7 @@ S32 LLScriptSAIdentifier::getSize()
return mIdentifier->getSize();
}
-void LLScriptSAConstant::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptSAConstant::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -553,7 +553,7 @@ S32 LLScriptSAConstant::getSize()
return mConstant->getSize();
}
-void print_cil_cast(FILE* fp, LSCRIPTType srcType, LSCRIPTType targetType)
+void print_cil_cast(LLFILE* fp, LSCRIPTType srcType, LSCRIPTType targetType)
{
switch(srcType)
{
@@ -680,7 +680,7 @@ bool is_SA_constant_integer(LLScriptSimpleAssignable* sa)
return (sa->mType == LSSAT_CONSTANT && ((LLScriptSAConstant*) sa)->mConstant->mType == LST_INTEGER);
}
-void LLScriptSAVector::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptSAVector::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -827,7 +827,7 @@ S32 LLScriptSAVector::getSize()
return mEntry1->getSize() + mEntry2->getSize() + mEntry3->getSize();
}
-void LLScriptSAQuaternion::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptSAQuaternion::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -999,7 +999,7 @@ S32 LLScriptSAQuaternion::getSize()
return mEntry1->getSize() + mEntry2->getSize() + mEntry3->getSize() + mEntry4->getSize();
}
-void LLScriptSAList::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptSAList::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1074,7 +1074,7 @@ void LLScriptGlobalVariable::addGlobal(LLScriptGlobalVariable *global)
mNextp = global;
}
-void LLScriptGlobalVariable::gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptGlobalVariable::gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
switch(pass)
{
@@ -1093,7 +1093,7 @@ void LLScriptGlobalVariable::gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTComp
}
}
-void LLScriptGlobalVariable::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptGlobalVariable::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1288,7 +1288,7 @@ S32 LLScriptGlobalVariable::getSize()
return return_size;
}
-void LLScriptEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
fprintf(fp, "Event Base Class -- should never get here!\n");
}
@@ -1299,7 +1299,7 @@ S32 LLScriptEvent::getSize()
return 0;
}
-void LLScriptStateEntryEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptStateEntryEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1335,7 +1335,7 @@ S32 LLScriptStateEntryEvent::getSize()
return 0;
}
-void LLScriptStateExitEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptStateExitEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1371,7 +1371,7 @@ S32 LLScriptStateExitEvent::getSize()
return 0;
}
-void LLScriptTouchStartEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptTouchStartEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1429,7 +1429,7 @@ S32 LLScriptTouchStartEvent::getSize()
return 4;
}
-void LLScriptTouchEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptTouchEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1487,7 +1487,7 @@ S32 LLScriptTouchEvent::getSize()
return 4;
}
-void LLScriptTouchEndEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptTouchEndEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1545,7 +1545,7 @@ S32 LLScriptTouchEndEvent::getSize()
return 4;
}
-void LLScriptCollisionStartEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptCollisionStartEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1603,7 +1603,7 @@ S32 LLScriptCollisionStartEvent::getSize()
return 4;
}
-void LLScriptCollisionEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptCollisionEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1661,7 +1661,7 @@ S32 LLScriptCollisionEvent::getSize()
return 4;
}
-void LLScriptCollisionEndEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptCollisionEndEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1719,7 +1719,7 @@ S32 LLScriptCollisionEndEvent::getSize()
return 4;
}
-void LLScriptLandCollisionStartEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptLandCollisionStartEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1778,7 +1778,7 @@ S32 LLScriptLandCollisionStartEvent::getSize()
-void LLScriptLandCollisionEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptLandCollisionEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1836,7 +1836,7 @@ S32 LLScriptLandCollisionEvent::getSize()
}
-void LLScriptLandCollisionEndEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptLandCollisionEndEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1894,7 +1894,7 @@ S32 LLScriptLandCollisionEndEvent::getSize()
}
-void LLScriptInventoryEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptInventoryEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -1951,7 +1951,7 @@ S32 LLScriptInventoryEvent::getSize()
return 4;
}
-void LLScriptAttachEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptAttachEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2008,7 +2008,7 @@ S32 LLScriptAttachEvent::getSize()
return 4;
}
-void LLScriptDataserverEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptDataserverEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2080,7 +2080,7 @@ S32 LLScriptDataserverEvent::getSize()
return 8;
}
-void LLScriptTimerEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptTimerEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2113,7 +2113,7 @@ S32 LLScriptTimerEvent::getSize()
return 0;
}
-void LLScriptMovingStartEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptMovingStartEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2144,7 +2144,7 @@ S32 LLScriptMovingStartEvent::getSize()
return 0;
}
-void LLScriptMovingEndEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptMovingEndEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2175,7 +2175,7 @@ S32 LLScriptMovingEndEvent::getSize()
return 0;
}
-void LLScriptRTPEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptRTPEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2232,7 +2232,7 @@ S32 LLScriptRTPEvent::getSize()
return 4;
}
-void LLScriptChatEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptChatEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2334,7 +2334,7 @@ S32 LLScriptChatEvent::getSize()
return 16;
}
-void LLScriptSensorEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptSensorEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2391,7 +2391,7 @@ S32 LLScriptSensorEvent::getSize()
return 4;
}
-void LLScriptObjectRezEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptObjectRezEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2448,7 +2448,7 @@ S32 LLScriptObjectRezEvent::getSize()
return 4;
}
-void LLScriptControlEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptControlEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2535,7 +2535,7 @@ S32 LLScriptControlEvent::getSize()
return 12;
}
-void LLScriptLinkMessageEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptLinkMessageEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2637,7 +2637,7 @@ S32 LLScriptLinkMessageEvent::getSize()
return 16;
}
-void LLScriptRemoteEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptRemoteEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2769,7 +2769,7 @@ S32 LLScriptRemoteEvent::getSize()
return 24;
}
-void LLScriptHTTPResponseEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptHTTPResponseEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2882,7 +2882,7 @@ S32 LLScriptHTTPResponseEvent::getSize()
}
-void LLScriptMoneyEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptMoneyEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -2954,7 +2954,7 @@ S32 LLScriptMoneyEvent::getSize()
return 8;
}
-void LLScriptEmailEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptEmailEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3071,7 +3071,7 @@ S32 LLScriptEmailEvent::getSize()
return 20;
}
-void LLScriptRezEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptRezEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3128,7 +3128,7 @@ S32 LLScriptRezEvent::getSize()
return 4;
}
-void LLScriptNoSensorEvent::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptNoSensorEvent::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3161,7 +3161,7 @@ S32 LLScriptNoSensorEvent::getSize()
return 0;
}
-void LLScriptAtTarget::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptAtTarget::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3250,7 +3250,7 @@ S32 LLScriptAtTarget::getSize()
-void LLScriptNotAtTarget::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptNotAtTarget::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3283,7 +3283,7 @@ S32 LLScriptNotAtTarget::getSize()
return 0;
}
-void LLScriptAtRotTarget::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptAtRotTarget::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3372,7 +3372,7 @@ S32 LLScriptAtRotTarget::getSize()
-void LLScriptNotAtRotTarget::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptNotAtRotTarget::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3416,7 +3416,7 @@ void LLScriptExpression::addExpression(LLScriptExpression *expression)
mNextp = expression;
}
-void LLScriptExpression::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptExpression::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
fprintf(fp, "Expression Base Class -- should never get here!\n");
}
@@ -3427,7 +3427,7 @@ S32 LLScriptExpression::getSize()
return 0;
}
-void LLScriptExpression::gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptExpression::gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3451,7 +3451,7 @@ void LLScriptExpression::gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompileP
}
}
-void LLScriptForExpressionList::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptForExpressionList::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3563,7 +3563,7 @@ S32 LLScriptForExpressionList::getSize()
return 0;
}
-void LLScriptFuncExpressionList::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptFuncExpressionList::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3700,7 +3700,7 @@ S32 LLScriptFuncExpressionList::getSize()
return 0;
}
-void LLScriptListExpressionList::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptListExpressionList::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -3800,7 +3800,7 @@ bool is_parameter(LLScriptIdentifier* identifier, LLScriptScopeEntry* function_s
}
// If assignment is to global variable, pushes this pointer on to stack.
-void print_cil_load_address(FILE* fp, LLScriptExpression* exp, LLScriptScopeEntry* function_scope)
+void print_cil_load_address(LLFILE* fp, LLScriptExpression* exp, LLScriptScopeEntry* function_scope)
{
LLScriptLValue *lvalue = (LLScriptLValue *) exp;
LLScriptIdentifier *ident = lvalue->mIdentifier;
@@ -3836,7 +3836,7 @@ void print_cil_load_address(FILE* fp, LLScriptExpression* exp, LLScriptScopeEntr
}
}
-void print_cil_accessor(FILE* fp, LLScriptLValue *lvalue)
+void print_cil_accessor(LLFILE* fp, LLScriptLValue *lvalue)
{
LLScriptIdentifier *ident = lvalue->mIdentifier;
print_cil_type(fp, lvalue->mReturnType);
@@ -3845,13 +3845,13 @@ void print_cil_accessor(FILE* fp, LLScriptLValue *lvalue)
fprintf(fp, "::%s\n", lvalue->mAccessor->mName);
}
-void print_cil_member(FILE* fp, LLScriptIdentifier *ident)
+void print_cil_member(LLFILE* fp, LLScriptIdentifier *ident)
{
print_cil_type(fp, ident->mScopeEntry->mType);
fprintf(fp, " LSL::%s\n", ident->mScopeEntry->mIdentifier);
}
-void LLScriptLValue::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptLValue::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -4136,7 +4136,7 @@ S32 LLScriptLValue::getSize()
return 0;
}
-void print_asignment(FILE *fp, LLScriptExpression *exp)
+void print_asignment(LLFILE *fp, LLScriptExpression *exp)
{
LLScriptLValue *lvalue = (LLScriptLValue *)exp;
LLScriptIdentifier *ident = lvalue->mIdentifier;
@@ -4164,7 +4164,7 @@ void print_asignment(FILE *fp, LLScriptExpression *exp)
}
}
-void print_cil_asignment(FILE *fp, LLScriptExpression *exp, LLScriptScopeEntry* function_scope)
+void print_cil_asignment(LLFILE *fp, LLScriptExpression *exp, LLScriptScopeEntry* function_scope)
{
LLScriptLValue *lvalue = (LLScriptLValue *) exp;
LLScriptIdentifier *ident = lvalue->mIdentifier;
@@ -4215,7 +4215,7 @@ void print_cil_asignment(FILE *fp, LLScriptExpression *exp, LLScriptScopeEntry*
}
}
-void print_cast(FILE *fp, LSCRIPTType ret_type, LSCRIPTType right_type)
+void print_cast(LLFILE *fp, LSCRIPTType ret_type, LSCRIPTType right_type)
{
if (right_type != ret_type)
{
@@ -4319,7 +4319,7 @@ void store2stack(LLScriptExpression *exp, LLScriptExpression *lv, LLScriptByteCo
chunk->addInteger(address);
}
-void print_cil_numeric_cast(FILE* fp, LSCRIPTType currentArg, LSCRIPTType otherArg)
+void print_cil_numeric_cast(LLFILE* fp, LSCRIPTType currentArg, LSCRIPTType otherArg)
{
if((currentArg == LST_INTEGER) && (otherArg == LST_FLOATINGPOINT))
{
@@ -4327,7 +4327,7 @@ void print_cil_numeric_cast(FILE* fp, LSCRIPTType currentArg, LSCRIPTType otherA
}
}
-void LLScriptAssignment::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptAssignment::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -4387,7 +4387,7 @@ S32 LLScriptAssignment::getSize()
return 0;
}
-void print_cil_add(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
+void print_cil_add(LLFILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
{
switch(left_type)
{
@@ -4429,7 +4429,7 @@ void print_cil_add(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
}
}
-void LLScriptAddAssignment::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptAddAssignment::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -4496,7 +4496,7 @@ S32 LLScriptAddAssignment::getSize()
return 0;
}
-void print_cil_sub(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
+void print_cil_sub(LLFILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
{
switch(left_type)
{
@@ -4528,7 +4528,7 @@ void print_cil_sub(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
}
}
-void LLScriptSubAssignment::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptSubAssignment::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -4595,7 +4595,7 @@ S32 LLScriptSubAssignment::getSize()
return 0;
}
-void print_cil_mul(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
+void print_cil_mul(LLFILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
{
switch(left_type)
{
@@ -4650,7 +4650,7 @@ void print_cil_mul(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
}
}
-void LLScriptMulAssignment::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptMulAssignment::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -4717,7 +4717,7 @@ S32 LLScriptMulAssignment::getSize()
return 0;
}
-void print_cil_div(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
+void print_cil_div(LLFILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
{
switch(left_type)
{
@@ -4765,7 +4765,7 @@ void print_cil_div(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
}
}
-void LLScriptDivAssignment::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptDivAssignment::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -4832,7 +4832,7 @@ S32 LLScriptDivAssignment::getSize()
return 0;
}
-void print_cil_mod(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
+void print_cil_mod(LLFILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
{
switch(left_type)
{
@@ -4855,7 +4855,7 @@ void print_cil_mod(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
}
}
-void LLScriptModAssignment::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptModAssignment::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -4920,7 +4920,7 @@ S32 LLScriptModAssignment::getSize()
return 0;
}
-void print_cil_eq(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
+void print_cil_eq(LLFILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
{
switch(left_type)
{
@@ -4961,7 +4961,7 @@ void print_cil_eq(FILE* fp, LSCRIPTType left_type, LSCRIPTType right_type)
}
}
-void LLScriptEquality::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptEquality::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5021,7 +5021,7 @@ S32 LLScriptEquality::getSize()
return 0;
}
-void LLScriptNotEquals::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptNotEquals::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5081,7 +5081,7 @@ S32 LLScriptNotEquals::getSize()
return 0;
}
-void LLScriptLessEquals::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptLessEquals::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5141,7 +5141,7 @@ S32 LLScriptLessEquals::getSize()
return 0;
}
-void LLScriptGreaterEquals::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptGreaterEquals::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5201,7 +5201,7 @@ S32 LLScriptGreaterEquals::getSize()
return 0;
}
-void LLScriptLessThan::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptLessThan::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5259,7 +5259,7 @@ S32 LLScriptLessThan::getSize()
return 0;
}
-void LLScriptGreaterThan::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptGreaterThan::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5317,7 +5317,7 @@ S32 LLScriptGreaterThan::getSize()
return 0;
}
-void LLScriptPlus::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptPlus::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5377,7 +5377,7 @@ S32 LLScriptPlus::getSize()
return 0;
}
-void LLScriptMinus::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptMinus::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5437,7 +5437,7 @@ S32 LLScriptMinus::getSize()
return 0;
}
-void LLScriptTimes::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptTimes::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5497,7 +5497,7 @@ S32 LLScriptTimes::getSize()
return 0;
}
-void LLScriptDivide::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptDivide::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5557,7 +5557,7 @@ S32 LLScriptDivide::getSize()
return 0;
}
-void LLScriptMod::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptMod::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5615,7 +5615,7 @@ S32 LLScriptMod::getSize()
return 0;
}
-void LLScriptBitAnd::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptBitAnd::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5671,7 +5671,7 @@ S32 LLScriptBitAnd::getSize()
return 0;
}
-void LLScriptBitOr::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptBitOr::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5727,7 +5727,7 @@ S32 LLScriptBitOr::getSize()
return 0;
}
-void LLScriptBitXor::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptBitXor::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5783,7 +5783,7 @@ S32 LLScriptBitXor::getSize()
return 0;
}
-void LLScriptBooleanAnd::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptBooleanAnd::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5839,7 +5839,7 @@ S32 LLScriptBooleanAnd::getSize()
return 0;
}
-void LLScriptBooleanOr::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptBooleanOr::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5895,7 +5895,7 @@ S32 LLScriptBooleanOr::getSize()
return 0;
}
-void LLScriptShiftLeft::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptShiftLeft::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -5952,7 +5952,7 @@ S32 LLScriptShiftLeft::getSize()
}
-void LLScriptShiftRight::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptShiftRight::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6008,7 +6008,7 @@ S32 LLScriptShiftRight::getSize()
return 0;
}
-void LLScriptParenthesis::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptParenthesis::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6041,7 +6041,7 @@ S32 LLScriptParenthesis::getSize()
return 0;
}
-void LLScriptUnaryMinus::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptUnaryMinus::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6088,7 +6088,7 @@ S32 LLScriptUnaryMinus::getSize()
return 0;
}
-void LLScriptBooleanNot::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptBooleanNot::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6138,7 +6138,7 @@ S32 LLScriptBooleanNot::getSize()
return 0;
}
-void LLScriptBitNot::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptBitNot::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6187,7 +6187,7 @@ S32 LLScriptBitNot::getSize()
return 0;
}
-void LLScriptPreIncrement::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptPreIncrement::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6295,7 +6295,7 @@ S32 LLScriptPreIncrement::getSize()
return 0;
}
-void LLScriptPreDecrement::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptPreDecrement::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6403,7 +6403,7 @@ S32 LLScriptPreDecrement::getSize()
return 0;
}
-void LLScriptTypeCast::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptTypeCast::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6455,7 +6455,7 @@ S32 LLScriptTypeCast::getSize()
return 0;
}
-void LLScriptVectorInitializer::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptVectorInitializer::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6571,7 +6571,7 @@ S32 LLScriptVectorInitializer::getSize()
return 0;
}
-void LLScriptQuaternionInitializer::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptQuaternionInitializer::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6713,7 +6713,7 @@ S32 LLScriptQuaternionInitializer::getSize()
return 0;
}
-void LLScriptListInitializer::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptListInitializer::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6793,7 +6793,7 @@ S32 LLScriptListInitializer::getSize()
return 0;
}
-void LLScriptPostIncrement::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptPostIncrement::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -6925,7 +6925,7 @@ S32 LLScriptPostIncrement::getSize()
return 0;
}
-void LLScriptPostDecrement::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptPostDecrement::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7058,7 +7058,7 @@ S32 LLScriptPostDecrement::getSize()
}
// Generate arg list.
-void print_cil_arg_list(FILE *fp, LLScriptFuncExpressionList* exp_list)
+void print_cil_arg_list(LLFILE *fp, LLScriptFuncExpressionList* exp_list)
{
// Print first argument.
print_cil_type(fp, exp_list->mFirstp->mReturnType);
@@ -7071,7 +7071,7 @@ void print_cil_arg_list(FILE *fp, LLScriptFuncExpressionList* exp_list)
}
}
-void LLScriptFunctionCall::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptFunctionCall::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7260,7 +7260,7 @@ S32 LLScriptFunctionCall::getSize()
return 0;
}
-void LLScriptPrint::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptPrint::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7299,7 +7299,7 @@ S32 LLScriptPrint::getSize()
return 0;
}
-void LLScriptConstantExpression::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptConstantExpression::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7338,7 +7338,7 @@ void LLScriptStatement::addStatement(LLScriptStatement *event)
mNextp = event;
}
-void LLScriptStatement::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptStatement::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
fprintf(fp, "Statement Base Class -- should never get here!\n");
}
@@ -7349,7 +7349,7 @@ S32 LLScriptStatement::getSize()
return 0;
}
-void LLScriptStatement::gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptStatement::gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7384,7 +7384,7 @@ S32 LLScriptStatementSequence::getSize()
return 0;
}
-void LLScriptStatementSequence::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptStatementSequence::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7431,7 +7431,7 @@ S32 LLScriptNOOP::getSize()
return 0;
}
-void LLScriptNOOP::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptNOOP::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7527,7 +7527,7 @@ void add_exit_pops(LLScriptByteCodeChunk *chunk, LLScriptScopeEntry *entry)
}
}
-void print_exit_pops(FILE *fp, LLScriptScopeEntry *entry)
+void print_exit_pops(LLFILE *fp, LLScriptScopeEntry *entry)
{
// remember that we need to pop in reverse order
S32 number, i;
@@ -7557,7 +7557,7 @@ S32 LLScriptStateChange::getSize()
return 0;
}
-void LLScriptStateChange::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptStateChange::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7627,7 +7627,7 @@ S32 LLScriptJump::getSize()
return 0;
}
-void LLScriptJump::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptJump::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7690,7 +7690,7 @@ S32 LLScriptLabel::getSize()
return 0;
}
-void LLScriptLabel::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptLabel::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7747,7 +7747,7 @@ void add_return(LLScriptByteCodeChunk *chunk, LLScriptScopeEntry *entry)
chunk->addByte(LSCRIPTOpCodes[LOPC_RETURN]);
}
-void print_return(FILE *fp, LLScriptScopeEntry *entry)
+void print_return(LLFILE *fp, LLScriptScopeEntry *entry)
{
print_exit_pops(fp, entry);
fprintf(fp, "RETURN\n");
@@ -7759,7 +7759,7 @@ S32 LLScriptReturn::getSize()
return 0;
}
-void LLScriptReturn::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptReturn::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7881,7 +7881,7 @@ S32 LLScriptExpressionStatement::getSize()
return 0;
}
-void LLScriptExpressionStatement::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptExpressionStatement::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -7951,7 +7951,7 @@ S32 LLScriptIf::getSize()
return 0;
}
-void LLScriptIf::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptIf::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -8022,7 +8022,7 @@ S32 LLScriptIfElse::getSize()
return 0;
}
-void LLScriptIfElse::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptIfElse::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -8115,7 +8115,7 @@ S32 LLScriptFor::getSize()
return 0;
}
-void LLScriptFor::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptFor::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -8230,7 +8230,7 @@ S32 LLScriptDoWhile::getSize()
return 0;
}
-void LLScriptDoWhile::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptDoWhile::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -8303,7 +8303,7 @@ S32 LLScriptWhile::getSize()
return 0;
}
-void LLScriptWhile::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptWhile::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -8386,7 +8386,7 @@ S32 LLScriptDeclaration::getSize()
return mType->getSize();
}
-void LLScriptDeclaration::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptDeclaration::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -8645,7 +8645,7 @@ S32 LLScriptCompoundStatement::getSize()
return 0;
}
-void LLScriptCompoundStatement::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptCompoundStatement::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -8721,7 +8721,7 @@ void LLScriptEventHandler::addEvent(LLScriptEventHandler *event)
mNextp = event;
}
-void LLScriptEventHandler::gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptEventHandler::gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -8751,7 +8751,7 @@ S32 LLScriptEventHandler::getSize()
U64 gCurrentHandler = 0;
-void print_cil_local_init(FILE* fp, LLScriptScopeEntry* scopeEntry)
+void print_cil_local_init(LLFILE* fp, LLScriptScopeEntry* scopeEntry)
{
if(scopeEntry->mLocals.getNumber() > 0)
{
@@ -8768,7 +8768,7 @@ void print_cil_local_init(FILE* fp, LLScriptScopeEntry* scopeEntry)
}
}
-void LLScriptEventHandler::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptEventHandler::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -9071,7 +9071,7 @@ void LLScriptFunctionDec::addFunctionParameter(LLScriptFunctionDec *dec)
mNextp = dec;
}
-void LLScriptFunctionDec::gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptFunctionDec::gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -9108,7 +9108,7 @@ S32 LLScriptFunctionDec::getSize()
return 0;
}
-void LLScriptFunctionDec::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptFunctionDec::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -9194,7 +9194,7 @@ void LLScriptGlobalFunctions::addGlobalFunction(LLScriptGlobalFunctions *global)
mNextp = global;
}
-void LLScriptGlobalFunctions::gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptGlobalFunctions::gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -9222,7 +9222,7 @@ S32 LLScriptGlobalFunctions::getSize()
return 0;
}
-void LLScriptGlobalFunctions::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptGlobalFunctions::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -9507,7 +9507,7 @@ void LLScriptState::addState(LLScriptState *state)
mNextp = state;
}
-void LLScriptState::gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptState::gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -9535,7 +9535,7 @@ S32 LLScriptState::getSize()
return 0;
}
-void LLScriptState::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptState::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -9755,7 +9755,7 @@ void LLScriptScript::setBytecodeDest(const char* dst_filename)
mBytecodeDest[MAX_STRING-1] = '\0';
}
-void print_cil_globals(FILE* fp, LLScriptGlobalVariable* global)
+void print_cil_globals(LLFILE* fp, LLScriptGlobalVariable* global)
{
fprintf(fp, ".field private ");
print_cil_type(fp, global->mType->mType);
@@ -9768,7 +9768,7 @@ void print_cil_globals(FILE* fp, LLScriptGlobalVariable* global)
}
}
-void LLScriptScript::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+void LLScriptScript::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
if (gErrorToText.getErrors())
{
@@ -9939,7 +9939,7 @@ void LLScriptScript::recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass
// now, put it all together and spit it out
// we need
- FILE* bcfp = LLFile::fopen(mBytecodeDest, "wb"); /*Flawfinder: ignore*/
+ LLFILE* bcfp = LLFile::fopen(mBytecodeDest, "wb"); /*Flawfinder: ignore*/
code->build(fp, bcfp);
fclose(bcfp);
diff --git a/linden/indra/lscript/lscript_compile/lscript_tree.h b/linden/indra/lscript/lscript_compile/lscript_tree.h
index 393b3e2..1c2ba1f 100644
--- a/linden/indra/lscript/lscript_compile/lscript_tree.h
+++ b/linden/indra/lscript/lscript_compile/lscript_tree.h
@@ -53,7 +53,7 @@ public:
~LLScriptType() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LSCRIPTType mType;
@@ -70,7 +70,7 @@ public:
virtual ~LLScriptConstant() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LSCRIPTType mType;
@@ -86,7 +86,7 @@ public:
~LLScriptConstantInteger() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
S32 mValue;
@@ -102,7 +102,7 @@ public:
~LLScriptConstantFloat() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
F32 mValue;
@@ -122,7 +122,7 @@ public:
mValue = NULL;
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
char *mValue;
@@ -143,7 +143,7 @@ public:
mName = NULL;
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
char *mName;
@@ -177,7 +177,7 @@ public:
// don't delete next pointer because we're going to store allocation lists and delete from those
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LSCRIPTSimpleAssignableType mType;
@@ -196,7 +196,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mIdentifier;
@@ -214,7 +214,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptConstant *mConstant;
@@ -235,7 +235,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptSimpleAssignable *mEntry1;
@@ -259,7 +259,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptSimpleAssignable *mEntry1;
@@ -280,7 +280,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptSimpleAssignable *mEntryList;
@@ -303,9 +303,9 @@ public:
{
}
- void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptType *mType;
@@ -330,7 +330,7 @@ public:
// don't delete next pointer because we're going to store allocation lists and delete from those
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LSCRIPTStateEventType mType;
@@ -344,7 +344,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
~LLScriptStateEntryEvent() {}
@@ -360,7 +360,7 @@ public:
~LLScriptStateExitEvent() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
};
@@ -376,7 +376,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mCount;
@@ -394,7 +394,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mCount;
@@ -412,7 +412,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mCount;
@@ -430,7 +430,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mCount;
@@ -448,7 +448,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mCount;
@@ -466,7 +466,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mCount;
@@ -484,7 +484,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mPosition;
@@ -502,7 +502,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mPosition;
@@ -520,7 +520,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mPosition;
@@ -536,7 +536,7 @@ public:
~LLScriptInventoryEvent() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mChange;
@@ -552,7 +552,7 @@ public:
~LLScriptAttachEvent() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mAttach;
@@ -568,7 +568,7 @@ public:
~LLScriptDataserverEvent() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mID;
@@ -585,7 +585,7 @@ public:
~LLScriptTimerEvent() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
};
@@ -599,7 +599,7 @@ public:
~LLScriptMovingStartEvent() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
};
@@ -613,7 +613,7 @@ public:
~LLScriptMovingEndEvent() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
};
@@ -627,7 +627,7 @@ public:
~LLScriptRTPEvent() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mRTPermissions;
@@ -645,7 +645,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mChannel;
@@ -666,7 +666,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mID;
@@ -684,7 +684,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mNumber;
@@ -702,7 +702,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mName;
@@ -722,7 +722,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mSender;
@@ -743,7 +743,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mType;
@@ -767,7 +767,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass,
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass,
LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope,
LSCRIPTType &type, LSCRIPTType basetype, U64 &count,
LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap,
@@ -791,7 +791,7 @@ public:
}
~LLScriptRezEvent() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mStartParam;
@@ -805,7 +805,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
~LLScriptNoSensorEvent() {}
@@ -819,7 +819,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
~LLScriptAtTarget() {}
@@ -837,7 +837,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
~LLScriptNotAtTarget() {}
@@ -851,7 +851,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
~LLScriptAtRotTarget() {}
@@ -869,7 +869,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
~LLScriptNotAtRotTarget() {}
@@ -887,7 +887,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mName;
@@ -906,7 +906,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mTime;
@@ -932,9 +932,9 @@ public:
// don't delete next pointer because we're going to store allocation lists and delete from those
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
- void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LSCRIPTExpressionType mType;
@@ -955,7 +955,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mFirstp;
@@ -974,7 +974,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mFirstp;
@@ -993,7 +993,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mFirstp;
@@ -1012,7 +1012,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
S32 mOffset;
@@ -1032,7 +1032,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLValue;
@@ -1051,7 +1051,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLValue;
@@ -1070,7 +1070,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLValue;
@@ -1089,7 +1089,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLValue;
@@ -1108,7 +1108,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLValue;
@@ -1127,7 +1127,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLValue;
@@ -1146,7 +1146,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1165,7 +1165,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1184,7 +1184,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1203,7 +1203,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1222,7 +1222,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1241,7 +1241,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1260,7 +1260,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1279,7 +1279,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1298,7 +1298,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1317,7 +1317,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1336,7 +1336,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1355,7 +1355,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1374,7 +1374,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1393,7 +1393,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1412,7 +1412,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1431,7 +1431,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1450,7 +1450,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1469,7 +1469,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mLeftSide;
@@ -1488,7 +1488,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1506,7 +1506,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1524,7 +1524,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1542,7 +1542,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1560,7 +1560,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1578,7 +1578,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1596,7 +1596,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptType *mType;
@@ -1620,7 +1620,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression1;
@@ -1647,7 +1647,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression1;
@@ -1668,7 +1668,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpressionList;
@@ -1686,7 +1686,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1704,7 +1704,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1722,7 +1722,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mIdentifier;
@@ -1741,7 +1741,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1759,7 +1759,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptConstant *mConstant;
@@ -1801,9 +1801,9 @@ public:
void addStatement(LLScriptStatement *event);
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
- void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LSCRIPTStatementType mType;
@@ -1824,7 +1824,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptStatement *mFirstp;
@@ -1841,7 +1841,7 @@ public:
~LLScriptNOOP() {}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
};
@@ -1857,7 +1857,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mIdentifier;
@@ -1875,7 +1875,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mIdentifier;
@@ -1893,7 +1893,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptIdentifier *mIdentifier;
@@ -1911,7 +1911,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1930,7 +1930,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1948,7 +1948,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LSCRIPTType mType;
@@ -1968,7 +1968,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -1989,7 +1989,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mSequence;
@@ -2011,7 +2011,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptStatement *mStatement;
@@ -2031,7 +2031,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptExpression *mExpression;
@@ -2052,7 +2052,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptType *mType;
@@ -2072,7 +2072,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptStatement *mStatement;
@@ -2094,9 +2094,9 @@ public:
void addEvent(LLScriptEventHandler *event);
- void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptEvent *mEventp;
@@ -2126,9 +2126,9 @@ public:
void addFunctionParameter(LLScriptFunctionDec *dec);
- void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptType *mType;
@@ -2154,9 +2154,9 @@ public:
delete mFunctionScope;
}
- void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LLScriptType *mType;
@@ -2192,9 +2192,9 @@ public:
{
}
- void gonext(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void gonext(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
LSCRIPTStateType mType;
@@ -2222,7 +2222,7 @@ public:
{
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata)
{
}
@@ -2257,7 +2257,7 @@ public:
delete mGlobalScope;
}
- void recurse(FILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
+ void recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCompilePass pass, LSCRIPTPruneType ptype, BOOL &prunearg, LLScriptScope *scope, LSCRIPTType &type, LSCRIPTType basetype, U64 &count, LLScriptByteCodeChunk *chunk, LLScriptByteCodeChunk *heap, S32 stacksize, LLScriptScopeEntry *entry, S32 entrycount, LLScriptLibData **ldata);
S32 getSize();
void setBytecodeDest(const char* dst_filename);
diff --git a/linden/indra/lscript/lscript_compile/lscript_typecheck.cpp b/linden/indra/lscript/lscript_compile/lscript_typecheck.cpp
index 8cfa815..8c3738d 100644
--- a/linden/indra/lscript/lscript_compile/lscript_typecheck.cpp
+++ b/linden/indra/lscript/lscript_compile/lscript_typecheck.cpp
@@ -351,10 +351,10 @@ void init_supported_expressions(void)
gSupportedExpressionArray[LET_MUL_ASSIGN][LST_INTEGER][LST_FLOATINGPOINT] = LST_FLOATINGPOINT;
gSupportedExpressionArray[LET_MUL_ASSIGN][LST_FLOATINGPOINT][LST_FLOATINGPOINT] = LST_FLOATINGPOINT;
gSupportedExpressionArray[LET_MUL_ASSIGN][LST_VECTOR][LST_INTEGER] = LST_VECTOR;
- gSupportedExpressionArray[LET_MUL_ASSIGN][LST_INTEGER][LST_VECTOR] = LST_VECTOR;
+ //gSupportedExpressionArray[LET_MUL_ASSIGN][LST_INTEGER][LST_VECTOR] = LST_VECTOR;
gSupportedExpressionArray[LET_MUL_ASSIGN][LST_VECTOR][LST_FLOATINGPOINT] = LST_VECTOR;
- gSupportedExpressionArray[LET_MUL_ASSIGN][LST_FLOATINGPOINT][LST_VECTOR] = LST_VECTOR;
- gSupportedExpressionArray[LET_MUL_ASSIGN][LST_VECTOR][LST_VECTOR] = LST_FLOATINGPOINT;
+ //gSupportedExpressionArray[LET_MUL_ASSIGN][LST_FLOATINGPOINT][LST_VECTOR] = LST_VECTOR;
+ //gSupportedExpressionArray[LET_MUL_ASSIGN][LST_VECTOR][LST_VECTOR] = LST_FLOATINGPOINT;
gSupportedExpressionArray[LET_MUL_ASSIGN][LST_VECTOR][LST_QUATERNION] = LST_VECTOR;
gSupportedExpressionArray[LET_MUL_ASSIGN][LST_QUATERNION][LST_QUATERNION] = LST_QUATERNION;
diff --git a/linden/indra/lscript/lscript_execute.h b/linden/indra/lscript/lscript_execute.h
index e9353e3..997e04d 100644
--- a/linden/indra/lscript/lscript_execute.h
+++ b/linden/indra/lscript/lscript_execute.h
@@ -367,7 +367,7 @@ public:
class LLScriptExecute
{
public:
- LLScriptExecute(FILE *fp);
+ LLScriptExecute(LLFILE *fp);
LLScriptExecute(U8 *buffer);
~LLScriptExecute();
diff --git a/linden/indra/lscript/lscript_execute/lscript_execute.cpp b/linden/indra/lscript/lscript_execute/lscript_execute.cpp
index d1200f0..643f3f6 100644
--- a/linden/indra/lscript/lscript_execute/lscript_execute.cpp
+++ b/linden/indra/lscript/lscript_execute/lscript_execute.cpp
@@ -61,7 +61,7 @@ char* LSCRIPTRunTimeFaultStrings[LSRF_EOF] = /*Flawfinder: ignore*/
//static
S64 LLScriptExecute::sGlobalInstructionCount = 0;
-LLScriptExecute::LLScriptExecute(FILE *fp)
+LLScriptExecute::LLScriptExecute(LLFILE *fp)
{
U8 sizearray[4];
S32 filesize;
@@ -3027,46 +3027,19 @@ BOOL run_return(U8 *buffer, S32 &offset, BOOL b_print, const LLUUID &id)
if (b_print)
printf("[0x%X]\tRETURN\n", offset);
offset++;
- S32 bp = lscript_pop_int(buffer);
+
+ // SEC-53: babbage: broken instructions may allow inbalanced pushes and
+ // pops which can cause caller BP and return IP to be corrupted, so restore
+ // SP from BP before popping caller BP and IP.
+ S32 bp = get_register(buffer, LREG_BP);
+ set_sp(buffer, bp);
+
+ bp = lscript_pop_int(buffer);
set_bp(buffer, bp);
offset = lscript_pop_int(buffer);
return FALSE;
}
-S32 axtoi(char *hexStg)
-{
- S32 n = 0; // position in string
- S32 m = 0; // position in digit[] to shift
- S32 count; // loop index
- S32 intValue = 0; // integer value of hex string
- S32 digit[9]; // hold values to convert
- while (n < 8)
- {
- if (hexStg[n]=='\0')
- break;
- if (hexStg[n] > 0x29 && hexStg[n] < 0x40 ) //if 0 to 9
- digit[n] = hexStg[n] & 0x0f; //convert to int
- else if (hexStg[n] >='a' && hexStg[n] <= 'f') //if a to f
- digit[n] = (hexStg[n] & 0x0f) + 9; //convert to int
- else if (hexStg[n] >='A' && hexStg[n] <= 'F') //if A to F
- digit[n] = (hexStg[n] & 0x0f) + 9; //convert to int
- else break;
- n++;
- }
- count = n;
- m = n - 1;
- n = 0;
- while(n < count)
- {
- // digit[n] is value of hex digit at position n
- // (m << 2) is the number of positions to shift
- // OR the bits into return value
- intValue = intValue | (digit[n] << (m << 2));
- m--; // adjust the position to set
- n++; // next digit to process
- }
- return (intValue);
-}
BOOL run_cast(U8 *buffer, S32 &offset, BOOL b_print, const LLUUID &id)
@@ -3718,7 +3691,7 @@ void lscript_run(char *filename, BOOL b_debug)
BOOL b_state;
LLScriptExecute *execute = NULL;
- FILE* file = LLFile::fopen(filename, "r");
+ LLFILE* file = LLFile::fopen(filename, "r");
if (file)
{
execute = new LLScriptExecute(file);
@@ -3727,7 +3700,7 @@ void lscript_run(char *filename, BOOL b_debug)
file = LLFile::fopen(filename, "r");
if (file)
{
- FILE* fp = LLFile::fopen("lscript.parse", "w"); /*Flawfinder: ignore*/
+ LLFILE* fp = LLFile::fopen("lscript.parse", "w"); /*Flawfinder: ignore*/
LLScriptLSOParse *parse = new LLScriptLSOParse(file);
parse->printData(fp);
delete parse;
diff --git a/linden/indra/lscript/lscript_execute/lscript_readlso.cpp b/linden/indra/lscript/lscript_execute/lscript_readlso.cpp
index 218e14a..bfd59a7 100644
--- a/linden/indra/lscript/lscript_execute/lscript_readlso.cpp
+++ b/linden/indra/lscript/lscript_execute/lscript_readlso.cpp
@@ -35,7 +35,7 @@
#include "lscript_library.h"
#include "lscript_alloc.h"
-LLScriptLSOParse::LLScriptLSOParse(FILE *fp)
+LLScriptLSOParse::LLScriptLSOParse(LLFILE *fp)
{
U8 sizearray[4];
S32 filesize;
@@ -68,7 +68,7 @@ LLScriptLSOParse::~LLScriptLSOParse()
delete [] mRawData;
}
-void LLScriptLSOParse::printData(FILE *fp)
+void LLScriptLSOParse::printData(LLFILE *fp)
{
@@ -86,14 +86,14 @@ void LLScriptLSOParse::printData(FILE *fp)
printHeap(fp);
}
-void LLScriptLSOParse::printNameDesc(FILE *fp)
+void LLScriptLSOParse::printNameDesc(LLFILE *fp)
{
fprintf(fp, "=============================\n\n");
}
S32 gMajorVersion = 0;
-void LLScriptLSOParse::printRegisters(FILE *fp)
+void LLScriptLSOParse::printRegisters(LLFILE *fp)
{
// print out registers first
S32 i;
@@ -125,7 +125,7 @@ void LLScriptLSOParse::printRegisters(FILE *fp)
fprintf(fp, "=============================\n\n");
}
-void LLScriptLSOParse::printGlobals(FILE *fp)
+void LLScriptLSOParse::printGlobals(LLFILE *fp)
{
// print out registers first
S32 offset, varoffset;
@@ -195,7 +195,7 @@ void LLScriptLSOParse::printGlobals(FILE *fp)
fprintf(fp, "=============================\n\n");
}
-void LLScriptLSOParse::printGlobalFunctions(FILE *fp)
+void LLScriptLSOParse::printGlobalFunctions(LLFILE *fp)
{
// print out registers first
S32 i, offset;
@@ -284,7 +284,7 @@ void LLScriptLSOParse::printGlobalFunctions(FILE *fp)
fprintf(fp, "=============================\n\n");
}
-void LLScriptLSOParse::printStates(FILE *fp)
+void LLScriptLSOParse::printStates(LLFILE *fp)
{
// print out registers first
S32 i, offset;
@@ -637,7 +637,7 @@ void LLScriptLSOParse::printStates(FILE *fp)
fprintf(fp, "=============================\n\n");
}
-void LLScriptLSOParse::printHeap(FILE *fp)
+void LLScriptLSOParse::printHeap(LLFILE *fp)
{
// print out registers first
@@ -652,7 +652,7 @@ void LLScriptLSOParse::printHeap(FILE *fp)
fprintf(fp, "=============================\n\n");
}
-void lso_print_tabs(FILE *fp, S32 tabs)
+void lso_print_tabs(LLFILE *fp, S32 tabs)
{
S32 i;
for (i = 0; i < tabs; i++)
@@ -661,13 +661,13 @@ void lso_print_tabs(FILE *fp, S32 tabs)
}
}
-void LLScriptLSOParse::printOpCodes(FILE *fp, S32 &offset, S32 tabs)
+void LLScriptLSOParse::printOpCodes(LLFILE *fp, S32 &offset, S32 tabs)
{
U8 opcode = *(mRawData + offset);
mPrintOpCodes[opcode](fp, mRawData, offset, tabs);
}
-void LLScriptLSOParse::printOpCodeRange(FILE *fp, S32 start, S32 end, S32 tabs)
+void LLScriptLSOParse::printOpCodeRange(LLFILE *fp, S32 start, S32 end, S32 tabs)
{
while (start < end)
{
@@ -791,43 +791,43 @@ void LLScriptLSOParse::initOpCodePrinting()
mPrintOpCodes[LSCRIPTOpCodes[LOPC_CALLLIB_TWO_BYTE]] = print_calllib_two_byte;
}
-void print_noop(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_noop(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tNOOP\n", offset++);
}
-void print_pop(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pop(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPOP\n", offset++);
}
-void print_pops(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pops(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPOPS\n", offset++);
}
-void print_popl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_popl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPOPL\n", offset++);
}
-void print_popv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_popv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPOPV\n", offset++);
}
-void print_popq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_popq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPOPQ\n", offset++);
}
-void print_poparg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_poparg(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -836,61 +836,61 @@ void print_poparg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_popip(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_popip(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPOPIP\n", offset++);
}
-void print_popbp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_popbp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPOPBP\n", offset++);
}
-void print_popsp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_popsp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPOPSP\n", offset++);
}
-void print_popslr(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_popslr(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPOPSLR\n", offset++);
}
-void print_dup(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_dup(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tDUP\n", offset++);
}
-void print_dups(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_dups(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tDUPS\n", offset++);
}
-void print_dupl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_dupl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tDUPL\n", offset++);
}
-void print_dupv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_dupv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tDUPV\n", offset++);
}
-void print_dupq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_dupq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tDUPQ\n", offset++);
}
-void print_store(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_store(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -899,7 +899,7 @@ void print_store(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_stores(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_stores(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -908,7 +908,7 @@ void print_stores(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_storel(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_storel(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -917,7 +917,7 @@ void print_storel(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_storev(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_storev(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -926,7 +926,7 @@ void print_storev(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_storeq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_storeq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -935,7 +935,7 @@ void print_storeq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_storeg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_storeg(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -944,7 +944,7 @@ void print_storeg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg + get_register(buffer, LREG_GVR));
}
-void print_storegs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_storegs(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -953,7 +953,7 @@ void print_storegs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg + get_register(buffer, LREG_GVR));
}
-void print_storegl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_storegl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -962,7 +962,7 @@ void print_storegl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg + get_register(buffer, LREG_GVR));
}
-void print_storegv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_storegv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -971,7 +971,7 @@ void print_storegv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg + get_register(buffer, LREG_GVR));
}
-void print_storegq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_storegq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -980,7 +980,7 @@ void print_storegq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg + get_register(buffer, LREG_GVR));
}
-void print_loadp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_loadp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -989,7 +989,7 @@ void print_loadp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_loadsp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_loadsp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -998,7 +998,7 @@ void print_loadsp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_loadlp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_loadlp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1007,7 +1007,7 @@ void print_loadlp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_loadvp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_loadvp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1016,7 +1016,7 @@ void print_loadvp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_loadqp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_loadqp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1025,7 +1025,7 @@ void print_loadqp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_loadgp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_loadgp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1034,7 +1034,7 @@ void print_loadgp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg + get_register(buffer, LREG_GVR));
}
-void print_loadgsp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_loadgsp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1043,7 +1043,7 @@ void print_loadgsp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg + get_register(buffer, LREG_GVR));
}
-void print_loadglp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_loadglp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1052,7 +1052,7 @@ void print_loadglp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg + get_register(buffer, LREG_GVR));
}
-void print_loadgvp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_loadgvp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1061,7 +1061,7 @@ void print_loadgvp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg + get_register(buffer, LREG_GVR));
}
-void print_loadgqp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_loadgqp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1070,7 +1070,7 @@ void print_loadgqp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg + get_register(buffer, LREG_GVR));
}
-void print_push(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_push(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1079,7 +1079,7 @@ void print_push(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_pushs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushs(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1088,7 +1088,7 @@ void print_pushs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_pushl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1097,7 +1097,7 @@ void print_pushl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_pushv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1106,7 +1106,7 @@ void print_pushv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_pushq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1115,7 +1115,7 @@ void print_pushq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_pushg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushg(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1124,7 +1124,7 @@ void print_pushg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "0x%X\n", arg + get_register(buffer, LREG_GVR));
}
-void print_pushgs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushgs(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1133,7 +1133,7 @@ void print_pushgs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "0x%X\n", arg + get_register(buffer, LREG_GVR));
}
-void print_pushgl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushgl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1142,7 +1142,7 @@ void print_pushgl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "0x%X\n", arg + get_register(buffer, LREG_GVR));
}
-void print_pushgv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushgv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1151,7 +1151,7 @@ void print_pushgv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "0x%X\n", arg + get_register(buffer, LREG_GVR));
}
-void print_pushgq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushgq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1160,25 +1160,25 @@ void print_pushgq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "0x%X\n", arg + get_register(buffer, LREG_GVR));
}
-void print_puship(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_puship(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPUSHIP\n", offset++);
}
-void print_pushbp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushbp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPUSHBP\n", offset++);
}
-void print_pushsp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushsp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPUSHSP\n", offset++);
}
-void print_pushargb(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushargb(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 arg;
lso_print_tabs(fp, tabs);
@@ -1187,7 +1187,7 @@ void print_pushargb(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", (U32)arg);
}
-void print_pushargi(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushargi(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1196,7 +1196,7 @@ void print_pushargi(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_pushargf(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushargf(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
F32 arg;
lso_print_tabs(fp, tabs);
@@ -1205,7 +1205,7 @@ void print_pushargf(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%f\n", arg);
}
-void print_pushargs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushargs(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
char arg[1024]; /*Flawfinder: ignore*/
lso_print_tabs(fp, tabs);
@@ -1214,7 +1214,7 @@ void print_pushargs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s\n", arg);
}
-void print_pushargv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushargv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
LLVector3 arg;
lso_print_tabs(fp, tabs);
@@ -1223,7 +1223,7 @@ void print_pushargv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "< %f, %f, %f >\n", arg.mV[VX], arg.mV[VY], arg.mV[VZ]);
}
-void print_pushargq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushargq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
LLQuaternion arg;
lso_print_tabs(fp, tabs);
@@ -1232,25 +1232,25 @@ void print_pushargq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "< %f, %f, %f, %f >\n", arg.mQ[VX], arg.mQ[VY], arg.mQ[VZ], arg.mQ[VS]);
}
-void print_pushe(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushe(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPUSHE\n", offset++);
}
-void print_pushev(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pushev(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPUSHEV\n", offset++);
}
-void print_pusheq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pusheq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPUSHEQ\n", offset++);
}
-void print_pusharge(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_pusharge(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1260,7 +1260,7 @@ void print_pusharge(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
}
-void print_add(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_add(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1273,7 +1273,7 @@ void print_add(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_sub(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_sub(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1286,7 +1286,7 @@ void print_sub(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_mul(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_mul(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1299,7 +1299,7 @@ void print_mul(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_div(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_div(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1312,7 +1312,7 @@ void print_div(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_mod(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_mod(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1325,7 +1325,7 @@ void print_mod(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_eq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_eq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1338,7 +1338,7 @@ void print_eq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_neq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_neq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1351,7 +1351,7 @@ void print_neq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_leq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_leq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1364,7 +1364,7 @@ void print_leq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_geq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_geq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1377,7 +1377,7 @@ void print_geq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_less(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_less(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1390,7 +1390,7 @@ void print_less(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_greater(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_greater(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1404,50 +1404,50 @@ void print_greater(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
}
-void print_bitand(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_bitand(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tBITAND\n", offset++);
}
-void print_bitor(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_bitor(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tBITOR\n", offset++);
}
-void print_bitxor(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_bitxor(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tBITXOR\n", offset++);
}
-void print_booland(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_booland(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tBOOLAND\n", offset++);
}
-void print_boolor(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_boolor(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tBOOLOR\n", offset++);
}
-void print_shl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_shl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tSHL\n", offset++);
}
-void print_shr(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_shr(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tSHR\n", offset++);
}
-void print_neg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_neg(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 type;
lso_print_tabs(fp, tabs);
@@ -1456,19 +1456,19 @@ void print_neg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s\n", LSCRIPTTypeNames[type]);
}
-void print_bitnot(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_bitnot(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tBITNOT\n", offset++);
}
-void print_boolnot(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_boolnot(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tBOOLNOT\n", offset++);
}
-void print_jump(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_jump(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1477,7 +1477,7 @@ void print_jump(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_jumpif(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_jumpif(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
U8 type;
@@ -1488,7 +1488,7 @@ void print_jumpif(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %d\n", LSCRIPTTypeNames[type], arg);
}
-void print_jumpnif(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_jumpnif(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
U8 type;
@@ -1499,7 +1499,7 @@ void print_jumpnif(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %d\n", LSCRIPTTypeNames[type], arg);
}
-void print_state(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_state(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1508,7 +1508,7 @@ void print_state(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_call(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_call(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1517,13 +1517,13 @@ void print_call(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_return(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_return(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tRETURN\n", offset++);
}
-void print_cast(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_cast(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 types;
U8 type1;
@@ -1536,7 +1536,7 @@ void print_cast(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s, %s\n", LSCRIPTTypeNames[type1], LSCRIPTTypeNames[type2]);
}
-void print_stacktos(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_stacktos(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1545,7 +1545,7 @@ void print_stacktos(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_stacktol(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_stacktol(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
S32 arg;
lso_print_tabs(fp, tabs);
@@ -1554,7 +1554,7 @@ void print_stacktol(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%d\n", arg);
}
-void print_print(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_print(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
lso_print_tabs(fp, tabs);
fprintf(fp, "[0x%X]\tPRINT ", offset++);
@@ -1562,7 +1562,7 @@ void print_print(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
fprintf(fp, "%s\n", LSCRIPTTypeNames[type]);
}
-void print_calllib(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_calllib(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U8 arg;
lso_print_tabs(fp, tabs);
@@ -1572,7 +1572,7 @@ void print_calllib(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
}
-void print_calllib_two_byte(FILE *fp, U8 *buffer, S32 &offset, S32 tabs)
+void print_calllib_two_byte(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs)
{
U16 arg;
lso_print_tabs(fp, tabs);
diff --git a/linden/indra/lscript/lscript_execute/lscript_readlso.h b/linden/indra/lscript/lscript_execute/lscript_readlso.h
index 17d9460..ab339e0 100644
--- a/linden/indra/lscript/lscript_execute/lscript_readlso.h
+++ b/linden/indra/lscript/lscript_execute/lscript_readlso.h
@@ -36,135 +36,135 @@
#include "linked_lists.h"
// list of op code print functions
-void print_noop(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pop(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pops(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_popl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_popv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_popq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_poparg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_popip(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_popbp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_popsp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_popslr(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_dup(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_dups(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_dupl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_dupv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_dupq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_store(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_stores(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_storel(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_storev(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_storeq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_storeg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_storegs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_storegl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_storegv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_storegq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_loadp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_loadsp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_loadlp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_loadvp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_loadqp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_loadgp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_loadgsp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_loadglp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_loadgvp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_loadgqp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_push(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushgl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushgs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushgv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushgq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_puship(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushbp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushsp(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushargb(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushargi(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushargf(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushargs(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushargv(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushargq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushe(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pushev(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pusheq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_pusharge(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_add(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_sub(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_mul(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_div(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_mod(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_eq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_neq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_leq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_geq(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_less(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_greater(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_bitand(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_bitor(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_bitxor(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_booland(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_boolor(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_shl(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_shr(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_neg(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_bitnot(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_boolnot(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_jump(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_jumpif(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_jumpnif(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_state(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_call(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_return(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_cast(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_stacktos(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_stacktol(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_print(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-
-void print_calllib(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
-void print_calllib_two_byte(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_noop(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pop(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pops(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_popl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_popv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_popq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_poparg(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_popip(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_popbp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_popsp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_popslr(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_dup(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_dups(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_dupl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_dupv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_dupq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_store(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_stores(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_storel(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_storev(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_storeq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_storeg(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_storegs(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_storegl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_storegv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_storegq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_loadp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_loadsp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_loadlp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_loadvp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_loadqp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_loadgp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_loadgsp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_loadglp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_loadgvp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_loadgqp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_push(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushs(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushg(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushgl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushgs(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushgv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushgq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_puship(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushbp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushsp(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushargb(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushargi(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushargf(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushargs(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushargv(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushargq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushe(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pushev(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pusheq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_pusharge(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_add(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_sub(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_mul(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_div(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_mod(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_eq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_neq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_leq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_geq(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_less(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_greater(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_bitand(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_bitor(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_bitxor(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_booland(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_boolor(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_shl(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_shr(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_neg(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_bitnot(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_boolnot(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_jump(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_jumpif(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_jumpnif(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_state(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_call(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_return(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_cast(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_stacktos(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_stacktol(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_print(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+
+void print_calllib(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+void print_calllib_two_byte(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
class LLScriptLSOParse
{
public:
- LLScriptLSOParse(FILE *fp);
+ LLScriptLSOParse(LLFILE *fp);
LLScriptLSOParse(U8 *buffer);
~LLScriptLSOParse();
void initOpCodePrinting();
- void printData(FILE *fp);
- void printNameDesc(FILE *fp);
- void printRegisters(FILE *fp);
- void printGlobals(FILE *fp);
- void printGlobalFunctions(FILE *fp);
- void printStates(FILE *fp);
- void printHeap(FILE *fp);
- void printOpCodes(FILE *fp, S32 &offset, S32 tabs);
- void printOpCodeRange(FILE *fp, S32 start, S32 end, S32 tabs);
+ void printData(LLFILE *fp);
+ void printNameDesc(LLFILE *fp);
+ void printRegisters(LLFILE *fp);
+ void printGlobals(LLFILE *fp);
+ void printGlobalFunctions(LLFILE *fp);
+ void printStates(LLFILE *fp);
+ void printHeap(LLFILE *fp);
+ void printOpCodes(LLFILE *fp, S32 &offset, S32 tabs);
+ void printOpCodeRange(LLFILE *fp, S32 start, S32 end, S32 tabs);
U8 *mRawData;
- void (*mPrintOpCodes[0x100])(FILE *fp, U8 *buffer, S32 &offset, S32 tabs);
+ void (*mPrintOpCodes[0x100])(LLFILE *fp, U8 *buffer, S32 &offset, S32 tabs);
};
-void lso_print_tabs(FILE *fp, S32 tabs);
+void lso_print_tabs(LLFILE *fp, S32 tabs);
#endif
diff --git a/linden/indra/lscript/lscript_library/lscript_alloc.cpp b/linden/indra/lscript/lscript_library/lscript_alloc.cpp
index 2c37d22..9ad6c6b 100644
--- a/linden/indra/lscript/lscript_library/lscript_alloc.cpp
+++ b/linden/indra/lscript/lscript_library/lscript_alloc.cpp
@@ -851,7 +851,7 @@ void lsa_print_heap(U8 *buffer)
printf("==========\n");
}
-void lsa_fprint_heap(U8 *buffer, FILE *fp)
+void lsa_fprint_heap(U8 *buffer, LLFILE *fp)
{
S32 offset = get_register(buffer, LREG_HR);
S32 readoffset;
diff --git a/linden/indra/mac_crash_logger/llcrashloggermac.cpp b/linden/indra/mac_crash_logger/llcrashloggermac.cpp
index 3cbd6c2..36d8285 100644
--- a/linden/indra/mac_crash_logger/llcrashloggermac.cpp
+++ b/linden/indra/mac_crash_logger/llcrashloggermac.cpp
@@ -53,7 +53,7 @@ const S32 SETTINGS_FILE_VERSION = 101;
// Windows Message Handlers
BOOL gFirstDialog = TRUE; // Are we currently handling the Send/Don't Send dialog?
-FILE *gDebugFile = NULL;
+LLFILE *gDebugFile = NULL;
WindowRef gWindow = NULL;
EventHandlerRef gEventHandler = NULL;
diff --git a/linden/indra/mac_updater/mac_updater.cpp b/linden/indra/mac_updater/mac_updater.cpp
index b7773e2..15e28ac 100644
--- a/linden/indra/mac_updater/mac_updater.cpp
+++ b/linden/indra/mac_updater/mac_updater.cpp
@@ -727,7 +727,7 @@ void *updatethreadproc(void*)
char temp[PATH_MAX] = ""; /* Flawfinder: ignore */
// *NOTE: This buffer length is used in a scanf() below.
char deviceNode[1024] = ""; /* Flawfinder: ignore */
- FILE *downloadFile = NULL;
+ LLFILE *downloadFile = NULL;
OSStatus err;
ProcessSerialNumber psn;
char target[PATH_MAX] = ""; /* Flawfinder: ignore */
@@ -942,7 +942,7 @@ void *updatethreadproc(void*)
snprintf(temp, sizeof(temp), "SecondLife.dmg");
- downloadFile = fopen(temp, "wb"); /* Flawfinder: ignore */
+ downloadFile = LLFile::fopen(temp, "wb"); /* Flawfinder: ignore */
if(downloadFile == NULL)
{
throw 0;
diff --git a/linden/indra/newview/English.lproj/InfoPlist.strings b/linden/indra/newview/English.lproj/InfoPlist.strings
index bb7ddc1..7272173 100644
--- a/linden/indra/newview/English.lproj/InfoPlist.strings
+++ b/linden/indra/newview/English.lproj/InfoPlist.strings
@@ -1,5 +1,5 @@
/* Localized versions of Info.plist keys */
CFBundleName = "Second Life";
-CFBundleShortVersionString = "Second Life version 1.19.1.4";
-CFBundleGetInfoString = "Second Life version 1.19.1.4, Copyright 2004-2008 Linden Research, Inc.";
+CFBundleShortVersionString = "Second Life version 1.20.6.86975";
+CFBundleGetInfoString = "Second Life version 1.20.6.86975, Copyright 2004-2008 Linden Research, Inc.";
diff --git a/linden/indra/newview/Info-SecondLife.plist b/linden/indra/newview/Info-SecondLife.plist
index 492e589..fa50503 100644
--- a/linden/indra/newview/Info-SecondLife.plist
+++ b/linden/indra/newview/Info-SecondLife.plist
@@ -32,7 +32,7 @@
CFBundleVersion
- 1.19.1.4
+ 1.20.6.86975
CSResourcesFileMapped
diff --git a/linden/indra/newview/app_settings/cmd_line.xml b/linden/indra/newview/app_settings/cmd_line.xml
index 3e6fa21..746e56d 100644
--- a/linden/indra/newview/app_settings/cmd_line.xml
+++ b/linden/indra/newview/app_settings/cmd_line.xml
@@ -1,335 +1,335 @@
-
-
-
- help
-
- desc
- display this help message
-
- short
- h
-
-
- port
-
- count
- 1
- map-to
- UserConnectionPort
-
-
- drop
-
- count
- 1
- map-to
- PacketDropPercentage
-
-
- inbw
-
- count
- 1
- map-to
- InBandwidth
-
-
- outbw
-
- count
- 1
- map-to
- OutBandwidth
-
-
- grid
-
- desc
- Specify the name of the grid, local, or an IP address to connect to.
- count
- 1
- map-to
- GridChoice
-
-
- loginuri
-
- desc
- login server and CGI script to use
- count
- 1
- compose
- true
- map-to
- LoginURI
-
-
- helperuri
-
- desc
- helper web CGI prefix to use
- count
- 1
- map-to
- HelperURI
-
-
- debugviews
-
- map-to
- DebugViews
-
-
- skin
-
- desc
- ui/branding skin folder to use
- count
- 1
- map-to
- SkinFolder
-
-
- autologin
-
- desc
- log in as last saved user
- map-to
- AutoLogin
-
-
- quitafter
-
- count
- 1
- map-to
- QuitAfterSeconds
-
-
- rotate
-
- map-to
- RotateRight
-
-
- noaudio
-
- map-to
- NoAudio
-
-
- nosound
-
- map-to
- NoAudio
-
-
- noprobe
-
- map-to
- NoHardwareProbe
-
-
- noquicktime
-
- map-to
- NoQuickTime
-
-
- nopreload
-
- map-to
- NoPreload
-
-
- purge
-
- desc
- Delete files in the cache.
- map-to
- PurgeCacheOnNextStartup
-
-
- noinvlib
-
- desc
- Do not request the inventory library.
- map-to
- NoInventoryLibrary
-
-
- logfile
-
- count
- 1
- map-to
- UserLogFile
-
-
- setdefault
-
- desc
- specify the value of a particular
- configuration variable which can be
- overridden by settings.xml
-
- count
- 2
-
-
-
- set
-
- desc
- specify the value of a particular
- configuration variable that
- overrides all other settings
-
- count
- 2
-
-
-
- settings
-
- desc
- Specify the filename of a configuration file.
- count
- 1
-
-
-
- login
-
- desc
- 3 tokens: first, last and password
- count
- 3
- map-to
- UserLoginInfo
-
-
- god
-
- desc
- Log in a god if you have god access.
- map-to
- ConnectAsGod
-
-
- console
-
- count
- 1
- map-to
- ShowConsoleWindow
-
-
- safe
-
- desc
- Reset preferences, run in safe mode.
- map-to
- SafeMode
-
-
- multiple
-
- desc
- Allow multple viewers.
- map-to
- AllowMultipleViewers
-
-
- novoice
-
- desc
- Disable voice.
- map-to
- CmdLineDisableVoice
-
-
- url
-
- desc
- Startup location
- count
- 1
- last_option
- true
-
-
-
- slurl
-
- desc
- Startup SLurl
- count
- 1
- positional
- true
- last_option
- true
-
-
-
- ignorepixeldepth
-
- desc
- Ignore pixel depth settings.
- map-to
- IgnorePixelDepth
-
-
- cooperative
-
- desc
- Yield some idle time to local host.
- count
- 1
- map-to
- YieldTime
-
-
- no-verify-ssl-cert
-
- map-to
- NoVerifySSLCert
-
-
- channel
-
- count
- 1
- map-to
- VersionChannelName
-
-
- loginpage
-
- desc
- Login authentication page to use.
- count
- 1
- map-to
- LoginPage
-
-
- qa
-
- desc
- Activated debugging menu in Advanced Settings.
- map-to
- QAMode
-
-
- crashonstartup
-
- desc
- Crashes on startup. For QA use.
- map-to
- CrashOnStartup
-
-
-
-
+
+
+
+ help
+
+ desc
+ display this help message
+
+ short
+ h
+
+
+ port
+
+ count
+ 1
+ map-to
+ UserConnectionPort
+
+
+ drop
+
+ count
+ 1
+ map-to
+ PacketDropPercentage
+
+
+ inbw
+
+ count
+ 1
+ map-to
+ InBandwidth
+
+
+ outbw
+
+ count
+ 1
+ map-to
+ OutBandwidth
+
+
+ grid
+
+ desc
+ Specify the name of the grid, local, or an IP address to connect to.
+ count
+ 1
+ map-to
+ CmdLineGridChoice
+
+
+ loginuri
+
+ desc
+ login server and CGI script to use
+ count
+ 1
+ compose
+ true
+ map-to
+ CmdLineLoginURI
+
+
+ helperuri
+
+ desc
+ helper web CGI prefix to use
+ count
+ 1
+ map-to
+ CmdLineHelperURI
+
+
+ debugviews
+
+ map-to
+ DebugViews
+
+
+ skin
+
+ desc
+ ui/branding skin folder to use
+ count
+ 1
+ map-to
+ SkinFolder
+
+
+ autologin
+
+ desc
+ log in as last saved user
+ map-to
+ AutoLogin
+
+
+ quitafter
+
+ count
+ 1
+ map-to
+ QuitAfterSeconds
+
+
+ rotate
+
+ map-to
+ RotateRight
+
+
+ noaudio
+
+ map-to
+ NoAudio
+
+
+ nosound
+
+ map-to
+ NoAudio
+
+
+ noprobe
+
+ map-to
+ NoHardwareProbe
+
+
+ noquicktime
+
+ map-to
+ NoQuickTime
+
+
+ nopreload
+
+ map-to
+ NoPreload
+
+
+ purge
+
+ desc
+ Delete files in the cache.
+ map-to
+ PurgeCacheOnNextStartup
+
+
+ noinvlib
+
+ desc
+ Do not request the inventory library.
+ map-to
+ NoInventoryLibrary
+
+
+ logfile
+
+ count
+ 1
+ map-to
+ UserLogFile
+
+
+ setdefault
+
+ desc
+ specify the value of a particular
+ configuration variable which can be
+ overridden by settings.xml
+
+ count
+ 2
+
+
+
+ set
+
+ desc
+ specify the value of a particular
+ configuration variable that
+ overrides all other settings
+
+ count
+ 2
+
+
+
+ settings
+
+ desc
+ Specify the filename of a configuration file.
+ count
+ 1
+
+
+
+ login
+
+ desc
+ 3 tokens: first, last and password
+ count
+ 3
+ map-to
+ UserLoginInfo
+
+
+ god
+
+ desc
+ Log in a god if you have god access.
+ map-to
+ ConnectAsGod
+
+
+ console
+
+ count
+ 1
+ map-to
+ ShowConsoleWindow
+
+
+ safe
+
+ desc
+ Reset preferences, run in safe mode.
+ map-to
+ SafeMode
+
+
+ multiple
+
+ desc
+ Allow multple viewers.
+ map-to
+ AllowMultipleViewers
+
+
+ novoice
+
+ desc
+ Disable voice.
+ map-to
+ CmdLineDisableVoice
+
+
+ url
+
+ desc
+ Startup location
+ count
+ 1
+ last_option
+ true
+
+
+
+ slurl
+
+ desc
+ Startup SLurl
+ count
+ 1
+ positional
+ true
+ last_option
+ true
+
+
+
+ ignorepixeldepth
+
+ desc
+ Ignore pixel depth settings.
+ map-to
+ IgnorePixelDepth
+
+
+ cooperative
+
+ desc
+ Yield some idle time to local host.
+ count
+ 1
+ map-to
+ YieldTime
+
+
+ no-verify-ssl-cert
+
+ map-to
+ NoVerifySSLCert
+
+
+ channel
+
+ count
+ 1
+ map-to
+ VersionChannelName
+
+
+ loginpage
+
+ desc
+ Login authentication page to use.
+ count
+ 1
+ map-to
+ LoginPage
+
+
+ qa
+
+ desc
+ Activated debugging menu in Advanced Settings.
+ map-to
+ QAMode
+
+
+ crashonstartup
+
+ desc
+ Crashes on startup. For QA use.
+ map-to
+ CrashOnStartup
+
+
+
+
diff --git a/linden/indra/newview/app_settings/keywords.ini b/linden/indra/newview/app_settings/keywords.ini
index 9a8b1f7..b6892dc 100644
--- a/linden/indra/newview/app_settings/keywords.ini
+++ b/linden/indra/newview/app_settings/keywords.ini
@@ -507,6 +507,10 @@ CLICK_ACTION_OPEN_MEDIA Used with llSetClickAction to set open-media as the defa
[word .1, .3, .5]
NULL_KEY Indicates an empty key
EOF Indicates the last line of a notecard was read
+TEXTURE_BLANK UUID for the "Blank" texture
+TEXTURE_DEFAULT UUID for the "Default Media" texture
+TEXTURE_PLYWOOD UUID for the default "Plywood" texture
+TEXTURE_TRANSPARENT UUID for the "White - Transparent" texture
# float constants
[word .3, .1, .5]
diff --git a/linden/indra/newview/app_settings/logcontrol.xml b/linden/indra/newview/app_settings/logcontrol.xml
new file mode 100644
index 0000000..d7bb64c
--- /dev/null
+++ b/linden/indra/newview/app_settings/logcontrol.xml
@@ -0,0 +1,47 @@
+
+
+
+ default-level INFO
+ print-location false
+ settings
+
+
+
+ levelINFO
+ functions
+
+
+ classes
+
+
+ files
+
+
+ tags
+
+ AppInit
+ SystemInfo
+ TextureCache
+ AppCache
+ Window
+ RenderInit
+
+
+
+ levelDEBUG
+ functions
+
+
+ classes
+
+
+ files
+
+
+ tags
+
+
+
+
+
+
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 69ae958..f5e57a5 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -1,10118 +1,10196 @@
+
+
+ AFKTimeout
+ Comment
+ Time before automatically setting AFK (away from keyboard) mode (seconds)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 300.0
+
AdvanceSnapshot
-
- Comment
- Display advanced parameter settings in snaphot interface
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- AFKTimeout
-
- Comment
- Time before automatically setting AFK (away from keyboard) mode (seconds)
- Persist
- 1
- Type
- F32
- Value
- 300
-
+
+ Comment
+ Display advanced parameter settings in snaphot interface
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AgentChatColor
-
- Comment
- Color of chat messages from other residents
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 1
- 1
- 1
-
-
- IMChatColor
-
- Comment
- Color of instant messages from other residents
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 1
- 1
- 1
-
-
+
+ Comment
+ Color of chat messages from other residents
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+
+
AllowIdleAFK
-
- Comment
- Automatically set AFK (away from keyboard) mode when idle
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Automatically set AFK (away from keyboard) mode when idle
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
AllowMultipleViewers
-
- Comment
- Allow multiple viewers.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Allow multiple viewers.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AllowTapTapHoldRun
-
- Comment
- Tapping a direction key twice and holding it down makes avatar run
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Tapping a direction key twice and holding it down makes avatar run
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
AnimateTextures
-
- Comment
- Enable texture animation (debug)
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enable texture animation (debug)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
AnimationDebug
-
- Comment
- Show active animations in a bubble above avatars head
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show active animations in a bubble above avatars head
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AppearanceCameraMovement
-
- Comment
- When entering appearance editing mode, camera zooms in on currently selected portion of avatar
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ When entering appearance editing mode, camera zooms in on currently selected portion of avatar
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ApplyColorImmediately
-
- Comment
- Preview selections in color picker immediately
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Preview selections in color picker immediately
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ApplyTextureImmediately
-
- Comment
- Preview selections in texture picker immediately
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Preview selections in texture picker immediately
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ArrowKeysMoveAvatar
-
- Comment
- While cursor is in chat entry box, arrow keys still control your avatar
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ While cursor is in chat entry box, arrow keys still control your avatar
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
AskedAboutCrashReports
-
- Comment
- Turns off dialog asking if you want to enable crash reporting
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Turns off dialog asking if you want to enable crash reporting
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AsyncKeyboard
-
- Comment
- Improves responsiveness to keyboard input when at low framerates
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Improves responsiveness to keyboard input when at low framerates
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
AuctionShowFence
-
- Comment
- When auctioning land, include parcel boundary marker in snapshot
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ When auctioning land, include parcel boundary marker in snapshot
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
AudioLevelAmbient
-
- Comment
- Audio level of environment sounds
- Persist
- 1
- Type
- F32
- Value
- 0.5
-
+
+ Comment
+ Audio level of environment sounds
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.5
+
AudioLevelDistance
-
- Comment
- Scale factor for audio engine (multiple of world scale, 2.0 = audio falls off twice as fast)
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Scale factor for audio engine (multiple of world scale, 2.0 = audio falls off twice as fast)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
AudioLevelDoppler
-
- Comment
- Scale of doppler effect on moving audio sources (1.0 = normal, <1.0 = diminished doppler effect, >1.0 = enhanced doppler effect)
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Scale of doppler effect on moving audio sources (1.0 = normal, <1.0 = diminished doppler effect, >1.0 = enhanced doppler effect)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
AudioLevelMaster
-
- Comment
- Master audio level, or overall volume
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Master audio level, or overall volume
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
AudioLevelMedia
-
- Comment
- Audio level of Quicktime movies
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Audio level of Quicktime movies
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
AudioLevelMic
-
- Comment
- Audio level of microphone input
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Audio level of microphone input
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
AudioLevelMusic
-
- Comment
- Audio level of streaming music
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Audio level of streaming music
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
AudioLevelRolloff
-
- Comment
- Controls the distance-based dropoff of audio volume (fraction or multiple of default audio rolloff)
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Controls the distance-based dropoff of audio volume (fraction or multiple of default audio rolloff)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
AudioLevelSFX
-
- Comment
- Audio level of in-world sound effects
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Audio level of in-world sound effects
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
AudioLevelUI
-
- Comment
- Audio level of UI sound effects
- Persist
- 1
- Type
- F32
- Value
- 0.5
-
+
+ Comment
+ Audio level of UI sound effects
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.5
+
AudioLevelVoice
-
- Comment
- Audio level of voice chat
- Persist
- 1
- Type
- F32
- Value
- 0.5
-
+
+ Comment
+ Audio level of voice chat
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.5
+
AudioStreamingMusic
-
- Comment
- Enable streaming audio
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Enable streaming audio
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AudioStreamingVideo
-
- Comment
- Enable streaming video
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Enable streaming video
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AutoAcceptNewInventory
-
- Comment
- Automatically accept new notecards/textures/landmarks
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Automatically accept new notecards/textures/landmarks
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ AutoLeveling
+
+ Comment
+ Keep Flycam level.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
AutoLoadWebProfiles
-
- Comment
- Automatically load ALL profile webpages without asking first.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Automatically load ALL profile webpages without asking first.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AutoLogin
-
- Comment
- Login automatically using last username/password combination
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Login automatically using last username/password combination
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
AutoMimeDiscovery
-
- Comment
- Enable viewer mime type discovery of media URLs
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Enable viewer mime type discovery of media URLs
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AutoPilotLocksCamera
-
- Comment
- Keep camera position locked when avatar walks to selected position
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Keep camera position locked when avatar walks to selected position
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AutoSnapshot
-
- Comment
- Update snapshot when camera stops moving, or any parameter changes
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Update snapshot when camera stops moving, or any parameter changes
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
AutomaticFly
-
- Comment
- Fly by holding jump key or using "Fly" command (FALSE = fly by using "Fly" command only)
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Fly by holding jump key or using "Fly" command (FALSE = fly by using "Fly" command only)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
+ AvatarAxisDeadZone0
+
+ Comment
+ Avatar axis 0 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ AvatarAxisDeadZone1
+
+ Comment
+ Avatar axis 1 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ AvatarAxisDeadZone2
+
+ Comment
+ Avatar axis 2 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ AvatarAxisDeadZone3
+
+ Comment
+ Avatar axis 3 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ AvatarAxisDeadZone4
+
+ Comment
+ Avatar axis 4 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ AvatarAxisDeadZone5
+
+ Comment
+ Avatar axis 5 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ AvatarAxisScale0
+
+ Comment
+ Avatar axis 0 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ AvatarAxisScale1
+
+ Comment
+ Avatar axis 1 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ AvatarAxisScale2
+
+ Comment
+ Avatar axis 2 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ AvatarAxisScale3
+
+ Comment
+ Avatar axis 3 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ AvatarAxisScale4
+
+ Comment
+ Avatar axis 4 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ AvatarAxisScale5
+
+ Comment
+ Avatar axis 5 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
AvatarBacklight
-
- Comment
- Add rim lighting to avatar rendering to approximate shininess of skin
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Add rim lighting to avatar rendering to approximate shininess of skin
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
AvatarCompositeLimit
-
- Comment
- Maximum number of avatars to display appearance changes on the fly
- Persist
- 1
- Type
- S32
- Value
- 5
-
+
+ Comment
+ Maximum number of avatars to display appearance changes on the fly
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 5
+
+ AvatarFeathering
+
+ Comment
+ Avatar feathering (less is softer)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 16.0
+
AvatarPickerSortOrder
-
- Comment
- Specifies sort key for textures in avatar picker (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)
- Persist
- 1
- Type
- U32
- Value
- 2
-
+
+ Comment
+ Specifies sort key for textures in avatar picker (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 2
+
AvatarSex
-
- Comment
-
- Persist
- 0
- Type
- U32
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ U32
+ Value
+ 0
+
BackgroundChatColor
-
- Comment
- Color of chat bubble background
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 0
- 0
- 1
-
-
+
+ Comment
+ Color of chat bubble background
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 0.0
+ 0.0
+ 1.0
+
+
BackgroundYieldTime
-
- Comment
- Amount of time to yield every frame to other applications when SL is not the foreground window (milliseconds)
- Persist
- 1
- Type
- S32
- Value
- 40
-
+
+ Comment
+ Amount of time to yield every frame to other applications when SL is not the foreground window (milliseconds)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 40
+
BackwardBtnRect
-
- Comment
-
- Persist
- 0
- Type
- Rect
- Value
-
- 45
- 29
- 66
- 4
-
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Rect
+ Value
+
+ 45
+ 29
+ 66
+ 4
+
+
BasicHelpRect
-
- Comment
- Rectangle for help window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 404
- 467
- 0
-
-
+
+ Comment
+ Rectangle for help window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 404
+ 467
+ 0
+
+
BeaconAlwaysOn
-
- Comment
- Beacons / highlighting always on
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Beacons / highlighting always on
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
BrowserHomePage
-
- Comment
- [NOT USED]
- Persist
- 1
- Type
- String
- Value
- http://www.secondlife.com
-
+
+ Comment
+ [NOT USED]
+ Persist
+ 1
+ Type
+ String
+ Value
+ http://www.secondlife.com
+
BrowserProxyAddress
-
- Comment
- Address for the Web Proxy]
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Address for the Web Proxy]
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
BrowserProxyEnabled
-
- Comment
- Use Web Proxy
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Use Web Proxy
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
BrowserProxyExclusions
-
- Comment
- [NOT USED]
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ [NOT USED]
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
BrowserProxyPort
-
- Comment
- Port for Web Proxy
- Persist
- 1
- Type
- S32
- Value
- 3128
-
+
+ Comment
+ Port for Web Proxy
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 3128
+
BrowserProxySocks45
-
- Comment
- [NOT USED]
- Persist
- 1
- Type
- S32
- Value
- 5
-
+
+ Comment
+ [NOT USED]
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 5
+
+ BuildAxisDeadZone0
+
+ Comment
+ Build axis 0 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ BuildAxisDeadZone1
+
+ Comment
+ Build axis 1 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ BuildAxisDeadZone2
+
+ Comment
+ Build axis 2 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ BuildAxisDeadZone3
+
+ Comment
+ Build axis 3 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ BuildAxisDeadZone4
+
+ Comment
+ Build axis 4 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ BuildAxisDeadZone5
+
+ Comment
+ Build axis 5 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
+ BuildAxisScale0
+
+ Comment
+ Build axis 0 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ BuildAxisScale1
+
+ Comment
+ Build axis 1 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ BuildAxisScale2
+
+ Comment
+ Build axis 2 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ BuildAxisScale3
+
+ Comment
+ Build axis 3 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ BuildAxisScale4
+
+ Comment
+ Build axis 4 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ BuildAxisScale5
+
+ Comment
+ Build axis 5 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
BuildBtnState
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
+ BuildFeathering
+
+ Comment
+ Build feathering (less is softer)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 16.0
+
ButtonFlashCount
-
- Comment
- Number of flashes after which flashing buttons stay lit up
- Persist
- 1
- Type
- S32
- Value
- 3
-
+
+ Comment
+ Number of flashes after which flashing buttons stay lit up
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 3
+
ButtonFlashRate
-
- Comment
- Frequency at which buttons flash (hz)
- Persist
- 1
- Type
- F32
- Value
- 2
-
+
+ Comment
+ Frequency at which buttons flash (hz)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 2.0
+
ButtonHPad
-
- Comment
- Default horizontal spacing between buttons (pixels)
- Persist
- 1
- Type
- S32
- Value
- 10
-
+
+ Comment
+ Default horizontal spacing between buttons (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 10
+
ButtonHeight
-
- Comment
- Default height for normal buttons (pixels)
- Persist
- 1
- Type
- S32
- Value
- 20
-
+
+ Comment
+ Default height for normal buttons (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 20
+
ButtonHeightSmall
-
- Comment
- Default height for small buttons (pixels)
- Persist
- 1
- Type
- S32
- Value
- 16
-
+
+ Comment
+ Default height for small buttons (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 16
+
ButtonVPad
-
- Comment
- Default vertical spacing between buttons (pixels)
- Persist
- 1
- Type
- S32
- Value
- 1
-
+
+ Comment
+ Default vertical spacing between buttons (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 1
+
CacheLocation
-
- Comment
- Controls the location of the local disk cache
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Controls the location of the local disk cache
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
CacheSize
-
- Comment
- Controls amount of hard drive space reserved for local file caching in MB
- Persist
- 1
- Type
- U32
- Value
- 500
-
+
+ Comment
+ Controls amount of hard drive space reserved for local file caching in MB
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 500
+
CacheValidateCounter
-
- Comment
- Used to distribute cache validation
- Persist
- 1
- Type
- U32
- Value
- 0
-
+
+ Comment
+ Used to distribute cache validation
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 0
+
+ CameraMouseWheelZoom
+
+ Comment
+ Camera zooms in and out with mousewheel
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
CameraOffset
-
- Comment
- Render with camera offset from view frustum (rendering debug)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Render with camera offset from view frustum (rendering debug)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
CameraOffsetBuild
-
- Comment
- Default camera position relative to focus point when entering build mode
- Persist
- 1
- Type
- Vector3
- Value
-
- -6
- 0
- 6
-
-
+
+ Comment
+ Default camera position relative to focus point when entering build mode
+ Persist
+ 1
+ Type
+ Vector3
+ Value
+
+ -6.0
+ 0.0
+ 6.0
+
+
CameraOffsetDefault
-
- Comment
- Default camera offset from avatar
- Persist
- 1
- Type
- Vector3
- Value
-
- -3
- 0
- 0.75
-
-
- CameraPositionSmoothing
-
- Comment
- Smooths camera position over time
- Persist
- 1
- Type
- F32
- Value
- 1.0
-
+
+ Comment
+ Default camera offset from avatar
+ Persist
+ 1
+ Type
+ Vector3
+ Value
+
+ -3.0
+ 0.0
+ 0.75
+
+
CameraPosOnLogout
-
- Comment
- Camera position when last logged out (global coordinates)
- Persist
- 1
- Type
- Vector3D
- Value
-
- 0
- 0
- 0
-
-
- CameraMouseWheelZoom
-
- Comment
- Camera zooms in and out with mousewheel
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Camera position when last logged out (global coordinates)
+ Persist
+ 1
+ Type
+ Vector3D
+ Value
+
+ 0.0
+ 0.0
+ 0.0
+
+
+ CameraPositionSmoothing
+
+ Comment
+ Smooths camera position over time
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
ChatBarStealsFocus
-
- Comment
- Whenever keyboard focus is removed from the UI, and the chat bar is visible, the chat bar takes focus
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Whenever keyboard focus is removed from the UI, and the chat bar is visible, the chat bar takes focus
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ChatBubbleOpacity
-
- Comment
- Opacity of chat bubble background (0.0 = completely transparent, 1.0 = completely opaque)
- Persist
- 1
- Type
- F32
- Value
- 0.5
-
+
+ Comment
+ Opacity of chat bubble background (0.0 = completely transparent, 1.0 = completely opaque)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.5
+
ChatFontSize
-
- Comment
- Size of chat text in chat console (0 = small, 1 = big)
- Persist
- 1
- Type
- S32
- Value
- 1
-
+
+ Comment
+ Size of chat text in chat console (0 = small, 1 = big)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 1
+
ChatFullWidth
-
- Comment
- Chat console takes up full width of SL window
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Chat console takes up full width of SL window
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ChatHistoryTornOff
-
- Comment
- Show chat history window separately from Communicate window.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show chat history window separately from Communicate window.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ChatOnlineNotification
-
- Comment
- Provide notifications for when friend log on and off of SL
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Provide notifications for when friend log on and off of SL
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ChatPersistTime
-
- Comment
- Time for which chat stays visible in console (seconds)
- Persist
- 1
- Type
- F32
- Value
- 15
-
+
+ Comment
+ Time for which chat stays visible in console (seconds)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 15.0
+
ChatShowTimestamps
-
- Comment
- Show timestamps in chat
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show timestamps in chat
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ChatVisible
-
- Comment
- Chat bar is visible
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Chat bar is visible
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ChatterboxRect
-
- Comment
- Rectangle for chatterbox window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 400
- 350
- 0
-
-
+
+ Comment
+ Rectangle for chatterbox window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 400
+ 350
+ 0
+
+
CheesyBeacon
-
- Comment
- Enable cheesy beacon effects
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Enable cheesy beacon effects
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ClientSettingsFile
-
- Comment
- Persisted client settings file name (per install).
- Persist
- 0
- Type
- String
- Value
-
-
+
+ Comment
+ Persisted client settings file name (per install).
+ Persist
+ 0
+ Type
+ String
+ Value
+
+
CloseChatOnReturn
-
- Comment
- Close chat after hitting return
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Close chat after hitting return
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
CloseSnapshotOnKeep
-
- Comment
- Close snapshot window after saving snapshot
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Close snapshot window after saving snapshot
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ClothingBtnState
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
CmdLineDisableVoice
-
- Comment
- Disable Voice.
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Disable Voice.
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
+ CmdLineGridChoice
+
+ Comment
+ The user's grid choice or ip address.
+ Persist
+ 0
+ Type
+ String
+ Value
+
+
+ CmdLineHelperURI
+
+ Comment
+ Command line specified helper web CGI prefix to use.
+ Persist
+ 0
+ Type
+ String
+ Value
+
+
+ CmdLineLoginURI
+
+ Comment
+ Command line specified login server and CGI prefix to use.
+ Persist
+ 0
+ Type
+ LLSD
+ Value
+
+
+
+
ColorPaletteEntry01
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 0
- 0
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 0.0
+ 0.0
+ 1.0
+
+
ColorPaletteEntry02
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0.5
- 0.5
- 0.5
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.5
+ 0.5
+ 0.5
+ 1.0
+
+
ColorPaletteEntry03
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0.5
- 0
- 0
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.5
+ 0.0
+ 0.0
+ 1.0
+
+
ColorPaletteEntry04
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0.5
- 0.5
- 0
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.5
+ 0.5
+ 0.0
+ 1.0
+
+
ColorPaletteEntry05
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 0.5
- 0
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 0.5
+ 0.0
+ 1.0
+
+
ColorPaletteEntry06
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 0.5
- 0.5
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 0.5
+ 0.5
+ 1.0
+
+
ColorPaletteEntry07
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 0
- 0.5
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 0.0
+ 0.5
+ 1.0
+
+
ColorPaletteEntry08
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0.5
- 0
- 0.5
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.5
+ 0.0
+ 0.5
+ 1.0
+
+
ColorPaletteEntry09
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0.5
- 0.5
- 0
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.5
+ 0.5
+ 0.0
+ 1.0
+
+
ColorPaletteEntry10
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 0.25
- 0.25
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 0.25
+ 0.25
+ 1.0
+
+
ColorPaletteEntry11
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 0.5
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 0.5
+ 1.0
+ 1.0
+
+
ColorPaletteEntry12
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 0.25
- 0.5
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 0.25
+ 0.5
+ 1.0
+
+
ColorPaletteEntry13
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0.5
- 0
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.5
+ 0.0
+ 1.0
+ 1.0
+
+
ColorPaletteEntry14
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0.5
- 0.25
- 0
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.5
+ 0.25
+ 0.0
+ 1.0
+
+
ColorPaletteEntry15
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 1
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+
+
ColorPaletteEntry16
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 1
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+
+
ColorPaletteEntry17
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 1
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+
+
ColorPaletteEntry18
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0.75
- 0.75
- 0.75
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.75
+ 0.75
+ 0.75
+ 1.0
+
+
ColorPaletteEntry19
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 0
- 0
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 0.0
+ 0.0
+ 1.0
+
+
ColorPaletteEntry20
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 1
- 0
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 1.0
+ 0.0
+ 1.0
+
+
ColorPaletteEntry21
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 1
- 0
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 1.0
+ 0.0
+ 1.0
+
+
ColorPaletteEntry22
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 1
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 1.0
+ 1.0
+ 1.0
+
+
ColorPaletteEntry23
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 0
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 0.0
+ 1.0
+ 1.0
+
+
ColorPaletteEntry24
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 0
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 0.0
+ 1.0
+ 1.0
+
+
ColorPaletteEntry25
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 1
- 0.5
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 1.0
+ 0.5
+ 1.0
+
+
ColorPaletteEntry26
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 1
- 0.5
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 1.0
+ 0.5
+ 1.0
+
+
ColorPaletteEntry27
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0.5
- 1
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.5
+ 1.0
+ 1.0
+ 1.0
+
+
ColorPaletteEntry28
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 0.5
- 0.5
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.5
+ 0.5
+ 1.0
+ 1.0
+
+
ColorPaletteEntry29
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 0
- 0.5
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 0.0
+ 0.5
+ 1.0
+
+
ColorPaletteEntry30
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 0.5
- 0
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 0.5
+ 0.0
+ 1.0
+
+
ColorPaletteEntry31
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 1
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+
+
ColorPaletteEntry32
-
- Comment
- Color picker palette entry
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 1
- 1
- 1
-
-
+
+ Comment
+ Color picker palette entry
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+
+
ColumnHeaderDropDownDelay
-
- Comment
- Time in seconds of mouse click before column header shows sort options list
- Persist
- 1
- Type
- F32
- Value
- 0.300000011920928955078125
-
+
+ Comment
+ Time in seconds of mouse click before column header shows sort options list
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.300000011921
+
CompileOutputRect
-
- Comment
- Rectangle for script Recompile Everything output window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 400
- 300
- 0
-
-
+
+ Comment
+ Rectangle for script Recompile Everything output window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 400
+ 300
+ 0
+
+
CompressSnapshotsToDisk
-
- Comment
- Compress snapshots saved to disk (Using JPEG 2000)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Compress snapshots saved to disk (Using JPEG 2000)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ConnectAsGod
-
- Comment
- Log in a god if you have god access.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Log in a god if you have god access.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ConnectionPort
-
- Comment
- Custom connection port number
- Persist
- 1
- Type
- U32
- Value
- 13000
-
+
+ Comment
+ Custom connection port number
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 13000
+
ConnectionPortEnabled
-
- Comment
- Use the custom connection port?
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Use the custom connection port?
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ConsoleBackgroundOpacity
-
- Comment
- Opacity of chat console (0.0 = completely transparent, 1.0 = completely opaque)
- Persist
- 1
- Type
- F32
- Value
- 0.4000000059604644775390625
-
+
+ Comment
+ Opacity of chat console (0.0 = completely transparent, 1.0 = completely opaque)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.40000000596
+
ConsoleBufferSize
-
- Comment
- Size of chat console history (lines of chat)
- Persist
- 1
- Type
- S32
- Value
- 40
-
+
+ Comment
+ Size of chat console history (lines of chat)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 40
+
ConsoleMaxLines
-
- Comment
- Max number of lines of chat text visible in console.
- Persist
- 1
- Type
- S32
- Value
- 40
-
+
+ Comment
+ Max number of lines of chat text visible in console.
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 40
+
ContactsTornOff
-
- Comment
- Show contacts window separately from Communicate window.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show contacts window separately from Communicate window.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
CookiesEnabled
-
- Comment
- Accept cookies from Web sites?
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Accept cookies from Web sites?
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
CrashLogBehavior
-
- Comment
- Controls behavior when viewer (0 = ask before sending crash report, 1 = always send crash report, 2 = never send crash report)
- Persist
- 0
- Type
- S32
- Value
- 1
-
+
+ Comment
+ Controls behavior when viewer (0 = ask before sending crash report, 1 = always send crash report, 2 = never send crash report)
+ Persist
+ 0
+ Type
+ S32
+ Value
+ 1
+
CreateToolCopyCenters
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 1
+
CreateToolCopyRotates
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
CreateToolCopySelection
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
CreateToolKeepSelected
-
- Comment
- After using create tool, keep the create tool active
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ After using create tool, keep the create tool active
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ Cursor3D
+
+ Comment
+ Tread Joystick values as absolute positions (not deltas).
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
CustomServer
-
- Comment
- Specifies IP address or hostname of grid to which you connect
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Specifies IP address or hostname of grid to which you connect
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
DebugBeaconLineWidth
-
- Comment
- Size of lines for Debug Beacons
- Persist
- 1
- Type
- S32
- Value
- 1
-
+
+ Comment
+ Size of lines for Debug Beacons
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 1
+
DebugInventoryFilters
-
- Comment
- Turn on debugging display for inventory filtering
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Turn on debugging display for inventory filtering
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DebugPermissions
-
- Comment
- Log permissions for selected inventory items
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Log permissions for selected inventory items
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DebugShowColor
-
- Comment
- Show color under cursor
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show color under cursor
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DebugShowRenderInfo
-
- Comment
- Show depth buffer contents
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show depth buffer contents
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DebugShowTime
-
- Comment
- Show depth buffer contents
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show depth buffer contents
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DebugViews
-
- Comment
- Display debugging info for views.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display debugging info for views.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DebugWindowProc
-
- Comment
- Log windows messages
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Log windows messages
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DefaultObjectTexture
-
- Comment
- Texture used as 'Default' in texture picker. (UUID texture reference)
- Persist
- 1
- Type
- String
- Value
- 89556747-24cb-43ed-920b-47caed15465f
-
+
+ Comment
+ Texture used as 'Default' in texture picker. (UUID texture reference)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 89556747-24cb-43ed-920b-47caed15465f
+
DisableCameraConstraints
-
- Comment
- Disable the normal bounds put on the camera by avatar position
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Disable the normal bounds put on the camera by avatar position
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DisableRendering
-
- Comment
- Disable GL rendering and GUI (load testing)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Disable GL rendering and GUI (load testing)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DisableVerticalSync
-
- Comment
- Update frames as fast as possible (FALSE = update frames between display scans)
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Update frames as fast as possible (FALSE = update frames between display scans)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
DisplayAvatarAgentTarget
-
- Comment
- Show avatar positioning locators (animation debug)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show avatar positioning locators (animation debug)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DisplayChat
-
- Comment
- Display Latest Chat message on LCD
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display Latest Chat message on LCD
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
DisplayDebug
-
- Comment
- Display Network Information on LCD
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display Network Information on LCD
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
DisplayDebugConsole
-
- Comment
- Display Console Debug Information on LCD
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display Console Debug Information on LCD
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
DisplayIM
-
- Comment
- Display Latest IM message on LCD
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display Latest IM message on LCD
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
DisplayLinden
-
- Comment
- Display Account Information on LCD
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display Account Information on LCD
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
DisplayRegion
-
- Comment
- Display Location information on LCD
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display Location information on LCD
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
DisplayTimecode
-
- Comment
- Display timecode on screen
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display timecode on screen
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
Disregard128DefaultDrawDistance
-
- Comment
- Whether to use the auto default to 128 draw distance
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Whether to use the auto default to 128 draw distance
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1.0
+
Disregard96DefaultDrawDistance
-
- Comment
- Whether to use the auto default to 96 draw distance
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Whether to use the auto default to 96 draw distance
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1.0
+
DoubleClickAutoPilot
-
- Comment
- Enable double-click auto pilot
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Enable double-click auto pilot
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
DragAndDropToolTipDelay
-
- Comment
- Seconds before displaying tooltip when performing drag and drop operation
- Persist
- 1
- Type
- F32
- Value
- 0.1000000014901161193847656
-
+
+ Comment
+ Seconds before displaying tooltip when performing drag and drop operation
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.10000000149
+
DropShadowButton
-
- Comment
- Drop shadow width for buttons (pixels)
- Persist
- 1
- Type
- S32
- Value
- 2
-
+
+ Comment
+ Drop shadow width for buttons (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 2
+
DropShadowFloater
-
- Comment
- Drop shadow width for floaters (pixels)
- Persist
- 1
- Type
- S32
- Value
- 5
-
+
+ Comment
+ Drop shadow width for floaters (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 5
+
DropShadowSlider
-
- Comment
- Drop shadow width for sliders (pixels)
- Persist
- 1
- Type
- S32
- Value
- 3
-
+
+ Comment
+ Drop shadow width for sliders (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 3
+
DropShadowTooltip
-
- Comment
- Drop shadow width for tooltips (pixels)
- Persist
- 1
- Type
- S32
- Value
- 4
-
+
+ Comment
+ Drop shadow width for tooltips (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 4
+
DynamicCameraStrength
-
- Comment
- Amount camera lags behind avatar motion (0 = none, 30 = avatar velocity)
- Persist
- 1
- Type
- F32
- Value
- 2
-
+
+ Comment
+ Amount camera lags behind avatar motion (0 = none, 30 = avatar velocity)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 2.0
+
EditCameraMovement
-
- Comment
- When entering build mode, camera moves up above avatar
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ When entering build mode, camera moves up above avatar
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
EditLinkedParts
-
- Comment
- Select individual parts of linked objects
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Select individual parts of linked objects
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
EffectColor
-
- Comment
- Particle effects color
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 1
- 1
- 1
-
-
+
+ Comment
+ Particle effects color
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+
+
EnablePushToTalk
-
- Comment
- Must hold down a key or moouse button when talking into your microphone
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Must hold down a key or moouse button when talking into your microphone
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
+ EnableRippleWater
+
+ Comment
+ Whether to use ripple water shader or not
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
EnableVoiceChat
-
- Comment
- Enable talking to other residents with a microphone
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enable talking to other residents with a microphone
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
EnergyFromTop
-
- Comment
-
- Persist
- 0
- Type
- S32
- Value
- 20
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ S32
+ Value
+ 20
+
EnergyHeight
-
- Comment
-
- Persist
- 0
- Type
- S32
- Value
- 40
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ S32
+ Value
+ 40
+
EnergyWidth
-
- Comment
-
- Persist
- 0
- Type
- S32
- Value
- 175
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ S32
+ Value
+ 175
+
+ FPSLogFrequency
+
+ Comment
+ Seconds between display of FPS in log (0 for never)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 10.0
+
FilterItemsPerFrame
-
- Comment
- Maximum number of inventory items to match against search filter every frame (lower to increase framerate while searching, higher to improve search speed)
- Persist
- 1
- Type
- S32
- Value
- 500
-
+
+ Comment
+ Maximum number of inventory items to match against search filter every frame (lower to increase framerate while searching, higher to improve search speed)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 500
+
FindLandArea
-
- Comment
- Enables filtering of land search results by area
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Enables filtering of land search results by area
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
FindLandPrice
-
- Comment
- Enables filtering of land search results by price
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables filtering of land search results by price
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
FindLandType
-
- Comment
- Controls which type of land you are searching for in Find Land interface ("All", "Auction", "For Sale")
- Persist
- 1
- Type
- String
- Value
- All
-
+
+ Comment
+ Controls which type of land you are searching for in Find Land interface ("All", "Auction", "For Sale")
+ Persist
+ 1
+ Type
+ String
+ Value
+ All
+
FindPeopleOnline
-
- Comment
- Limits people search to only users who are logged on
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Limits people search to only users who are logged on
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
FindPlacesPictures
-
- Comment
- Display only results of find places that have pictures
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display only results of find places that have pictures
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
FirstLoginThisInstall
-
- Comment
- Specifies that you have not successfully logged in since you installed the latest update
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Specifies that you have not successfully logged in since you installed the latest update
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
FirstName
-
- Comment
- Login first name
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Login first name
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
FirstPersonAvatarVisible
-
- Comment
- Display avatar and attachments below neck while in mouselook
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display avatar and attachments below neck while in mouselook
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
FirstPersonBtnState
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
FirstRunThisInstall
-
- Comment
- Specifies that you have not run the viewer since you installed the latest update
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Specifies that you have not run the viewer since you installed the latest update
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
FixedWeather
-
- Comment
- Weather effects do not change over time
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Weather effects do not change over time
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
FloaterAboutRect
-
- Comment
- Rectangle for About window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 440
- 470
- 0
-
-
+
+ Comment
+ Rectangle for About window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 440
+ 470
+ 0
+
+
FloaterActiveSpeakersRect
-
- Comment
- Rectangle for active speakers window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 300
- 250
- 0
-
-
- FloaterActiveSpeakersSortColumn
-
- Comment
- Column name to sort on
- Persist
- 1
- Type
- String
- Value
- speaker_name
-
+
+ Comment
+ Rectangle for active speakers window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 300
+ 250
+ 0
+
+
FloaterActiveSpeakersSortAscending
-
- Comment
- Whether to sort up or down
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Whether to sort up or down
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ FloaterActiveSpeakersSortColumn
+
+ Comment
+ Column name to sort on
+ Persist
+ 1
+ Type
+ String
+ Value
+ speaker_name
+
+ FloaterAdvancedSkyRect
+
+ Comment
+ Rectangle for Advanced Sky Editor
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 50
+ 220
+ 450
+ 0
+
+
+ FloaterAdvancedWaterRect
+
+ Comment
+ Rectangle for Advanced Water Editor
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 50
+ 220
+ 450
+ 0
+
+
FloaterAudioVolumeRect
-
- Comment
- Rectangle for Audio Volume window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 440
- 470
- 0
-
-
+
+ Comment
+ Rectangle for Audio Volume window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 440
+ 470
+ 0
+
+
FloaterBuildOptionsRect
-
- Comment
- Rectangle for build options window.
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 0
- 0
- 0
-
-
+
+ Comment
+ Rectangle for build options window.
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 0
+ 0
+ 0
+
+
FloaterBumpRect
-
- Comment
- Rectangle for Bumps/Hits window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 180
- 400
- 0
-
-
+
+ Comment
+ Rectangle for Bumps/Hits window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 180
+ 400
+ 0
+
+
FloaterBuyContentsRect
-
- Comment
- Rectangle for Buy Contents window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 250
- 300
- 0
-
-
+
+ Comment
+ Rectangle for Buy Contents window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 250
+ 300
+ 0
+
+
FloaterBuyRect
-
- Comment
- Rectangle for buy window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 250
- 300
- 0
-
-
+
+ Comment
+ Rectangle for buy window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 250
+ 300
+ 0
+
+
FloaterCameraRect3
-
- Comment
- Rectangle for camera control window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 64
- 176
- 0
-
-
+
+ Comment
+ Rectangle for camera control window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 64
+ 176
+ 0
+
+
FloaterChatRect
-
- Comment
- Rectangle for chat history
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 172
- 500
- 0
-
-
+
+ Comment
+ Rectangle for chat history
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 172
+ 500
+ 0
+
+
FloaterClothingRect
-
- Comment
- Rectangle for clothing window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 480
- 320
- 0
-
-
+
+ Comment
+ Rectangle for clothing window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 480
+ 320
+ 0
+
+
FloaterContactsRect
-
- Comment
- Rectangle for chat history
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 390
- 395
- 0
-
-
+
+ Comment
+ Rectangle for chat history
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 390
+ 395
+ 0
+
+
FloaterCustomizeAppearanceRect
-
- Comment
- Rectangle for avatar customization window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 540
- 494
- 0
-
-
+
+ Comment
+ Rectangle for avatar customization window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 540
+ 494
+ 0
+
+
+ FloaterDayCycleRect
+
+ Comment
+ Rectangle for Day Cycle Editor
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 50
+ 450
+ 300
+ 0
+
+
+ FloaterEnvRect
+
+ Comment
+ Rectangle for Environment Editor
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 50
+ 150
+ 650
+ 0
+
+
FloaterFindRect2
-
- Comment
- Rectangle for Find window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 570
- 780
- 0
-
-
+
+ Comment
+ Rectangle for Find window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 570
+ 780
+ 0
+
+
FloaterFriendsRect
-
- Comment
- Rectangle for friends window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 400
- 250
- 0
-
-
+
+ Comment
+ Rectangle for friends window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 400
+ 250
+ 0
+
+
FloaterGestureRect2
-
- Comment
- Rectangle for gestures window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 465
- 350
- 0
-
-
- FloaterHtmlRect
-
- Comment
- Rectangle for HTML window
- Persist
- 1
- Type
- Rect
- Value
-
- 100
- 460
- 370
- 100
-
-
+
+ Comment
+ Rectangle for gestures window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 465
+ 350
+ 0
+
+
FloaterHUDRect
-
- Comment
- Rectangle for HUD Floater window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 282
- 342
- 0
-
-
+
+ Comment
+ Rectangle for HUD Floater window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 282
+ 342
+ 0
+
+
+ FloaterHtmlRect
+
+ Comment
+ Rectangle for HTML window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 100
+ 460
+ 370
+ 100
+
+
FloaterIMRect
-
- Comment
- Rectangle for IM window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 160
- 500
- 0
-
-
+
+ Comment
+ Rectangle for IM window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 160
+ 500
+ 0
+
+
FloaterInspectRect
-
- Comment
- Rectangle for Object Inspect window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 400
- 400
- 0
-
-
+
+ Comment
+ Rectangle for Object Inspect window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 400
+ 400
+ 0
+
+
FloaterInventoryRect
-
- Comment
- Rectangle for inventory window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 400
- 300
- 0
-
-
+
+ Comment
+ Rectangle for inventory window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 400
+ 300
+ 0
+
+
FloaterJoystickRect
-
- Comment
- Rectangle for joystick controls window.
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 0
- 0
- 0
-
-
+
+ Comment
+ Rectangle for joystick controls window.
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 0
+ 0
+ 0
+
+
FloaterLagMeter
-
- Comment
- Rectangle for lag meter
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 142
- 350
- 0
-
-
+
+ Comment
+ Rectangle for lag meter
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 142
+ 350
+ 0
+
+
FloaterLandRect5
-
- Comment
- Rectangle for About Land window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 370
- 460
- 0
-
-
+
+ Comment
+ Rectangle for About Land window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 370
+ 460
+ 0
+
+
FloaterLandmarkRect
-
- Comment
- Rectangle for landmark picker
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 290
- 310
- 0
-
-
+
+ Comment
+ Rectangle for landmark picker
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 290
+ 310
+ 0
+
+
FloaterMediaRect
-
- Comment
- Rectangle for media browser window
- Persist
- 1
- Type
- Rect
- Value
-
- 16
- 650
- 600
- 128
-
-
+
+ Comment
+ Rectangle for media browser window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 16
+ 650
+ 600
+ 128
+
+
FloaterMiniMapRect
-
- Comment
- Rectangle for world map
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 225
- 200
- 0
-
-
+
+ Comment
+ Rectangle for world map
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 225
+ 200
+ 0
+
+
FloaterMoveRect2
-
- Comment
- Rectangle for avatar control window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 58
- 135
- 0
-
-
+
+ Comment
+ Rectangle for avatar control window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 58
+ 135
+ 0
+
+
FloaterMuteRect3
-
- Comment
- Rectangle for mute window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 300
- 300
- 0
-
-
+
+ Comment
+ Rectangle for mute window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 300
+ 300
+ 0
+
+
FloaterOpenObjectRect
-
- Comment
- Rectangle for Open Object window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 350
- 300
- 0
-
-
+
+ Comment
+ Rectangle for Open Object window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 350
+ 300
+ 0
+
+
FloaterPayRectB
-
- Comment
- Rectangle for pay window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 150
- 400
- 0
-
-
+
+ Comment
+ Rectangle for pay window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 150
+ 400
+ 0
+
+
FloaterRegionInfo
-
- Comment
- Rectangle for region info window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 512
- 480
- 0
-
-
+
+ Comment
+ Rectangle for region info window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 512
+ 480
+ 0
+
+
FloaterScriptDebugRect
-
- Comment
- Rectangle for Script Error/Debug window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 130
- 450
- 0
-
-
+
+ Comment
+ Rectangle for Script Error/Debug window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 130
+ 450
+ 0
+
+
FloaterSnapshotRect
-
- Comment
- Rectangle for snapshot window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 200
- 200
- 400
-
-
+
+ Comment
+ Rectangle for snapshot window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 200
+ 200
+ 400
+
+
FloaterViewBottom
-
- Comment
- [DO NOT MODIFY] Controls layout of floating windows within SL window
- Persist
- 1
- Type
- S32
- Value
- -1
-
+
+ Comment
+ [DO NOT MODIFY] Controls layout of floating windows within SL window
+ Persist
+ 1
+ Type
+ S32
+ Value
+ -1
+
FloaterWorldMapRect2
-
- Comment
- Rectangle for world map window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 0
- 0
- 0
-
-
+
+ Comment
+ Rectangle for world map window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 0
+ 0
+ 0
+
+
FlyBtnState
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
FlycamAbsolute
-
- Comment
- Treat Flycam values as absolute positions (not deltas).
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- AutoLeveling
-
- Comment
- Keep Flycam level.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- Cursor3D
-
- Comment
- Tread Joystick values as absolute positions (not deltas).
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- ZoomDirect
-
- Comment
- Map Joystick zoom axis directly to camera zoom.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- JoystickInitialized
-
- Comment
- Whether or not a joystick has been detected and initiailized.
- Persist
- 0
- Type
- String
- Value
-
-
- JoystickEnabled
-
- Comment
- Enables Joystick Input.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- JoystickFlycamEnabled
-
- Comment
- Enables the Joystick to control the flycam.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- JoystickAvatarEnabled
-
- Comment
- Enables the Joystick to control Avatar movmement.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- JoystickBuildEnabled
-
- Comment
- Enables the Joystick to move edited objects.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- JoystickAxis0
-
- Comment
- Flycam hardware axis mapping for internal axis 0 ([0, 5]).
- Persist
- 1
- Type
- S32
- Value
- 1
-
- JoystickAxis1
-
- Comment
- Flycam hardware axis mapping for internal axis 1 ([0, 5]).
- Persist
- 1
- Type
- S32
- Value
- 0
-
- JoystickAxis2
-
- Comment
- Flycam hardware axis mapping for internal axis 2 ([0, 5]).
- Persist
- 1
- Type
- S32
- Value
- 2
-
- JoystickAxis3
-
- Comment
- Flycam hardware axis mapping for internal axis 3 ([0, 5]).
- Persist
- 1
- Type
- S32
- Value
- 4
-
- JoystickAxis4
-
- Comment
- Flycam hardware axis mapping for internal axis 4 ([0, 5]).
- Persist
- 1
- Type
- S32
- Value
- 3
-
- JoystickAxis5
-
- Comment
- Flycam hardware axis mapping for internal axis 5 ([0, 5]).
- Persist
- 1
- Type
- S32
- Value
- 5
-
- JoystickAxis6
-
- Comment
- Flycam hardware axis mapping for internal axis 6 ([0, 5]).
- Persist
- 1
- Type
- S32
- Value
- -1
-
+
+ Comment
+ Treat Flycam values as absolute positions (not deltas).
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
FlycamAxisDeadZone0
-
- Comment
- Flycam axis 0 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
+
+ Comment
+ Flycam axis 0 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
FlycamAxisDeadZone1
-
- Comment
- Flycam axis 1 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
+
+ Comment
+ Flycam axis 1 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
FlycamAxisDeadZone2
-
- Comment
- Flycam axis 2 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
+
+ Comment
+ Flycam axis 2 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
FlycamAxisDeadZone3
-
- Comment
- Flycam axis 3 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
+
+ Comment
+ Flycam axis 3 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
FlycamAxisDeadZone4
-
- Comment
- Flycam axis 4 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
+
+ Comment
+ Flycam axis 4 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
FlycamAxisDeadZone5
-
- Comment
- Flycam axis 5 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
+
+ Comment
+ Flycam axis 5 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
FlycamAxisDeadZone6
-
- Comment
- Flycam axis 6 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
+
+ Comment
+ Flycam axis 6 dead zone.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
FlycamAxisScale0
-
- Comment
- Flycam axis 0 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Flycam axis 0 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
FlycamAxisScale1
-
- Comment
- Flycam axis 1 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Flycam axis 1 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
FlycamAxisScale2
-
- Comment
- Flycam axis 2 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Flycam axis 2 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
FlycamAxisScale3
-
- Comment
- Flycam axis 3 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Flycam axis 3 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
FlycamAxisScale4
-
- Comment
- Flycam axis 4 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Flycam axis 4 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
FlycamAxisScale5
-
- Comment
- Flycam axis 5 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Flycam axis 5 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
FlycamAxisScale6
-
- Comment
- Flycam axis 6 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Flycam axis 6 scaler.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
FlycamFeathering
-
- Comment
- Flycam feathering (less is softer)
- Persist
- 1
- Type
- F32
- Value
- 16
-
+
+ Comment
+ Flycam feathering (less is softer)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 16.0
+
FlycamZoomDirect
-
- Comment
- Map flycam zoom axis directly to camera zoom.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Map flycam zoom axis directly to camera zoom.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
FlyingAtExit
-
- Comment
- Was flying when last logged out, so fly when logging in
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Was flying when last logged out, so fly when logging in
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
FocusOffsetDefault
-
- Comment
- Default focus point offset relative to avatar (x-axis is forward)
- Persist
- 1
- Type
- Vector3
- Value
-
- 1
- 0
- 1
-
-
+
+ Comment
+ Default focus point offset relative to avatar (x-axis is forward)
+ Persist
+ 1
+ Type
+ Vector3
+ Value
+
+ 1.0
+ 0.0
+ 1.0
+
+
FocusPosOnLogout
-
- Comment
- Camera focus point when last logged out (global coordinates)
- Persist
- 1
- Type
- Vector3D
- Value
-
- 0
- 0
- 0
-
-
+
+ Comment
+ Camera focus point when last logged out (global coordinates)
+ Persist
+ 1
+ Type
+ Vector3D
+ Value
+
+ 0.0
+ 0.0
+ 0.0
+
+
FolderAutoOpenDelay
-
- Comment
- Seconds before automatically expanding the folder under the mouse when performing inventory drag and drop
- Persist
- 1
- Type
- F32
- Value
- 0.75
-
+
+ Comment
+ Seconds before automatically expanding the folder under the mouse when performing inventory drag and drop
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.75
+
FolderLoadingMessageWaitTime
-
- Comment
- Seconds to wait before showing the LOADING... text in folder views
- Persist
- 1
- Type
- F32
- Value
- 0.5
-
+
+ Comment
+ Seconds to wait before showing the LOADING... text in folder views
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.5
+
FontMonospace
-
- Comment
- Name of monospace font (Truetype file name)
- Persist
- 1
- Type
- String
- Value
- profontwindows.ttf
-
+
+ Comment
+ Name of monospace font (Truetype file name)
+ Persist
+ 1
+ Type
+ String
+ Value
+ profontwindows.ttf
+
FontSansSerif
-
- Comment
- Name of san-serif font (Truetype file name)
- Persist
- 1
- Type
- String
- Value
- MtBkLfRg.ttf
-
+
+ Comment
+ Name of san-serif font (Truetype file name)
+ Persist
+ 1
+ Type
+ String
+ Value
+ MtBkLfRg.ttf
+
FontSansSerifBold
-
- Comment
- Name of bold font (Truetype file name)
- Persist
- 1
- Type
- String
- Value
- MtBdLfRg.ttf
-
+
+ Comment
+ Name of bold font (Truetype file name)
+ Persist
+ 1
+ Type
+ String
+ Value
+ MtBdLfRg.ttf
+
FontSansSerifFallback
-
- Comment
- Name of san-serif font (Truetype file name)
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Name of san-serif font (Truetype file name)
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
FontSansSerifFallbackScale
-
- Comment
- Scale of fallback font relative to huge font (fraction of huge font size)
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Scale of fallback font relative to huge font (fraction of huge font size)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
FontScreenDPI
-
- Comment
- Font resolution, higher is bigger (pixels per inch)
- Persist
- 1
- Type
- F32
- Value
- 96
-
+
+ Comment
+ Font resolution, higher is bigger (pixels per inch)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 96.0
+
FontSizeHuge
-
- Comment
- Size of huge font (points, or 1/72 of an inch)
- Persist
- 1
- Type
- F32
- Value
- 16
-
+
+ Comment
+ Size of huge font (points, or 1/72 of an inch)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 16.0
+
FontSizeLarge
-
- Comment
- Size of large font (points, or 1/72 of an inch)
- Persist
- 1
- Type
- F32
- Value
- 12
-
+
+ Comment
+ Size of large font (points, or 1/72 of an inch)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 12.0
+
FontSizeMedium
-
- Comment
- Size of medium font (points, or 1/72 of an inch)
- Persist
- 1
- Type
- F32
- Value
- 10
-
+
+ Comment
+ Size of medium font (points, or 1/72 of an inch)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 10.0
+
FontSizeMonospace
-
- Comment
- Size of monospaced font (points, or 1/72 of an inch)
- Persist
- 1
- Type
- F32
- Value
- 9
-
+
+ Comment
+ Size of monospaced font (points, or 1/72 of an inch)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 9.0
+
FontSizeSmall
-
- Comment
- Size of small font (points, or 1/72 of an inch)
- Persist
- 1
- Type
- F32
- Value
- 9
-
+
+ Comment
+ Size of small font (points, or 1/72 of an inch)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 9.0
+
ForceShowGrid
-
- Comment
- Always show grid dropdown on login screen
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Always show grid dropdown on login screen
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ForwardBtnRect
-
- Comment
-
- Persist
- 0
- Type
- Rect
- Value
-
- 45
- 54
- 66
- 29
-
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Rect
+ Value
+
+ 45
+ 54
+ 66
+ 29
+
+
FreezeTime
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
FullScreen
-
- Comment
- Run SL in fullscreen mode
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Run SL in fullscreen mode
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
FullScreenAspectRatio
-
- Comment
- Aspect ratio of fullscreen display (width / height)
- Persist
- 1
- Type
- F32
- Value
- 1.33329999446868896484375
-
+
+ Comment
+ Aspect ratio of fullscreen display (width / height)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.33329999447
+
FullScreenAutoDetectAspectRatio
-
- Comment
- Automatically detect proper aspect ratio for fullscreen display
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Automatically detect proper aspect ratio for fullscreen display
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
FullScreenHeight
-
- Comment
- Fullscreen resolution in height
- Persist
- 1
- Type
- S32
- Value
- 768
-
+
+ Comment
+ Fullscreen resolution in height
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 768
+
FullScreenWidth
-
- Comment
- Fullscreen resolution in width
- Persist
- 1
- Type
- S32
- Value
- 1024
-
- GridChoice
-
- Comment
- The user's grid choice or ip address.
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Fullscreen resolution in width
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 1024
+
GridCrossSections
-
- Comment
- Highlight cross sections of prims with grid manipulation plane.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Highlight cross sections of prims with grid manipulation plane.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
GridDrawSize
-
- Comment
- Visible extent of 2D snap grid (meters)
- Persist
- 1
- Type
- F32
- Value
- 12
-
+
+ Comment
+ Visible extent of 2D snap grid (meters)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 12.0
+
GridMode
-
- Comment
- Snap grid reference frame (0 = world, 1 = local, 2 = reference object)
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Snap grid reference frame (0 = world, 1 = local, 2 = reference object)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
GridOpacity
-
- Comment
- Grid line opacity (0.0 = completely transparent, 1.0 = completely opaque)
- Persist
- 1
- Type
- F32
- Value
- 0.699999988079071044921875
-
+
+ Comment
+ Grid line opacity (0.0 = completely transparent, 1.0 = completely opaque)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.699999988079
+
GridResolution
-
- Comment
- Size of single grid step (meters)
- Persist
- 1
- Type
- F32
- Value
- 0.5
-
+
+ Comment
+ Size of single grid step (meters)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.5
+
GridSubUnit
-
- Comment
- Display fractional grid steps, relative to grid size
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display fractional grid steps, relative to grid size
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
GridSubdivision
-
- Comment
- Maximum number of times to divide single snap grid unit when GridSubUnit is true
- Persist
- 1
- Type
- S32
- Value
- 32
-
+
+ Comment
+ Maximum number of times to divide single snap grid unit when GridSubUnit is true
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 32
+
GroupNotifyBoxHeight
-
- Comment
- Height of group notice messages
- Persist
- 1
- Type
- S32
- Value
- 260
-
+
+ Comment
+ Height of group notice messages
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 260
+
GroupNotifyBoxWidth
-
- Comment
- Width of group notice messages
- Persist
- 1
- Type
- S32
- Value
- 400
-
+
+ Comment
+ Width of group notice messages
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 400
+
HTMLLinkColor
-
- Comment
- Color of hyperlinks
- Persist
- 1
- Type
- Color4
- Value
-
- 0.60000002384185791015625
- 0.60000002384185791015625
- 1
- 1
-
-
+
+ Comment
+ Color of hyperlinks
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.600000023842
+ 0.600000023842
+ 1.0
+ 1.0
+
+
HelpHomeURL
-
- Comment
- URL of initial help page
- Persist
- 1
- Type
- String
- Value
- help/index.html
-
+
+ Comment
+ URL of initial help page
+ Persist
+ 1
+ Type
+ String
+ Value
+ help/index.html
+
HelpLastVisitedURL
-
- Comment
- URL of last help page, will be shown next time help is accessed
- Persist
- 1
- Type
- String
- Value
- help/index.html
-
- HelperURI
-
- Comment
- helper web CGI prefix to use
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ URL of last help page, will be shown next time help is accessed
+ Persist
+ 1
+ Type
+ String
+ Value
+ help/index.html
+
HighResSnapshot
-
- Comment
- Double resolution of snapshot from current window resolution
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Double resolution of snapshot from current window resolution
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
HtmlFindRect
-
- Comment
- Rectangle for HTML find window
- Persist
- 1
- Type
- Rect
- Value
-
- 16
- 650
- 600
- 128
-
-
+
+ Comment
+ Rectangle for HTML find window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 16
+ 650
+ 600
+ 128
+
+
HtmlHelpLastPage
-
- Comment
- Last URL visited via help system
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Last URL visited via help system
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
HtmlHelpRect
-
- Comment
- Rectangle for HTML help window
- Persist
- 1
- Type
- Rect
- Value
-
- 16
- 650
- 600
- 128
-
-
+
+ Comment
+ Rectangle for HTML help window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 16
+ 650
+ 600
+ 128
+
+
HtmlReleaseMessage
-
- Comment
- Rectangle for HTML Release Message Floater window
- Persist
- 1
- Type
- Rect
- Value
-
- 46
- 520
- 400
- 128
-
-
+
+ Comment
+ Rectangle for HTML Release Message Floater window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 46
+ 520
+ 400
+ 128
+
+
+ IMChatColor
+
+ Comment
+ Color of instant messages from other residents
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 1.0
+ 1.0
+ 1.0
+
+
IMInChatHistory
-
- Comment
- Copy IM into chat history
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Copy IM into chat history
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
IMShowTimestamps
-
- Comment
- Show timestamps in IM
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show timestamps in IM
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
IgnorePixelDepth
-
- Comment
- Ignore pixel depth settings.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Ignore pixel depth settings.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ImagePipelineUseHTTP
-
- Comment
- If TRUE use HTTP GET to fetch textures from the server
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ If TRUE use HTTP GET to fetch textures from the server
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
InBandwidth
-
- Comment
- Incoming bandwidth throttle (bps)
- Persist
- 1
- Type
- F32
- Value
- 0
-
+
+ Comment
+ Incoming bandwidth throttle (bps)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.0
+
InventoryAutoOpenDelay
-
- Comment
- Seconds before automatically opening inventory when mouse is over inventory button when performing inventory drag and drop
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Seconds before automatically opening inventory when mouse is over inventory button when performing inventory drag and drop
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
InventorySortOrder
-
- Comment
- Specifies sort key for inventory items (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)
- Persist
- 1
- Type
- U32
- Value
- 7
-
+
+ Comment
+ Specifies sort key for inventory items (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 7
+
InvertMouse
-
- Comment
- When in mouselook, moving mouse up looks down and vice verse (FALSE = moving up looks up)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ When in mouselook, moving mouse up looks down and vice verse (FALSE = moving up looks up)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ JoystickAvatarEnabled
+
+ Comment
+ Enables the Joystick to control Avatar movmement.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
+ JoystickAxis0
+
+ Comment
+ Flycam hardware axis mapping for internal axis 0 ([0, 5]).
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 1
+
+ JoystickAxis1
+
+ Comment
+ Flycam hardware axis mapping for internal axis 1 ([0, 5]).
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
+ JoystickAxis2
+
+ Comment
+ Flycam hardware axis mapping for internal axis 2 ([0, 5]).
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 2
+
+ JoystickAxis3
+
+ Comment
+ Flycam hardware axis mapping for internal axis 3 ([0, 5]).
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 4
+
+ JoystickAxis4
+
+ Comment
+ Flycam hardware axis mapping for internal axis 4 ([0, 5]).
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 3
+
+ JoystickAxis5
+
+ Comment
+ Flycam hardware axis mapping for internal axis 5 ([0, 5]).
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 5
+
+ JoystickAxis6
+
+ Comment
+ Flycam hardware axis mapping for internal axis 6 ([0, 5]).
+ Persist
+ 1
+ Type
+ S32
+ Value
+ -1
+
+ JoystickBuildEnabled
+
+ Comment
+ Enables the Joystick to move edited objects.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
+ JoystickEnabled
+
+ Comment
+ Enables Joystick Input.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ JoystickFlycamEnabled
+
+ Comment
+ Enables the Joystick to control the flycam.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
+ JoystickInitialized
+
+ Comment
+ Whether or not a joystick has been detected and initiailized.
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
KeepAspectForSnapshot
-
- Comment
- Use full window when taking snapshot, regardless of requested image size
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Use full window when taking snapshot, regardless of requested image size
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
LCDDestination
-
- Comment
- Which LCD to use
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Which LCD to use
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
LSLHelpRect
-
- Comment
- Rectangle for LSL help window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 400
- 400
- 0
-
-
+
+ Comment
+ Rectangle for LSL help window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 400
+ 400
+ 0
+
+
LSLHelpURL
-
- Comment
- URL that points to LSL help files, with [LSL_STRING] corresponding to the referenced LSL function or keyword
- Persist
- 1
- Type
- String
- Value
- https://wiki.secondlife.com/wiki/[LSL_STRING]
-
+
+ Comment
+ URL that points to LSL help files, with [LSL_STRING] corresponding to the referenced LSL function or keyword
+ Persist
+ 1
+ Type
+ String
+ Value
+ https://wiki.secondlife.com/wiki/[LSL_STRING]
+
LagMeterShrunk
-
- Comment
- Last large/small state for lag meter
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Last large/small state for lag meter
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
Language
-
- Comment
- Language specifier (for XUI)
- Persist
- 1
- Type
- String
- Value
- default
-
+
+ Comment
+ Language specifier (for XUI)
+ Persist
+ 1
+ Type
+ String
+ Value
+ default
+
LastFeatureVersion
-
- Comment
- [DO NOT MODIFY] Version number for tracking hardware changes
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ [DO NOT MODIFY] Version number for tracking hardware changes
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
LastFindPanel
-
- Comment
- Controls which find operation appears by default when clicking "Find" button
- Persist
- 1
- Type
- String
- Value
- find_all_panel
-
+
+ Comment
+ Controls which find operation appears by default when clicking "Find" button
+ Persist
+ 1
+ Type
+ String
+ Value
+ find_all_panel
+
LastName
-
- Comment
- Login last name
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Login last name
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
LastPrefTab
-
- Comment
- Last selected tab in preferences window
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Last selected tab in preferences window
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
LastRunVersion
-
- Comment
- Version number of last instance of the viewer that you ran
- Persist
- 1
- Type
- String
- Value
- 0.0.0
-
+
+ Comment
+ Version number of last instance of the viewer that you ran
+ Persist
+ 1
+ Type
+ String
+ Value
+ 0.0.0
+
LastSnapshotHeight
-
- Comment
- The height of the last snapshot, in px
- Persist
- 1
- Type
- S32
- Value
- 768
-
+
+ Comment
+ The height of the last snapshot, in px
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 768
+
LastSnapshotType
-
- Comment
- Select this as next type of snapshot to take (0 = postcard, 1 = texture, 2 = local image)
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Select this as next type of snapshot to take (0 = postcard, 1 = texture, 2 = local image)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
LastSnapshotWidth
-
- Comment
- The width of the last snapshot, in px
- Persist
- 1
- Type
- S32
- Value
- 1024
-
+
+ Comment
+ The width of the last snapshot, in px
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 1024
+
LeftClickShowMenu
-
- Comment
- Left click opens pie menu (FALSE = left click touches or grabs object)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Left click opens pie menu (FALSE = left click touches or grabs object)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
LimitDragDistance
-
- Comment
- Limit translation of object via translate tool
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Limit translation of object via translate tool
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
LimitSelectDistance
-
- Comment
- Disallow selection of objects beyond max select distance
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Disallow selection of objects beyond max select distance
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
+ LipSyncAah
+
+ Comment
+ Aah (jaw opening) babble loop
+ Persist
+ 1
+ Type
+ String
+ Value
+ 257998776531013446642343
+
+ LipSyncAahPowerTransfer
+
+ Comment
+ Transfer curve for Voice Interface power to aah lip sync amplitude
+ Persist
+ 1
+ Type
+ String
+ Value
+ 0000123456789
+
+ LipSyncEnabled
+
+ Comment
+ 0 disable lip-sync, 1 enable babble loop
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ LipSyncOoh
+
+ Comment
+ Ooh (mouth width) babble loop
+ Persist
+ 1
+ Type
+ String
+ Value
+ 1247898743223344444443200000
+
+ LipSyncOohAahRate
+
+ Comment
+ Rate to babble Ooh and Aah (/sec)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 24.0
+
+ LipSyncOohPowerTransfer
+
+ Comment
+ Transfer curve for Voice Interface power to ooh lip sync amplitude
+ Persist
+ 1
+ Type
+ String
+ Value
+ 0012345566778899
+
LocalCacheVersion
-
- Comment
- Version number of cache
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Version number of cache
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
LogMessages
-
- Comment
- Log network traffic
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Log network traffic
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
LoginAsGod
-
- Comment
- Attempt to login with god powers (Linden accounts only)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Attempt to login with god powers (Linden accounts only)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
LoginLastLocation
-
- Comment
- Login at same location you last logged out
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Login at same location you last logged out
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
LoginPage
-
- Comment
- Login authentication page.
- Persist
- 1
- Type
- String
- Value
-
-
- LoginURI
-
- Comment
- login server and CGI prefix to use
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Login authentication page.
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
LosslessJ2CUpload
-
- Comment
- Use lossless compression for small image uploads
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Use lossless compression for small image uploads
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ MainloopTimeoutDefault
+
+ Comment
+ Timeout duration for mainloop lock detection, in seconds.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 10.0
+
MapOverlayIndex
-
- Comment
- Currently selected world map type
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Currently selected world map type
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
MapScale
-
- Comment
- World map zoom level (pixels per region)
- Persist
- 1
- Type
- F32
- Value
- 128
-
+
+ Comment
+ World map zoom level (pixels per region)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 128.0
+
MapShowClassifieds
-
- Comment
- Show locations associated with classified ads on world map
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show locations associated with classified ads on world map
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
MapShowEvents
-
- Comment
- Show events on world map
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show events on world map
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
MapShowInfohubs
-
- Comment
- Show infohubs on the world map
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show infohubs on the world map
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
MapShowLandForSale
-
- Comment
- Show land for sale on world map
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show land for sale on world map
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MapShowPeople
-
- Comment
- Show other users on world map
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- MapShowPopular
-
- Comment
- Show popular places on world map
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show other users on world map
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
MapShowTelehubs
-
- Comment
- Show telehubs on world map
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show telehubs on world map
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
Marker
-
- Comment
- [NOT USED]
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ [NOT USED]
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
MaxDragDistance
-
- Comment
- Maximum allowed translation distance in a single operation of translate tool (meters from start point)
- Persist
- 1
- Type
- F32
- Value
- 48
-
+
+ Comment
+ Maximum allowed translation distance in a single operation of translate tool (meters from start point)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 48.0
+
MaxSelectDistance
-
- Comment
- Maximum allowed selection distance (meters from avatar)
- Persist
- 1
- Type
- F32
- Value
- 64
-
+
+ Comment
+ Maximum allowed selection distance (meters from avatar)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 64.0
+
MeanCollisionBump
-
- Comment
- You have experienced an abuse of being bumped by an object or avatar
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ You have experienced an abuse of being bumped by an object or avatar
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MeanCollisionPhysical
-
- Comment
- You have experienced an abuse from a physical object
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ You have experienced an abuse from a physical object
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MeanCollisionPushObject
-
- Comment
- You have experienced an abuse of being pushed by a scripted object
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ You have experienced an abuse of being pushed by a scripted object
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MeanCollisionScripted
-
- Comment
- You have experienced an abuse from a scripted object
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ You have experienced an abuse from a scripted object
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MeanCollisionSelected
-
- Comment
- You have experienced an abuse of being pushed via a selected object
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ You have experienced an abuse of being pushed via a selected object
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MenuAccessKeyTime
-
- Comment
- Time (seconds) in which the menu key must be tapped to move focus to the menu bar
- Persist
- 1
- Type
- F32
- Value
- 0.25
-
+
+ Comment
+ Time (seconds) in which the menu key must be tapped to move focus to the menu bar
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.25
+
MenuBarHeight
-
- Comment
-
- Persist
- 0
- Type
- S32
- Value
- 18
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ S32
+ Value
+ 18
+
MenuBarWidth
-
- Comment
-
- Persist
- 0
- Type
- S32
- Value
- 410
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ S32
+ Value
+ 410
+
MiniMapRotate
-
- Comment
- Rotate miniature world map to avatar direction
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Rotate miniature world map to avatar direction
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
MiniMapScale
-
- Comment
- Miniature world map zoom levle (pixels per region)
- Persist
- 1
- Type
- F32
- Value
- 128
-
+
+ Comment
+ Miniature world map zoom levle (pixels per region)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 128.0
+
MouseSensitivity
-
- Comment
- Controls responsiveness of mouse when in mouselook mode (fraction or multiple of default mouse sensitivity)
- Persist
- 1
- Type
- F32
- Value
- 3
-
+
+ Comment
+ Controls responsiveness of mouse when in mouselook mode (fraction or multiple of default mouse sensitivity)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 3.0
+
MouseSmooth
-
- Comment
- Smooths out motion of mouse when in mouselook mode.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Smooths out motion of mouse when in mouselook mode.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MouseSun
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
MouselookBtnState
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
MoveDownBtnRect
-
- Comment
-
- Persist
- 0
- Type
- Rect
- Value
-
- 91
- 29
- 116
- 4
-
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Rect
+ Value
+
+ 91
+ 29
+ 116
+ 4
+
+
MoveUpBtnRect
-
- Comment
-
- Persist
- 0
- Type
- Rect
- Value
-
- 91
- 54
- 116
- 29
-
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Rect
+ Value
+
+ 91
+ 54
+ 116
+ 29
+
+
MuteAmbient
-
- Comment
- Ambient sound effects, such as wind noise, play at 0 volume
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Ambient sound effects, such as wind noise, play at 0 volume
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MuteAudio
-
- Comment
- All audio plays at 0 volume (streaming audio still takes up bandwidth, for example)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ All audio plays at 0 volume (streaming audio still takes up bandwidth, for example)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MuteMedia
-
- Comment
- Media plays at 0 volume (streaming audio still takes up bandwidth)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Media plays at 0 volume (streaming audio still takes up bandwidth)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MuteMusic
-
- Comment
- Music plays at 0 volume (streaming audio still takes up bandwidth)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Music plays at 0 volume (streaming audio still takes up bandwidth)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MuteSounds
-
- Comment
- Sound effects play at 0 volume
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Sound effects play at 0 volume
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MuteUI
-
- Comment
- UI sound effects play at 0 volume
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ UI sound effects play at 0 volume
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MuteVoice
-
- Comment
- Voice plays at 0 volume (streaming audio still takes up bandwidth)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Voice plays at 0 volume (streaming audio still takes up bandwidth)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
MuteWhenMinimized
-
- Comment
- Mute audio when SL window is minimized
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Mute audio when SL window is minimized
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
NewCacheLocation
-
- Comment
- Change the location of the local disk cache to this
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Change the location of the local disk cache to this
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
NextLoginLocation
-
- Comment
- Location to log into by default.
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ Location to log into by default.
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
NoAudio
-
- Comment
- Disable audio playback.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Disable audio playback.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
NoHardwareProbe
-
- Comment
- Disable hardware probe.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Disable hardware probe.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
NoInventoryLibrary
-
- Comment
- Do not request inventory library.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Do not request inventory library.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
NoPreload
-
- Comment
- Disable sound and image preload.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Disable sound and image preload.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
NoQuickTime
-
- Comment
- Disable quicktime playback.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Disable quicktime playback.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
NoVerifySSLCert
-
- Comment
- Do not verify SSL peers.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Do not verify SSL peers.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
NotecardEditorRect
-
- Comment
- Rectangle for notecard editor
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 400
- 400
- 0
-
-
+
+ Comment
+ Rectangle for notecard editor
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 400
+ 400
+ 0
+
+
NotifyBoxHeight
-
- Comment
- Height of notification messages
- Persist
- 1
- Type
- S32
- Value
- 200
-
+
+ Comment
+ Height of notification messages
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 200
+
NotifyBoxWidth
-
- Comment
- Width of notification messages
- Persist
- 1
- Type
- S32
- Value
- 350
-
+
+ Comment
+ Width of notification messages
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 350
+
NotifyMoneyChange
-
- Comment
- Pop up notifications for all L$ transactions
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Pop up notifications for all L$ transactions
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
NotifyTipDuration
-
- Comment
- Length of time that notification tips stay on screen (seconds)
- Persist
- 1
- Type
- F32
- Value
- 4
-
+
+ Comment
+ Length of time that notification tips stay on screen (seconds)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 4.0
+
NumSessions
-
- Comment
- Number of successful logins to Second Life
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Number of successful logins to Second Life
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
NumpadControl
-
- Comment
- How numpad keys control your avatar. 0 = Like the normal arrow keys, 1 = Numpad moves avatar when numlock is off, 2 = Numpad moves avatar regardless of numlock (use this if you have no numlock)
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ How numpad keys control your avatar. 0 = Like the normal arrow keys, 1 = Numpad moves avatar when numlock is off, 2 = Numpad moves avatar regardless of numlock (use this if you have no numlock)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
ObjectChatColor
-
- Comment
- Color of chat messages from objects
- Persist
- 1
- Type
- Color4
- Value
-
- 0.699999988079071044921875
- 0.89999997615814208984375
- 0.699999988079071044921875
- 1
-
-
+
+ Comment
+ Color of chat messages from objects
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.699999988079
+ 0.899999976158
+ 0.699999988079
+ 1.0
+
+
OpenDebugStatAdvanced
-
- Comment
- Expand advanced performance stats display
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Expand advanced performance stats display
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
OpenDebugStatBasic
-
- Comment
- Expand basic performance stats display
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Expand basic performance stats display
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
OpenDebugStatNet
-
- Comment
- Expand network stats display
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Expand network stats display
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
OpenDebugStatRender
-
- Comment
- Expand render stats display
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Expand render stats display
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
OpenDebugStatSim
-
- Comment
- Expand simulator performance stats display
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Expand simulator performance stats display
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
OutBandwidth
-
- Comment
- Outgoing bandwidth throttle (bps)
- Persist
- 1
- Type
- F32
- Value
- 0
-
+
+ Comment
+ Outgoing bandwidth throttle (bps)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.0
+
OverdrivenColor
-
- Comment
- Color of various indicators when resident is speaking too loud.
- Persist
- 1
- Type
- Color4
- Value
-
- 1
- 0
- 0
- 1
-
-
+
+ Comment
+ Color of various indicators when resident is speaking too loud.
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 1.0
+ 0.0
+ 0.0
+ 1.0
+
+
OverlayTitle
-
- Comment
- Controls watermark text message displayed on screen when "ShowOverlayTitle" is enabled (one word, underscores become spaces)
- Persist
- 1
- Type
- String
- Value
- Set_via_OverlayTitle_in_settings.xml
-
+
+ Comment
+ Controls watermark text message displayed on screen when "ShowOverlayTitle" is enabled (one word, underscores become spaces)
+ Persist
+ 1
+ Type
+ String
+ Value
+ Set_via_OverlayTitle_in_settings.xml
+
PTTCurrentlyEnabled
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 1
+
PacketDropPercentage
-
- Comment
- Percentage of packets dropped by the client.
- Persist
- 1
- Type
- F32
- Value
- 0
-
+
+ Comment
+ Percentage of packets dropped by the client.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.0
+
+ ParcelMediaAutoPlayEnable
+
+ Comment
+ Auto play parcel media when available
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
PerAccountSettingsFile
-
- Comment
- Persisted client settings file name (per user).
- Persist
- 0
- Type
- String
- Value
-
-
+
+ Comment
+ Persisted client settings file name (per user).
+ Persist
+ 0
+ Type
+ String
+ Value
+
+
PermissionsCautionEnabled
-
- Comment
- When enabled, changes the handling of script permission requests to help avoid accidental granting of certain permissions, such as the debit permission
- Persist
- 0
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ When enabled, changes the handling of script permission requests to help avoid accidental granting of certain permissions, such as the debit permission
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 1
+
PermissionsCautionNotifyBoxHeight
-
- Comment
- Height of caution-style notification messages
- Persist
- 0
- Type
- S32
- Value
- 344
-
+
+ Comment
+ Height of caution-style notification messages
+ Persist
+ 0
+ Type
+ S32
+ Value
+ 344
+
PermissionsManagerRect
-
- Comment
- Rectangle for permissions manager window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 85
- 300
- 0
-
-
+
+ Comment
+ Rectangle for permissions manager window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 85
+ 300
+ 0
+
+
PickerContextOpacity
-
- Comment
- Controls overall opacity of context frustrum connecting color and texture pickers with their swatches
- Persist
- 1
- Type
- F32
- Value
- 0.3499999940395355224609375
-
+
+ Comment
+ Controls overall opacity of context frustrum connecting color and texture pickers with their swatches
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.34999999404
+
PieMenuLineWidth
-
- Comment
- Width of lines in pie menu display (pixels)
- Persist
- 1
- Type
- F32
- Value
- 2.5
-
+
+ Comment
+ Width of lines in pie menu display (pixels)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 2.5
+
PinTalkViewOpen
-
- Comment
- Stay in IM after hitting return
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Stay in IM after hitting return
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
PingInterpolate
-
- Comment
- Extrapolate object position along velocity vector based on ping delay
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Extrapolate object position along velocity vector based on ping delay
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
PitchFromMousePosition
-
- Comment
- Vertical range over which avatar head tracks mouse position (degrees of head rotation from top of window to bottom)
- Persist
- 1
- Type
- F32
- Value
- 90
-
+
+ Comment
+ Vertical range over which avatar head tracks mouse position (degrees of head rotation from top of window to bottom)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 90.0
+
PlayTypingAnim
-
- Comment
- Your avatar plays the typing animation whenever you type in the chat bar
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Your avatar plays the typing animation whenever you type in the chat bar
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
PrecachingDelay
-
- Comment
- Delay when logging in to load world before showing it (seconds)
- Persist
- 1
- Type
- F32
- Value
- 6
-
+
+ Comment
+ Delay when logging in to load world before showing it (seconds)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 6.0
+
PreviewAnimRect
-
- Comment
- Rectangle for animation preview window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 85
- 300
- 0
-
-
+
+ Comment
+ Rectangle for animation preview window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 85
+ 300
+ 0
+
+
PreviewClassifiedRect
-
- Comment
- Rectangle for URL preview window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 530
- 420
- 0
-
-
+
+ Comment
+ Rectangle for URL preview window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 530
+ 420
+ 0
+
+
PreviewEventRect
-
- Comment
- Rectangle for Event preview window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 530
- 420
- 0
-
-
+
+ Comment
+ Rectangle for Event preview window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 530
+ 420
+ 0
+
+
PreviewLandmarkRect
-
- Comment
- Rectangle for landmark preview window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 90
- 300
- 0
-
-
+
+ Comment
+ Rectangle for landmark preview window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 90
+ 300
+ 0
+
+
PreviewObjectRect
-
- Comment
- Rectangle for object preview window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 85
- 300
- 0
-
-
+
+ Comment
+ Rectangle for object preview window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 85
+ 300
+ 0
+
+
PreviewScriptRect
-
- Comment
- Rectangle for script preview window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 550
- 500
- 0
-
-
+
+ Comment
+ Rectangle for script preview window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 550
+ 500
+ 0
+
+
PreviewSoundRect
-
- Comment
- Rectangle for sound preview window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 85
- 300
- 0
-
-
+
+ Comment
+ Rectangle for sound preview window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 85
+ 300
+ 0
+
+
PreviewTextureRect
-
- Comment
- Rectangle for texture preview window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 400
- 400
- 0
-
-
+
+ Comment
+ Rectangle for texture preview window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 400
+ 400
+ 0
+
+
PreviewURLRect
-
- Comment
- Rectangle for URL preview window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 90
- 300
- 0
-
-
+
+ Comment
+ Rectangle for URL preview window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 90
+ 300
+ 0
+
+
PreviewWearableRect
-
- Comment
- Rectangle for wearable preview window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 85
- 300
- 0
-
-
+
+ Comment
+ Rectangle for wearable preview window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 85
+ 300
+ 0
+
+
ProbeHardwareOnStartup
-
- Comment
- Query current hardware configuration on application startup
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Query current hardware configuration on application startup
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
PropertiesRect
-
- Comment
- Rectangle for inventory item properties window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 320
- 350
- 0
-
-
+
+ Comment
+ Rectangle for inventory item properties window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 320
+ 350
+ 0
+
+
PurgeCacheOnNextStartup
-
- Comment
- Clear local file cache next time viewer is run
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Clear local file cache next time viewer is run
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
PurgeCacheOnStartup
-
- Comment
- Clear local file cache every time viewer is run
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Clear local file cache every time viewer is run
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
PushToTalkButton
-
- Comment
- Which button or keyboard key is used for push-to-talk
- Persist
- 1
- Type
- String
- Value
- MiddleMouse
-
+
+ Comment
+ Which button or keyboard key is used for push-to-talk
+ Persist
+ 1
+ Type
+ String
+ Value
+ MiddleMouse
+
PushToTalkToggle
-
- Comment
- Should the push-to-talk button behave as a toggle
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Should the push-to-talk button behave as a toggle
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
QAMode
-
- Comment
- Enable Testing Features.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Enable Testing Features.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
QuietSnapshotsToDisk
-
- Comment
- Take snapshots to disk without playing animation or sound
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Take snapshots to disk without playing animation or sound
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
QuitAfterSeconds
-
- Comment
- The duration allowed before quitting.
- Persist
- 1
- Type
- F32
- Value
- 0
-
+
+ Comment
+ The duration allowed before quitting.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.0
+
RadioLandBrushAction
-
- Comment
- Last selected land modification operation (0 = flatten, 1 = raise, 2 = lower, 3 = smooth, 4 = roughen, 5 = revert)
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Last selected land modification operation (0 = flatten, 1 = raise, 2 = lower, 3 = smooth, 4 = roughen, 5 = revert)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
RadioLandBrushSize
-
- Comment
- Size of land modification brush (0 = small, 1 = medium, 2 = large)
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Size of land modification brush (0 = small, 1 = medium, 2 = large)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
RecentItemsSortOrder
-
- Comment
- Specifies sort key for recent inventory items (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)
- Persist
- 1
- Type
- U32
- Value
- 1
-
+
+ Comment
+ Specifies sort key for recent inventory items (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 1
+
RectangleSelectInclusive
-
- Comment
- Select objects that have at least one vertex inside selection rectangle
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Select objects that have at least one vertex inside selection rectangle
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RegionTextureSize
-
- Comment
- Terrain texture dimensions (power of 2)
- Persist
- 1
- Type
- U32
- Value
- 256
-
+
+ Comment
+ Terrain texture dimensions (power of 2)
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 256
+
RememberPassword
-
- Comment
- Keep password (in encrypted form) for next login
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Keep password (in encrypted form) for next login
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderAnisotropic
-
- Comment
- Render textures using anisotropic filtering
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Render textures using anisotropic filtering
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderAppleUseMultGL
-
- Comment
- Whether we want to use multi-threaded OpenGL on Apple hardware (requires restart of SL).
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Whether we want to use multi-threaded OpenGL on Apple hardware (requires restart of SL).
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderAvatarCloth
-
- Comment
- Controls if avatars use wavy cloth
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Controls if avatars use wavy cloth
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderAvatarLODFactor
-
- Comment
- Controls level of detail of avatars (multiplier for current screen area when calculated level of detail)
- Persist
- 1
- Type
- F32
- Value
- 0.5
-
+
+ Comment
+ Controls level of detail of avatars (multiplier for current screen area when calculated level of detail)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.5
+
RenderAvatarMaxVisible
-
- Comment
- Maximum number of avatars to display at any one time
- Persist
- 1
- Type
- S32
- Value
- 35
-
+
+ Comment
+ Maximum number of avatars to display at any one time
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 35
+
RenderAvatarVP
-
- Comment
- Use vertex programs to perform hardware skinning of avatar
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Use vertex programs to perform hardware skinning of avatar
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderBumpmapMinDistanceSquared
-
- Comment
- Maximum distance at which to render bumpmapped primitives (distance in meters, squared)
- Persist
- 1
- Type
- F32
- Value
- 100
-
+
+ Comment
+ Maximum distance at which to render bumpmapped primitives (distance in meters, squared)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 100.0
+
RenderCubeMap
-
- Comment
- Whether we can render the cube map or not
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Whether we can render the cube map or not
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderCustomSettings
-
- Comment
- Do you want to set the graphics settings yourself
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Do you want to set the graphics settings yourself
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ RenderDebugGL
+
+ Comment
+ Enable strict GL debugging.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ RenderDebugPipeline
+
+ Comment
+ Enable strict pipeline debugging.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderDebugTextureBind
-
- Comment
- Enable texture bind performance test.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Enable texture bind performance test.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ RenderDeferred
+
+ Comment
+ Use deferred rendering pipeline.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderDynamicLOD
-
- Comment
- Dynamically adjust level of detail.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Dynamically adjust level of detail.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderDynamicReflections
-
- Comment
- Generate a dynamic cube map for reflections (objects reflect their environment, experimental).
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Generate a dynamic cube map for reflections (objects reflect their environment, experimental).
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ RenderFSAASamples
+
+ Comment
+ Number of samples to use for FSAA (0 = no AA).
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 0
+
RenderFarClip
-
- Comment
- Distance of far clip plane from camera (meters)
- Persist
- 1
- Type
- F32
- Value
- 256
-
+
+ Comment
+ Distance of far clip plane from camera (meters)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 256.0
+
+ RenderFastAlpha
+
+ Comment
+ Use lossy alpha rendering optimization (opaque/nonexistent small alpha faces).
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderFastUI
-
- Comment
- [NOT USED]
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ [NOT USED]
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderFlexTimeFactor
-
- Comment
- Controls level of detail of flexible objects (multiplier for amount of time spent processing flex objects)
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Controls level of detail of flexible objects (multiplier for amount of time spent processing flex objects)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
RenderFogRatio
-
- Comment
- Distance from camera where fog reaches maximum density (fraction or multiple of far clip distance)
- Persist
- 1
- Type
- F32
- Value
- 4.0
-
+
+ Comment
+ Distance from camera where fog reaches maximum density (fraction or multiple of far clip distance)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 4.0
+
RenderGamma
-
- Comment
- Sets gamma exponent for renderer
- Persist
- 1
- Type
- F32
- Value
- 0
-
+
+ Comment
+ Sets gamma exponent for renderer
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.0
+
RenderGammaFull
-
- Comment
- Use fully controllable gamma correction, instead of faster, hard-coded gamma correction of 2.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Use fully controllable gamma correction, instead of faster, hard-coded gamma correction of 2.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1.0
+
RenderGlow
-
- Comment
- Render bloom post effect.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Render bloom post effect.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderGlowIterations
-
- Comment
- Number of times to iterate the glow (higher = wider and smoother but slower)
- Persist
- 1
- Type
- S32
- Value
- 2
-
+
+ Comment
+ Number of times to iterate the glow (higher = wider and smoother but slower)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 2
+
RenderGlowLumWeights
-
- Comment
- Weights for each color channel to be used in calculating luminance (should add up to 1.0)
- Persist
- 1
- Type
- Vector3
- Value
-
- 0.299
- 0.587
- 0.114
-
-
+
+ Comment
+ Weights for each color channel to be used in calculating luminance (should add up to 1.0)
+ Persist
+ 1
+ Type
+ Vector3
+ Value
+
+ 0.299
+ 0.587
+ 0.114
+
+
RenderGlowMaxExtractAlpha
-
- Comment
- Max glow alpha value for brightness extraction to auto-glow.
- Persist
- 1
- Type
- F32
- Value
- 0.065
-
+
+ Comment
+ Max glow alpha value for brightness extraction to auto-glow.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.065
+
RenderGlowMinLuminance
-
- Comment
- Min luminance intensity necessary to consider an object bright enough to automatically glow. (Gets clamped to 0 - 1.0 range)
- Persist
- 1
- Type
- F32
- Value
- 1.0
-
+
+ Comment
+ Min luminance intensity necessary to consider an object bright enough to automatically glow. (Gets clamped to 0 - 1.0 range)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
RenderGlowResolutionPow
-
- Comment
- Glow map resolution power of two.
- Persist
- 1
- Type
- S32
- Value
- 9
-
+
+ Comment
+ Glow map resolution power of two.
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 9
+
RenderGlowStrength
-
- Comment
- Additive strength of glow.
- Persist
- 1
- Type
- F32
- Value
- 0.35
-
+
+ Comment
+ Additive strength of glow.
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.35
+
RenderGlowWarmthAmount
-
- Comment
- Amount of warmth extraction to use (versus luminance extraction). 0 = lum, 1.0 = warmth
- Persist
- 1
- Type
- F32
- Value
- 0
-
+
+ Comment
+ Amount of warmth extraction to use (versus luminance extraction). 0 = lum, 1.0 = warmth
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.0
+
RenderGlowWarmthWeights
-
- Comment
- Weight of each color channel used before finding the max warmth
- Persist
- 1
- Type
- Vector3
- Value
-
- 1.0
- 0.5
- 0.7
-
-
+
+ Comment
+ Weight of each color channel used before finding the max warmth
+ Persist
+ 1
+ Type
+ Vector3
+ Value
+
+ 1.0
+ 0.5
+ 0.7
+
+
RenderGlowWidth
-
- Comment
- Glow sample size (higher = wider and softer but eventually more pixelated)
- Persist
- 1
- Type
- F32
- Value
- 1.3
-
+
+ Comment
+ Glow sample size (higher = wider and softer but eventually more pixelated)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.3
+
RenderHUDInSnapshot
-
- Comment
- Display HUD attachments in snapshot
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display HUD attachments in snapshot
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderHiddenSelections
-
- Comment
- Show selection lines on objects that are behind other objects
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show selection lines on objects that are behind other objects
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderHideGroupTitle
-
- Comment
- Don't show my group title in my name label
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Don't show my group title in my name label
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderHideGroupTitleAll
-
- Comment
- Show group titles in name labels
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show group titles in name labels
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderInitError
-
- Comment
- Error occured while initializing GL
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Error occured while initializing GL
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderLightRadius
-
- Comment
- Render the radius of selected lights
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Render the radius of selected lights
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderLightingDetail
-
- Comment
- Amount of detail for lighting objects/avatars/terrain (0=sun/moon only, 1=enable local lights)
- Persist
- 1
- Type
- S32
- Value
- 1
-
+
+ Comment
+ Amount of detail for lighting objects/avatars/terrain (0=sun/moon only, 1=enable local lights)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 1
+
RenderMaxPartCount
-
- Comment
- Maximum number of particles to display on screen
- Persist
- 1
- Type
- S32
- Value
- 4096
-
+
+ Comment
+ Maximum number of particles to display on screen
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 4096
+
RenderMaxVBOSize
-
- Comment
- Maximum size of a vertex buffer (in KB).
- Persist
- 1
- Type
- S32
- Value
- 32
-
+
+ Comment
+ Maximum size of a vertex buffer (in KB).
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 32
+
RenderName
-
- Comment
- Controls display of names above avatars (0 = never, 1 = fade, 2 = always)
- Persist
- 1
- Type
- S32
- Value
- 2
-
+
+ Comment
+ Controls display of names above avatars (0 = never, 1 = fade, 2 = always)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 2
+
RenderNameFadeDuration
-
- Comment
- Time interval over which to fade avatar names (seconds)
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Time interval over which to fade avatar names (seconds)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
RenderNameHideSelf
-
- Comment
- Don't display own name above avatar
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Don't display own name above avatar
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderNameShowTime
-
- Comment
- Fade avatar names after specified time (seconds)
- Persist
- 1
- Type
- F32
- Value
- 10
-
+
+ Comment
+ Fade avatar names after specified time (seconds)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 10.0
+
RenderObjectBump
-
- Comment
- Show bumpmapping on primitives
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show bumpmapping on primitives
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderQualityPerformance
-
- Comment
- Which graphics settings you've chosen
- Persist
- 1
- Type
- U32
- Value
- 1
-
+
+ Comment
+ Which graphics settings you've chosen
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 1
+
RenderReflectionDetail
-
- Comment
- Detail of reflection render pass.
- Persist
- 1
- Type
- S32
- Value
- 2
-
+
+ Comment
+ Detail of reflection render pass.
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 2
+
RenderReflectionRes
-
- Comment
- Reflection map resolution.
- Persist
- 1
- Type
- S32
- Value
- 64
-
+
+ Comment
+ Reflection map resolution.
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 64
+
RenderResolutionDivisor
-
- Comment
- Divisor for rendering 3D scene at reduced resolution.
- Persist
- 1
- Type
- U32
- Value
- 1
-
+
+ Comment
+ Divisor for rendering 3D scene at reduced resolution.
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 1
+
RenderShaderLODThreshold
-
- Comment
- Fraction of draw distance defining the switch to a different shader LOD
- Persist
- 1
- Type
- F32
- Value
- 1.0
-
+
+ Comment
+ Fraction of draw distance defining the switch to a different shader LOD
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
+ RenderShaderParticleThreshold
+
+ Comment
+ Fraction of draw distance to not use shader on particles
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.25
+
RenderSunDynamicRange
-
- Comment
- Defines what percent brighter the sun is than local point lights (1.0 = 100% brighter. Value should not be less than 0. ).
- Persist
- 1
- Type
- F32
- Value
- 1.0
-
+
+ Comment
+ Defines what percent brighter the sun is than local point lights (1.0 = 100% brighter. Value should not be less than 0. ).
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
RenderTerrainDetail
-
- Comment
- Detail applied to terrain texturing (0 = none, 1 or 2 = full)
- Persist
- 1
- Type
- S32
- Value
- 2
-
+
+ Comment
+ Detail applied to terrain texturing (0 = none, 1 or 2 = full)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 2
+
RenderTerrainLODFactor
-
- Comment
- Controls level of detail of terrain (multiplier for current screen area when calculated level of detail)
- Persist
- 1
- Type
- F32
- Value
- 1.0
-
+
+ Comment
+ Controls level of detail of terrain (multiplier for current screen area when calculated level of detail)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
RenderTerrainScale
-
- Comment
- Terrain detail texture scale
- Persist
- 1
- Type
- F32
- Value
- 12
-
+
+ Comment
+ Terrain detail texture scale
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 12.0
+
+ RenderTextureMemoryMultiple
+
+ Comment
+ Multiple of texture memory value to use (should fit: 0 < value <= 1.0)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
RenderTreeLODFactor
-
- Comment
- Controls level of detail of vegetation (multiplier for current screen area when calculated level of detail)
- Persist
- 1
- Type
- F32
- Value
- 0.5
-
+
+ Comment
+ Controls level of detail of vegetation (multiplier for current screen area when calculated level of detail)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.5
+
RenderUIInSnapshot
-
- Comment
- Display user interface in snapshot
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- RenderUseCleverUI
-
- Comment
- Turns on the \"clever\" UI rendering optimization. It's a known performace gain on apple.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- RenderUseFarClip
-
- Comment
- If false, frustum culling will ignore far clip plane.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display user interface in snapshot
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ RenderUnloadedAvatar
+
+ Comment
+ Show avatars which haven't finished loading
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderUseFBO
-
- Comment
- Whether we want to use GL_EXT_framebuffer_objects.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Whether we want to use GL_EXT_framebuffer_objects.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ RenderUseFarClip
+
+ Comment
+ If false, frustum culling will ignore far clip plane.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderUseImpostors
-
- Comment
- Whether we want to use impostors for far away avatars.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Whether we want to use impostors for far away avatars.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderUseShaderLOD
-
- Comment
- Whether we want to have different shaders for LOD
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Whether we want to have different shaders for LOD
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderUseShaderNearParticles
-
- Comment
- Whether we want to use shaders on near particles
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- RenderShaderParticleThreshold
-
- Comment
- Fraction of draw distance to not use shader on particles
- Persist
- 1
- Type
- F32
- Value
- 0.25
-
+
+ Comment
+ Whether we want to use shaders on near particles
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RenderVBOEnable
-
- Comment
- Use GL Vertex Buffer Objects
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Use GL Vertex Buffer Objects
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderVolumeLODFactor
-
- Comment
- Controls level of detail of primitives (multiplier for current screen area when calculated level of detail)
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Controls level of detail of primitives (multiplier for current screen area when calculated level of detail)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
RenderWater
-
- Comment
- Display water
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display water
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderWaterMipNormal
-
- Comment
- Use mip maps for water normal map.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- RenderWaterReflections
-
- Comment
- Reflect the environment in the water.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Use mip maps for water normal map.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
RenderWaterRefResolution
-
- Comment
- Water planar reflection resolution.
- Persist
- 1
- Type
- S32
- Value
- 512
-
+
+ Comment
+ Water planar reflection resolution.
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 512
+
+ RenderWaterReflections
+
+ Comment
+ Reflect the environment in the water.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RotateRight
-
- Comment
- Make the agent rotate to its right.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Make the agent rotate to its right.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
RotationStep
-
- Comment
- All rotations via rotation tool are constrained to multiples of this unit (degrees)
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ All rotations via rotation tool are constrained to multiples of this unit (degrees)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
RunBtnState
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
RunMultipleThreads
-
- Comment
- If TRUE keep background threads active during render
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ If TRUE keep background threads active during render
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
SafeMode
-
- Comment
- Reset preferences, run in safe mode.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Reset preferences, run in safe mode.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
SaveMinidump
-
- Comment
- Save minidump for developer debugging on crash
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Save minidump for developer debugging on crash
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ScaleShowAxes
-
- Comment
- Show indicator of selected scale axis when scaling
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show indicator of selected scale axis when scaling
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ScaleStretchTextures
-
- Comment
- Stretch textures along with object when scaling
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Stretch textures along with object when scaling
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ScaleUniform
-
- Comment
- Scale selected objects evenly about center of selection
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Scale selected objects evenly about center of selection
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ScriptErrorColor
-
- Comment
- Color of script error messages
- Persist
- 1
- Type
- Color4
- Value
-
- 0.8235294117
- 0.2745098039
- 0.2745098039
- 1
-
-
+
+ Comment
+ Color of script error messages
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.8235294117
+ 0.2745098039
+ 0.2745098039
+ 1.0
+
+
ScriptErrorsAsChat
-
- Comment
- Display script errors and warning in chat history
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display script errors and warning in chat history
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ScriptHelpFollowsCursor
-
- Comment
- Scripting help window updates contents based on script editor contents under text cursor
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Scripting help window updates contents based on script editor contents under text cursor
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
SearchURLDefault
-
- Comment
- URL to load for empty searches
- Persist
- 1
- Type
- String
- Value
- http://secondlife.com/app/search/index.php?
-
+
+ Comment
+ URL to load for empty searches
+ Persist
+ 1
+ Type
+ String
+ Value
+ http://secondlife.com/app/search/index.php?
+
SearchURLQuery
-
- Comment
- URL to use for searches
- Persist
- 1
- Type
- String
- Value
- http://secondlife.com/app/search/search_proxy.php?q=[QUERY]&s=[COLLECTION]&
-
+
+ Comment
+ URL to use for searches
+ Persist
+ 1
+ Type
+ String
+ Value
+ http://secondlife.com/app/search/search_proxy.php?q=[QUERY]&s=[COLLECTION]&
+
SearchURLSuffix2
-
- Comment
- Parameters added to end of search queries
- Persist
- 1
- Type
- String
- Value
- lang=[LANG]&m=[MATURE]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]
-
+
+ Comment
+ Parameters added to end of search queries
+ Persist
+ 1
+ Type
+ String
+ Value
+ lang=[LANG]&m=[MATURE]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]
+
SelectMovableOnly
-
- Comment
- Select only objects you can move
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Select only objects you can move
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
SelectOwnedOnly
-
- Comment
- Select only objects you own
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Select only objects you own
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
SelectionHighlightAlpha
-
- Comment
- Opacity of selection highlight (0.0 = completely transparent, 1.0 = completely opaque)
- Persist
- 1
- Type
- F32
- Value
- 0.4000000059604644775390625
-
+
+ Comment
+ Opacity of selection highlight (0.0 = completely transparent, 1.0 = completely opaque)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.40000000596
+
SelectionHighlightAlphaTest
-
- Comment
- Alpha value below which pixels are displayed on selection highlight line (0.0 = show all pixels, 1.0 = show now pixels)
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
+
+ Comment
+ Alpha value below which pixels are displayed on selection highlight line (0.0 = show all pixels, 1.0 = show now pixels)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
SelectionHighlightThickness
-
- Comment
- Thickness of selection highlight line (fraction of view distance)
- Persist
- 1
- Type
- F32
- Value
- 0.009999999776482582092285156
-
+
+ Comment
+ Thickness of selection highlight line (fraction of view distance)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.00999999977648
+
SelectionHighlightUAnim
-
- Comment
- Rate at which texture animates along U direction in selection highlight line (fraction of texture per second)
- Persist
- 1
- Type
- F32
- Value
- 0
-
+
+ Comment
+ Rate at which texture animates along U direction in selection highlight line (fraction of texture per second)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.0
+
SelectionHighlightUScale
-
- Comment
- Scale of texture display on selection highlight line (fraction of texture size)
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
+
+ Comment
+ Scale of texture display on selection highlight line (fraction of texture size)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.1
+
SelectionHighlightVAnim
-
- Comment
- Rate at which texture animates along V direction in selection highlight line (fraction of texture per second)
- Persist
- 1
- Type
- F32
- Value
- 0.5
-
+
+ Comment
+ Rate at which texture animates along V direction in selection highlight line (fraction of texture per second)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.5
+
SelectionHighlightVScale
-
- Comment
- Scale of texture display on selection highlight line (fraction of texture size)
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Scale of texture display on selection highlight line (fraction of texture size)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
ServerChoice
-
- Comment
- [DO NOT MODIFY] Controls which grid you connect to
- Persist
- 1
- Type
- S32
- Value
- 0
-
- ShowAllObjectHoverTip
-
- Comment
- Show descriptive tooltip when mouse hovers over non-interactive and interactive objects.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ [DO NOT MODIFY] Controls which grid you connect to
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
ShowActiveSpeakers
-
- Comment
- Display active speakers list on login
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display active speakers list on login
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ ShowAllObjectHoverTip
+
+ Comment
+ Show descriptive tooltip when mouse hovers over non-interactive and interactive objects.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowAxes
-
- Comment
- Render coordinate frame at your position
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Render coordinate frame at your position
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowCameraControls
-
- Comment
- Display camera controls on login
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display camera controls on login
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ShowChatHistory
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
ShowCommunicate
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
ShowConsoleWindow
-
- Comment
- Show log in separate OS window
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show log in separate OS window
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowCrosshairs
-
- Comment
- Display crosshairs when in mouselook mode
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display crosshairs when in mouselook mode
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ShowDebugConsole
-
- Comment
- Show log in SL window
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show log in SL window
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowDebugStats
-
- Comment
- Show performance stats display
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show performance stats display
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowDepthBuffer
-
- Comment
- Show depth buffer contents
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show depth buffer contents
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowDirectory
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
ShowEmptyFoldersWhenSearching
-
- Comment
- Shows folders that do not have any visible contents when applying a filter to inventory
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Shows folders that do not have any visible contents when applying a filter to inventory
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowHoverTips
-
- Comment
- Show descriptive tooltip when mouse hovers over items in world
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show descriptive tooltip when mouse hovers over items in world
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ShowInventory
-
- Comment
- Open inventory window on login
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Open inventory window on login
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowLandHoverTip
-
- Comment
- Show descriptive tooltip when mouse hovers over land
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show descriptive tooltip when mouse hovers over land
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowLeaders
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
ShowMatureClassifieds
-
- Comment
- Display results of find classifieds that are flagged as mature
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display results of find classifieds that are flagged as mature
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowMatureEvents
-
- Comment
- Display results of find events that are flagged as mature
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display results of find events that are flagged as mature
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowMatureFindAll
-
- Comment
- Display results of find all that are in mature sims
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display results of find all that are in mature sims
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowMatureGroups
-
- Comment
- Display results of find groups that are in flagged as mature
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display results of find groups that are in flagged as mature
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ShowMatureSims
-
- Comment
- Display results of find places or find popular that are in mature sims
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display results of find places or find popular that are in mature sims
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowMiniMap
-
- Comment
- Display mini map on login
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display mini map on login
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ShowMovementControls
-
- Comment
- Display movement controls on login
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display movement controls on login
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ShowNearClip
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
ShowNewInventory
-
- Comment
- Automatically views new notecards/textures/landmarks
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Automatically views new notecards/textures/landmarks
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ShowObjectUpdates
-
- Comment
- Show when update messages are received for individual objects
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show when update messages are received for individual objects
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowOverlayTitle
-
- Comment
- Prints watermark text message on screen
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Prints watermark text message on screen
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowParcelOwners
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
ShowPermissions
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
ShowPropertyLines
-
- Comment
- Show line overlay demarking property boundaries
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show line overlay demarking property boundaries
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowSearchBar
-
- Comment
- Show the Search Bar in the Status Overlay
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show the Search Bar in the Status Overlay
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ShowSelectionBeam
-
- Comment
- Show selection particle beam when selecting or interacting with objects.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show selection particle beam when selecting or interacting with objects.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ShowStartLocation
-
- Comment
- Display starting location menu on login screen
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display starting location menu on login screen
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowTangentBasis
-
- Comment
- Render normal and binormal (debugging bump mapping)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Render normal and binormal (debugging bump mapping)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowToolBar
-
- Comment
- Show toolbar at bottom of screen
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show toolbar at bottom of screen
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
ShowTools
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
ShowVoiceChannelPopup
-
- Comment
- Controls visibility of the current voice channel popup above the voice tab
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Controls visibility of the current voice channel popup above the voice tab
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowVolumeSettingsPopup
-
- Comment
- Show individual volume slider for voice, sound effects, etc
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show individual volume slider for voice, sound effects, etc
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowWorldMap
-
- Comment
- Display world map on login
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display world map on login
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ShowXUINames
-
- Comment
- Display XUI Names as Tooltips
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display XUI Names as Tooltips
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
SitBtnState
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
SkinFolder
-
- Comment
- The skin folder to use.
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ The skin folder to use.
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
SkyAmbientScale
-
- Comment
- Controls strength of ambient, or non-directional light from the sun and moon (fraction or multiple of default ambient level)
- Persist
- 1
- Type
- F32
- Value
- 0.300000011920928955078125
-
+
+ Comment
+ Controls strength of ambient, or non-directional light from the sun and moon (fraction or multiple of default ambient level)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.300000011921
+
+ SkyEditPresets
+
+ Comment
+ Whether to be able to edit the sky defaults or not
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
SkyNightColorShift
-
- Comment
- Controls moonlight color (base color applied to moon as light source)
- Persist
- 1
- Type
- Color3
- Value
-
- 0.699999988079071044921875
- 0.699999988079071044921875
- 1
-
-
+
+ Comment
+ Controls moonlight color (base color applied to moon as light source)
+ Persist
+ 1
+ Type
+ Color3
+ Value
+
+ 0.699999988079
+ 0.699999988079
+ 1.0
+
+
SkyOverrideSimSunPosition
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 0
+
SkySunDefaultPosition
-
- Comment
- Default position of sun in sky (direction in world coordinates)
- Persist
- 1
- Type
- Vector3
- Value
-
- 1
- 0
- 0.1
-
-
- SkyUseClassicClouds
-
- Comment
- Whether to use the old Second Life particle clouds or not
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Default position of sun in sky (direction in world coordinates)
+ Persist
+ 1
+ Type
+ Vector3
+ Value
+
+ 1.0
+ 0.0
+ 0.1
+
+
+ SkyUseClassicClouds
+
+ Comment
+ Whether to use the old Second Life particle clouds or not
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
SlideLeftBtnRect
-
- Comment
-
- Persist
- 0
- Type
- Rect
- Value
-
- 20
- 54
- 45
- 29
-
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Rect
+ Value
+
+ 20
+ 54
+ 45
+ 29
+
+
SlideRightBtnRect
-
- Comment
-
- Persist
- 0
- Type
- Rect
- Value
-
- 66
- 54
- 91
- 29
-
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Rect
+ Value
+
+ 66
+ 54
+ 91
+ 29
+
+
SmallAvatarNames
-
- Comment
- Display avatar name text in smaller font
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Display avatar name text in smaller font
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
SnapEnabled
-
- Comment
- Enable snapping to grid
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enable snapping to grid
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
SnapMargin
-
- Comment
- Controls maximum distance between windows before they auto-snap together (pixels)
- Persist
- 1
- Type
- S32
- Value
- 10
-
+
+ Comment
+ Controls maximum distance between windows before they auto-snap together (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 10
+
SnapToMouseCursor
-
- Comment
- When snapping to grid, center object on nearest grid point to mouse cursor
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ When snapping to grid, center object on nearest grid point to mouse cursor
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
SnapshotLocalLastResolution
-
- Comment
- Take next local snapshot at this resolution
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Take next local snapshot at this resolution
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
SnapshotPostcardLastResolution
-
- Comment
- Take next postcard snapshot at this resolution
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Take next postcard snapshot at this resolution
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
SnapshotQuality
-
- Comment
- Quality setting of postcard JPEGs (0 = worst, 100 = best)
- Persist
- 1
- Type
- S32
- Value
- 75
-
+
+ Comment
+ Quality setting of postcard JPEGs (0 = worst, 100 = best)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 75
+
SnapshotTextureLastResolution
-
- Comment
- Take next texture snapshot at this resolution
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Take next texture snapshot at this resolution
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
SpeakingColor
-
- Comment
- Color of various indicators when resident is speaking on a voice channel.
- Persist
- 1
- Type
- Color4
- Value
-
- 0
- 1
- 0
- 1
-
-
+
+ Comment
+ Color of various indicators when resident is speaking on a voice channel.
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.0
+ 1.0
+ 0.0
+ 1.0
+
+
SpeedTest
-
- Comment
- Performance testing mode, no network
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Performance testing mode, no network
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
StatsAutoRun
-
- Comment
- Play back autopilot
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Play back autopilot
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
StatsFile
-
- Comment
- Filename for stats logging output
- Persist
- 1
- Type
- String
- Value
- fs.txt
-
+
+ Comment
+ Filename for stats logging output
+ Persist
+ 1
+ Type
+ String
+ Value
+ fs.txt
+
StatsNumRuns
-
- Comment
- Loop autopilot playback this number of times
- Persist
- 1
- Type
- S32
- Value
- -1
-
+
+ Comment
+ Loop autopilot playback this number of times
+ Persist
+ 1
+ Type
+ S32
+ Value
+ -1
+
StatsPilotFile
-
- Comment
- Filename for stats logging autopilot path
- Persist
- 1
- Type
- String
- Value
- pilot.txt
-
+
+ Comment
+ Filename for stats logging autopilot path
+ Persist
+ 1
+ Type
+ String
+ Value
+ pilot.txt
+
StatsQuitAfterRuns
-
- Comment
- Quit application after this number of autopilot playback runs
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Quit application after this number of autopilot playback runs
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
StatsSessionTrackFrameStats
-
- Comment
- Track rendering and network statistics
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Track rendering and network statistics
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
StatsSummaryFile
-
- Comment
- Filename for stats logging summary
- Persist
- 1
- Type
- String
- Value
- fss.txt
-
+
+ Comment
+ Filename for stats logging summary
+ Persist
+ 1
+ Type
+ String
+ Value
+ fss.txt
+
StatusBarHeight
-
- Comment
- Height of menu/status bar at top of screen (pixels)
- Persist
- 1
- Type
- S32
- Value
- 26
-
+
+ Comment
+ Height of menu/status bar at top of screen (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 26
+
StatusBarPad
-
- Comment
- Spacing between popup buttons at bottom of screen (Stand up, Release Controls)
- Persist
- 1
- Type
- S32
- Value
- 10
-
+
+ Comment
+ Spacing between popup buttons at bottom of screen (Stand up, Release Controls)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 10
+
SystemChatColor
-
- Comment
- Color of chat messages from SL System
- Persist
- 1
- Type
- Color4
- Value
-
- 0.800000011920928955078125
- 1
- 1
- 1
-
-
+
+ Comment
+ Color of chat messages from SL System
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.800000011921
+ 1.0
+ 1.0
+ 1.0
+
+
SystemLanguage
-
- Comment
- Language indicated by system settings (for XUI)
- Persist
- 1
- Type
- String
- Value
- en-us
-
+
+ Comment
+ Language indicated by system settings (for XUI)
+ Persist
+ 1
+ Type
+ String
+ Value
+ en-us
+
TabToTextFieldsOnly
-
- Comment
- TAB key takes you to next text entry field, instead of next widget
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ TAB key takes you to next text entry field, instead of next widget
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
TerrainColorHeightRange
-
- Comment
- Altitude range over which a given terrain texture has effect (meters)
- Persist
- 1
- Type
- F32
- Value
- 60
-
+
+ Comment
+ Altitude range over which a given terrain texture has effect (meters)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 60.0
+
TerrainColorStartHeight
-
- Comment
- Starting altitude for terrain texturing (meters)
- Persist
- 1
- Type
- F32
- Value
- 20
-
+
+ Comment
+ Starting altitude for terrain texturing (meters)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 20.0
+
TextureMemory
-
- Comment
- Amount of memory to use for textures in MB (0 = autodetect)
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Amount of memory to use for textures in MB (0 = autodetect)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
TexturePickerRect
-
- Comment
- Rectangle for texture picker
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 290
- 350
- 0
-
-
+
+ Comment
+ Rectangle for texture picker
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 290
+ 350
+ 0
+
+
TexturePickerShowFolders
-
- Comment
- Show folders with no texures in texture picker
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Show folders with no texures in texture picker
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
TexturePickerSortOrder
-
- Comment
- Specifies sort key for textures in texture picker (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)
- Persist
- 1
- Type
- U32
- Value
- 2
-
+
+ Comment
+ Specifies sort key for textures in texture picker (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 2
+
ThirdPersonBtnState
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 1
+
ThrottleBandwidthKBPS
-
- Comment
- Maximum allowable downstream bandwidth (kilo bits per second)
- Persist
- 1
- Type
- F32
- Value
- 500
-
+
+ Comment
+ Maximum allowable downstream bandwidth (kilo bits per second)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 500.0
+
ToolHelpRect
-
- Comment
-
- Persist
- 0
- Type
- Rect
- Value
-
- 8
- 178
- 75
- 162
-
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Rect
+ Value
+
+ 8
+ 178
+ 75
+ 162
+
+
ToolTipDelay
-
- Comment
- Seconds before displaying tooltip when mouse stops over UI element
- Persist
- 1
- Type
- F32
- Value
- 0.699999988079071044921875
-
+
+ Comment
+ Seconds before displaying tooltip when mouse stops over UI element
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.699999988079
+
ToolboxAutoMove
-
- Comment
- [NOT USED]
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ [NOT USED]
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ToolboxRect
-
- Comment
- Rectangle for tools window
- Persist
- 1
- Type
- Rect
- Value
-
- 0
- 100
- 100
- 100
-
-
+
+ Comment
+ Rectangle for tools window
+ Persist
+ 1
+ Type
+ Rect
+ Value
+
+ 0
+ 100
+ 100
+ 100
+
+
ToolboxShowMore
-
- Comment
- Whether to show additional build tool controls
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Whether to show additional build tool controls
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
TrackFocusObject
-
- Comment
- Camera tracks last object zoomed on
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Camera tracks last object zoomed on
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
TurnLeftBtnRect
-
- Comment
-
- Persist
- 0
- Type
- Rect
- Value
-
- 20
- 29
- 45
- 4
-
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Rect
+ Value
+
+ 20
+ 29
+ 45
+ 4
+
+
TurnRightBtnRect
-
- Comment
-
- Persist
- 0
- Type
- Rect
- Value
-
- 66
- 29
- 91
- 4
-
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Rect
+ Value
+
+ 66
+ 29
+ 91
+ 4
+
+
TypeAheadTimeout
-
- Comment
- Time delay before clearing type-ahead buffer in lists (seconds)
- Persist
- 1
- Type
- F32
- Value
- 1.5
-
+
+ Comment
+ Time delay before clearing type-ahead buffer in lists (seconds)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.5
+
UIAutoScale
-
- Comment
- Keep UI scale consistent across different resolutions
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Keep UI scale consistent across different resolutions
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
UIFloaterTestBool
-
- Comment
- Example saved setting for the test floater
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Example saved setting for the test floater
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UIImgBtnCloseActiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
+
UIImgBtnCloseInactiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 779e4fa3-9b13-f74a-fba9-3886fe9c86ba
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 779e4fa3-9b13-f74a-fba9-3886fe9c86ba
+
UIImgBtnClosePressedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- e5821134-23c0-4bd0-af06-7fa95b9fb01a
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ e5821134-23c0-4bd0-af06-7fa95b9fb01a
+
UIImgBtnForwardInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 54197a61-f5d1-4c29-95d2-c071d08849cb
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 54197a61-f5d1-4c29-95d2-c071d08849cb
+
UIImgBtnForwardOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- a0eb4021-1b20-4a53-892d-8faa9265a6f5
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ a0eb4021-1b20-4a53-892d-8faa9265a6f5
+
UIImgBtnJumpLeftInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1
+
UIImgBtnJumpLeftOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 3c18c87e-5f50-14e2-e744-f44734aa365f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 3c18c87e-5f50-14e2-e744-f44734aa365f
+
UIImgBtnJumpRightInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 7dabc040-ec13-2309-ddf7-4f161f6de2f4
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 7dabc040-ec13-2309-ddf7-4f161f6de2f4
+
UIImgBtnJumpRightOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- ff9a71eb-7414-4cf8-866e-a701deb7c3cf
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ ff9a71eb-7414-4cf8-866e-a701deb7c3cf
+
UIImgBtnLeftInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 95463c78-aaa6-464d-892d-3a805b6bb7bf
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 95463c78-aaa6-464d-892d-3a805b6bb7bf
+
UIImgBtnLeftOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 13a93910-6b44-45eb-ad3a-4d1324c59bac
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 13a93910-6b44-45eb-ad3a-4d1324c59bac
+
UIImgBtnMinimizeActiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 34c9398d-bb78-4643-9633-46a2fa3e9637
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 34c9398d-bb78-4643-9633-46a2fa3e9637
+
UIImgBtnMinimizeInactiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 6e72abba-1378-437f-bf7a-f0c15f3e99a3
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 6e72abba-1378-437f-bf7a-f0c15f3e99a3
+
UIImgBtnMinimizePressedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 39801651-26cb-4926-af57-7af9352c273c
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 39801651-26cb-4926-af57-7af9352c273c
+
UIImgBtnMoveDownInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- b92a70b9-c841-4c94-b4b3-cee9eb460d48
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ b92a70b9-c841-4c94-b4b3-cee9eb460d48
+
UIImgBtnMoveDownOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- b5abc9fa-9e62-4e03-bc33-82c4c1b6b689
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ b5abc9fa-9e62-4e03-bc33-82c4c1b6b689
+
UIImgBtnMoveUpInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 49b4b357-e430-4b56-b9e0-05b8759c3c82
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 49b4b357-e430-4b56-b9e0-05b8759c3c82
+
UIImgBtnMoveUpOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- f887146d-829f-4e39-9211-cf872b78f97c
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ f887146d-829f-4e39-9211-cf872b78f97c
+
UIImgBtnPanDownInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- e5821134-23c0-4bd0-af06-7fa95b9fb01a
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ e5821134-23c0-4bd0-af06-7fa95b9fb01a
+
UIImgBtnPanDownOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
+
UIImgBtnPanLeftInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- e5821134-23c0-4bd0-af06-7fa95b9fb01a
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ e5821134-23c0-4bd0-af06-7fa95b9fb01a
+
UIImgBtnPanLeftOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
+
UIImgBtnPanRightInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- e5821134-23c0-4bd0-af06-7fa95b9fb01a
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ e5821134-23c0-4bd0-af06-7fa95b9fb01a
+
UIImgBtnPanRightOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
+
UIImgBtnPanUpInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- e5821134-23c0-4bd0-af06-7fa95b9fb01a
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ e5821134-23c0-4bd0-af06-7fa95b9fb01a
+
UIImgBtnPanUpOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 47a8c844-cd2a-4b1a-be01-df8b1612fe5d
+
UIImgBtnRestoreActiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 111b39de-8928-4690-b7b2-e17d5c960277
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 111b39de-8928-4690-b7b2-e17d5c960277
+
UIImgBtnRestoreInactiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 0eafa471-70af-4882-b8c1-40a310929744
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 0eafa471-70af-4882-b8c1-40a310929744
+
UIImgBtnRestorePressedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 90a0ed5c-2e7b-4845-9958-a64a1b30f312
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 90a0ed5c-2e7b-4845-9958-a64a1b30f312
+
UIImgBtnRightInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5e616d0d-4335-476f-9977-560bccd009da
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5e616d0d-4335-476f-9977-560bccd009da
+
UIImgBtnRightOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5a44fd04-f52b-4c30-8b00-4a31e27614bd
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5a44fd04-f52b-4c30-8b00-4a31e27614bd
+
UIImgBtnScrollDownInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- d2421bab-2eaf-4863-b8f6-5e4c52519247
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ d2421bab-2eaf-4863-b8f6-5e4c52519247
+
UIImgBtnScrollDownOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- b4ecdecf-5c8d-44e7-b882-17a77e88ed55
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ b4ecdecf-5c8d-44e7-b882-17a77e88ed55
+
UIImgBtnScrollLeftInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- ea137a32-6718-4d05-9c22-7d570d27b2cd
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ ea137a32-6718-4d05-9c22-7d570d27b2cd
+
UIImgBtnScrollLeftOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 43773e8d-49aa-48e0-80f3-a04715f4677a
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 43773e8d-49aa-48e0-80f3-a04715f4677a
+
UIImgBtnScrollRightInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- b749de64-e903-4c3c-ac0b-25fb6fa39cb5
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ b749de64-e903-4c3c-ac0b-25fb6fa39cb5
+
UIImgBtnScrollRightOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 3d700d19-e708-465d-87f2-46c8c0ee7938
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 3d700d19-e708-465d-87f2-46c8c0ee7938
+
UIImgBtnScrollUpInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- a93abdf3-27b5-4e22-a8fa-c48216cd2e3a
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ a93abdf3-27b5-4e22-a8fa-c48216cd2e3a
+
UIImgBtnScrollUpOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- dad084d7-9a46-452a-b0ff-4b9f1cefdde9
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ dad084d7-9a46-452a-b0ff-4b9f1cefdde9
+
UIImgBtnSlideLeftInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 724996f5-b956-46f6-9844-4fcfce1d5e83
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 724996f5-b956-46f6-9844-4fcfce1d5e83
+
UIImgBtnSlideLeftOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 82476321-0374-4c26-9567-521535ab4cd7
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 82476321-0374-4c26-9567-521535ab4cd7
+
UIImgBtnSlideRightInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 7eeb57d2-3f37-454d-a729-8b217b8be443
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 7eeb57d2-3f37-454d-a729-8b217b8be443
+
UIImgBtnSlideRightOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 1fbe4e60-0607-44d1-a50a-032eff56ae75
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 1fbe4e60-0607-44d1-a50a-032eff56ae75
+
UIImgBtnSpinDownInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- a985ac71-052f-48e6-9c33-d931c813ac92
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ a985ac71-052f-48e6-9c33-d931c813ac92
+
UIImgBtnSpinDownOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- b6d240dd-5602-426f-b606-bbb49a30726d
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ b6d240dd-5602-426f-b606-bbb49a30726d
+
UIImgBtnSpinUpInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- c8450082-96a0-4319-8090-d3ff900b4954
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ c8450082-96a0-4319-8090-d3ff900b4954
+
UIImgBtnSpinUpOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 56576e6e-6710-4e66-89f9-471b59122794
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 56576e6e-6710-4e66-89f9-471b59122794
+
UIImgBtnTabBottomInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- c001d8fd-a869-4b6f-86a1-fdcb106df9c7
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ c001d8fd-a869-4b6f-86a1-fdcb106df9c7
+
UIImgBtnTabBottomOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- bf0a8779-689b-48c3-bb9a-6af546366ef4
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ bf0a8779-689b-48c3-bb9a-6af546366ef4
+
UIImgBtnTabBottomPartialInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- eb0b0904-8c91-4f24-b500-1180b91140de
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ eb0b0904-8c91-4f24-b500-1180b91140de
+
UIImgBtnTabBottomPartialOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 8dca716c-b29c-403a-9886-91c028357d6e
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 8dca716c-b29c-403a-9886-91c028357d6e
+
UIImgBtnTabTopInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 16d032e8-817b-4368-8a4e-b7b947ae3889
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 16d032e8-817b-4368-8a4e-b7b947ae3889
+
UIImgBtnTabTopOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 1ed83f57-41cf-4052-a3b4-2e8bb78d8191
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 1ed83f57-41cf-4052-a3b4-2e8bb78d8191
+
UIImgBtnTabTopPartialInUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 7c6c6c26-0e25-4438-89bd-30d8b8e9d704
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 7c6c6c26-0e25-4438-89bd-30d8b8e9d704
+
UIImgBtnTabTopPartialOutUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 932ad585-0e45-4a57-aa23-4cf81beeb7b0
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 932ad585-0e45-4a57-aa23-4cf81beeb7b0
+
UIImgBtnTearOffActiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 74e1a96f-4833-a24d-a1bb-1bce1468b0e7
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 74e1a96f-4833-a24d-a1bb-1bce1468b0e7
+
UIImgBtnTearOffInactiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 74e1a96f-4833-a24d-a1bb-1bce1468b0e7
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 74e1a96f-4833-a24d-a1bb-1bce1468b0e7
+
UIImgBtnTearOffPressedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- d2524c13-4ba6-af7c-e305-8ac6cc18d86a
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ d2524c13-4ba6-af7c-e305-8ac6cc18d86a
+
UIImgCheckboxActiveSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- cf4a2ed7-1533-4686-9dde-df9a37ddca55
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ cf4a2ed7-1533-4686-9dde-df9a37ddca55
+
UIImgCheckboxActiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 05bb64ee-96fd-4243-b74e-f40a41bc53ba
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 05bb64ee-96fd-4243-b74e-f40a41bc53ba
+
UIImgCheckboxInactiveSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- c817c642-9abd-4236-9287-ae0513fe7d2b
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ c817c642-9abd-4236-9287-ae0513fe7d2b
+
UIImgCheckboxInactiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 7d94cb59-32a2-49bf-a516-9e5a2045f9d9
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 7d94cb59-32a2-49bf-a516-9e5a2045f9d9
+
UIImgCreateSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 0098b015-3daf-4cfe-a72f-915369ea97c2
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 0098b015-3daf-4cfe-a72f-915369ea97c2
+
UIImgCreateUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b
+
UIImgCrosshairsUUID
-
- Comment
- Image to use for crosshair display (UUID texture reference)
- Persist
- 1
- Type
- String
- Value
- 6e1a3980-bf2d-4274-8970-91e60d85fb52
-
+
+ Comment
+ Image to use for crosshair display (UUID texture reference)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 6e1a3980-bf2d-4274-8970-91e60d85fb52
+
UIImgDefaultEyesUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 6522e74d-1660-4e7f-b601-6f48c1659a77
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 6522e74d-1660-4e7f-b601-6f48c1659a77
+
UIImgDefaultGlovesUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5748decc-f629-461c-9a36-a35a221fe21f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5748decc-f629-461c-9a36-a35a221fe21f
+
UIImgDefaultHairUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 7ca39b4c-bd19-4699-aff7-f93fd03d3e7b
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 7ca39b4c-bd19-4699-aff7-f93fd03d3e7b
+
UIImgDefaultJacketUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5748decc-f629-461c-9a36-a35a221fe21f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5748decc-f629-461c-9a36-a35a221fe21f
+
UIImgDefaultPantsUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5748decc-f629-461c-9a36-a35a221fe21f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5748decc-f629-461c-9a36-a35a221fe21f
+
UIImgDefaultShirtUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5748decc-f629-461c-9a36-a35a221fe21f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5748decc-f629-461c-9a36-a35a221fe21f
+
UIImgDefaultShoesUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5748decc-f629-461c-9a36-a35a221fe21f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5748decc-f629-461c-9a36-a35a221fe21f
+
UIImgDefaultSkirtUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5748decc-f629-461c-9a36-a35a221fe21f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5748decc-f629-461c-9a36-a35a221fe21f
+
UIImgDefaultSocksUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5748decc-f629-461c-9a36-a35a221fe21f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5748decc-f629-461c-9a36-a35a221fe21f
+
UIImgDefaultUnderwearUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5748decc-f629-461c-9a36-a35a221fe21f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5748decc-f629-461c-9a36-a35a221fe21f
+
UIImgDirectionArrowUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 586383e8-4d9b-4fba-9196-2b5938e79c2c
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 586383e8-4d9b-4fba-9196-2b5938e79c2c
+
UIImgFaceSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- b4870163-6208-42a9-9801-93133bf9a6cd
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ b4870163-6208-42a9-9801-93133bf9a6cd
+
UIImgFaceUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- ce15fd63-b0b6-463c-a37d-ea6393208b3e
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ ce15fd63-b0b6-463c-a37d-ea6393208b3e
+
UIImgFocusSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- ab6a730e-ddfd-4982-9a32-c6de3de6d31d
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ ab6a730e-ddfd-4982-9a32-c6de3de6d31d
+
UIImgFocusUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 57bc39d1-288c-4519-aea6-6d1786a5c274
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 57bc39d1-288c-4519-aea6-6d1786a5c274
+
UIImgGrabSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- c1e21504-f136-451d-b8e9-929037812f1d
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ c1e21504-f136-451d-b8e9-929037812f1d
+
UIImgGrabUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- c63f124c-6340-4fbf-b59e-0869a44adb64
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ c63f124c-6340-4fbf-b59e-0869a44adb64
+
UIImgMoveSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 46f17c7b-8381-48c3-b628-6a406e060dd6
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 46f17c7b-8381-48c3-b628-6a406e060dd6
+
UIImgMoveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 2fa5dc06-bcdd-4e09-a426-f9f262d4fa65
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 2fa5dc06-bcdd-4e09-a426-f9f262d4fa65
+
UIImgRadioActiveSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 52f09e07-5816-4052-953c-94c6c10479b7
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 52f09e07-5816-4052-953c-94c6c10479b7
+
UIImgRadioActiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 7a1ba9b8-1047-4d1e-9cfc-bc478c80b63f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 7a1ba9b8-1047-4d1e-9cfc-bc478c80b63f
+
UIImgRadioInactiveSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 1975db39-aa29-4251-aea0-409ac09d414d
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 1975db39-aa29-4251-aea0-409ac09d414d
+
UIImgRadioInactiveUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 90688481-67ff-4af0-be69-4aa084bcad1e
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 90688481-67ff-4af0-be69-4aa084bcad1e
+
UIImgResizeBottomRightUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- e3690e25-9690-4f6c-a745-e7dcd885285a
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ e3690e25-9690-4f6c-a745-e7dcd885285a
+
UIImgRotateSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- cdfb7fde-0d13-418a-9d89-2bd91019fc95
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ cdfb7fde-0d13-418a-9d89-2bd91019fc95
+
UIImgRotateUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- c34b1eaa-aae3-4351-b082-e26c0b636779
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ c34b1eaa-aae3-4351-b082-e26c0b636779
+
UIImgScaleSelectedUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 55aa57ef-508a-47f7-8867-85d21c5a810d
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 55aa57ef-508a-47f7-8867-85d21c5a810d
+
UIImgScaleUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 88a90fef-b448-4883-9344-ecf378a60433
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 88a90fef-b448-4883-9344-ecf378a60433
+
UIImgWhiteUUID
-
- Comment
-
- Persist
- 0
- Type
- String
- Value
- 5748decc-f629-461c-9a36-a35a221fe21f
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ String
+ Value
+ 5748decc-f629-461c-9a36-a35a221fe21f
+
UIScaleFactor
-
- Comment
- Size of UI relative to default layout on 1024x768 screen
- Persist
- 1
- Type
- F32
- Value
- 1
-
+
+ Comment
+ Size of UI relative to default layout on 1024x768 screen
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 1.0
+
UISndAlert
-
- Comment
- Sound file for alerts (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- ed124764-705d-d497-167a-182cd9fa2e6c
-
+
+ Comment
+ Sound file for alerts (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ ed124764-705d-d497-167a-182cd9fa2e6c
+
UISndBadKeystroke
-
- Comment
- Sound file for invalid keystroke (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 2ca849ba-2885-4bc3-90ef-d4987a5b983a
-
+
+ Comment
+ Sound file for invalid keystroke (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 2ca849ba-2885-4bc3-90ef-d4987a5b983a
+
UISndClick
-
- Comment
- Sound file for mouse click (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 4c8c3c77-de8d-bde2-b9b8-32635e0fd4a6
-
+
+ Comment
+ Sound file for mouse click (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 4c8c3c77-de8d-bde2-b9b8-32635e0fd4a6
+
UISndClickRelease
-
- Comment
- Sound file for mouse button release (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 4c8c3c77-de8d-bde2-b9b8-32635e0fd4a6
-
+
+ Comment
+ Sound file for mouse button release (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 4c8c3c77-de8d-bde2-b9b8-32635e0fd4a6
+
UISndDebugSpamToggle
-
- Comment
- Log UI sound effects as they are played
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Log UI sound effects as they are played
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UISndHealthReductionF
-
- Comment
- Sound file for female pain (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 219c5d93-6c09-31c5-fb3f-c5fe7495c115
-
+
+ Comment
+ Sound file for female pain (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 219c5d93-6c09-31c5-fb3f-c5fe7495c115
+
UISndHealthReductionM
-
- Comment
- Sound file for male pain (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- e057c244-5768-1056-c37e-1537454eeb62
-
+
+ Comment
+ Sound file for male pain (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ e057c244-5768-1056-c37e-1537454eeb62
+
UISndHealthReductionThreshold
-
- Comment
- Amount of health reduction required to trigger "pain" sound
- Persist
- 1
- Type
- F32
- Value
- 10
-
+
+ Comment
+ Amount of health reduction required to trigger "pain" sound
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 10.0
+
UISndInvalidOp
-
- Comment
- Sound file for invalid operations (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 4174f859-0d3d-c517-c424-72923dc21f65
-
+
+ Comment
+ Sound file for invalid operations (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 4174f859-0d3d-c517-c424-72923dc21f65
+
UISndMoneyChangeDown
-
- Comment
- Sound file for L$ balance increase (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 104974e3-dfda-428b-99ee-b0d4e748d3a3
-
+
+ Comment
+ Sound file for L$ balance increase (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 104974e3-dfda-428b-99ee-b0d4e748d3a3
+
UISndMoneyChangeThreshold
-
- Comment
- Amount of change in L$ balance required to trigger "money" sound
- Persist
- 1
- Type
- F32
- Value
- 50
-
+
+ Comment
+ Amount of change in L$ balance required to trigger "money" sound
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 50.0
+
UISndMoneyChangeUp
-
- Comment
- Sound file for L$ balance decrease(uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 77a018af-098e-c037-51a6-178f05877c6f
-
+
+ Comment
+ Sound file for L$ balance decrease(uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 77a018af-098e-c037-51a6-178f05877c6f
+
UISndNewIncomingIMSession
-
- Comment
- Sound file for new instant message session(uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 67cc2844-00f3-2b3c-b991-6418d01e1bb7
-
+
+ Comment
+ Sound file for new instant message session(uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 67cc2844-00f3-2b3c-b991-6418d01e1bb7
+
UISndObjectCreate
-
- Comment
- Sound file for object creation (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- f4a0660f-5446-dea2-80b7-6482a082803c
-
+
+ Comment
+ Sound file for object creation (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ f4a0660f-5446-dea2-80b7-6482a082803c
+
UISndObjectDelete
-
- Comment
- Sound file for object deletion (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 0cb7b00a-4c10-6948-84de-a93c09af2ba9
-
+
+ Comment
+ Sound file for object deletion (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 0cb7b00a-4c10-6948-84de-a93c09af2ba9
+
UISndObjectRezIn
-
- Comment
- Sound file for rezzing objects (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 3c8fc726-1fd6-862d-fa01-16c5b2568db6
-
+
+ Comment
+ Sound file for rezzing objects (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 3c8fc726-1fd6-862d-fa01-16c5b2568db6
+
UISndObjectRezOut
-
- Comment
- Sound file for derezzing objects (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 00000000-0000-0000-0000-000000000000
-
+
+ Comment
+ Sound file for derezzing objects (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 00000000-0000-0000-0000-000000000000
+
UISndPieMenuAppear
-
- Comment
- Sound file for opening pie menu (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 8eaed61f-92ff-6485-de83-4dcc938a478e
-
+
+ Comment
+ Sound file for opening pie menu (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 8eaed61f-92ff-6485-de83-4dcc938a478e
+
UISndPieMenuHide
-
- Comment
- Sound file for closing pie menu (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 00000000-0000-0000-0000-000000000000
-
+
+ Comment
+ Sound file for closing pie menu (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 00000000-0000-0000-0000-000000000000
+
UISndPieMenuSliceHighlight0
-
- Comment
- Sound file for selecting pie menu item 0 (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- d9f73cf8-17b4-6f7a-1565-7951226c305d
-
+
+ Comment
+ Sound file for selecting pie menu item 0 (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ d9f73cf8-17b4-6f7a-1565-7951226c305d
+
UISndPieMenuSliceHighlight1
-
- Comment
- Sound file for selecting pie menu item 1 (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- f6ba9816-dcaf-f755-7b67-51b31b6233e5
-
+
+ Comment
+ Sound file for selecting pie menu item 1 (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ f6ba9816-dcaf-f755-7b67-51b31b6233e5
+
UISndPieMenuSliceHighlight2
-
- Comment
- Sound file for selecting pie menu item 2 (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 7aff2265-d05b-8b72-63c7-dbf96dc2f21f
-
+
+ Comment
+ Sound file for selecting pie menu item 2 (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 7aff2265-d05b-8b72-63c7-dbf96dc2f21f
+
UISndPieMenuSliceHighlight3
-
- Comment
- Sound file for selecting pie menu item 3 (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 09b2184e-8601-44e2-afbb-ce37434b8ba1
-
+
+ Comment
+ Sound file for selecting pie menu item 3 (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 09b2184e-8601-44e2-afbb-ce37434b8ba1
+
UISndPieMenuSliceHighlight4
-
- Comment
- Sound file for selecting pie menu item 4 (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- bbe4c7fc-7044-b05e-7b89-36924a67593c
-
+
+ Comment
+ Sound file for selecting pie menu item 4 (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ bbe4c7fc-7044-b05e-7b89-36924a67593c
+
UISndPieMenuSliceHighlight5
-
- Comment
- Sound file for selecting pie menu item 5 (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- d166039b-b4f5-c2ec-4911-c85c727b016c
-
+
+ Comment
+ Sound file for selecting pie menu item 5 (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ d166039b-b4f5-c2ec-4911-c85c727b016c
+
UISndPieMenuSliceHighlight6
-
- Comment
- Sound file for selecting pie menu item 6 (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 242af82b-43c2-9a3b-e108-3b0c7e384981
-
+
+ Comment
+ Sound file for selecting pie menu item 6 (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 242af82b-43c2-9a3b-e108-3b0c7e384981
+
UISndPieMenuSliceHighlight7
-
- Comment
- Sound file for selecting pie menu item 7 (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- c1f334fb-a5be-8fe7-22b3-29631c21cf0b
-
+
+ Comment
+ Sound file for selecting pie menu item 7 (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ c1f334fb-a5be-8fe7-22b3-29631c21cf0b
+
UISndSnapshot
-
- Comment
- Sound file for taking a snapshot (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 3d09f582-3851-c0e0-f5ba-277ac5c73fb4
-
+
+ Comment
+ Sound file for taking a snapshot (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 3d09f582-3851-c0e0-f5ba-277ac5c73fb4
+
UISndStartIM
-
- Comment
- Sound file for starting a new IM session (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- c825dfbc-9827-7e02-6507-3713d18916c1
-
+
+ Comment
+ Sound file for starting a new IM session (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ c825dfbc-9827-7e02-6507-3713d18916c1
+
UISndTeleportOut
-
- Comment
- Sound file for teleporting (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- d7a9a565-a013-2a69-797d-5332baa1a947
-
+
+ Comment
+ Sound file for teleporting (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ d7a9a565-a013-2a69-797d-5332baa1a947
+
UISndTyping
-
- Comment
- Sound file for starting to type a chat message (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 5e191c7b-8996-9ced-a177-b2ac32bfea06
-
+
+ Comment
+ Sound file for starting to type a chat message (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 5e191c7b-8996-9ced-a177-b2ac32bfea06
+
UISndWindowClose
-
- Comment
- Sound file for closing a window (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- 2c346eda-b60c-ab33-1119-b8941916a499
-
+
+ Comment
+ Sound file for closing a window (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ 2c346eda-b60c-ab33-1119-b8941916a499
+
UISndWindowOpen
-
- Comment
- Sound file for opening a window (uuid for sound asset)
- Persist
- 1
- Type
- String
- Value
- c80260ba-41fd-8a46-768a-6bf236360e3a
-
+
+ Comment
+ Sound file for opening a window (uuid for sound asset)
+ Persist
+ 1
+ Type
+ String
+ Value
+ c80260ba-41fd-8a46-768a-6bf236360e3a
+
UseAltKeyForMenus
-
- Comment
- Access menus via keyboard by tapping Alt
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Access menus via keyboard by tapping Alt
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UseChatBubbles
-
- Comment
- Show chat above avatars head in chat bubbles
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Show chat above avatars head in chat bubbles
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UseDebugLogin
-
- Comment
- Provides extra control over which grid to connect to
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Provides extra control over which grid to connect to
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UseDebugMenus
-
- Comment
- Turns on "Debug" menu
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Turns on "Debug" menu
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UseDefaultColorPicker
-
- Comment
- Use color picker supplied by operating system
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Use color picker supplied by operating system
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UseEnergy
-
- Comment
-
- Persist
- 0
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+
+ Persist
+ 0
+ Type
+ Boolean
+ Value
+ 1
+
UseExternalBrowser
-
- Comment
- Use default browser when opening web pages instead of in-world browser.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Use default browser when opening web pages instead of in-world browser.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UseFreezeFrame
-
- Comment
- Freeze time when taking snapshots.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Freeze time when taking snapshots.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UseOcclusion
-
- Comment
- Enable object culling based on occlusion (coverage) by other objects
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enable object culling based on occlusion (coverage) by other objects
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
+ UseStartScreen
+
+ Comment
+ Whether to load a start screen image or not.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
UseWebPagesOnPrims
-
- Comment
- [NOT USED]
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ [NOT USED]
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
UserConnectionPort
-
- Comment
- Port that this client transmits on.
- Persist
- 1
- Type
- U32
- Value
- 0
-
+
+ Comment
+ Port that this client transmits on.
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 0
+
UserLogFile
-
- Comment
- User specified log file name.
- Persist
- 1
- Type
- String
- Value
-
-
+
+ Comment
+ User specified log file name.
+ Persist
+ 1
+ Type
+ String
+ Value
+
+
UserLoginInfo
-
- Comment
- Users loging data.
- Persist
- 1
- Type
- LLSD
- Value
-
-
- UseStartScreen
-
- Comment
- Whether to load a start screen image or not.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Users loging data.
+ Persist
+ 1
+ Type
+ LLSD
+ Value
+
+
+
VFSOldSize
-
- Comment
- [DO NOT MODIFY] Controls resizing of local file cache
- Persist
- 1
- Type
- U32
- Value
- 0
-
+
+ Comment
+ [DO NOT MODIFY] Controls resizing of local file cache
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 0
+
VFSSalt
-
- Comment
- [DO NOT MODIFY] Controls local file caching behavior
- Persist
- 1
- Type
- U32
- Value
- 1
-
+
+ Comment
+ [DO NOT MODIFY] Controls local file caching behavior
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 1
+
VectorizeEnable
-
- Comment
- Enable general vector operations and data alignment.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Enable general vector operations and data alignment.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
VectorizePerfTest
-
- Comment
- Test SSE/vectorization performance and choose fastest version.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Test SSE/vectorization performance and choose fastest version.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
VectorizeProcessor
-
- Comment
- 0=Compiler Default, 1=SSE, 2=SSE2, autodetected
- Persist
- 0
- Type
- U32
- Value
- 0
-
+
+ Comment
+ 0=Compiler Default, 1=SSE, 2=SSE2, autodetected
+ Persist
+ 0
+ Type
+ U32
+ Value
+ 0
+
VectorizeSkin
-
- Comment
- Enable vector operations for avatar skinning.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enable vector operations for avatar skinning.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
VelocityInterpolate
-
- Comment
- Extrapolate object motion from last packet based on received velocity
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Extrapolate object motion from last packet based on received velocity
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
VerboseLogs
-
- Comment
- Display source file and line number for each log item for debugging purposes
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Display source file and line number for each log item for debugging purposes
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
VersionChannelName
-
- Comment
- Versioning Channel Name.
- Persist
- 1
- Type
- String
- Value
- Second Life Release
-
+
+ Comment
+ Versioning Channel Name.
+ Persist
+ 1
+ Type
+ String
+ Value
+ Second Life Release
+
VertexShaderEnable
-
- Comment
- Enable/disable all GLSL shaders (debug)
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Enable/disable all GLSL shaders (debug)
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
VivoxDebugLevel
-
- Comment
- Logging level to use when launching the vivox daemon
- Persist
- 1
- Type
- String
- Value
- -1
-
+
+ Comment
+ Logging level to use when launching the vivox daemon
+ Persist
+ 1
+ Type
+ String
+ Value
+ -1
+
VivoxDebugServerName
-
- Comment
- Hostname of the vivox account server to use for voice when not connected to Agni.
- Persist
- 1
- Type
- String
- Value
- bhd.vivox.com
-
+
+ Comment
+ Hostname of the vivox account server to use for voice when not connected to Agni.
+ Persist
+ 1
+ Type
+ String
+ Value
+ bhd.vivox.com
+
VoiceCallsFriendsOnly
-
- Comment
- Only accept voice calls from residents on your friends list
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Only accept voice calls from residents on your friends list
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
VoiceEarLocation
-
- Comment
- Location of the virtual ear for voice
- Persist
- 1
- Type
- S32
- Value
- 0
-
+
+ Comment
+ Location of the virtual ear for voice
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 0
+
VoiceHost
-
- Comment
- Client SLVoice host to connect to
- Persist
- 1
- Type
- String
- Value
- 127.0.0.1
-
+
+ Comment
+ Client SLVoice host to connect to
+ Persist
+ 1
+ Type
+ String
+ Value
+ 127.0.0.1
+
VoiceImageLevel0
-
- Comment
- Texture UUID for voice image level 0
- Persist
- 1
- Type
- String
- Value
- 041ee5a0-cb6a-9ac5-6e49-41e9320507d5
-
+
+ Comment
+ Texture UUID for voice image level 0
+ Persist
+ 1
+ Type
+ String
+ Value
+ 041ee5a0-cb6a-9ac5-6e49-41e9320507d5
+
VoiceImageLevel1
-
- Comment
- Texture UUID for voice image level 1
- Persist
- 1
- Type
- String
- Value
- 29de489d-0491-fb00-7dab-f9e686d31e83
-
+
+ Comment
+ Texture UUID for voice image level 1
+ Persist
+ 1
+ Type
+ String
+ Value
+ 29de489d-0491-fb00-7dab-f9e686d31e83
+
VoiceImageLevel2
-
- Comment
- Texture UUID for voice image level 2
- Persist
- 1
- Type
- String
- Value
- 29de489d-0491-fb00-7dab-f9e686d31e83
-
+
+ Comment
+ Texture UUID for voice image level 2
+ Persist
+ 1
+ Type
+ String
+ Value
+ 29de489d-0491-fb00-7dab-f9e686d31e83
+
VoiceImageLevel3
-
- Comment
- Texture UUID for voice image level 3
- Persist
- 1
- Type
- String
- Value
- 29de489d-0491-fb00-7dab-f9e686d31e83
-
+
+ Comment
+ Texture UUID for voice image level 3
+ Persist
+ 1
+ Type
+ String
+ Value
+ 29de489d-0491-fb00-7dab-f9e686d31e83
+
VoiceImageLevel4
-
- Comment
- Texture UUID for voice image level 4
- Persist
- 1
- Type
- String
- Value
- 29de489d-0491-fb00-7dab-f9e686d31e83
-
+
+ Comment
+ Texture UUID for voice image level 4
+ Persist
+ 1
+ Type
+ String
+ Value
+ 29de489d-0491-fb00-7dab-f9e686d31e83
+
VoiceImageLevel5
-
- Comment
- Texture UUID for voice image level 5
- Persist
- 1
- Type
- String
- Value
- 29de489d-0491-fb00-7dab-f9e686d31e83
-
+
+ Comment
+ Texture UUID for voice image level 5
+ Persist
+ 1
+ Type
+ String
+ Value
+ 29de489d-0491-fb00-7dab-f9e686d31e83
+
VoiceImageLevel6
-
- Comment
- Texture UUID for voice image level 6
- Persist
- 1
- Type
- String
- Value
- 29de489d-0491-fb00-7dab-f9e686d31e83
-
+
+ Comment
+ Texture UUID for voice image level 6
+ Persist
+ 1
+ Type
+ String
+ Value
+ 29de489d-0491-fb00-7dab-f9e686d31e83
+
VoiceInputAudioDevice
-
- Comment
- Audio input device to use for voice
- Persist
- 1
- Type
- String
- Value
- Default
-
+
+ Comment
+ Audio input device to use for voice
+ Persist
+ 1
+ Type
+ String
+ Value
+ Default
+
VoiceOutputAudioDevice
-
- Comment
- Audio output device to use for voice
- Persist
- 1
- Type
- String
- Value
- Default
-
+
+ Comment
+ Audio output device to use for voice
+ Persist
+ 1
+ Type
+ String
+ Value
+ Default
+
VoicePort
-
- Comment
- Client SLVoice port to connect to
- Persist
- 1
- Type
- U32
- Value
- 44124
-
+
+ Comment
+ Client SLVoice port to connect to
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 44124
+
+ WLSkyDetail
+
+ Comment
+ Controls vertex detail on the WindLight sky. Lower numbers will give better performance and uglier skies.
+ Persist
+ 1
+ Type
+ U32
+ Value
+ 64
+
WarnAboutBadPCI
-
- Comment
- Enables AboutBadPCI warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables AboutBadPCI warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnAboutDirectX9
-
- Comment
- Enables AboutDirectX9 warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables AboutDirectX9 warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnAboutOldGraphicsDriver
-
- Comment
- Enables AboutOldGraphicsDriver warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables AboutOldGraphicsDriver warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnAboutPCIGraphics
-
- Comment
- Enables AboutPCIGraphics warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables AboutPCIGraphics warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnBrowserLaunch
-
- Comment
- Enables BrowserLaunch warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables BrowserLaunch warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnDeedObject
-
- Comment
- Enables DeedObject warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables DeedObject warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstAppearance
-
- Comment
- Enables FirstAppearance warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- WarnFirstMedia
-
- Comment
- Enables FirstMedia warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstAppearance warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstAttach
-
- Comment
- Enables FirstAttach warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstAttach warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstBalanceDecrease
-
- Comment
- Enables FirstBalanceDecrease warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstBalanceDecrease warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstBalanceIncrease
-
- Comment
- Enables FirstBalanceIncrease warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstBalanceIncrease warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstBuild
-
- Comment
- Enables FirstBuild warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstBuild warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstDebugMenus
-
- Comment
- Enables FirstDebugMenus warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstDebugMenus warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstFlexible
-
- Comment
- Enables FirstFlexible warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstFlexible warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstGoTo
-
- Comment
- Enables FirstGoTo warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstGoTo warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstInventory
-
- Comment
- Enables FirstInventory warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstInventory warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstLeftClickNoHit
-
- Comment
- Enables FirstLeftClickNoHit warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstLeftClickNoHit warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstMap
-
- Comment
- Enables FirstMap warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstMap warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstMedia
-
- Comment
- Enables FirstMedia warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstMedia warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstOverrideKeys
-
- Comment
- Enables FirstOverrideKeys warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstOverrideKeys warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstSandbox
-
- Comment
- Enables FirstSandbox warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstSandbox warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstSculptedPrim
-
- Comment
- Enables FirstSculptedPrim warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstSculptedPrim warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstSit
-
- Comment
- Enables FirstSit warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstSit warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstStreamingMusic
-
- Comment
- Enables FirstStreamingMusic warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstStreamingMusic warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstStreamingVideo
-
- Comment
- Enables FirstStreamingVideo warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstStreamingVideo warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstTeleport
-
- Comment
- Enables FirstTeleport warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstTeleport warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnFirstVoice
-
- Comment
- Enables FirstVoice warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables FirstVoice warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnNewClassified
-
- Comment
- Enables NewClassified warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables NewClassified warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnQuickTimeInstalled
-
- Comment
- Enables QuickTimeInstalled warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables QuickTimeInstalled warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WarnReturnToOwner
-
- Comment
- Enables ReturnToOwner warning dialog
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- WindLightUseAtmosShaders
-
- Comment
- Whether to enable or disable WindLight atmospheric shaders.
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Enables ReturnToOwner warning dialog
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
+ WatchdogEnabled
+
+ Comment
+ Controls whether the thread watchdog timer is activated.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
+ WaterEditPresets
+
+ Comment
+ Whether to be able to edit the water defaults or not
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
+ WaterGLFogDensityScale
+
+ Comment
+ Maps shader water fog density to gl fog density
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.02
+
+ WaterGLFogDepthFloor
+
+ Comment
+ Controls how dark water gl fog can get
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.25
+
+ WaterGLFogDepthScale
+
+ Comment
+ Controls how quickly gl fog gets dark under water
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 50.0
+
+ WindLightUseAtmosShaders
+
+ Comment
+ Whether to enable or disable WindLight atmospheric shaders.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WindowHeight
-
- Comment
- SL viewer window height
- Persist
- 1
- Type
- S32
- Value
- 700
-
+
+ Comment
+ SL viewer window height
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 700
+
WindowMaximized
-
- Comment
- SL viewer window maximized on login
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ SL viewer window maximized on login
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
WindowWidth
-
- Comment
- SL viewer window width
- Persist
- 1
- Type
- S32
- Value
- 1000
-
+
+ Comment
+ SL viewer window width
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 1000
+
WindowX
-
- Comment
- X coordinate of lower left corner of SL viewer window, relative to primary display (pixels)
- Persist
- 1
- Type
- S32
- Value
- 10
-
+
+ Comment
+ X coordinate of lower left corner of SL viewer window, relative to primary display (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 10
+
WindowY
-
- Comment
- Y coordinate of lower left corner of SL viewer window, relative to primary display (pixels)
- Persist
- 1
- Type
- S32
- Value
- 10
-
- WLSkyDetail
-
- Comment
- Controls vertex detail on the WindLight sky. Lower numbers will give better performance and uglier skies.
- Persist
- 1
- Type
- U32
- Value
- 64
-
+
+ Comment
+ Y coordinate of lower left corner of SL viewer window, relative to primary display (pixels)
+ Persist
+ 1
+ Type
+ S32
+ Value
+ 10
+
XferThrottle
-
- Comment
- Maximum allowable downstream bandwidth for asset transfers (bits per second)
- Persist
- 1
- Type
- F32
- Value
- 150000
-
+
+ Comment
+ Maximum allowable downstream bandwidth for asset transfers (bits per second)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 150000.0
+
YawFromMousePosition
-
- Comment
- Horizontal range over which avatar head tracks mouse position (degrees of head rotation from left of window to right)
- Persist
- 1
- Type
- F32
- Value
- 90
-
+
+ Comment
+ Horizontal range over which avatar head tracks mouse position (degrees of head rotation from left of window to right)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 90.0
+
YieldTime
-
- Comment
- Yield some time to the local host.
- Persist
- 1
- Type
- S32
- Value
- -1
-
+
+ Comment
+ Yield some time to the local host.
+ Persist
+ 1
+ Type
+ S32
+ Value
+ -1
+
+ ZoomDirect
+
+ Comment
+ Map Joystick zoom axis directly to camera zoom.
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
ZoomTime
-
- Comment
- Time of transition between different camera modes (seconds)
- Persist
- 1
- Type
- F32
- Value
- 0.4000000059604644775390625
-
+
+ Comment
+ Time of transition between different camera modes (seconds)
+ Persist
+ 1
+ Type
+ F32
+ Value
+ 0.40000000596
+
llOwnerSayChatColor
-
- Comment
- Color of chat messages from objects only visible to the owner
- Persist
- 1
- Type
- Color4
- Value
-
- 0.9900000095367431640625
- 0.9900000095367431640625
- 0.689999997615814208984375
- 1
-
-
- ParcelMediaAutoPlayEnable
-
- Comment
- Auto play parcel media when available
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Color of chat messages from objects only visible to the owner
+ Persist
+ 1
+ Type
+ Color4
+ Value
+
+ 0.990000009537
+ 0.990000009537
+ 0.689999997616
+ 1.0
+
+
particlesbeacon
-
- Comment
- Beacon / Highlight particle generators
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Beacon / Highlight particle generators
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
physicalbeacon
-
- Comment
- Beacon / Highlight physical objects
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Beacon / Highlight physical objects
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
renderbeacons
-
- Comment
- Beacon / Highlight particle generators
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Beacon / Highlight particle generators
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
renderhighlights
-
- Comment
- Beacon / Highlight scripted objects with touch function
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Beacon / Highlight scripted objects with touch function
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
scriptsbeacon
-
- Comment
- Beacon / Highlight scripted objects
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
+
+ Comment
+ Beacon / Highlight scripted objects
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
scripttouchbeacon
-
- Comment
- Beacon / Highlight scripted objects with touch function
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
+
+ Comment
+ Beacon / Highlight scripted objects with touch function
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 1
+
soundsbeacon
-
- Comment
- Beacon / Highlight sound generators
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- SkyEditPresets
-
- Comment
- Whether to be able to edit the sky defaults or not
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- WaterGLFogDepthFloor
-
- Comment
- Controls how dark water gl fog can get
- Persist
- 1
- Type
- F32
- Value
- 0.25
-
- WaterGLFogDepthScale
-
- Comment
- Controls how quickly gl fog gets dark under water
- Persist
- 1
- Type
- F32
- Value
- 50.0
-
- WaterGLFogDensityScale
-
- Comment
- Maps shader water fog density to gl fog density
- Persist
- 1
- Type
- F32
- Value
- 0.02
-
- EnableRippleWater
-
- Comment
- Whether to use ripple water shader or not
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- WaterEditPresets
-
- Comment
- Whether to be able to edit the water defaults or not
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- FloaterEnvRect
-
- Comment
- Rectangle for Environment Editor
- Persist
- 1
- Type
- Rect
- Value
-
- 50
- 150
- 650
- 0
-
-
- FloaterAdvancedSkyRect
-
- Comment
- Rectangle for Advanced Sky Editor
- Persist
- 1
- Type
- Rect
- Value
-
- 50
- 220
- 450
- 0
-
-
- FloaterDayCycleRect
-
- Comment
- Rectangle for Day Cycle Editor
- Persist
- 1
- Type
- Rect
- Value
-
- 50
- 450
- 300
- 0
-
-
- FloaterAdvancedWaterRect
-
- Comment
- Rectangle for Advanced Water Editor
- Persist
- 1
- Type
- Rect
- Value
-
- 50
- 220
- 450
- 0
-
-
- RenderFastAlpha
-
- Comment
- Use lossy alpha rendering optimization (opaque/nonexistent small alpha faces).
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- RenderDeferred
-
- Comment
- Use deferred rendering pipeline.
- Persist
- 1
- Type
- Boolean
- Value
- 0
-
- RenderFSAASamples
-
- Comment
- Number of samples to use for FSAA (0 = no AA).
- Persist
- 1
- Type
- U32
- Value
- 0
-
- RenderTextureMemoryMultiple
-
- Comment
- Multiple of texture memory value to use (should fit: 0 < value <= 1.0)
- Persist
- 1
- Type
- F32
- Value
- 1.0
-
- Disregard128DefaultDrawDistance
-
- Comment
- Whether to use the auto default to 128 draw distance
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
- Disregard96DefaultDrawDistance
-
- Comment
- Whether to use the auto default to 96 draw distance
- Persist
- 1
- Type
- Boolean
- Value
- 1
-
-
- AvatarAxisDeadZone0
-
- Comment
- Avatar axis 0 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- AvatarAxisDeadZone1
-
- Comment
- Avatar axis 1 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- AvatarAxisDeadZone2
-
- Comment
- Avatar axis 2 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- AvatarAxisDeadZone3
-
- Comment
- Avatar axis 3 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- AvatarAxisDeadZone4
-
- Comment
- Avatar axis 4 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- AvatarAxisDeadZone5
-
- Comment
- Avatar axis 5 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- AvatarAxisScale0
-
- Comment
- Avatar axis 0 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- AvatarAxisScale1
-
- Comment
- Avatar axis 1 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- AvatarAxisScale2
-
- Comment
- Avatar axis 2 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- AvatarAxisScale3
-
- Comment
- Avatar axis 3 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- AvatarAxisScale4
-
- Comment
- Avatar axis 4 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- AvatarAxisScale5
-
- Comment
- Avatar axis 5 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- AvatarFeathering
-
- Comment
- Avatar feathering (less is softer)
- Persist
- 1
- Type
- F32
- Value
- 16
-
-
- BuildAxisDeadZone0
-
- Comment
- Build axis 0 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- BuildAxisDeadZone1
-
- Comment
- Build axis 1 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- BuildAxisDeadZone2
-
- Comment
- Build axis 2 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- BuildAxisDeadZone3
-
- Comment
- Build axis 3 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- BuildAxisDeadZone4
-
- Comment
- Build axis 4 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- BuildAxisDeadZone5
-
- Comment
- Build axis 5 dead zone.
- Persist
- 1
- Type
- F32
- Value
- 0.1
-
- BuildAxisScale0
-
- Comment
- Build axis 0 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- BuildAxisScale1
-
- Comment
- Build axis 1 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- BuildAxisScale2
-
- Comment
- Build axis 2 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- BuildAxisScale3
-
- Comment
- Build axis 3 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- BuildAxisScale4
-
- Comment
- Build axis 4 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- BuildAxisScale5
-
- Comment
- Build axis 5 scaler.
- Persist
- 1
- Type
- F32
- Value
- 1
-
- BuildFeathering
-
- Comment
- Build feathering (less is softer)
- Persist
- 1
- Type
- F32
- Value
- 16
-
-
+
+ Comment
+ Beacon / Highlight sound generators
+ Persist
+ 1
+ Type
+ Boolean
+ Value
+ 0
+
diff --git a/linden/indra/newview/app_settings/skinned_avatar.vp b/linden/indra/newview/app_settings/skinned_avatar.vp
deleted file mode 100644
index a4adbd5..0000000
--- a/linden/indra/newview/app_settings/skinned_avatar.vp
+++ /dev/null
@@ -1,146 +0,0 @@
-!!ARBvp1.0
-# Vertex Program for lit, skinned avatars
-
-# Parameters
-PARAM mat[45] = { program.env[0..44] };
-PARAM embossScale = program.env[63];
-PARAM proj[4] = { state.matrix.projection };
-PARAM modelAmbient = state.lightmodel.ambient;
-PARAM materialDiffuse = state.material.diffuse;
-PARAM lightDir0 = state.light[0].position;
-PARAM diffuseCol0 = state.light[0].diffuse;
-PARAM lightDir1 = state.light[1].position;
-PARAM diffuseCol1 = state.light[1].diffuse;
-PARAM lightPos2 = state.light[2].position;
-PARAM diffuseCol2 = state.light[2].diffuse;
-PARAM lightPos3 = state.light[3].position;
-PARAM diffuseCol3 = state.light[3].diffuse;
-
-# Per vertex inputs
-ATTRIB iPos = vertex.position;
-ATTRIB iNormal = vertex.normal;
-ATTRIB iTex0 = vertex.texcoord[0];
-ATTRIB iTex1 = vertex.texcoord[1];
-ATTRIB iWeight = vertex.attrib[1];
-ATTRIB iBinormal = vertex.attrib[6];
-
-# Temporaries
-TEMP blendBinorm; # result of skinned binormal
-TEMP blendTangent; # result of skinned tangent
-TEMP blendMat;
-TEMP blendPos; # skinned vertex pos
-TEMP dots; # dot product for lighting calculations
-TEMP blendNorm; # skinned normal
-TEMP colorAcc; # color accumulator
-
-ALIAS scaledWeight = colorAcc;
-ALIAS divisor = blendMat; # divisor for normalization process
-ALIAS lightDir = blendBinorm;
-
-ADDRESS address;
-
-# Outputs
-OUTPUT oPos = result.position; #position
-OUTPUT oCol0 = result.color; #primary color
-OUTPUT oTex0 = result.texcoord[0]; #texture coordinate set 0
-OUTPUT oTex1 = result.texcoord[1]; #texture coordinate set 1
-OUTPUT oFog = result.fogcoord; #output fog coord
-
-#fix input blending weight
-ARL address.x, iWeight.x;
-FRC scaledWeight.x, iWeight;
-
-#Output position and normal
-MUL dots, mat[address.x + 1], {1,1,1,1};
-SUB blendMat, dots, mat[address.x + 0];
-MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 0];
-DP4 blendPos.x, blendMat, iPos;
-DP3 blendNorm.x, blendMat, iNormal;
-DP3 blendBinorm.x, blendMat, iBinormal;
-
-MUL dots, mat[address.x + 16], {1,1,1,1};
-SUB blendMat, dots, mat[address.x + 15];
-MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 15];
-DP4 blendPos.y, blendMat, iPos;
-DP3 blendNorm.y, blendMat, iNormal;
-DP3 blendBinorm.y, blendMat, iBinormal;
-
-MUL dots, mat[address.x + 31], {1,1,1,1};
-SUB blendMat, dots, mat[address.x + 30];
-MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 30];
-DP4 blendPos.z, blendMat, iPos;
-DP3 blendNorm.z, blendMat, iNormal;
-DP3 blendBinorm.z, blendMat, iBinormal;
-MOV blendPos.w, {0, 0, 0, 1};
-
-#renormalize normal
-#add "normal spread" effect
-ADD blendNorm, blendNorm, {0, 0, -0.4, 0};
-DP3 divisor.w, blendNorm, blendNorm;
-RSQ divisor.xyz, divisor.w;
-MUL blendNorm.xyz, blendNorm, divisor;
-
-#renormalize binormal
-DP3 divisor.w, blendBinorm, blendBinorm;
-RSQ divisor.xyz, divisor.w;
-MUL blendBinorm.xyz, blendBinorm, divisor;
-
-#Projection
-DP4 oPos.x, proj[0], blendPos;
-DP4 oPos.y, proj[1], blendPos;
-DP4 oPos.z, proj[2], blendPos;
-DP4 oPos.w, proj[3], blendPos;
-
-#tangent = binormal X normal
-XPD blendTangent, blendNorm, blendBinorm;
-
-#oTex1 = iTex0 + LLVector2( lightDir0 * tangent, lightDir0 * binormal );
-DP3 blendTangent.x, lightDir0, blendTangent;
-DP3 blendTangent.y, lightDir0, blendBinorm;
-MAD oTex1, embossScale.x, blendTangent, iTex0;
-
-#Light 0
-DP3 colorAcc.xyz, blendNorm, lightDir0;
-MAD colorAcc.xyz, colorAcc, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
-MAX colorAcc, colorAcc, {0, 0, 0, 0};
-
-# Accumulate color contributions.
-MAD colorAcc.xyz, colorAcc.x, diffuseCol0, modelAmbient;
-MOV colorAcc.w, {0, 0, 0, 1.0};
-
-#Light 1
-DP3 dots.x, blendNorm, lightDir1;
-
-#Light 2
-SUB lightDir, lightPos2, blendPos;
-DP3 divisor.w, lightDir, lightDir;
-RSQ divisor.xyz, divisor.w;
-MUL lightDir.xyz, lightDir, divisor;
-
-DP3 dots.y, blendNorm, lightDir;
-
-#Light 3
-SUB lightDir, lightPos3, blendPos;
-DP3 divisor.w, lightDir, lightDir;
-RSQ divisor.xyz, divisor.w;
-MUL lightDir.xyz, lightDir, divisor;
-
-DP3 dots.z, blendNorm, lightDir;
-
-# Apply Lights
-MAD dots, dots, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
-MAX dots, dots, {0,0,0,0};
-MAD colorAcc.xyz, dots.x, diffuseCol1, colorAcc;
-MAD colorAcc.xyz, dots.y, diffuseCol2, colorAcc;
-MAD colorAcc.xyz, dots.z, diffuseCol3, colorAcc;
-
-#Output color
-MUL oCol0, materialDiffuse, colorAcc;
-
-#Output tex coordinate
-MOV oTex0, iTex0;
-
-#Output fog
-MOV oFog.x, blendPos.z;
-
-END
diff --git a/linden/indra/newview/app_settings/skinned_avatar_hair_wind.vp b/linden/indra/newview/app_settings/skinned_avatar_hair_wind.vp
deleted file mode 100644
index 5c45118..0000000
--- a/linden/indra/newview/app_settings/skinned_avatar_hair_wind.vp
+++ /dev/null
@@ -1,179 +0,0 @@
-!!ARBvp1.0
-# Vertex Program for lit, skinned avatars
-
-# Parameters
-#PARAM gGravity = program.env[62];
-
-PARAM gMat[45] = { program.env[0..44] };
-PARAM gWindDir = program.env[60]; # wind direction with strength stored in w
-PARAM gSinWaveParams = program.env[61]; # frequency, frequency2, frequency, phase
-PARAM gMinMaxConstants = {1.0, 0.166666, 0.0083143, .00018542}; #minimax-generated coefficients
-PARAM gPiConstants = {0.159154943, 6.28318530, 3.141592653, 1.5707963}; # {1/2PI, 2PI, PI, PI/2}
-PARAM gProjection[4] = { state.matrix.projection };
-PARAM gModelAmbient = state.lightmodel.ambient;
-PARAM gMaterialDiffuse = state.material.diffuse;
-PARAM gLightDir0 = state.light[0].position;
-PARAM gDiffuseCol0 = state.light[0].diffuse;
-PARAM gLightDir1 = state.light[1].position;
-PARAM gDiffuseCol1 = state.light[1].diffuse;
-PARAM gLightPos2 = state.light[2].position;
-PARAM gDiffuseCol2 = state.light[2].diffuse;
-PARAM gLightPos3 = state.light[3].position;
-PARAM gDiffuseCol3 = state.light[3].diffuse;
-
-# Per vertex inputs
-ATTRIB iPos = vertex.position;
-ATTRIB iNormal = vertex.normal;
-ATTRIB iTex0 = vertex.texcoord;
-ATTRIB iWeight = vertex.attrib[1];
-ATTRIB iClothing = vertex.attrib[4];
-
-# Temporaries
-TEMP blendedPos; # weighted sum of tpos0 and tpos1
-TEMP blendNorm; # weighted sum of eyeNormal0 and eyeNormal1
-TEMP temp0;
-TEMP temp1; # another general purpose temp
-TEMP temp2;
-TEMP windEffect; # amount of displacement from wind
-TEMP blendMatX;
-TEMP blendMatY;
-TEMP blendMatZ;
-
-ALIAS colorAcc = temp0;
-ALIAS sinWave = temp0;
-ALIAS offsetPos = temp1;
-ALIAS dots = temp1; # dot product for lighting calculations
-ALIAS posDelta = windEffect; # movement of vertex according to joint angle
-ALIAS pivot_pos = windEffect;
-ALIAS scaledWeight = temp0;
-ALIAS divisor = temp2;
-ALIAS lightDir = windEffect;
-
-ADDRESS address;
-
-# Outputs
-OUTPUT oPos = result.position; # position
-OUTPUT oCol0 = result.color; # primary color
-OUTPUT oTex0 = result.texcoord; # texture coordinate set 0
-OUTPUT oFog = result.fogcoord; # output fog coordinates
-
-#fix input blending weight
-ARL address.x, iWeight.x;
-FRC scaledWeight.x, iWeight;
-
-# Blend joint matrices
-MUL blendMatX, gMat[address.x + 1], {1,1,1,1};
-SUB blendMatX, blendMatX, gMat[address.x + 0];
-MAD blendMatX, scaledWeight.x, blendMatX, gMat[address.x + 0];
-DP3 blendNorm.x, blendMatX, iNormal;
-
-MUL blendMatY, gMat[address.x + 16], {1,1,1,1};
-SUB blendMatY, blendMatY, gMat[address.x + 15];
-MAD blendMatY, scaledWeight.x, blendMatY, gMat[address.x + 15];
-DP3 blendNorm.y, blendMatY, iNormal;
-
-MUL blendMatZ, gMat[address.x + 31], {1,1,1,1};
-SUB blendMatZ, blendMatZ, gMat[address.x + 30];
-MAD blendMatZ, scaledWeight.x, blendMatZ, gMat[address.x + 30];
-DP3 blendNorm.z, blendMatZ, iNormal;
-
-#wind
-DP3 windEffect, blendNorm, gWindDir;
-MAD windEffect.xyz, windEffect, gSinWaveParams, gSinWaveParams.w; # use sin wave params to scale and offset input
-
-#reduce to period of 2 PI
-MUL temp1.xyz, windEffect, gPiConstants.x; # change input as multiple of [0-2PI] to [0-1]
-EXP temp0, temp1.x; # find mod(x, 1)
-MUL windEffect.x, temp0.y, gPiConstants.y; # scale from [0,1] to [0, 2PI]
-
-# offset to [-PI, PI]
-ADD windEffect.xyz, windEffect, {-3.141592, -3.141592, -3.141592, -3.141592};
-
-#calculate sinusoid
-MUL temp1, windEffect, windEffect; # x^2
-MAD sinWave, -temp1, gMinMaxConstants.w, gMinMaxConstants.z; # y = -(x^2)/7! + 1/5!
-MAD sinWave, sinWave, -temp1, gMinMaxConstants.y; # y = -(x^2) * (-(x^2)/7! + 1/5!) + 1/3!
-MAD sinWave, sinWave, -temp1, gMinMaxConstants.x; # y = -(x^2) * (-(x^2) * (-(x^2)/7! + 1/5!) + 1/3!) + 1
-MUL sinWave, sinWave, windEffect; # y = x * (-(x^2) * (-(x^2) * (-(x^2)/7! + 1/5!) + 1/3!) + 1)
-
-# sinWave.x holds sin(norm . wind_direction)+
-MUL sinWave.xyz, sinWave, gWindDir.w; # multiply by wind strength in gWindDir.w [-wind, wind]
-SUB sinWave.xyz, sinWave, {0.2, 0.2, 0.2, 0.2};
-MUL sinWave.xyz, sinWave, iClothing.w; # modulate by clothing coverage
-
-DP3 temp2.x, iClothing, iClothing;
-MAX temp2.x, temp2, {0, 0, 0, 0.2};
-MUL temp2.x, temp2.x, {3, 0, 0, 0};
-MUL sinWave.x, sinWave, temp2;
-
-#add pseudo-specular effect
-ADD blendNorm, blendNorm, {0, 0, -0.5, 0};
-
-#renormalize normal
-DP3 divisor.w, blendNorm, blendNorm;
-RSQ divisor.xyz, divisor.w;
-MUL blendNorm.xyz, blendNorm, divisor;
-
-#Output position
-DP4 blendedPos.x, blendMatX, iPos;
-DP4 blendedPos.y, blendMatY, iPos;
-DP4 blendedPos.z, blendMatZ, iPos;
-
-MUL offsetPos, gWindDir, sinWave.x; # multiply wind effect times clothing displacement
-MAD blendedPos, {-1.0, -1.0, -1.0, 0.0}, offsetPos, blendedPos; # add to offset vertex position, and zero out effect from w
-
-MOV blendedPos.w, {0, 0, 0, 1};
-
-#Projection
-DP4 oPos.x, gProjection[0], blendedPos; # projection matrix
-DP4 oPos.y, gProjection[1], blendedPos;
-DP4 oPos.z, gProjection[2], blendedPos;
-DP4 oPos.w, gProjection[3], blendedPos;
-
-#Light 0
-DP3 dots.x, blendNorm, gLightDir0;
-MAD dots.x, dots.x, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
-MAX dots, dots, {0, 0, 0, 0};
-
-# Accumulate color contributions.
-MAD temp2, dots.x, gDiffuseCol0, gModelAmbient;
-MOV colorAcc.xyz, temp2;
-
-#Light 1
-DP3 dots.x, blendNorm, gLightDir1;
-
-#Light 2
-SUB lightDir, gLightPos2, blendedPos;
-DP3 divisor.w, lightDir, lightDir;
-RSQ divisor.xyz, divisor.w;
-MUL lightDir.xyz, lightDir, divisor;
-
-DP3 dots.y, blendNorm, lightDir;
-
-#Light 3
-SUB lightDir, gLightPos3, blendedPos;
-DP3 divisor.w, lightDir, lightDir;
-RSQ divisor.xyz, divisor.w;
-MUL lightDir.xyz, lightDir, divisor;
-
-DP3 dots.z, blendNorm, lightDir;
-
-#Apply lights
-MAD dots, dots, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
-MAX dots, dots, {0, 0, 0, 0};
-MAD colorAcc.xyz, dots.x, gDiffuseCol1, colorAcc;
-MAD colorAcc.xyz, dots.y, gDiffuseCol2, colorAcc;
-MAD colorAcc.xyz, dots.z, gDiffuseCol3, colorAcc;
-
-#Output fog
-# This causes issues on ATI when fog is disabled
-MOV oFog.x, blendedPos.z;
-
-#Output color
-MOV colorAcc.w, {0, 0, 0, 1.0};
-MUL oCol0, gMaterialDiffuse, colorAcc;
-
-#Output tex coordinate
-MOV oTex0, iTex0;
-
-END
diff --git a/linden/indra/newview/app_settings/skinned_avatar_nobump.vp b/linden/indra/newview/app_settings/skinned_avatar_nobump.vp
deleted file mode 100644
index 1874e54..0000000
--- a/linden/indra/newview/app_settings/skinned_avatar_nobump.vp
+++ /dev/null
@@ -1,128 +0,0 @@
-!!ARBvp1.0
-# Vertex Program for lit, skinned avatars
-
-# Parameters
-PARAM mat[45] = { program.env[0..44] };
-PARAM proj[4] = { state.matrix.projection };
-PARAM modelAmbient = state.lightmodel.ambient;
-PARAM materialDiffuse = state.material.diffuse;
-PARAM lightDir0 = state.light[0].position;
-PARAM diffuseCol0 = state.light[0].diffuse;
-PARAM lightDir1 = state.light[1].position;
-PARAM diffuseCol1 = state.light[1].diffuse;
-PARAM lightPos2 = state.light[2].position;
-PARAM diffuseCol2 = state.light[2].diffuse;
-PARAM lightPos3 = state.light[3].position;
-PARAM diffuseCol3 = state.light[3].diffuse;
-
-# Per vertex inputs
-ATTRIB iPos = vertex.position;
-ATTRIB iNormal = vertex.normal;
-ATTRIB iTex0 = vertex.texcoord[0];
-ATTRIB iWeight = vertex.attrib[1];
-
-# Temporaries
-TEMP blendMat;
-TEMP blendPos; # skinned vertex pos
-TEMP dots; # dot product for lighting calculations
-TEMP blendNorm; # skinned normal
-TEMP colorAcc; # color accumulator
-TEMP lightDir;
-
-
-ALIAS scaledWeight = colorAcc;
-ALIAS divisor = blendMat; # divisor for normalization process
-
-ADDRESS address;
-
-# Outputs
-OUTPUT oPos = result.position; #position
-OUTPUT oCol0 = result.color; #primary color
-OUTPUT oTex0 = result.texcoord[0]; #texture coordinate set 0
-OUTPUT oFog = result.fogcoord; #output fog coord
-
-#fix input blending weight
-ARL address.x, iWeight.x;
-FRC scaledWeight.x, iWeight;
-
-#Output position and normal
-MUL dots, mat[address.x + 1], {1,1,1,1};
-SUB blendMat, dots, mat[address.x + 0];
-MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 0];
-DP4 blendPos.x, blendMat, iPos;
-DP3 blendNorm.x, blendMat, iNormal;
-
-MUL dots, mat[address.x + 16], {1,1,1,1};
-SUB blendMat, dots, mat[address.x + 15];
-MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 15];
-DP4 blendPos.y, blendMat, iPos;
-DP3 blendNorm.y, blendMat, iNormal;
-
-
-MUL dots, mat[address.x + 31], {1,1,1,1};
-SUB blendMat, dots, mat[address.x + 30];
-MAD blendMat, scaledWeight.x, blendMat, mat[address.x + 30];
-DP4 blendPos.z, blendMat, iPos;
-DP3 blendNorm.z, blendMat, iNormal;
-MOV blendPos.w, {0, 0, 0, 1};
-
-#renormalize normal
-#add "backlighting" effect
-ADD blendNorm, blendNorm, {0, 0, -0.2, 0};
-DP3 divisor.w, blendNorm, blendNorm;
-RSQ divisor.xyz, divisor.w;
-MUL blendNorm.xyz, blendNorm, divisor;
-
-
-#Projection
-DP4 oPos.x, proj[0], blendPos;
-DP4 oPos.y, proj[1], blendPos;
-DP4 oPos.z, proj[2], blendPos;
-DP4 oPos.w, proj[3], blendPos;
-
-
-#Light 0
-DP3 colorAcc.xyz, blendNorm, lightDir0;
-MAD colorAcc.xyz, colorAcc, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
-MAX colorAcc, colorAcc, {0, 0, 0, 0};
-
-# Accumulate color contributions.
-MAD colorAcc.xyz, colorAcc.x, diffuseCol0, modelAmbient;
-MOV colorAcc.w, {0, 0, 0, 1.0};
-
-#Light 1
-DP3 dots.x, blendNorm, lightDir1;
-
-#Light 2
-SUB lightDir, lightPos2, blendPos;
-DP3 divisor.w, lightDir, lightDir;
-RSQ divisor.xyz, divisor.w;
-MUL lightDir.xyz, lightDir, divisor;
-
-DP3 dots.y, blendNorm, lightDir;
-
-#Light 3
-SUB lightDir, lightPos3, blendPos;
-DP3 divisor.w, lightDir, lightDir;
-RSQ divisor.xyz, divisor.w;
-MUL lightDir.xyz, lightDir, divisor;
-
-DP3 dots.z, blendNorm, lightDir;
-
-#Apply lights
-MAD dots, dots, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
-MAX dots, dots, {0, 0, 0, 0};
-MAD colorAcc.xyz, dots.x, diffuseCol1, colorAcc;
-MAD colorAcc.xyz, dots.y, diffuseCol2, colorAcc;
-MAD colorAcc.xyz, dots.z, diffuseCol3, colorAcc;
-
-#Output color
-MUL oCol0, materialDiffuse, colorAcc;
-
-#Output tex coordinate
-MOV oTex0, iTex0;
-
-#Output fog
-MOV oFog.x, blendPos.z;
-
-END
diff --git a/linden/indra/newview/app_settings/skinned_avatar_select.vp b/linden/indra/newview/app_settings/skinned_avatar_select.vp
deleted file mode 100644
index 28506b0..0000000
--- a/linden/indra/newview/app_settings/skinned_avatar_select.vp
+++ /dev/null
@@ -1,60 +0,0 @@
-!!ARBvp1.0
-# Vertex Program for lit, skinned avatars
-
-# Parameters
-PARAM mat[45] = { program.env[0..44] };
-PARAM proj[4] = { state.matrix.projection };
-PARAM materialDiffuse = state.material.diffuse;
-
-# Per vertex inputs
-ATTRIB iPos = vertex.position;
-ATTRIB iTex0 = vertex.texcoord[0];
-ATTRIB iWeight = vertex.attrib[1];
-
-# Temporaries
-TEMP blendMat;
-TEMP blendPos; # skinned vertex pos
-TEMP childPos;
-TEMP parentPos;
-TEMP dots; # dot product for lighting calculations
-TEMP scaledWeight;
-
-ALIAS divisor = blendMat; # divisor for normalization process
-
-ADDRESS address;
-
-# Outputs
-OUTPUT oPos = result.position; #position
-OUTPUT oCol0 = result.color; #primary color
-OUTPUT oTex0 = result.texcoord[0]; #texture coordinate set 0
-
-#fix input blending weight
-ARL address.x, iWeight.x;
-FRC scaledWeight.x, iWeight;
-
-#Output position and normal
-DP4 parentPos.x, mat[address.x + 0], iPos;
-DP4 parentPos.y, mat[address.x + 15], iPos;
-DP4 parentPos.z, mat[address.x + 30], iPos;
-
-DP4 childPos.x, mat[address.x + 1], iPos;
-DP4 childPos.y, mat[address.x + 16], iPos;
-DP4 childPos.z, mat[address.x + 31], iPos;
-
-SUB blendPos, childPos, parentPos;
-MAD blendPos, scaledWeight.x, blendPos, parentPos;
-MOV blendPos.w, {0, 0, 0, 1};
-
-#Projection
-DP4 oPos.x, proj[0], blendPos;
-DP4 oPos.y, proj[1], blendPos;
-DP4 oPos.z, proj[2], blendPos;
-DP4 oPos.w, proj[3], blendPos;
-
-#Output color
-MOV oCol0, materialDiffuse;
-
-#Output tex coordinate
-MOV oTex0, iTex0;
-
-END
diff --git a/linden/indra/newview/app_settings/skinned_avatar_wind.vp b/linden/indra/newview/app_settings/skinned_avatar_wind.vp
deleted file mode 100644
index 5f40086..0000000
--- a/linden/indra/newview/app_settings/skinned_avatar_wind.vp
+++ /dev/null
@@ -1,211 +0,0 @@
-!!ARBvp1.0
-# Vertex Program for lit, skinned avatars
-
-# Parameters
-PARAM gMat[45] = { program.env[0..44] };
-PARAM gEmbossScale = program.env[63];
-PARAM gWindDir = program.env[60]; # wind direction with strength stored in w
-PARAM gSinWaveParams = program.env[61]; # frequency, frequency2, frequency, phase
-PARAM gGravity = program.env[62];
-PARAM gMinMaxConstants = {1.0, 0.166666, 0.0083143, .00018542}; #minimax-generated coefficients
-PARAM gPiConstants = {0.159154943, 6.28318530, 3.141592653, 1.5707963}; # {1/2PI, 2PI, PI, PI/2}
-PARAM gProj[4] = { state.matrix.projection };
-PARAM gModelAmbient = state.lightmodel.ambient;
-PARAM gMaterialDiffuse = state.material.diffuse;
-PARAM gLightDir0 = state.light[0].position;
-PARAM gDiffuseCol0 = state.light[0].diffuse;
-PARAM gLightDir1 = state.light[1].position;
-PARAM gDiffuseCol1 = state.light[1].diffuse;
-PARAM gLightPos2 = state.light[2].position;
-PARAM gDiffuseCol2 = state.light[2].diffuse;
-PARAM gLightPos3 = state.light[3].position;
-PARAM gDiffuseCol3 = state.light[3].diffuse;
-
-# Per vertex inputs
-ATTRIB iPos = vertex.position;
-ATTRIB iNormal = vertex.normal;
-ATTRIB iTex0 = vertex.texcoord[0];
-ATTRIB iTex1 = vertex.texcoord[1];
-ATTRIB iWeight = vertex.attrib[1];
-ATTRIB iClothing = vertex.attrib[4];
-ATTRIB iBinormal = vertex.attrib[6];
-
-# Temporaries
-TEMP blendMatX;
-TEMP blendMatY;
-TEMP blendMatZ;
-TEMP blendPos; # weighted sum of tpos0 and tpos1
-TEMP blendNorm; # weighted sum of eyeNormal0 and eyeNormal1
-TEMP blendBinorm; # result of skinned binormal
-TEMP temp0;
-TEMP temp1; # another general purpose temp
-TEMP temp2;
-
-ALIAS blendTangent = temp2; # result of skinned tangent
-
-ALIAS colorAcc = temp0;
-ALIAS offsetPos = temp1;
-ALIAS dots = temp1; # dot product for lighting calculations
-ALIAS scaledWeight = temp0; # vertex weight as decoded from input weight
-ALIAS divisor = temp2;
-ALIAS sinWave = temp0;
-ALIAS windEffect = temp2;
-ALIAS lightDir = blendMatX;
-
-ADDRESS address;
-
-# Outputs
-OUTPUT oPos = result.position; # position
-OUTPUT oCol0 = result.color; # primary color
-OUTPUT oTex0 = result.texcoord[0]; # texture coordinate set 0
-OUTPUT oTex1 = result.texcoord[1]; # texture coordinate set 1
-OUTPUT oFog = result.fogcoord; # output fog coordinates
-
-#fix input blending weight
-ARL address.x, iWeight.x;
-FRC scaledWeight.x, iWeight;
-
-# Blend joint matrices
-MUL blendMatX, gMat[address.x + 1], {1,1,1,1};
-SUB blendMatX, blendMatX, gMat[address.x + 0];
-MAD blendMatX, scaledWeight.x, blendMatX, gMat[address.x + 0];
-DP3 blendNorm.x, blendMatX, iNormal;
-DP3 blendBinorm.x, blendMatX, iBinormal;
-
-MUL blendMatY, gMat[address.x + 16], {1,1,1,1};
-SUB blendMatY, blendMatY, gMat[address.x + 15];
-MAD blendMatY, scaledWeight.x, blendMatY, gMat[address.x + 15];
-DP3 blendNorm.y, blendMatY, iNormal;
-DP3 blendBinorm.y, blendMatY, iBinormal;
-
-MUL blendMatZ, gMat[address.x + 31], {1,1,1,1};
-SUB blendMatZ, blendMatZ, gMat[address.x + 30];
-MAD blendMatZ, scaledWeight.x, blendMatZ, gMat[address.x + 30];
-DP3 blendNorm.z, blendMatZ, iNormal;
-DP3 blendBinorm.z, blendMatZ, iBinormal;
-
-#wind
-DP3 windEffect, blendNorm, gWindDir;
-DP3 blendPos.x, blendMatZ, iPos;
-MAD windEffect.xyz, blendPos.x, {0.015, 0.015, 0.015, 0}, windEffect;
-MAD windEffect.w, windEffect, {0, 0, 0, 2}, {0, 0, 0, 1}; # move wind offset value to [-1, 3]
-MUL windEffect.w, windEffect, gWindDir; # modulate wind strength
-MAD windEffect.xyz, windEffect, gSinWaveParams, gSinWaveParams.w; # use sin wave params to scale and offset input
-
-#reduce to period of 2 PI
-MUL temp1.xyz, windEffect, gPiConstants.x; # change input as multiple of [0-2PI] to [0-1]
-EXP temp0, temp1.x; # find mod(x, 1)
-MUL windEffect.x, temp0.y, gPiConstants.y; # scale from [0,1] to [0, 2PI]
-ADD temp1.z, temp1.z, -gPiConstants.w; # shift normal oscillation by PI/2
-EXP temp0, temp1.z; # find mod(x, 1)
-
-MUL windEffect.z, temp0.y, gPiConstants.y; # scale from [0,1] to [0, 2PI]
-
-# offset to [-PI, PI]
-ADD windEffect.xyz, windEffect, {-3.141592, -3.141592, -3.141592, -3.141592};
-
-#calculate sinusoid
-MUL temp1, windEffect, windEffect; # x^2
-MAD sinWave, -temp1, gMinMaxConstants.w, gMinMaxConstants.z; # y = -(x^2)/7! + 1/5!
-MAD sinWave, sinWave, -temp1, gMinMaxConstants.y; # y = -(x^2) * (-(x^2)/7! + 1/5!) + 1/3!
-MAD sinWave, sinWave, -temp1, gMinMaxConstants.x; # y = -(x^2) * (-(x^2) * (-(x^2)/7! + 1/5!) + 1/3!) + 1
-MUL sinWave, sinWave, windEffect; # y = x * (-(x^2) * (-(x^2) * (-(x^2)/7! + 1/5!) + 1/3!) + 1)
-
-# sinWave.x holds sin(norm . wind_direction) with primary frequency
-# sinWave.y holds sin(norm . wind_direction) with secondary frequency
-# sinWave.z hold cos(norm . wind_direction) with primary frequency
-MAD sinWave.xyz, sinWave, gWindDir.w, windEffect.w; # multiply by wind strength in gWindDir.w [-wind, wind]
- # add normal facing bias offset [-wind,wind] -> [-wind - .25, wind + 1]
-DP3 temp1, blendNorm, gGravity; # how much is this normal facing in direction of gGravity?
-MIN temp1, temp1, {0.2, 0, 0, 0}; # clamp [-1, 1] to [-1, 0.2]
-MUL temp1, temp1, {1.5, 0, 0, 0}; # scale from [-1,0.2] to [-1.5, 0.3]
-ADD sinWave.x, sinWave, temp1; # add gGravity effect to sinwave (only primary frequency)
-MUL sinWave.xyz, sinWave, iClothing.w; # modulate by clothing coverage
-#MAD temp2, {1,1,1,1}, iClothing.w, {-1,-1,-1,-1};
-#ADD sinWave, sinWave, temp2;
-MAX sinWave.xyz, sinWave, {-1, -1, -1, -1}; # clamp to underlying body shape
-MUL offsetPos, iClothing, sinWave.x; # multiply wind effect times clothing displacement
-MAD temp2, gWindDir, sinWave.z, blendNorm; # calculate normal offset due to wind oscillation
-MAD offsetPos, {1.0, 1.0, 1.0, 0.0}, offsetPos, iPos; # add to offset vertex position, and zero out effect from w
-MAD blendNorm, temp2, {2, 2, 2, 2}, blendNorm; # add sin wave effect on normals (exaggerated)
-
-#add "backlighting" effect
-SUB colorAcc, {1, 1, 1, 1}, iClothing;
-MAD blendNorm, colorAcc.w, {0, 0, -0.2, 0}, blendNorm;
-
-#renormalize normal (again)
-DP3 divisor.w, blendNorm, blendNorm;
-RSQ divisor.xyz, divisor.w;
-MUL blendNorm.xyz, blendNorm, divisor;
-
-#project binormal to normal plane to ensure orthogonality
-DP3 temp2, blendNorm, blendBinorm;
-SUB blendBinorm, blendBinorm, temp2;
-
-#renormalize binormal
-DP3 divisor.w, blendBinorm, blendBinorm;
-RSQ divisor.xyz, divisor.w;
-MUL blendBinorm.xyz, blendBinorm, divisor;
-
-#tangent = binormal X normal
-XPD blendTangent, blendNorm, blendBinorm;
-
-#oTex1 = iTex0 + LLVector2( gLightDir0 * tangent, gLightDir0 * binormal );
-DP3 blendTangent.x, gLightDir0, blendTangent;
-DP3 blendTangent.y, gLightDir0, blendBinorm;
-MAD oTex1, gEmbossScale.x, blendTangent, iTex0;
-
-#Output position
-DP4 blendPos.x, blendMatX, offsetPos;
-DP4 blendPos.y, blendMatY, offsetPos;
-DP4 blendPos.z, blendMatZ, offsetPos;
-MOV blendPos.w, {0, 0, 0, 1};
-
-#Projection
-DP4 oPos.x, gProj[0], blendPos;
-DP4 oPos.y, gProj[1], blendPos;
-DP4 oPos.z, gProj[2], blendPos;
-DP4 oPos.w, gProj[3], blendPos;
-
-#Light 0
-DP3 colorAcc.x, blendNorm, gLightDir0;
-MAD colorAcc.x, colorAcc.x, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
-MAX colorAcc, colorAcc, {0, 0, 0, 0};
-
-# Accumulate color contributions.
-MAD colorAcc.xyz, colorAcc.x, gDiffuseCol0, gModelAmbient;
-
-#Light 1
-DP3 dots.x, blendNorm, gLightDir1;
-
-#Light 2
-SUB lightDir, gLightPos2, blendPos;
-DP3 divisor.w, lightDir, lightDir;
-RSQ divisor.xyz, divisor.w;
-MUL lightDir, lightDir, divisor;
-DP3 dots.y, blendNorm, lightDir;
-
-#Light 3
-SUB lightDir, gLightPos3, blendPos;
-DP3 divisor.w, lightDir, lightDir;
-RSQ divisor.xyz, divisor.w;
-MUL lightDir, lightDir, divisor;
-DP3 dots.z, blendNorm, lightDir;
-
-MAD dots, dots, {0.55, 0.55, 0.55, 0.55}, {0.3, 0.3, 0.3, 0.3};
-MAX dots, dots, {0, 0, 0, 0};
-MAD colorAcc, dots.x, gDiffuseCol1, colorAcc;
-MAD colorAcc, dots.y, gDiffuseCol2, colorAcc;
-MAD colorAcc, dots.z, gDiffuseCol3, colorAcc;
-
-#Output color
-MOV colorAcc.w, {0, 0, 0, 1.0};
-MUL oCol0, gMaterialDiffuse, colorAcc;
-
-#Output tex coordinate
-MOV oTex0, iTex0;
-
-#Output fog
-MOV oFog.x, blendPos.z;
-
-END
diff --git a/linden/indra/newview/files.lst b/linden/indra/newview/files.lst
index f2603d8..15062ae 100644
--- a/linden/indra/newview/files.lst
+++ b/linden/indra/newview/files.lst
@@ -1,6 +1,7 @@
newview/llagent.cpp
newview/llagentdata.cpp
newview/llagentpilot.cpp
+newview/llanimstatelabels.cpp
newview/llappviewer.cpp
newview/llappviewerlinux.cpp
newview/llassetuploadresponders.cpp
@@ -251,6 +252,7 @@ newview/llstatbar.cpp
newview/llstatgraph.cpp
newview/llstatusbar.cpp
newview/llstatview.cpp
+newview/llstylemap.cpp
newview/llsurface.cpp
newview/llsurfacepatch.cpp
newview/lltexlayer.cpp
@@ -279,6 +281,7 @@ newview/lltoolselectland.cpp
newview/lltoolselectrect.cpp
newview/lltoolview.cpp
newview/lltracker.cpp
+newview/lltrans.cpp
newview/lluploaddialog.cpp
newview/llurl.cpp
newview/llurldispatcher.cpp
@@ -348,6 +351,7 @@ newview/llvotree.cpp
newview/llvovolume.cpp
newview/llvowater.cpp
newview/llvowlsky.cpp
+newview/llwatchdog.cpp
newview/llwaterparammanager.cpp
newview/llwaterparamset.cpp
newview/llwearable.cpp
diff --git a/linden/indra/newview/installers/windows/installer_template.nsi b/linden/indra/newview/installers/windows/installer_template.nsi
index 8db336f..836780d 100644
--- a/linden/indra/newview/installers/windows/installer_template.nsi
+++ b/linden/indra/newview/installers/windows/installer_template.nsi
@@ -87,7 +87,6 @@ SetShellVarContext all ; install for all users (if you change this, change it
; Start with some default values.
StrCpy $INSTFLAGS "${INSTFLAGS}"
-StrCpy $INSTFLAGS "$INSTFLAGS $LANGFLAGS"
StrCpy $INSTPROG "${INSTNAME}"
StrCpy $INSTEXE "${INSTEXE}"
StrCpy $INSTSHORTCUT "${SHORTCUT}"
@@ -933,26 +932,6 @@ Function .onInit
; save language in registry
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage" $LANGUAGE
-
- ; generate language ID that will be used as a command line arg
- StrCmp $LANGUAGE "1042" 0 +3
- StrCpy $LANGFLAGS " --set SystemLanguage ko"
- Goto EndOfFunc
-
- StrCmp $LANGUAGE "1041" 0 +3
- StrCpy $LANGFLAGS " --set SystemLanguage ja"
- Goto EndOfFunc
-
- StrCmp $LANGUAGE "1031" 0 +3
- StrCpy $LANGFLAGS " --set SystemLanguage de"
- Goto EndOfFunc
-
- StrCmp $LANGUAGE "1033" 0 +3
- StrCpy $LANGFLAGS " --set SystemLanguage en-us"
- Goto EndOfFunc
-
- EndOfFunc:
-
FunctionEnd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/linden/indra/newview/linux_tools/client-readme.txt b/linden/indra/newview/linux_tools/client-readme.txt
index 87087be..179cb9e 100644
--- a/linden/indra/newview/linux_tools/client-readme.txt
+++ b/linden/indra/newview/linux_tools/client-readme.txt
@@ -12,7 +12,7 @@ Life itself - please see .
5. Troubleshooting
5.1. 'Error creating window.'
5.2. System hangs
- 5.3. 'Shiny' and client performance
+ 5.3. Blank window after minimizing it
5.4. Audio
5.5. 'Alt' key for camera controls doesn't work
5.6. In-world movie playback
@@ -98,16 +98,6 @@ you wish.
These are the most commonly-encountered known issues which are specific to
the Beta release of the Linux client.
-* VISUAL EFFECTS AND PERFORMANCE - many Linux graphics drivers are not as
- robust as their counterparts for other operating systems, so some advanced
- Second Life graphical features have been DISABLED by default to aid
- stability. See PROBLEM 3 in the TROUBLESHOOTING section if you wish to
- turn these on to possibly enhance your experience.
-
-* MISC - The following features are not currently fully implemented on the
- Linux client and are therefore known not to work properly:
- * Full Unicode font rendering
-
* UPLOAD / SAVE / COLOR-PICKER DIALOGS - These only appear when the client
is in 'windowed' mode, not 'fullscreen' mode.
@@ -156,29 +146,21 @@ SOLUTION:- As a last resort, you can disable most of Second Life's advanced
graphics features by editing the 'secondlife' script and removing the '#'
from the line which reads '#export LL_GL_NOEXT=x'
-PROBLEM 3:- Performance or graphical quality are not as high as I expect.
-PROBLEM:- 'SHINY' doesn't work.
-PROBLEM:- I can't turn on Anisotropic Filtering, Ripple Water, or AGP.
-SOLUTION:- Some graphics performance features in Second Life are disabled
- by default for the Linux version due to stability issues with some common
- Linux graphic drivers. You can re-enable these features at the slight
- risk of decreasing system stability. To do so:
- * Edit the 'secondlife' script. Comment-out these lines by putting a '#'
- in front of them: 'export LL_GL_BASICEXT=x', 'export LL_GL_NOEXT=x',
- 'export LL_GL_BLACKLIST=abcdefghijklmno'.
- * Now start Second Life. Some advanced performance features will now be
- automatically used, and some new options in Preferences will now be
- available to you; there is no guarantee, however, that they will
- positively affect performance!
-SOLUTION:- If you are not running an official Second Life client obtained from
- secondlife.com, you should consider doing so as you may find its
- performance to be superior to third-party versions.
-
-PROBLEM 4:- Sound effects seem to 'lag' a fraction of a second behind
- actions.
-SOLUTION:- You may uncomment the 'LL_BAD_ESD' line in the 'secondlife' script
- to get more responsive audio. However, if you do this then you may
- encounter audio issues or a hang during login, so beware.
+PROBLEM 3:- After I minimize the Second Life window, it's just blank when
+ it comes back.
+SOLUTION:- Some Linux desktop 'Visual Effects' features are incompatible
+ with Second Life. One reported solution is to use your desktop
+ configuration program to disable such effects. For example, on Ubuntu 7.10,
+ use the desktop toolbar menu to select System -> Preferences -> Appearance,
+ then change 'Visual Effects' to 'None'.
+
+PROBLEM 4:- Music and sound effects are silent or very stuttery.
+SOLUTION:- The most common solution is to ensure that you have the 'esd'
+ program (part of the 'esound' package) installed and running before you
+ start Second Life. Users of Ubuntu (and some other) Linux systems can
+ simply run the following to install and configure 'esound':
+ sudo apt-get install esound
+ For others, simply running 'esd&' from a command-line should get it running.
PROBLEM 5:- Using the 'Alt' key to control the camera doesn't work or just
moves the Second Life window.
diff --git a/linden/indra/newview/linux_tools/unicode.ttf b/linden/indra/newview/linux_tools/unicode.ttf
deleted file mode 120000
index 91e6150..0000000
--- a/linden/indra/newview/linux_tools/unicode.ttf
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/fonts/truetype/kochi/kochi-gothic.ttf
\ No newline at end of file
diff --git a/linden/indra/newview/linux_tools/wrapper.sh b/linden/indra/newview/linux_tools/wrapper.sh
index 1b7d6b8..eaa2f61 100755
--- a/linden/indra/newview/linux_tools/wrapper.sh
+++ b/linden/indra/newview/linux_tools/wrapper.sh
@@ -43,7 +43,7 @@
## in the bin directory will be stripped: you should replace it with
## an unstripped binary before you run.
#export LL_WRAPPER='gdb --args'
-#export LL_WRAPPER='valgrind --smc-check=all --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp'
+#export LL_WRAPPER='valgrind --smc-check=all --error-limit=no --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp'
## - Avoids an often-buggy X feature that doesn't really benefit us anyway.
export SDL_VIDEO_X11_DGAMOUSE=0
@@ -104,7 +104,7 @@ if [ -n "$LL_RUN_ERR" ]; then
if [ "$LL_RUN_ERR" = "runerr" ]; then
# generic error running the binary
echo '*** Unclean shutdown. ***'
- if [ "`arch`" = "x86_64" ]; then
+ if [ "`uname -m`" = "x86_64" ]; then
echo
cat << EOFMARKER
You are running the Second Life Viewer on a x86_64 platform. The
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index 397a11e..1d3c5d4 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -5823,6 +5823,7 @@ void LLAgent::teleportViaLure(const LLUUID& lure_id, BOOL godlike)
msg->addUUIDFast(_PREHASH_AgentID, getID());
msg->addUUIDFast(_PREHASH_SessionID, getSessionID());
msg->addUUIDFast(_PREHASH_LureID, lure_id);
+ // teleport_flags is a legacy field, now derived sim-side:
msg->addU32("TeleportFlags", teleport_flags);
sendReliableMessage();
}
diff --git a/linden/indra/newview/llanimstatelabels.cpp b/linden/indra/newview/llanimstatelabels.cpp
new file mode 100644
index 0000000..c51740f
--- /dev/null
+++ b/linden/indra/newview/llanimstatelabels.cpp
@@ -0,0 +1,39 @@
+/**
+ * @file llanimationstatenames.cpp
+ * @brief Names for built-in animation states
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llanimstatelabels.h"
+#include "lltrans.h"
+
+std::string LLAnimStateLabels::getStateLabel( const char *animName )
+{
+ return LLTrans::getString("anim_" + LLString(animName) );
+}
diff --git a/linden/indra/newview/llanimstatelabels.h b/linden/indra/newview/llanimstatelabels.h
new file mode 100644
index 0000000..db1c1d8
--- /dev/null
+++ b/linden/indra/newview/llanimstatelabels.h
@@ -0,0 +1,42 @@
+/**
+ * @file llanimstatelabels.h
+ * @brief Declaration of LLVOAvatar class which is a derivation fo
+ * LLViewerObject
+ *
+ * $LicenseInfo:firstyear=2001&license=viewergpl$
+ *
+ * Copyright (c) 2001-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLANIMSTATELABELS_H
+#define LL_LLANIMSTATELABELS_H
+
+class LLAnimStateLabels
+{
+public:
+ static std::string getStateLabel( const char *animName );
+};
+
+#endif // LL_ANIMSTATELABELS_H
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp
index 4a9a158..c6f4cdd 100644
--- a/linden/indra/newview/llappviewer.cpp
+++ b/linden/indra/newview/llappviewer.cpp
@@ -64,7 +64,7 @@
#include "llurldispatcher.h"
#include "llurlhistory.h"
#include "llfirstuse.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llweb.h"
#include "llsecondlifeurls.h"
@@ -102,6 +102,7 @@
#include "audioengine.h"
#include "llviewermenu.h"
#include "llselectmgr.h"
+#include "lltrans.h"
#include "lltracker.h"
#include "llviewerparcelmgr.h"
#include "llworldmapview.h"
@@ -121,6 +122,7 @@
#include "llhudeffecttrail.h"
#include "llvectorperfoptions.h"
#include "llurlsimstring.h"
+#include "llwatchdog.h"
// Included so that constants/settings might be initialized
// in save_settings_to_globals()
@@ -160,6 +162,13 @@
#include "llcommandlineparser.h"
+// annoying detail to determine whether font prefs are over-ridden
+#if LL_LINUX
+# define LL_DYNAMIC_FONT_DISCOVERY 1
+#else
+# define LL_DYNAMIC_FONT_DISCOVERY 0
+#endif
+
// *FIX: These extern globals should be cleaned up.
// The globals either represent state/config/resource-storage of either
// this app, or another 'component' of the viewer. App globals should be
@@ -183,24 +192,6 @@
// viewer.cpp - these are only used in viewer, should be easily moved.
extern void disable_win_error_reporting();
-//#define APPLE_PREVIEW // Define this if you're doing a preview build on the Mac
-#if LL_RELEASE_FOR_DOWNLOAD
-// Default userserver for production builds is agni
-#ifndef APPLE_PREVIEW
-static EGridInfo GridDefaultChoice = GRID_INFO_AGNI;
-#else
-static EGridInfo GridDefaultChoice = GRID_INFO_ADITI;
-#endif
-#else
-// Default userserver for development builds is none
-static EGridInfo GridDefaultChoice = GRID_INFO_NONE;
-#endif
-
-#if LL_WINDOWS
-extern void create_console();
-#endif
-
-
#if LL_DARWIN
#include
extern void init_apple_menu(const char* product);
@@ -214,6 +205,7 @@ extern OSStatus DisplayReleaseNotes(void);
extern BOOL gRandomizeFramerate;
extern BOOL gPeriodicSlowFrame;
+extern BOOL gDebugGL;
////////////////////////////////////////////////////////////
// All from the last globals push...
@@ -413,7 +405,8 @@ static void settings_modify()
LLVOAvatar::sUseImpostors = gSavedSettings.getBOOL("RenderUseImpostors");
LLVOSurfacePatch::sLODFactor = gSavedSettings.getF32("RenderTerrainLODFactor");
LLVOSurfacePatch::sLODFactor *= LLVOSurfacePatch::sLODFactor; //sqaure lod factor to get exponential range of [1,4]
- gGL.setClever(gSavedSettings.getBOOL("RenderUseCleverUI"));
+ gDebugGL = gSavedSettings.getBOOL("RenderDebugGL");
+ gDebugPipeline = gSavedSettings.getBOOL("RenderDebugPipeline");
#if LL_VECTORIZE
if (gSysCPU.hasAltivec())
@@ -453,73 +446,35 @@ static void settings_modify()
gSavedSettings.setBOOL("PTTCurrentlyEnabled", TRUE); //gSavedSettings.getBOOL("EnablePushToTalk"));
}
-void initGridChoice()
+void LLAppViewer::initGridChoice()
{
- LLString gridChoice = gSavedSettings.getString("GridChoice");
- if(!gridChoice.empty())
- // Used to show first chunk of each argument passed in the
- // window title.
- {
- // find the grid choice from the user setting.
- int gridIndex = GRID_INFO_NONE;
- for(;gridIndex < GRID_INFO_OTHER; ++gridIndex )
- {
- if(0 == LLString::compareInsensitive(gGridInfo[gridIndex].mLabel, gridChoice.c_str()))
- {
- gGridChoice = (EGridInfo)gridIndex;
-
- if(GRID_INFO_LOCAL == gGridChoice)
- {
- gGridName = LOOPBACK_ADDRESS_STRING;
- break;
- }
- else
- {
- gGridName = gGridInfo[gGridChoice].mName;
- break;
- }
- }
- }
-
- if(GRID_INFO_OTHER == gridIndex)
- {
- // *FIX:MEP Can and should we validate that this is an IP address?
- gGridChoice = (EGridInfo)gridIndex;
- gGridName = llformat("%s", gSavedSettings.getString("GridChoice").c_str());
-
- }
- }
+ // Load up the initial grid choice from:
+ // - hard coded defaults...
+ // - command line settings...
+ // - if dev build, persisted settings...
+ // Set the "grid choice", this is specified by command line.
+ std::string grid_choice = gSavedSettings.getString("CmdLineGridChoice");
+ LLViewerLogin::getInstance()->setGridChoice(grid_choice);
#if !LL_RELEASE_FOR_DOWNLOAD
- if (gGridChoice == GRID_INFO_NONE)
+ // Development version: load last server choice by default
+ // ignored is the command line grid choice has been set
+ if(grid_choice.empty())
{
- // Development version: load last server choice by default (overridden by cmd line args)
- S32 server = gSavedSettings.getS32("ServerChoice");
- if (server != 0)
- gGridChoice = (EGridInfo)llclamp(server, 0, (S32)GRID_INFO_COUNT - 1);
- if (server == GRID_INFO_OTHER)
+ S32 server = gSavedSettings.getS32("ServerChoice");
+ server = llclamp(server, 0, (S32)GRID_INFO_COUNT - 1);
+ if(server == GRID_INFO_OTHER)
{
LLString custom_server = gSavedSettings.getString("CustomServer");
- if (custom_server.empty())
- {
- gGridName = "none";
- }
- else
- {
- gGridName = custom_server.c_str();
- }
+ LLViewerLogin::getInstance()->setGridChoice(custom_server);
+ }
+ else if(server != 0)
+ {
+ LLViewerLogin::getInstance()->setGridChoice((EGridInfo)server);
}
-
- gSavedSettings.setString("GridChoice", gGridInfo[gGridChoice].mLabel);
}
#endif
-
- if (gGridChoice == GRID_INFO_NONE)
- {
- gGridChoice = GridDefaultChoice;
- gSavedSettings.setString("GridChoice", gGridInfo[gGridChoice].mLabel);
- }
}
bool send_url_to_other_instance(const std::string& url)
@@ -583,23 +538,22 @@ LLAppViewer::LLAppViewer() :
}
sInstance = this;
+
+ // Initialize the mainloop timeout.
+ mMainloopTimeout = new LLWatchdogTimeout();
}
LLAppViewer::~LLAppViewer()
{
+ // Initialize the mainloop timeout.
+ delete mMainloopTimeout;
+
// If we got to this destructor somehow, the app didn't hang.
removeMarkerFile();
}
bool LLAppViewer::init()
{
- // *NOTE:Mani - LLCurl::initClass is not thread safe.
- // Called before threads are created.
- LLCurl::initClass();
-
- initThreads();
-
-
//
// Start of the application
//
@@ -612,7 +566,6 @@ bool LLAppViewer::init()
// that touches files should really go through the lldir API
gDirUtilp->initAppDirs("SecondLife");
-
initLogging();
//
@@ -621,6 +574,12 @@ bool LLAppViewer::init()
if (!initConfiguration())
return false;
+ // *NOTE:Mani - LLCurl::initClass is not thread safe.
+ // Called before threads are created.
+ LLCurl::initClass();
+
+ initThreads();
+
writeSystemInfo();
// Build a string representing the current version number.
@@ -640,7 +599,7 @@ bool LLAppViewer::init()
//
// Various introspection concerning the libs we're using.
//
- llinfos << "J2C Engine is: " << LLImageJ2C::getEngineInfo() << llendl;
+ LL_DEBUGS("InitInfo") << "J2C Engine is: " << LLImageJ2C::getEngineInfo() << LL_ENDL;
// Get the single value from the crash settings file, if it exists
std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
@@ -683,15 +642,15 @@ bool LLAppViewer::init()
// Load art UUID information, don't require these strings to be declared in code.
LLString colors_base_filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "colors_base.xml");
- llinfos << "Loading base colors from " << colors_base_filename << llendl;
+ LL_DEBUGS("InitInfo") << "Loading base colors from " << colors_base_filename << LL_ENDL;
gColors.loadFromFileLegacy(colors_base_filename.c_str(), FALSE, TYPE_COL4U);
// Load overrides from user colors file
LLString user_colors_filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "colors.xml");
- llinfos << "Loading user colors from " << user_colors_filename << llendl;
+ LL_DEBUGS("InitInfo") << "Loading user colors from " << user_colors_filename << LL_ENDL;
if (gColors.loadFromFileLegacy(user_colors_filename.c_str(), FALSE, TYPE_COL4U) == 0)
{
- llinfos << "Cannot load user colors from " << user_colors_filename << llendl;
+ LL_DEBUGS("InitInfo") << "Cannot load user colors from " << user_colors_filename << LL_ENDL;
}
// Widget construction depends on LLUI being initialized
@@ -782,7 +741,7 @@ bool LLAppViewer::init()
#endif
gGLManager.getGLInfo(gDebugInfo);
- llinfos << gGLManager.getGLInfoString() << llendl;
+ gGLManager.printGLInfoString();
//load key settings
bind_keyboard_functions();
@@ -790,7 +749,7 @@ bool LLAppViewer::init()
// Load Default bindings
if (!gViewerKeyboard.loadBindings(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"keys.ini").c_str()))
{
- llerrs << "Unable to open keys.ini" << llendl;
+ LL_ERRS("InitInfo") << "Unable to open keys.ini" << LL_ENDL;
}
// Load Custom bindings (override defaults)
gViewerKeyboard.loadBindings(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"custom_keys.ini").c_str());
@@ -865,20 +824,16 @@ bool LLAppViewer::init()
gSimFrames = (F32)gFrameCount;
LLViewerJoystick::getInstance()->init(false);
- if (LLViewerJoystick::getInstance()->isLikeSpaceNavigator())
- {
- if (gSavedSettings.getString("JoystickInitialized") != "SpaceNavigator")
- {
- LLFloaterJoystick::setSNDefaults();
- gSavedSettings.setString("JoystickInitialized", "SpaceNavigator");
- }
- }
-
+
return true;
}
bool LLAppViewer::mainLoop()
{
+ mMainloopTimeout = new LLWatchdogTimeout();
+ // *FIX:Mani - Make this a setting, once new settings exist in this branch.
+ mMainloopTimeout->setTimeout(5);
+
//-------------------------------------------
// Run main loop until time to quit
//-------------------------------------------
@@ -910,7 +865,7 @@ bool LLAppViewer::mainLoop()
{
LLFastTimer t2(LLFastTimer::FTM_MESSAGES);
#if LL_WINDOWS
- if (!LLWinDebug::setupExceptionHandler())
+ if (!LLWinDebug::checkExceptionHandler())
{
llwarns << " Someone took over my exception handler (post messagehandling)!" << llendl;
}
@@ -1059,6 +1014,8 @@ bool LLAppViewer::mainLoop()
}
//LLVFSThread::sLocal->pause(); // Prevent the VFS thread from running while rendering.
//LLLFSThread::sLocal->pause(); // Prevent the LFS thread from running while rendering.
+
+ mMainloopTimeout->ping();
}
}
@@ -1083,6 +1040,8 @@ bool LLAppViewer::mainLoop()
delete gServicePump;
+ mMainloopTimeout->stop();
+
llinfos << "Exiting main_loop" << llendflush;
return true;
@@ -1346,7 +1305,9 @@ bool LLAppViewer::cleanup()
gStaticVFS = NULL;
delete gVFS;
gVFS = NULL;
-
+
+ LLWatchdog::getInstance()->cleanup();
+
end_messaging_system();
// *NOTE:Mani - The following call is not thread safe.
@@ -1380,6 +1341,14 @@ bool LLAppViewer::initThreads()
#else
static const bool enable_threads = true;
#endif
+
+ const S32 NEVER_SUBMIT_REPORT = 2;
+ if(TRUE == gSavedSettings.getBOOL("WatchdogEnabled")
+ && (gCrashSettings.getS32("CrashSubmitBehavior") != NEVER_SUBMIT_REPORT))
+ {
+ LLWatchdog::getInstance()->init();
+ }
+
LLVFSThread::initClass(enable_threads && true);
LLLFSThread::initClass(enable_threads && true);
@@ -1434,7 +1403,7 @@ bool LLAppViewer::initLogging()
}
void LLAppViewer::loadSettingsFromDirectory(ELLPath path_index)
-{
+{
for(LLSD::map_iterator itr = mSettingsFileList.beginMap(); itr != mSettingsFileList.endMap(); ++itr)
{
LLString settings_name = (*itr).first;
@@ -1487,7 +1456,7 @@ std::string LLAppViewer::getSettingsFileName(const std::string& file)
}
bool LLAppViewer::initConfiguration()
-{
+{
//Set up internal pointers
gSettings[sGlobalSettingsName] = &gSavedSettings;
gSettings[sPerAccountSettingsName] = &gSavedPerAccountSettings;
@@ -1523,30 +1492,17 @@ bool LLAppViewer::initConfiguration()
gSavedSettings.setString("VersionChannelName", LL_CHANNEL);
-#ifndef LL_RELEASE_FOR_DOWNLOAD
+#ifndef LL_RELEASE_FOR_DOWNLOAD
gSavedSettings.setBOOL("ShowConsoleWindow", TRUE);
gSavedSettings.setBOOL("AllowMultipleViewers", TRUE);
#endif
-#if LL_WINDOWS
- // Lists Japanese, Korean, and Chinese sanserif fonts available in
- // Windows XP and Vista, as well as "Arial Unicode MS".
+#if !LL_DYNAMIC_FONT_DISCOVERY
+ // static font discovery - user settings can override.
gSavedSettings.setString("FontSansSerifFallback",
- "MSGOTHIC.TTC;gulim.ttc;simhei.ttf;ArialUni.ttf");
-#elif LL_DARWIN
- // This is a fairly complete Japanese font that ships with Mac OS X.
- // The first filename is in UTF8, but it shows up in the font menu as "Hiragino Kaku Gothic Pro W3".
- // The third filename is in UTF8, but it shows up in the font menu as "STHeiti Light"
- gSavedSettings.setString("FontSansSerifFallback",
- "\xE3\x83\x92\xE3\x83\xA9\xE3\x82\xAD\xE3\x82\x99\xE3\x83\x8E\xE8\xA7\x92\xE3\x82\xB3\xE3\x82\x99 Pro W3.otf;\xE3\x83\x92\xE3\x83\xA9\xE3\x82\xAD\xE3\x82\x99\xE3\x83\x8E\xE8\xA7\x92\xE3\x82\xB3\xE3\x82\x99 ProN W3.otf;AppleGothic.dfont;AppleGothic.ttf;\xe5\x8d\x8e\xe6\x96\x87\xe7\xbb\x86\xe9\xbb\x91.ttf");
-#else
- // 'unicode.ttf' doesn't exist, but hopefully an international
- // user can take the hint and drop in their favourite local font.
- gSavedSettings.setString("FontSansSerifFallback",
- "unicode.ttf");
+ LLWindow::getFontListSans());
#endif
-
// These are warnings that appear on the first experience of that condition.
// They are already set in the settings_default.xml file, but still need to be added to LLFirstUse
// for disable/reset ability
@@ -1590,7 +1546,16 @@ bool LLAppViewer::initConfiguration()
// Do this *before* loading the settings file
LLAlertDialog::parseAlerts("alerts.xml", &gSavedSettings, TRUE);
- // - read command line settings
+#if LL_DYNAMIC_FONT_DISCOVERY
+ // Linux does *dynamic* font discovery which is preferable to
+ // whatever got written-out into the config file last time. This
+ // does remove the ability of the user to hand-define the fallbacks
+ // though, so from a config-management point of view this is hacky.
+ gSavedSettings.setString("FontSansSerifFallback",
+ LLWindow::getFontListSans());
+#endif
+
+ // - read command line settings.
LLControlGroupCLP clp;
std::string cmd_line_config = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,
"cmd_line.xml");
@@ -1769,18 +1734,6 @@ bool LLAppViewer::initConfiguration()
}
}
- const LLControlVariable* loginuri = gSavedSettings.getControl("LoginURI");
- if(loginuri && LLString::null != loginuri->getValue().asString())
- {
- addLoginURI(loginuri->getValue().asString());
- }
-
- const LLControlVariable* helperuri = gSavedSettings.getControl("HelperURI");
- if(helperuri && LLString::null != helperuri->getValue().asString())
- {
- setHelperURI(helperuri->getValue().asString());
- }
-
const LLControlVariable* skinfolder = gSavedSettings.getControl("SkinFolder");
if(skinfolder && LLString::null != skinfolder->getValue().asString())
{
@@ -2025,7 +1978,7 @@ bool LLAppViewer::initConfiguration()
bool LLAppViewer::initWindow()
{
- llinfos << "Initializing window..." << llendl;
+ LL_INFOS("AppInit") << "Initializing window..." << LL_ENDL;
// store setting in a global for easy access and modification
gNoRender = gSavedSettings.getBOOL("DisableRendering");
@@ -2085,6 +2038,7 @@ bool LLAppViewer::initWindow()
LLAlertDialog::parseAlerts("alerts.xml");
LLNotifyBox::parseNotify("notify.xml");
+ LLTrans::parseStrings("strings.xml");
// Show watch cursor
gViewerWindow->setCursor(UI_CURSOR_WAIT);
@@ -2160,10 +2114,6 @@ void LLAppViewer::cleanupSavedSettings()
{
gSavedSettings.setF32("RenderFarClip", gAgent.mDrawDistance);
}
-
- // *REMOVE: This is now done via LLAppViewer::setCrashBehavior()
- // Left vestigially in case I borked it.
- // gCrashSettings.setS32(CRASH_BEHAVIOR_SETTING, gCrashBehavior);
}
void LLAppViewer::removeCacheFiles(const char* file_mask)
@@ -2194,22 +2144,22 @@ void LLAppViewer::writeSystemInfo()
gDebugInfo["OSInfo"] = getOSInfo().getOSStringSimple();
// Dump some debugging info
- llinfos << gSecondLife
+ LL_INFOS("SystemInfo") << gSecondLife
<< " version " << LL_VERSION_MAJOR << "." << LL_VERSION_MINOR << "." << LL_VERSION_PATCH
- << llendl;
+ << LL_ENDL;
// Dump the local time and time zone
time_t now;
time(&now);
char tbuffer[256]; /* Flawfinder: ignore */
strftime(tbuffer, 256, "%Y-%m-%dT%H:%M:%S %Z", localtime(&now));
- llinfos << "Local time: " << tbuffer << llendl;
+ LL_INFOS("SystemInfo") << "Local time: " << tbuffer << LL_ENDL;
// query some system information
- llinfos << "CPU info:\n" << gSysCPU << llendl;
- llinfos << "Memory info:\n" << gSysMemory << llendl;
- llinfos << "OS: " << getOSInfo().getOSStringSimple() << llendl;
- llinfos << "OS info: " << getOSInfo() << llendl;
+ LL_INFOS("SystemInfo") << "CPU info:\n" << gSysCPU << LL_ENDL;
+ LL_INFOS("SystemInfo") << "Memory info:\n" << gSysMemory << LL_ENDL;
+ LL_INFOS("SystemInfo") << "OS: " << getOSInfo().getOSStringSimple() << LL_ENDL;
+ LL_INFOS("SystemInfo") << "OS info: " << getOSInfo() << LL_ENDL;
}
void LLAppViewer::handleSyncViewerCrash()
@@ -2221,6 +2171,8 @@ void LLAppViewer::handleSyncViewerCrash()
void LLAppViewer::handleViewerCrash()
{
+ llinfos << "Handle viewer crash entry." << llendl;
+
LLAppViewer* pApp = LLAppViewer::instance();
if (pApp->beingDebugged())
{
@@ -2287,11 +2239,11 @@ void LLAppViewer::handleViewerCrash()
apr_file_t* crash_file = ll_apr_file_open(crash_file_name, LL_APR_W);
if (crash_file)
{
- llinfos << "Created crash marker file " << crash_file_name << llendl;
+ LL_INFOS("MarkerFile") << "Created crash marker file " << crash_file_name << LL_ENDL;
}
else
{
- llwarns << "Cannot create error marker file " << crash_file_name << llendl;
+ LL_WARNS("MarkerFile") << "Cannot create error marker file " << crash_file_name << LL_ENDL;
}
apr_file_close(crash_file);
}
@@ -2303,6 +2255,7 @@ void LLAppViewer::handleViewerCrash()
llofstream file(filename.c_str(), llofstream::binary);
if(file.good())
{
+ llinfos << "Handle viewer crash generating stats log." << llendl;
gMessageSystem->summarizeLogs(file);
file.close();
}
@@ -2318,6 +2271,7 @@ void LLAppViewer::handleViewerCrash()
// Close the debug file
pApp->closeDebug();
+
LLError::logToFile("");
// Remove the marker file, since otherwise we'll spawn a process that'll keep it locked
@@ -2348,7 +2302,7 @@ bool LLAppViewer::anotherInstanceRunning()
// If the file is currently locked, that means another process is already running.
std::string marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, MARKER_FILE_NAME);
- llinfos << "Checking marker file for lock..." << llendl;
+ LL_DEBUGS("MarkerFile") << "Checking marker file for lock..." << LL_ENDL;
//Freeze case checks
apr_file_t* fMarker = ll_apr_file_open(marker_file, LL_APR_RB);
@@ -2360,19 +2314,19 @@ bool LLAppViewer::anotherInstanceRunning()
if (fMarker == NULL)
{
// Another instance is running. Skip the rest of these operations.
- llinfos << "Marker file is locked." << llendl;
+ LL_INFOS("MarkerFile") << "Marker file is locked." << LL_ENDL;
return TRUE;
}
if (apr_file_lock(fMarker, APR_FLOCK_NONBLOCK | APR_FLOCK_EXCLUSIVE) != APR_SUCCESS) //flock(fileno(fMarker), LOCK_EX | LOCK_NB) == -1)
{
apr_file_close(fMarker);
- llinfos << "Marker file is locked." << llendl;
+ LL_INFOS("MarkerFile") << "Marker file is locked." << LL_ENDL;
return TRUE;
}
// No other instances; we'll lock this file now & delete on quit.
apr_file_close(fMarker);
}
- llinfos << "Marker file isn't locked." << llendl;
+ LL_DEBUGS("MarkerFile") << "Marker file isn't locked." << LL_ENDL;
return FALSE;
}
@@ -2383,7 +2337,7 @@ void LLAppViewer::initMarkerFile()
//There are marker files for two different types of crashes
mMarkerFileName = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,MARKER_FILE_NAME);
- llinfos << "Checking marker file for lock..." << llendl;
+ LL_DEBUGS("MarkerFile") << "Checking marker file for lock..." << LL_ENDL;
//We've got 4 things to test for here
// - Other Process Running (SecondLife.exec_marker present, locked)
@@ -2401,7 +2355,7 @@ void LLAppViewer::initMarkerFile()
if(fMarker != NULL)
{
apr_file_close(fMarker);
- llinfos << "Last exec LLError crashed, setting LastExecEvent to " << LAST_EXEC_LLERROR_CRASH << llendl;
+ LL_INFOS("MarkerFile") << "Last exec LLError crashed, setting LastExecEvent to " << LAST_EXEC_LLERROR_CRASH << LL_ENDL;
gLastExecEvent = LAST_EXEC_LOGOUT_FROZE;
}
fMarker = ll_apr_file_open(llerror_marker_file, LL_APR_RB);
@@ -2416,7 +2370,7 @@ void LLAppViewer::initMarkerFile()
if(fMarker != NULL)
{
apr_file_close(fMarker);
- llinfos << "Last exec crashed, setting LastExecEvent to " << LAST_EXEC_OTHER_CRASH << llendl;
+ LL_INFOS("MarkerFile") << "Last exec crashed, setting LastExecEvent to " << LAST_EXEC_OTHER_CRASH << LL_ENDL;
if(gLastExecEvent == LAST_EXEC_LOGOUT_FROZE) gLastExecEvent = LAST_EXEC_LOGOUT_CRASH;
else gLastExecEvent = LAST_EXEC_OTHER_CRASH;
}
@@ -2436,34 +2390,33 @@ void LLAppViewer::initMarkerFile()
{
apr_file_close(fMarker);
gLastExecEvent = LAST_EXEC_FROZE;
- llinfos << "Exec marker found: program froze on previous execution" << llendl;
+ LL_INFOS("MarkerFile") << "Exec marker found: program froze on previous execution" << LL_ENDL;
}
// Create the marker file for this execution & lock it
mMarkerFile = ll_apr_file_open(mMarkerFileName, LL_APR_W);
if (mMarkerFile)
{
- llinfos << "Marker file created." << llendl;
+ LL_DEBUGS("MarkerFile") << "Marker file created." << LL_ENDL;
}
else
{
- llinfos << "Failed to create marker file." << llendl;
+ LL_INFOS("MarkerFile") << "Failed to create marker file." << LL_ENDL;
return;
}
if (apr_file_lock(mMarkerFile, APR_FLOCK_NONBLOCK | APR_FLOCK_EXCLUSIVE) != APR_SUCCESS)
{
apr_file_close(mMarkerFile);
- llinfos << "Marker file cannot be locked." << llendl;
+ LL_INFOS("MarkerFile") << "Marker file cannot be locked." << LL_ENDL;
return;
}
- llinfos << "Marker file locked." << llendl;
- llinfos << "Exiting initMarkerFile()." << llendl;
+ LL_DEBUGS("MarkerFile") << "Marker file locked." << LL_ENDL;
}
void LLAppViewer::removeMarkerFile(bool leave_logout_marker)
{
- llinfos << "removeMarkerFile()" << llendl;
+ LL_DEBUGS("MarkerFile") << "removeMarkerFile()" << LL_ENDL;
if (mMarkerFile != NULL)
{
ll_apr_file_remove( mMarkerFileName );
@@ -2588,7 +2541,7 @@ bool LLAppViewer::initCache()
if (!gDirUtilp->setCacheDir(gSavedSettings.getString("CacheLocation")))
{
- llwarns << "Unable to set cache location" << llendl;
+ LL_WARNS("AppCache") << "Unable to set cache location" << LL_ENDL;
gSavedSettings.setString("CacheLocation", "");
}
@@ -2625,7 +2578,7 @@ bool LLAppViewer::initCache()
{
gSavedSettings.setU32("VFSOldSize", vfs_size_u32/MB);
}
- llinfos << "VFS CACHE SIZE: " << vfs_size/(1024*1024) << " MB" << llendl;
+ LL_INFOS("AppCache") << "VFS CACHE SIZE: " << vfs_size/(1024*1024) << " MB" << LL_ENDL;
// This has to happen BEFORE starting the vfs
//time_t ltime;
@@ -2689,8 +2642,7 @@ bool LLAppViewer::initCache()
{
sscanf(found_file.c_str() + start_pos, "%d", &old_salt);
}
- llinfos << "Default vfs data file not present, found " << old_vfs_data_file << llendl;
- llinfos << "Old salt: " << old_salt << llendl;
+ LL_DEBUGS("AppCache") << "Default vfs data file not present, found: " << old_vfs_data_file << " Old salt: " << old_salt << llendl;
}
}
@@ -2702,8 +2654,8 @@ bool LLAppViewer::initCache()
if (stat_result)
{
// We've got a bad/missing index file, nukem!
- llwarns << "Bad or missing vfx index file " << old_vfs_index_file << llendl;
- llwarns << "Removing old vfs data file " << old_vfs_data_file << llendl;
+ LL_WARNS("AppCache") << "Bad or missing vfx index file " << old_vfs_index_file << LL_ENDL;
+ LL_WARNS("AppCache") << "Removing old vfs data file " << old_vfs_data_file << LL_ENDL;
LLFile::remove(old_vfs_data_file);
LLFile::remove(old_vfs_index_file);
@@ -2740,7 +2692,7 @@ bool LLAppViewer::initCache()
if (resize_vfs)
{
- llinfos << "Removing old vfs and re-sizing" << llendl;
+ LL_DEBUGS("AppCache") << "Removing old vfs and re-sizing" << LL_ENDL;
LLFile::remove(old_vfs_data_file);
LLFile::remove(old_vfs_index_file);
@@ -2748,8 +2700,8 @@ bool LLAppViewer::initCache()
else if (old_salt != new_salt)
{
// move the vfs files to a new name before opening
- llinfos << "Renaming " << old_vfs_data_file << " to " << new_vfs_data_file << llendl;
- llinfos << "Renaming " << old_vfs_index_file << " to " << new_vfs_index_file << llendl;
+ LL_DEBUGS("AppCache") << "Renaming " << old_vfs_data_file << " to " << new_vfs_data_file << LL_ENDL;
+ LL_DEBUGS("AppCache") << "Renaming " << old_vfs_index_file << " to " << new_vfs_index_file << LL_ENDL;
LLFile::rename(old_vfs_data_file, new_vfs_data_file);
LLFile::rename(old_vfs_index_file, new_vfs_index_file);
}
@@ -2763,7 +2715,7 @@ bool LLAppViewer::initCache()
{
// Try again with fresh files
// (The constructor deletes corrupt files when it finds them.)
- llwarns << "VFS corrupt, deleted. Making new VFS." << llendl;
+ LL_WARNS("AppCache") << "VFS corrupt, deleted. Making new VFS." << LL_ENDL;
delete gVFS;
gVFS = new LLVFS(new_vfs_index_file, new_vfs_data_file, false, vfs_size_u32, false);
}
@@ -2784,9 +2736,8 @@ bool LLAppViewer::initCache()
void LLAppViewer::purgeCache()
{
- llinfos << "Purging Texture Cache..." << llendl;
+ LL_INFOS("AppCache") << "Purging Cache and Texture Cache..." << llendl;
LLAppViewer::getTextureCache()->purgeCache(LL_PATH_CACHE);
- llinfos << "Purging Cache..." << llendl;
std::string mask = gDirUtilp->getDirDelimiter() + "*.*";
gDirUtilp->deleteFilesInDir(gDirUtilp->getExpandedFilename(LL_PATH_CACHE,"").c_str(),mask);
}
@@ -2801,61 +2752,6 @@ const LLString& LLAppViewer::getWindowTitle() const
return gWindowTitle;
}
-void LLAppViewer::resetURIs() const
-{
- // Clear URIs when picking a new server
- gLoginURIs.clear();
- gHelperURI.clear();
-}
-
-const std::vector& LLAppViewer::getLoginURIs() const
-{
- if (gLoginURIs.empty())
- {
- // not specified on the command line, use value from table
- gLoginURIs.push_back(gGridInfo[gGridChoice].mLoginURI);
- }
- return gLoginURIs;
-}
-
-const std::string& LLAppViewer::getHelperURI() const
-{
- if (gHelperURI.empty())
- {
- // not specified on the command line, use value from table
- gHelperURI = gGridInfo[gGridChoice].mHelperURI;
- }
- return gHelperURI;
-}
-
-void LLAppViewer::addLoginURI(const std::string& uri)
-{
- // *NOTE:Mani - login uri trumps the --grid (gGridChoice) setting.
- // Update gGridChoice to reflect the loginURI setting.
- gLoginURIs.push_back(uri);
-
- const std::string& top_uri = getLoginURIs()[0];
- int i = 0;
- for(; i < GRID_INFO_COUNT; ++i)
- {
- if(top_uri == gGridInfo[i].mLoginURI)
- {
- gGridChoice = (EGridInfo)i;
- break;
- }
- }
-
- if(GRID_INFO_COUNT == i)
- {
- gGridChoice = GRID_INFO_OTHER;
- }
-}
-
-void LLAppViewer::setHelperURI(const std::string& uri)
-{
- gHelperURI = uri;
-}
-
// Callback from a dialog indicating user was logged out.
void finish_disconnect(S32 option, void* userdata)
{
@@ -2916,7 +2812,7 @@ void LLAppViewer::badNetworkHandler()
#if LL_WINDOWS
// Generates the minidump.
- LLWinDebug::handleException(NULL);
+ LLWinDebug::generateCrashStacks(NULL);
#endif
LLAppViewer::handleSyncViewerCrash();
LLAppViewer::handleViewerCrash();
@@ -2972,7 +2868,7 @@ void LLAppViewer::loadNameCache()
// Try to load from the legacy format. This should go away after a
// while. Phoenix 2008-01-30
- FILE* name_cache_fp = LLFile::fopen(name_cache.c_str(), "r"); // Flawfinder: ignore
+ LLFILE* name_cache_fp = LLFile::fopen(name_cache.c_str(), "r"); // Flawfinder: ignore
if (name_cache_fp)
{
gCacheName->importFile(name_cache_fp);
@@ -2993,15 +2889,6 @@ void LLAppViewer::saveNameCache()
}
}
-bool LLAppViewer::isInProductionGrid()
-{
- // *NOTE:Mani This used to compare GRID_INFO_AGNI to gGridChoice,
- // but it seems that loginURI trumps that.
- const std::string& loginURI = getLoginURIs()[0];
- return (loginURI == gGridInfo[GRID_INFO_AGNI].mLoginURI);
-}
-
-
/*! @brief This class is an LLFrameTimer that can be created with
an elapsed time that starts counting up from the given value
rather than 0.0.
@@ -3694,3 +3581,19 @@ void LLAppViewer::forceErrorSoftwareException()
// *FIX: Any way to insure it won't be handled?
throw;
}
+
+void LLAppViewer::startMainloopTimeout(F32 secs)
+{
+ if(secs < 0.0f)
+ {
+ secs = gSavedSettings.getF32("MainloopTimeoutDefault");
+ }
+
+ mMainloopTimeout->setTimeout(secs);
+ mMainloopTimeout->start();
+}
+
+void LLAppViewer::stopMainloopTimeout()
+{
+ mMainloopTimeout->stop();
+}
diff --git a/linden/indra/newview/llappviewer.h b/linden/indra/newview/llappviewer.h
index b3f3681..160f2c8 100644
--- a/linden/indra/newview/llappviewer.h
+++ b/linden/indra/newview/llappviewer.h
@@ -35,7 +35,7 @@
class LLTextureCache;
class LLWorkerThread;
class LLTextureFetch;
-
+class LLWatchdogTimeout;
class LLCommandLineParser;
class LLAppViewer : public LLApp
@@ -96,13 +96,6 @@ public:
const LLString& getSecondLifeTitle() const; // The Second Life title.
const LLString& getWindowTitle() const; // The window display name.
- // Helpers for URIs
- void addLoginURI(const std::string& uri);
- void setHelperURI(const std::string& uri);
- const std::vector& getLoginURIs() const;
- const std::string& getHelperURI() const;
- void resetURIs() const;
-
void forceDisconnect(const LLString& msg); // Force disconnection, with a message to the user.
void badNetworkHandler(); // Cause a crash state due to bad network packet.
@@ -112,8 +105,6 @@ public:
void loadNameCache();
void saveNameCache();
- bool isInProductionGrid();
-
void removeMarkerFile(bool leave_logout_marker = false);
// LLAppViewer testing helpers.
@@ -137,6 +128,11 @@ public:
std::string getSettingsFileName(const std::string& file);
+ // For thread debugging.
+ // llstartup needs to control this.
+ // llworld, send_agent_pause() also controls this.
+ void startMainloopTimeout(F32 secs = -1.0f);
+ void stopMainloopTimeout();
protected:
virtual bool initWindow(); // Initialize the viewer's window.
@@ -154,6 +150,7 @@ private:
bool initThreads(); // Initialize viewer threads, return false on failure.
bool initConfiguration(); // Initialize settings from the command line/config file.
+ void initGridChoice();
bool initCache(); // Initialize local client cache.
void purgeCache(); // Clear the local cache.
@@ -207,6 +204,8 @@ private:
bool mLogoutRequestSent; // Disconnect message sent to simulator, no longer safe to send messages to the sim.
S32 mYieldTime;
LLSD mSettingsFileList;
+
+ LLWatchdogTimeout* mMainloopTimeout;
};
// consts from viewer.h
diff --git a/linden/indra/newview/llappviewerlinux.cpp b/linden/indra/newview/llappviewerlinux.cpp
index 084df9b..e41c505 100644
--- a/linden/indra/newview/llappviewerlinux.cpp
+++ b/linden/indra/newview/llappviewerlinux.cpp
@@ -37,7 +37,9 @@
#include "llmemtype.h"
#include "llviewernetwork.h"
+#include "llviewercontrol.h"
#include "llmd5.h"
+#include "llfindlocale.h"
#include
@@ -129,7 +131,7 @@ static inline BOOL do_basic_glibc_backtrace()
std::string strace_filename = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stack_trace.log");
llinfos << "Opening stack trace file " << strace_filename << llendl;
- FILE* StraceFile = LLFile::fopen(strace_filename.c_str(), "w");
+ LLFILE* StraceFile = LLFile::fopen(strace_filename.c_str(), "w");
if (!StraceFile)
{
llinfos << "Opening stack trace file " << strace_filename << " failed. Using stderr." << llendl;
@@ -160,7 +162,7 @@ static inline BOOL do_basic_glibc_backtrace()
std::string strace_filename = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stack_trace.log");
llinfos << "Opening stack trace file " << strace_filename << llendl;
- FILE* StraceFile = LLFile::fopen(strace_filename.c_str(), "w"); // Flawfinder: ignore
+ LLFILE* StraceFile = LLFile::fopen(strace_filename.c_str(), "w"); // Flawfinder: ignore
if (!StraceFile)
{
llinfos << "Opening stack trace file " << strace_filename << " failed. Using stderr." << llendl;
@@ -198,7 +200,7 @@ static inline BOOL do_elfio_glibc_backtrace()
std::string strace_filename = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stack_trace.log");
llinfos << "Opening stack trace file " << strace_filename << llendl;
- FILE* StraceFile = LLFile::fopen(strace_filename.c_str(), "w"); // Flawfinder: ignore
+ LLFILE* StraceFile = LLFile::fopen(strace_filename.c_str(), "w"); // Flawfinder: ignore
if (!StraceFile)
{
llinfos << "Opening stack trace file " << strace_filename << " failed. Using stderr." << llendl;
@@ -346,7 +348,7 @@ void LLAppViewerLinux::handleCrashReporting()
{(char*)cmd.c_str(),
ask_dialog,
(char*)"-user",
- (char*)gGridName.c_str(),
+ (char*)LLViewerLogin::getInstance()->getGridLabel().c_str(),
(char*)"-name",
(char*)LLAppViewer::instance()->getSecondLifeTitle().c_str(),
NULL};
@@ -432,7 +434,27 @@ bool LLAppViewerLinux::initLogging()
bool LLAppViewerLinux::initParseCommandLine(LLCommandLineParser& clp)
{
- clp.parseCommandLine(gArgC, gArgV);
+ if (!clp.parseCommandLine(gArgC, gArgV))
+ {
+ return false;
+ }
+
+ // Find the system language.
+ FL_Locale *locale = NULL;
+ FL_Success success = FL_FindLocale(&locale, FL_MESSAGES);
+ if (success != 0)
+ {
+ if (success >= 2 && locale->lang) // confident!
+ {
+ LLControlVariable* c = gSavedSettings.getControl("SystemLanguage");
+ if(c)
+ {
+ c->setValue(std::string(locale->lang), false);
+ }
+ }
+ FL_FreeLocale(&locale);
+ }
+
return true;
}
diff --git a/linden/indra/newview/llappviewermacosx.cpp b/linden/indra/newview/llappviewermacosx.cpp
index c128634..96b6b24 100644
--- a/linden/indra/newview/llappviewermacosx.cpp
+++ b/linden/indra/newview/llappviewermacosx.cpp
@@ -47,7 +47,7 @@
#include "llfloaterworldmap.h"
#include "llurldispatcher.h"
#include
-
+#include "lldir.h"
namespace
{
// The command line args stored.
@@ -197,12 +197,13 @@ void LLAppViewerMacOSX::handleCrashReporting()
{
// Macintosh
LLString command_str;
- command_str = "open crashreporter.app";
+ command_str += "open crashreporter.app";
+
+ clear_signals();
+ llinfos << "Launching crash reporter using: '" << command_str << "'" << llendl;
system(command_str.c_str()); /* Flawfinder: ignore */
-
- // Sometimes signals don't seem to quit the viewer.
- // Make sure we exit so as to not totally confuse the user.
- exit(1);
+ llinfos << "returned from crash reporter... dying" << llendl;
+ _exit(1);
}
std::string LLAppViewerMacOSX::generateSerialNumber()
diff --git a/linden/indra/newview/llappviewerwin32.cpp b/linden/indra/newview/llappviewerwin32.cpp
index a2d89a3..59883e5 100644
--- a/linden/indra/newview/llappviewerwin32.cpp
+++ b/linden/indra/newview/llappviewerwin32.cpp
@@ -54,9 +54,23 @@
#include "llviewernetwork.h"
#include "llmd5.h"
+#include "llfindlocale.h"
#include "llcommandlineparser.h"
+//*FIX:Mani - This hack is to fix a linker issue with libndofdev.lib
+// The lib was compiled under VS2005 - in VS2003 we need to remap assert
+#ifdef LL_DEBUG
+ #if (_MSC_VER < 1400)
+ extern "C" {
+ void _wassert(const wchar_t * _Message, const wchar_t *_File, unsigned _Line)
+ {
+ llerrs << _Message << llendl;
+ }
+ }
+ #endif
+#endif
+
LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop)
{
// *NOTE:Mani - this code is stolen from LLApp, where its never actually used.
@@ -78,7 +92,7 @@ LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *excepti
// Generate a minidump if we can.
// Before we wake the error thread...
// Which will start the crash reporting.
- LLWinDebug::handleException(exception_infop);
+ LLWinDebug::generateCrashStacks(exception_infop);
// Flag status to error, so thread_error starts its work
LLApp::setError();
@@ -118,27 +132,11 @@ int APIENTRY WINMAIN(HINSTANCE hInstance,
LLAppViewerWin32* viewer_app_ptr = new LLAppViewerWin32(lpCmdLine);
- // *FIX:Mani This method is poorly named, since the exception
- // is now handled by LLApp.
- bool ok = LLWinDebug::setupExceptionHandler();
+ LLWinDebug::initExceptionHandler(viewer_windows_exception_handler);
- // Actually here's the exception setup.
- LPTOP_LEVEL_EXCEPTION_FILTER prev_filter;
- prev_filter = SetUnhandledExceptionFilter(viewer_windows_exception_handler);
- if (!prev_filter)
- {
- llwarns << "Our exception handler (" << (void *)LLWinDebug::handleException << ") replaced with NULL!" << llendl;
- ok = FALSE;
- }
- if (prev_filter != LLWinDebug::handleException)
- {
- llwarns << "Our exception handler (" << (void *)LLWinDebug::handleException << ") replaced with " << prev_filter << "!" << llendl;
- ok = FALSE;
- }
-
viewer_app_ptr->setErrorHandler(LLAppViewer::handleViewerCrash);
- ok = viewer_app_ptr->init();
+ bool ok = viewer_app_ptr->init();
if(!ok)
{
llwarns << "Application init failed." << llendl;
@@ -326,14 +324,14 @@ bool LLAppViewerWin32::initHardwareTest()
LLSplashScreen::update("Detecting hardware...");
- llinfos << "Attempting to poll DirectX for hardware info" << llendl;
+ LL_DEBUGS("AppInit") << "Attempting to poll DirectX for hardware info" << LL_ENDL;
gDXHardware.setWriteDebugFunc(write_debug_dx);
BOOL probe_ok = gDXHardware.getInfo(vram_only);
if (!probe_ok
&& gSavedSettings.getWarning("AboutDirectX9"))
{
- llinfos << "DirectX probe failed, alerting user." << llendl;
+ LL_WARNS("AppInit") << "DirectX probe failed, alerting user." << LL_ENDL;
// Warn them that runnin without DirectX 9 will
// not allow us to tell them about driver issues
@@ -354,13 +352,13 @@ bool LLAppViewerWin32::initHardwareTest()
OSMB_YESNO);
if (OSBTN_NO== button)
{
- llinfos << "User quitting after failed DirectX 9 detection" << llendl;
+ LL_INFOS("AppInit") << "User quitting after failed DirectX 9 detection" << LL_ENDL;
LLWeb::loadURLExternal(DIRECTX_9_URL);
return false;
}
gSavedSettings.setWarning("AboutDirectX9", FALSE);
}
- llinfos << "Done polling DirectX for hardware info" << llendl;
+ LL_DEBUGS("AppInit") << "Done polling DirectX for hardware info" << LL_ENDL;
// Only probe once after installation
gSavedSettings.setBOOL("ProbeHardwareOnStartup", FALSE);
@@ -372,20 +370,41 @@ bool LLAppViewerWin32::initHardwareTest()
LLSplashScreen::update(splash_msg.str().c_str());
}
- if (!LLWinDebug::setupExceptionHandler())
+ if (!LLWinDebug::checkExceptionHandler())
{
- llwarns << " Someone took over my exception handler (post hardware probe)!" << llendl;
+ LL_WARNS("AppInit") << " Someone took over my exception handler (post hardware probe)!" << LL_ENDL;
}
gGLManager.mVRAM = gDXHardware.getVRAM();
- llinfos << "Detected VRAM: " << gGLManager.mVRAM << llendl;
+ LL_INFOS("AppInit") << "Detected VRAM: " << gGLManager.mVRAM << LL_ENDL;
return true;
}
bool LLAppViewerWin32::initParseCommandLine(LLCommandLineParser& clp)
{
- return clp.parseCommandLineString(mCmdLine);
+ if (!clp.parseCommandLineString(mCmdLine))
+ {
+ return false;
+ }
+
+ // Find the system language.
+ FL_Locale *locale = NULL;
+ FL_Success success = FL_FindLocale(&locale, FL_MESSAGES);
+ if (success != 0)
+ {
+ if (success >= 2 && locale->lang) // confident!
+ {
+ LLControlVariable* c = gSavedSettings.getControl("SystemLanguage");
+ if(c)
+ {
+ c->setValue(std::string(locale->lang), false);
+ }
+ }
+ FL_FreeLocale(&locale);
+ }
+
+ return true;
}
void LLAppViewerWin32::handleSyncCrashTrace()
@@ -401,7 +420,7 @@ void LLAppViewerWin32::handleCrashReporting()
exe_path += "win_crash_logger.exe";
std::string arg_string = "-user ";
- arg_string += gGridName;
+ arg_string += LLViewerLogin::getInstance()->getGridLabel();
switch(getCrashBehavior())
{
diff --git a/linden/indra/newview/llbox.cpp b/linden/indra/newview/llbox.cpp
index 984d15b..1e6d282 100644
--- a/linden/indra/newview/llbox.cpp
+++ b/linden/indra/newview/llbox.cpp
@@ -34,7 +34,7 @@
#include "llbox.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llglheaders.h"
LLBox gBox;
diff --git a/linden/indra/newview/llchatbar.cpp b/linden/indra/newview/llchatbar.cpp
index d1834a6..bbbdb93 100644
--- a/linden/indra/newview/llchatbar.cpp
+++ b/linden/indra/newview/llchatbar.cpp
@@ -144,6 +144,7 @@ BOOL LLChatBar::postBuild()
mInputEditor->setRevertOnEsc( FALSE );
mInputEditor->setIgnoreTab(TRUE);
mInputEditor->setPassDelete(TRUE);
+ mInputEditor->setReplaceNewlinesWithSpaces(FALSE);
mInputEditor->setMaxTextLength(1023);
mInputEditor->setEnableLineHistory(TRUE);
diff --git a/linden/indra/newview/llcolorswatch.cpp b/linden/indra/newview/llcolorswatch.cpp
index 3f18d39..64db86c 100644
--- a/linden/indra/newview/llcolorswatch.cpp
+++ b/linden/indra/newview/llcolorswatch.cpp
@@ -39,7 +39,7 @@
// Project includes
#include "llui.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "lluiconstants.h"
#include "llviewerwindow.h"
#include "llviewercontrol.h"
diff --git a/linden/indra/newview/llcommandlineparser.cpp b/linden/indra/newview/llcommandlineparser.cpp
index 8123632..45f33dc 100644
--- a/linden/indra/newview/llcommandlineparser.cpp
+++ b/linden/indra/newview/llcommandlineparser.cpp
@@ -291,12 +291,15 @@ bool LLCommandLineParser::parseAndStoreResults(po::command_line_parser& clp)
}
catch(LLCLPLastOption&)
{
- // Continue without parsing.
- std::string msg = "Found tokens past last option. Ignoring.";
- llwarns << msg << llendl;
- mErrorMsg = msg;
- // boost::po will have stored a mal-formed option.
+ // This exception means a token was read after an option
+ // that must be the last option was reached (see url and slurl options)
+
+ // boost::po will have stored a malformed option.
// All such options will be removed below.
+ // The last option read, the last_option option, and its value
+ // are put into the error message.
+ std::string last_option;
+ std::string last_value;
for(po::variables_map::iterator i = gVariableMap.begin(); i != gVariableMap.end();)
{
po::variables_map::iterator tempI = i++;
@@ -304,7 +307,27 @@ bool LLCommandLineParser::parseAndStoreResults(po::command_line_parser& clp)
{
gVariableMap.erase(tempI);
}
+ else
+ {
+ last_option = tempI->first;
+ LLCommandLineParser::token_vector_t* tv =
+ boost::any_cast(&(tempI->second.value()));
+ if(!tv->empty())
+ {
+ last_value = (*tv)[tv->size()-1];
+ }
+ }
}
+
+ // Continue without parsing.
+ std::ostringstream msg;
+ msg << "Caught Error: Found options after last option: "
+ << last_option << " "
+ << last_value;
+
+ llwarns << msg.str() << llendl;
+ mErrorMsg = msg.str();
+ return false;
}
return true;
}
diff --git a/linden/indra/newview/llcompilequeue.cpp b/linden/indra/newview/llcompilequeue.cpp
index aeaa189..45d8e1c 100644
--- a/linden/indra/newview/llcompilequeue.cpp
+++ b/linden/indra/newview/llcompilequeue.cpp
@@ -386,7 +386,7 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id,
asset_id.toString(uuid_str);
snprintf(filename, sizeof(filename), "%s.%s",gDirUtilp->getExpandedFilename(LL_PATH_CACHE,uuid_str).c_str(),LLAssetType::lookup(type)); /* Flawfinder: ignore */
- FILE *fp = LLFile::fopen(filename, "wb"); /*Flawfinder: ignore*/
+ LLFILE *fp = LLFile::fopen(filename, "wb"); /*Flawfinder: ignore*/
if (fp)
{
const S32 buf_size = 65536;
diff --git a/linden/indra/newview/llconsole.cpp b/linden/indra/newview/llconsole.cpp
index 517e06f..08ef124 100644
--- a/linden/indra/newview/llconsole.cpp
+++ b/linden/indra/newview/llconsole.cpp
@@ -262,34 +262,38 @@ void LLConsole::addQueuedLines()
if (!wline.empty() && mFont != NULL)
{
// Wrap lines that are longer than the view is wide.
- S32 offset = 0;
- while( offset < (S32)wline.length() )
+ S32 line_start_offset = 0;
+ while( line_start_offset < (S32)wline.length() )
{
- S32 skip_chars; // skip '\n'
- // Figure out if a word-wrapped line fits here.
- LLWString::size_type line_end = wline.find_first_of(llwchar('\n'), offset);
- if (line_end != LLWString::npos)
- {
- skip_chars = 1; // skip '\n'
- }
- else
+ // Find the next '\n', if any
+ LLWString::size_type line_end = wline.find_first_of(llwchar('\n'), line_start_offset);
+ if (LLWString::npos == line_end)
{
+ // no more '\n's, try to use the whole line
line_end = wline.size();
- skip_chars = 0;
}
- U32 drawable = mFont->maxDrawableChars(wline.c_str()+offset, (F32)getRect().getWidth(), line_end-offset, TRUE);
+ // Find how many characters will reasonably fit in the allowed width
+ U32 drawable = mFont->maxDrawableChars(wline.c_str()+line_start_offset, (F32)getRect().getWidth(), line_end-line_start_offset, TRUE);
if (drawable != 0)
{
- LLFixedBuffer::addLine(wline.substr(offset, drawable));
+ LLFixedBuffer::addLine(wline.substr(line_start_offset, drawable));
mAddTimes[mAddTimes.size()-1] = line_info.add_time;
+
+ // move the line_start_offset by the number of characters we were able to draw, up to an implicit or explicit line-break.
+ line_start_offset += drawable;
}
else
{
- // force a blank line
+ // no drawable characters - force a blank line and try the next character.
LLFixedBuffer::addLine(" ");
+ line_start_offset++;
}
mColors.push_back(color);
- offset += (drawable + skip_chars);
+ // if this was an *explicit* line-break or the end of the text, then increment the offset for the start of the next line (if any).
+ if (line_start_offset == line_end)
+ {
+ line_start_offset++;
+ }
}
}
}
diff --git a/linden/indra/newview/llcubemap.cpp b/linden/indra/newview/llcubemap.cpp
index 31937ba..f79fd0f 100644
--- a/linden/indra/newview/llcubemap.cpp
+++ b/linden/indra/newview/llcubemap.cpp
@@ -38,6 +38,8 @@
#include "v4coloru.h"
#include "v3math.h"
+#include "llrender.h"
+
#include "llviewercamera.h"
#include "llviewerimage.h"
#include "llviewerimagelist.h"
@@ -95,9 +97,7 @@ void LLCubeMap::initGL()
mImages[i]->createGLTexture(0, mRawImages[i], texname);
glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, texname);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
+ mImages[i]->setClampCubemap (TRUE, TRUE, TRUE);
stop_glerror();
}
}
@@ -187,16 +187,15 @@ void LLCubeMap::bind()
// We assume that if they have cube mapping, they have multitexturing.
if (mTextureStage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB + mTextureStage);
+ gGL.getTexUnit(mTextureStage)->activate();
}
glEnable(GL_TEXTURE_CUBE_MAP_ARB);
glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, mImages[0]->getTexName());
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, (use_cube_mipmaps? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR));
+ mImages[0]->setMipFilterNearest (FALSE, FALSE);
if (mTextureStage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
}
else
@@ -221,14 +220,14 @@ void LLCubeMap::enableTexture(S32 stage)
{
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB + stage);
+ gGL.getTexUnit(stage)->activate();
}
glEnable(GL_TEXTURE_CUBE_MAP_ARB);
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
}
}
@@ -240,7 +239,7 @@ void LLCubeMap::enableTextureCoords(S32 stage)
{
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB + stage);
+ gGL.getTexUnit(stage)->activate();
}
glEnable(GL_TEXTURE_GEN_R);
@@ -253,7 +252,7 @@ void LLCubeMap::enableTextureCoords(S32 stage)
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
}
}
@@ -272,13 +271,13 @@ void LLCubeMap::disableTexture(void)
{
if (mTextureStage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB + mTextureStage);
+ gGL.getTexUnit(mTextureStage)->activate();
}
glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, 0);
glDisable(GL_TEXTURE_CUBE_MAP_ARB);
if (mTextureStage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
}
}
@@ -289,14 +288,14 @@ void LLCubeMap::disableTextureCoords(void)
{
if (mTextureCoordStage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB + mTextureCoordStage);
+ gGL.getTexUnit(mTextureCoordStage)->activate();
}
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glDisable(GL_TEXTURE_GEN_R);
if (mTextureCoordStage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
}
}
@@ -307,7 +306,7 @@ void LLCubeMap::setMatrix(S32 stage)
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB+stage);
+ gGL.getTexUnit(stage)->activate();
}
LLVector3 x(LLVector3d(gGLModelView+0));
@@ -326,7 +325,7 @@ void LLCubeMap::setMatrix(S32 stage)
if (stage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
}
@@ -334,7 +333,7 @@ void LLCubeMap::restoreMatrix()
{
if (mMatrixStage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB+mMatrixStage);
+ gGL.getTexUnit(mMatrixStage)->activate();
}
glMatrixMode(GL_TEXTURE);
glPopMatrix();
@@ -342,10 +341,17 @@ void LLCubeMap::restoreMatrix()
if (mMatrixStage > 0)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
}
+void LLCubeMap::setReflection (void)
+{
+ glBindTexture (GL_TEXTURE_CUBE_MAP_ARB, getGLName());
+ mImages[0]->setMipFilterNearest (FALSE, FALSE);
+ mImages[0]->setClampCubemap (TRUE, TRUE);
+}
+
LLVector3 LLCubeMap::map(U8 side, U16 v_val, U16 h_val) const
{
LLVector3 dir;
diff --git a/linden/indra/newview/llcubemap.h b/linden/indra/newview/llcubemap.h
index a4d9106..0b8cf29 100644
--- a/linden/indra/newview/llcubemap.h
+++ b/linden/indra/newview/llcubemap.h
@@ -60,6 +60,7 @@ public:
void disableTextureCoords(void);
void setMatrix(S32 stage);
void restoreMatrix();
+ void setReflection (void);
void finishPaint();
diff --git a/linden/indra/newview/llcurrencyuimanager.cpp b/linden/indra/newview/llcurrencyuimanager.cpp
index 8964054..74f6c71 100644
--- a/linden/indra/newview/llcurrencyuimanager.cpp
+++ b/linden/indra/newview/llcurrencyuimanager.cpp
@@ -44,7 +44,7 @@
#include "lllineeditor.h"
#include "llviewchildren.h"
#include "llxmlrpctransaction.h"
-#include "llappviewer.h"
+#include "llviewernetwork.h"
const F64 CURRENCY_ESTIMATE_FREQUENCY = 2.0;
@@ -238,7 +238,7 @@ void LLCurrencyUIManager::Impl::startTransaction(TransactionType type,
static std::string transactionURI;
if (transactionURI.empty())
{
- transactionURI = LLAppViewer::instance()->getHelperURI() + "currency.php";
+ transactionURI = LLViewerLogin::getInstance()->getHelperURI() + "currency.php";
}
delete mTransaction;
@@ -526,3 +526,4 @@ std::string LLCurrencyUIManager::errorURI()
}
+
diff --git a/linden/indra/newview/lldrawable.cpp b/linden/indra/newview/lldrawable.cpp
index d2b2a99..ba7d6b9 100644
--- a/linden/indra/newview/lldrawable.cpp
+++ b/linden/indra/newview/lldrawable.cpp
@@ -418,7 +418,7 @@ void LLDrawable::makeStatic(BOOL warning_enabled)
if (mParent.notNull() && mParent->isActive() && warning_enabled)
{
- llwarns << "Drawable becamse static with active parent!" << llendl;
+ LL_WARNS_ONCE("Drawable") << "Drawable becomes static with active parent!" << LL_ENDL;
}
S32 child_count = mVObjp->mChildList.size();
@@ -1170,11 +1170,13 @@ void LLSpatialBridge::setVisible(LLCamera& camera_in, std::vector*
LLSpatialGroup* group = av->getSpatialGroup();
BOOL impostor = objparent->isAvatar() && ((LLVOAvatar*) objparent)->isImpostor();
-
+ BOOL loaded = objparent->isAvatar() && ((LLVOAvatar*) objparent)->isFullyLoaded();
+
if (!group ||
av->getSpatialGroup()->mDistance > LLVOAvatar::sRenderDistance ||
LLDrawable::getCurrentFrame() - av->mVisible > 1 ||
- impostor)
+ impostor ||
+ !loaded)
{
return;
}
diff --git a/linden/indra/newview/lldrawpool.cpp b/linden/indra/newview/lldrawpool.cpp
index c579c68..9d8bd0a 100644
--- a/linden/indra/newview/lldrawpool.cpp
+++ b/linden/indra/newview/lldrawpool.cpp
@@ -32,7 +32,7 @@
#include "llviewerprecompiledheaders.h"
#include "lldrawpool.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llfasttimer.h"
#include "llviewercontrol.h"
diff --git a/linden/indra/newview/lldrawpoolalpha.cpp b/linden/indra/newview/lldrawpoolalpha.cpp
index 95f8502..ca8f3b4 100644
--- a/linden/indra/newview/lldrawpoolalpha.cpp
+++ b/linden/indra/newview/lldrawpoolalpha.cpp
@@ -37,6 +37,7 @@
#include "llviewercontrol.h"
#include "llcriticaldamp.h"
#include "llfasttimer.h"
+#include "llrender.h"
#include "llcubemap.h"
#include "llsky.h"
@@ -93,7 +94,7 @@ void LLDrawPoolAlpha::beginRenderPass(S32 pass)
{
// Start out with no shaders.
current_shader = target_shader = NULL;
- glUseProgramObjectARB(0);
+ LLGLSLShader::bindNoShader();
}
gPipeline.enableLightsDynamic();
}
@@ -105,7 +106,7 @@ void LLDrawPoolAlpha::endRenderPass( S32 pass )
if(gPipeline.canUseWindLightShaders())
{
- glUseProgramObjectARB(0);
+ LLGLSLShader::bindNoShader();
}
}
@@ -123,7 +124,7 @@ void LLDrawPoolAlpha::render(S32 pass)
{
if(gPipeline.canUseWindLightShaders())
{
- glUseProgramObjectARB(0);
+ LLGLSLShader::bindNoShader();
}
gPipeline.enableLightsFullbright(LLColor4(1,1,1,1));
glColor4f(1,0,0,1);
@@ -207,18 +208,17 @@ void LLDrawPoolAlpha::renderGroupAlpha(LLSpatialGroup* group, U32 type, U32 mask
{
return;
}
- // *TODO - Uhhh, we should always be doing some type of alpha rejection. These should probably both be 0.01f
- glAlphaFunc(GL_GREATER, 0.f);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
}
else
{
if (LLPipeline::sImpostorRender)
{
- glAlphaFunc(GL_GREATER, 0.5f);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.5f);
}
else
{
- glAlphaFunc(GL_GREATER, 0.01f);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
}
}
@@ -230,7 +230,7 @@ void LLDrawPoolAlpha::renderGroupAlpha(LLSpatialGroup* group, U32 type, U32 mask
if (texture && params.mTexture.notNull())
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
params.mTexture->bind();
params.mTexture->addTextureStats(params.mVSize);
if (params.mTextureMatrix)
@@ -283,7 +283,7 @@ void LLDrawPoolAlpha::renderGroupAlpha(LLSpatialGroup* group, U32 type, U32 mask
}
else if (!use_shaders && current_shader != NULL)
{
- glUseProgramObjectARB(0);
+ LLGLSLShader::bindNoShader();
current_shader = NULL;
}
diff --git a/linden/indra/newview/lldrawpoolalpha.h b/linden/indra/newview/lldrawpoolalpha.h
index 4318045..b717398 100644
--- a/linden/indra/newview/lldrawpoolalpha.h
+++ b/linden/indra/newview/lldrawpoolalpha.h
@@ -68,13 +68,10 @@ public:
static BOOL sShowDebugAlpha;
private:
- S32 mDiffuse;
LLGLSLShader* current_shader;
LLGLSLShader* target_shader;
LLGLSLShader* simple_shader;
- LLGLSLShader* simple_lod_shader;
LLGLSLShader* fullbright_shader;
- LLGLSLShader* fullbright_lod_shader;
};
class LLDrawPoolAlphaPostWater : public LLDrawPoolAlpha
diff --git a/linden/indra/newview/lldrawpoolavatar.cpp b/linden/indra/newview/lldrawpoolavatar.cpp
index 6cfd131..fe5d4cd 100644
--- a/linden/indra/newview/lldrawpoolavatar.cpp
+++ b/linden/indra/newview/lldrawpoolavatar.cpp
@@ -32,7 +32,7 @@
#include "llviewerprecompiledheaders.h"
#include "lldrawpoolavatar.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llvoavatar.h"
#include "m3math.h"
@@ -299,7 +299,7 @@ void LLDrawPoolAvatar::beginSkinned()
}
sVertexProgram->enableTexture(LLShaderMgr::BUMP_MAP);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
else
{
@@ -319,7 +319,7 @@ void LLDrawPoolAvatar::endSkinned()
{
sRenderingSkinned = FALSE;
sVertexProgram->disableTexture(LLShaderMgr::BUMP_MAP);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
disable_vertex_weighting(sVertexProgram->mAttribute[LLShaderMgr::AVATAR_WEIGHT]);
if (sShaderLevel >= SHADER_LEVEL_BUMP)
{
@@ -343,7 +343,7 @@ void LLDrawPoolAvatar::endSkinned()
}
}
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
@@ -395,6 +395,31 @@ void LLDrawPoolAvatar::renderAvatars(LLVOAvatar* single_avatar, S32 pass)
return;
}
+ if (!single_avatar && !avatarp->isFullyLoaded())
+ {
+
+ /* // debug code to draw a cube in place of avatar
+ LLGLSNoTexture gls_no_texture;
+ LLVector3 pos = avatarp->getPositionAgent();
+
+ gGL.color4f(1.0f, 0.0f, 0.0f, 0.8f);
+ gGL.begin(GL_LINES);
+ {
+ gGL.vertex3fv((pos - LLVector3(0.2f, 0.f, 0.f)).mV);
+ gGL.vertex3fv((pos + LLVector3(0.2f, 0.f, 0.f)).mV);
+ gGL.vertex3fv((pos - LLVector3(0.f, 0.2f, 0.f)).mV);
+ gGL.vertex3fv((pos + LLVector3(0.f, 0.2f, 0.f)).mV);
+ gGL.vertex3fv((pos - LLVector3(0.f, 0.f, 0.2f)).mV);
+ gGL.vertex3fv((pos + LLVector3(0.f, 0.f, 0.2f)).mV);
+ }
+ gGL.end();
+ */
+
+
+ // don't render please
+ return;
+ }
+
BOOL impostor = avatarp->isImpostor() && !single_avatar;
if (impostor && pass != 0)
@@ -574,22 +599,12 @@ void LLDrawPoolAvatar::renderForSelect()
BOOL impostor = avatarp->isImpostor();
if (impostor)
{
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_MODULATE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PRIMARY_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_VERT_COLOR);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
avatarp->renderImpostor(color);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
return;
}
@@ -598,8 +613,8 @@ void LLDrawPoolAvatar::renderForSelect()
{
gAvatarMatrixParam = sVertexProgram->mUniform[LLShaderMgr::AVATAR_MATRIX];
}
- glAlphaFunc(GL_GEQUAL, 0.2f);
- gGL.blendFunc(GL_ONE, GL_ZERO);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER_EQUAL, 0.2f);
+ gGL.setSceneBlendType(LLRender::BT_REPLACE);
glColor4ubv(color.mV);
@@ -620,11 +635,11 @@ void LLDrawPoolAvatar::renderForSelect()
disable_vertex_weighting(sVertexProgram->mAttribute[LLShaderMgr::AVATAR_WEIGHT]);
}
- glAlphaFunc(GL_GREATER, 0.01f);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
// restore texture mode
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
//-----------------------------------------------------------------------------
diff --git a/linden/indra/newview/lldrawpoolbump.cpp b/linden/indra/newview/lldrawpoolbump.cpp
index 7e8b9d6..303b8d5 100644
--- a/linden/indra/newview/lldrawpoolbump.cpp
+++ b/linden/indra/newview/lldrawpoolbump.cpp
@@ -41,7 +41,7 @@
#include "m4math.h"
#include "v4math.h"
#include "llglheaders.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llagent.h"
#include "llcubemap.h"
@@ -100,7 +100,7 @@ void LLStandardBumpmap::restoreGL()
gStandardBumpmapList[LLStandardBumpmap::sStandardBumpmapCount++] = LLStandardBumpmap("Darkness"); // BE_DARKNESS
std::string file_name = gDirUtilp->getExpandedFilename( LL_PATH_APP_SETTINGS, "std_bump.ini" );
- FILE* file = LLFile::fopen( file_name.c_str(), "rt" ); /*Flawfinder: ignore*/
+ LLFILE* file = LLFile::fopen( file_name.c_str(), "rt" ); /*Flawfinder: ignore*/
if( !file )
{
llwarns << "Could not open std_bump <" << file_name << ">" << llendl;
@@ -371,17 +371,8 @@ void LLDrawPoolBump::beginShiny(bool invisible)
cube_map->setMatrix(0);
cube_map->bind();
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
-
- //use RGB from texture
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
-
- // use alpha from color
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PRIMARY_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_COLOR);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_VERT_ALPHA);
}
}
}
@@ -443,15 +434,17 @@ void LLDrawPoolBump::endShiny(bool invisible)
}
shader->unbind();
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glEnable(GL_TEXTURE_2D);
}
-
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ if (cube_channel >= 0)
+ {
+ gGL.getTexUnit(cube_channel)->setTextureBlendType(LLTexUnit::TB_MULT);
+ }
}
LLImageGL::unbindTexture(0, GL_TEXTURE_2D);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
diffuse_channel = -1;
cube_channel = 0;
@@ -540,16 +533,16 @@ void LLDrawPoolBump::endFullbrightShiny()
{
shader->disableTexture(LLShaderMgr::DIFFUSE_MAP);
}
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glEnable(GL_TEXTURE_2D);
shader->unbind();
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
LLImageGL::unbindTexture(0, GL_TEXTURE_2D);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
diffuse_channel = -1;
cube_channel = 0;
@@ -650,37 +643,18 @@ void LLDrawPoolBump::beginBump()
// TEXTURE UNIT 0
// Output.rgb = texture at texture coord 0
- glActiveTextureARB(GL_TEXTURE0_ARB);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->activate();
- // Don't care about alpha output
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
// TEXTURE UNIT 1
- glActiveTextureARB(GL_TEXTURE1_ARB);
-
+ gGL.getTexUnit(1)->activate();
+
glEnable(GL_TEXTURE_2D); // Texture unit 1
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_ADD_SIGNED_ARB);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_ONE_MINUS_SRC_ALPHA);
-
- // Don't care about alpha output
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD_SIGNED, LLTexUnit::TBS_PREV_COLOR, LLTexUnit::TBS_ONE_MINUS_TEX_ALPHA);
+ gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
// src = tex0 + (1 - tex1) - 0.5
// = (bump0/2 + 0.5) + (1 - (bump1/2 + 0.5)) - 0.5
@@ -692,9 +666,8 @@ void LLDrawPoolBump::beginBump()
// = 2 * ((1 + bump0 - bump1) / 2) * dst [0 - 2 * dst]
// = (1 + bump0 - bump1) * dst.rgb
// = dst.rgb + dst.rgb * (bump0 - bump1)
- gGL.blendFunc(GL_DST_COLOR, GL_SRC_COLOR);
-// gGL.blendFunc(GL_ONE, GL_ZERO); // temp
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.setSceneBlendType(LLRender::BT_MULT_X2);
+ gGL.getTexUnit(0)->activate();
stop_glerror();
LLViewerImage::unbindTexture(1, GL_TEXTURE_2D);
@@ -728,15 +701,15 @@ void LLDrawPoolBump::endBump()
}
// Disable texture unit 1
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glDisable(GL_TEXTURE_2D); // Texture unit 1
- glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT);
// Disable texture unit 0
- glActiveTextureARB(GL_TEXTURE0_ARB);
- glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->activate();
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
- gGL.blendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
////////////////////////////////////////////////////////////////
@@ -1101,16 +1074,16 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture)
{
if (mShiny)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glMatrixMode(GL_TEXTURE);
}
else
{
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glMatrixMode(GL_TEXTURE);
glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
gPipeline.mTextureMatrixOps++;
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
glLoadMatrixf((GLfloat*) params.mTextureMatrix->mMatrix);
@@ -1153,13 +1126,13 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture)
{
if (mShiny)
{
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
else
{
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glLoadIdentity();
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
@@ -1172,9 +1145,9 @@ void LLDrawPoolInvisible::render(S32 pass)
U32 invisi_mask = LLVertexBuffer::MAP_VERTEX;
glStencilMask(0);
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
+ gGL.setColorMask(false, false);
pushBatches(LLRenderPass::PASS_INVISIBLE, invisi_mask, FALSE);
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
+ gGL.setColorMask(true, false);
glStencilMask(0xFFFFFFFF);
if (gPipeline.hasRenderBatches(LLRenderPass::PASS_INVISI_SHINY))
diff --git a/linden/indra/newview/lldrawpoolsimple.cpp b/linden/indra/newview/lldrawpoolsimple.cpp
index 330ac57..d580e97 100644
--- a/linden/indra/newview/lldrawpoolsimple.cpp
+++ b/linden/indra/newview/lldrawpoolsimple.cpp
@@ -41,7 +41,7 @@
#include "pipeline.h"
#include "llspatialpartition.h"
#include "llglslshader.h"
-#include "llglimmediate.h"
+#include "llrender.h"
static LLGLSLShader* simple_shader = NULL;
@@ -52,7 +52,7 @@ void LLDrawPoolGlow::render(S32 pass)
LLFastTimer t(LLFastTimer::FTM_RENDER_GLOW);
LLGLEnable blend(GL_BLEND);
LLGLDisable test(GL_ALPHA_TEST);
- gGL.blendFunc(GL_ONE, GL_ONE);
+ gGL.setSceneBlendType(LLRender::BT_ADD);
U32 shader_level = LLShaderMgr::getVertexShaderLevel(LLShaderMgr::SHADER_OBJECT);
@@ -66,11 +66,11 @@ void LLDrawPoolGlow::render(S32 pass)
}
LLGLDepthTest depth(GL_TRUE, GL_FALSE);
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
+ gGL.setColorMask(false, true);
renderTexture(LLRenderPass::PASS_GLOW, getVertexDataMask());
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setColorMask(true, false);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
if (shader_level > 0 && fullbright_shader)
{
@@ -120,7 +120,7 @@ void LLDrawPoolSimple::beginRenderPass(S32 pass)
// don't use shaders!
if (gGLManager.mHasShaderObjects)
{
- glUseProgramObjectARB(0);
+ LLGLSLShader::bindNoShader();
}
}
}
@@ -140,7 +140,7 @@ void LLDrawPoolSimple::render(S32 pass)
{
LLGLDisable blend(GL_BLEND);
LLGLState alpha_test(GL_ALPHA_TEST, gPipeline.canUseWindLightShadersOnObjects());
- glAlphaFunc(GL_GREATER, 0.5f);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.5f);
{ //render simple
LLFastTimer t(LLFastTimer::FTM_RENDER_SIMPLE);
@@ -152,7 +152,7 @@ void LLDrawPoolSimple::render(S32 pass)
LLFastTimer t(LLFastTimer::FTM_RENDER_GRASS);
LLGLEnable test(GL_ALPHA_TEST);
LLGLEnable blend(GL_BLEND);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
//render grass
LLRenderPass::renderTexture(LLRenderPass::PASS_GRASS, getVertexDataMask());
}
@@ -172,6 +172,6 @@ void LLDrawPoolSimple::render(S32 pass)
renderTexture(LLRenderPass::PASS_FULLBRIGHT, fullbright_mask);
}
- glAlphaFunc(GL_GREATER, 0.01f);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
}
diff --git a/linden/indra/newview/lldrawpoolsky.cpp b/linden/indra/newview/lldrawpoolsky.cpp
index e06bb6d..8c63b83 100644
--- a/linden/indra/newview/lldrawpoolsky.cpp
+++ b/linden/indra/newview/lldrawpoolsky.cpp
@@ -90,7 +90,7 @@ void LLDrawPoolSky::render(S32 pass)
{
// Ironically, we must support shader objects to be
// able to use this call.
- glUseProgramObjectARB(0);
+ LLGLSLShader::bindNoShader();
}
mShader = NULL;
}
diff --git a/linden/indra/newview/lldrawpoolterrain.cpp b/linden/indra/newview/lldrawpoolterrain.cpp
index fdb27f9..2cd2fdb 100644
--- a/linden/indra/newview/lldrawpoolterrain.cpp
+++ b/linden/indra/newview/lldrawpoolterrain.cpp
@@ -52,7 +52,7 @@
#include "llworld.h"
#include "pipeline.h"
#include "llglslshader.h"
-#include "llglimmediate.h"
+#include "llrender.h"
const F32 DETAIL_SCALE = 1.f/16.f;
int DebugDetailMap = 0;
@@ -69,14 +69,16 @@ LLDrawPoolTerrain::LLDrawPoolTerrain(LLViewerImage *texturep) :
sDetailScale = 1.f/gSavedSettings.getF32("RenderTerrainScale");
sDetailMode = gSavedSettings.getS32("RenderTerrainDetail");
mAlphaRampImagep = gImageList.getImageFromFile("alpha_gradient.tga",
- TRUE, TRUE, GL_ALPHA8, GL_ALPHA,
- LLUUID("e97cf410-8e61-7005-ec06-629eba4cd1fb"));
+ TRUE, TRUE, GL_ALPHA8, GL_ALPHA,
+ LLUUID("e97cf410-8e61-7005-ec06-629eba4cd1fb"));
+
mAlphaRampImagep->bind(0);
mAlphaRampImagep->setClamp(TRUE, TRUE);
m2DAlphaRampImagep = gImageList.getImageFromFile("alpha_gradient_2d.j2c",
TRUE, TRUE, GL_ALPHA8, GL_ALPHA,
LLUUID("38b86f85-2575-52a9-a531-23108d8da837"));
+
m2DAlphaRampImagep->bind(0);
m2DAlphaRampImagep->setClamp(TRUE, TRUE);
@@ -239,7 +241,7 @@ void LLDrawPoolTerrain::renderFullShader()
//
S32 detail0 = sShader->enableTexture(LLShaderMgr::TERRAIN_DETAIL0);
LLViewerImage::bindTexture(detail_texture0p,detail0);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
@@ -259,7 +261,7 @@ void LLDrawPoolTerrain::renderFullShader()
LLViewerImage::bindTexture(detail_texture1p,detail1);
/// ALPHA TEXTURE COORDS 0:
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
@@ -271,7 +273,7 @@ void LLDrawPoolTerrain::renderFullShader()
glEnable(GL_TEXTURE_2D);
/// ALPHA TEXTURE COORDS 1:
- glActiveTextureARB(GL_TEXTURE2_ARB);
+ gGL.getTexUnit(2)->activate();
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glTranslatef(-2.f, 0.f, 0.f);
@@ -284,7 +286,7 @@ void LLDrawPoolTerrain::renderFullShader()
LLViewerImage::bindTexture(detail_texture3p,detail3);
/// ALPHA TEXTURE COORDS 2:
- glActiveTextureARB(GL_TEXTURE3_ARB);
+ gGL.getTexUnit(3)->activate();
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glTranslatef(-1.f, 0.f, 0.f);
@@ -307,7 +309,7 @@ void LLDrawPoolTerrain::renderFullShader()
sShader->disableTexture(LLShaderMgr::TERRAIN_DETAIL3);
LLImageGL::unbindTexture(alpha_ramp, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE4_ARB);
+ gGL.getTexUnit(4)->activate();
glDisable(GL_TEXTURE_2D); // Texture unit 4
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
@@ -316,7 +318,7 @@ void LLDrawPoolTerrain::renderFullShader()
glMatrixMode(GL_MODELVIEW);
LLImageGL::unbindTexture(detail3, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE3_ARB);
+ gGL.getTexUnit(3)->activate();
glDisable(GL_TEXTURE_2D);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
@@ -325,7 +327,7 @@ void LLDrawPoolTerrain::renderFullShader()
glMatrixMode(GL_MODELVIEW);
LLImageGL::unbindTexture(detail2, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE2_ARB);
+ gGL.getTexUnit(2)->activate();
glDisable(GL_TEXTURE_2D);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
@@ -334,7 +336,7 @@ void LLDrawPoolTerrain::renderFullShader()
glMatrixMode(GL_MODELVIEW);
LLImageGL::unbindTexture(detail1, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glDisable(GL_TEXTURE_2D);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
@@ -346,7 +348,7 @@ void LLDrawPoolTerrain::renderFullShader()
// Restore Texture Unit 0 defaults
LLImageGL::unbindTexture(detail0, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glEnable(GL_TEXTURE_2D);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
@@ -357,7 +359,7 @@ void LLDrawPoolTerrain::renderFullShader()
void LLDrawPoolTerrain::renderFull4TU()
{
- glEnableClientState(GL_VERTEX_ARRAY);
+ glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
// Hack! Get the region that this draw pool is rendering from!
@@ -377,7 +379,7 @@ void LLDrawPoolTerrain::renderFull4TU()
tp0.setVec(sDetailScale, 0.0f, 0.0f, offset_x);
tp1.setVec(0.0f, sDetailScale, 0.0f, offset_y);
- gGL.blendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
+ gGL.blendFunc(LLRender::BF_ONE_MINUS_SOURCE_ALPHA, LLRender::BF_SOURCE_ALPHA);
//----------------------------------------------------------------------------
// Pass 1/1
@@ -385,11 +387,10 @@ void LLDrawPoolTerrain::renderFull4TU()
//
// Stage 0: detail texture 0
//
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
LLViewerImage::bindTexture(detail_texture0p,0);
glClientActiveTextureARB(GL_TEXTURE0_ARB);
-
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
@@ -398,36 +399,27 @@ void LLDrawPoolTerrain::renderFull4TU()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_COLOR);
//
// Stage 1: Generate alpha ramp for detail0/detail1 transition
//
+
LLViewerImage::bindTexture(m2DAlphaRampImagep,1);
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 1
glClientActiveTextureARB(GL_TEXTURE1_ARB);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
// Care about alpha only
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+ gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
//
// Stage 2: Interpolate detail1 with existing based on ramp
//
LLViewerImage::bindTexture(detail_texture1p,2);
- glActiveTextureARB(GL_TEXTURE2_ARB);
+ gGL.getTexUnit(2)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 2
glClientActiveTextureARB(GL_TEXTURE2_ARB);
@@ -439,34 +431,22 @@ void LLDrawPoolTerrain::renderFull4TU()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, GL_PREVIOUS_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(2)->setTextureColorBlend(LLTexUnit::TBO_LERP_PREV_ALPHA, LLTexUnit::TBS_PREV_COLOR, LLTexUnit::TBS_TEX_COLOR);
//
// Stage 3: Modulate with primary (vertex) color for lighting
//
LLViewerImage::bindTexture(detail_texture1p,3); // bind any texture
- glActiveTextureARB(GL_TEXTURE3_ARB);
+ gGL.getTexUnit(3)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 3
glClientActiveTextureARB(GL_TEXTURE3_ARB);
// Set alpha texture and do lighting modulation
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
+ gGL.getTexUnit(3)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_PREV_COLOR, LLTexUnit::TBS_VERT_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
+ gGL.getTexUnit(0)->activate();
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
- glActiveTextureARB(GL_TEXTURE0_ARB);
// GL_BLEND disabled by default
drawLoop();
@@ -475,7 +455,7 @@ void LLDrawPoolTerrain::renderFull4TU()
// Stage 0: Write detail3 into base
//
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
LLViewerImage::bindTexture(detail_texture3p,0);
glClientActiveTextureARB(GL_TEXTURE0_ARB);
@@ -487,18 +467,13 @@ void LLDrawPoolTerrain::renderFull4TU()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
-
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_COLOR);
//
// Stage 1: Generate alpha ramp for detail2/detail3 transition
//
LLViewerImage::bindTexture(m2DAlphaRampImagep,1);
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 1
glClientActiveTextureARB(GL_TEXTURE1_ARB);
@@ -510,25 +485,20 @@ void LLDrawPoolTerrain::renderFull4TU()
glTranslatef(-2.f, 0.f, 0.f);
// Care about alpha only
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+ gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
//
// Stage 2: Interpolate detail2 with existing based on ramp
//
LLViewerImage::bindTexture(detail_texture2p,2);
- glActiveTextureARB(GL_TEXTURE2_ARB);
+ gGL.getTexUnit(2)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 2
- glClientActiveTextureARB(GL_TEXTURE2_ARB);
+ glClientActiveTextureARB(GL_TEXTURE2_ARB);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
@@ -536,26 +506,16 @@ void LLDrawPoolTerrain::renderFull4TU()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, GL_PREVIOUS_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_ONE_MINUS_SRC_ALPHA);
-
+ gGL.getTexUnit(2)->setTextureColorBlend(LLTexUnit::TBO_LERP_PREV_ALPHA, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR);
//
// Stage 3: Generate alpha ramp for detail1/detail2 transition
//
LLViewerImage::bindTexture(m2DAlphaRampImagep,3);
- glActiveTextureARB(GL_TEXTURE3_ARB);
-
+ gGL.getTexUnit(3)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 3
- glClientActiveTextureARB(GL_TEXTURE3_ARB);
+ glClientActiveTextureARB(GL_TEXTURE3_ARB);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
// Set the texture matrix
@@ -564,38 +524,34 @@ void LLDrawPoolTerrain::renderFull4TU()
glTranslatef(-1.f, 0.f, 0.f);
// Set alpha texture and do lighting modulation
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
-
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(3)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_PREV_COLOR, LLTexUnit::TBS_VERT_COLOR);
+ gGL.getTexUnit(3)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
+
+ gGL.getTexUnit(0)->activate();
+ glClientActiveTextureARB(GL_TEXTURE0_ARB);
{
LLGLEnable blend(GL_BLEND);
drawLoop();
}
+ LLVertexBuffer::unbind();
// Disable multitexture
LLImageGL::unbindTexture(3, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE3_ARB);
+ gGL.getTexUnit(3)->activate();
glClientActiveTextureARB(GL_TEXTURE3_ARB);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D); // Texture unit 3
+
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
LLImageGL::unbindTexture(2, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE2_ARB);
+ gGL.getTexUnit(2)->activate();
glClientActiveTextureARB(GL_TEXTURE2_ARB);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D); // Texture unit 2
+
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glMatrixMode(GL_TEXTURE);
@@ -603,33 +559,34 @@ void LLDrawPoolTerrain::renderFull4TU()
glMatrixMode(GL_MODELVIEW);
LLImageGL::unbindTexture(1, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE1_ARB);
- glClientActiveTextureARB(GL_TEXTURE1_ARB);
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+ gGL.getTexUnit(1)->activate();
+ glClientActiveTextureARB(GL_TEXTURE1_ARB);
+ glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D); // Texture unit 1
+
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
// Restore blend state
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
//----------------------------------------------------------------------------
// Restore Texture Unit 0 defaults
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
LLImageGL::unbindTexture(0, GL_TEXTURE_2D);
glClientActiveTextureARB(GL_TEXTURE0_ARB);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
+ glDisableClientState(GL_NORMAL_ARRAY);
+
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
- // Restore non Texture Unit specific defaults
- glDisableClientState(GL_NORMAL_ARRAY);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
void LLDrawPoolTerrain::renderFull2TU()
@@ -651,7 +608,7 @@ void LLDrawPoolTerrain::renderFull2TU()
tp0.setVec(sDetailScale, 0.0f, 0.0f, offset_x);
tp1.setVec(0.0f, sDetailScale, 0.0f, offset_y);
- gGL.blendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
+ gGL.blendFunc(LLRender::BF_ONE_MINUS_SOURCE_ALPHA, LLRender::BF_SOURCE_ALPHA);
//----------------------------------------------------------------------------
// Pass 1/4
@@ -668,13 +625,7 @@ void LLDrawPoolTerrain::renderFull2TU()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR);
drawLoop();
@@ -690,22 +641,17 @@ void LLDrawPoolTerrain::renderFull2TU()
glDisable(GL_TEXTURE_GEN_T);
// Care about alpha only
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
//
// Stage 1: Write detail1
//
LLViewerImage::bindTexture(detail_texture1p,1); // Texture unit 1
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 1
+
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
@@ -713,18 +659,10 @@ void LLDrawPoolTerrain::renderFull2TU()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
+ gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR);
+ gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_ALPHA);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
-
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
{
LLGLEnable blend(GL_BLEND);
drawLoop();
@@ -736,26 +674,21 @@ void LLDrawPoolTerrain::renderFull2TU()
// Stage 0: Generate alpha ramp for detail1/detail2 transition
//
LLViewerImage::bindTexture(m2DAlphaRampImagep,0);
+
// Set the texture matrix
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glTranslatef(-1.f, 0.f, 0.f);
// Care about alpha only
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
//
// Stage 1: Write detail2
//
-
LLViewerImage::bindTexture(detail_texture2p,1);
+ gGL.getTexUnit(1)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 1
glEnable(GL_TEXTURE_GEN_S);
@@ -765,16 +698,8 @@ void LLDrawPoolTerrain::renderFull2TU()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR);
+ gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_ALPHA);
{
LLGLEnable blend(GL_BLEND);
@@ -787,27 +712,22 @@ void LLDrawPoolTerrain::renderFull2TU()
//
// Stage 0: Generate alpha ramp for detail2/detail3 transition
//
- LLViewerImage::bindTexture(m2DAlphaRampImagep,0);
+ gGL.getTexUnit(0)->activate();
+ LLViewerImage::bindTexture(m2DAlphaRampImagep,0);
// Set the texture matrix
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glTranslatef(-2.f, 0.f, 0.f);
// Care about alpha only
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA);
// Stage 1: Write detail3
-
LLViewerImage::bindTexture(detail_texture3p,1);
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 1
+
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
@@ -815,30 +735,24 @@ void LLDrawPoolTerrain::renderFull2TU()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
+ gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR);
+ gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_ALPHA);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
-
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
{
LLGLEnable blend(GL_BLEND);
drawLoop();
}
// Restore blend state
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
// Disable multitexture
+
LLImageGL::unbindTexture(1, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glDisable(GL_TEXTURE_2D); // Texture unit 1
+
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glMatrixMode(GL_TEXTURE);
@@ -848,18 +762,16 @@ void LLDrawPoolTerrain::renderFull2TU()
//----------------------------------------------------------------------------
// Restore Texture Unit 0 defaults
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
LLImageGL::unbindTexture(0, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
-
- // Restore non Texture Unit specific defaults
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
@@ -874,7 +786,7 @@ void LLDrawPoolTerrain::renderSimple()
mTexturep->addTextureStats(1024.f*1024.f);
mTexturep->bind(0);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 2
LLVector3 origin_agent = mDrawFace[0]->getDrawable()->getVObj()->getRegion()->getOriginAgent();
@@ -889,13 +801,7 @@ void LLDrawPoolTerrain::renderSimple()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR);
drawLoop();
@@ -903,15 +809,13 @@ void LLDrawPoolTerrain::renderSimple()
// Restore Texture Unit 0 defaults
LLImageGL::unbindTexture(0, GL_TEXTURE_2D);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
-
- // Restore non Texture Unit specific defaults
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
//============================================================================
diff --git a/linden/indra/newview/lldrawpooltree.cpp b/linden/indra/newview/lldrawpooltree.cpp
index fd0a83c..285b313 100644
--- a/linden/indra/newview/lldrawpooltree.cpp
+++ b/linden/indra/newview/lldrawpooltree.cpp
@@ -41,7 +41,7 @@
#include "pipeline.h"
#include "llviewercamera.h"
#include "llglslshader.h"
-#include "llglimmediate.h"
+#include "llrender.h"
S32 LLDrawPoolTree::sDiffTex = 0;
static LLGLSLShader* shader = NULL;
@@ -67,7 +67,7 @@ void LLDrawPoolTree::prerender()
void LLDrawPoolTree::beginRenderPass(S32 pass)
{
LLFastTimer t(LLFastTimer::FTM_RENDER_TREES);
- glAlphaFunc(GL_GREATER, 0.5f);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.5f);
if (LLPipeline::sUnderWaterRender)
{
@@ -106,7 +106,7 @@ void LLDrawPoolTree::render(S32 pass)
void LLDrawPoolTree::endRenderPass(S32 pass)
{
LLFastTimer t(LLFastTimer::FTM_RENDER_TREES);
- glAlphaFunc(GL_GREATER, 0.01f);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
if (gPipeline.canUseWindLightShadersOnObjects())
{
@@ -125,28 +125,18 @@ void LLDrawPoolTree::renderForSelect()
LLGLSObjectSelectAlpha gls_alpha;
- gGL.blendFunc(GL_ONE, GL_ZERO);
- glAlphaFunc(GL_GREATER, 0.5f);
+ gGL.setSceneBlendType(LLRender::BT_REPLACE);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.5f);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_MODULATE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
renderTree(TRUE);
- glAlphaFunc(GL_GREATER, 0.01f);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
void LLDrawPoolTree::renderTree(BOOL selecting)
diff --git a/linden/indra/newview/lldrawpoolwater.cpp b/linden/indra/newview/lldrawpoolwater.cpp
index 231d0e1..3a98235 100644
--- a/linden/indra/newview/lldrawpoolwater.cpp
+++ b/linden/indra/newview/lldrawpoolwater.cpp
@@ -37,6 +37,7 @@
#include "lldir.h"
#include "llerror.h"
#include "m3math.h"
+#include "llrender.h"
#include "llagent.h" // for gAgent for getRegion for getWaterHeight
#include "llcubemap.h"
@@ -166,7 +167,7 @@ void LLDrawPoolWater::render(S32 pass)
// Set up second pass first
mWaterImagep->addTextureStats(1024.f*1024.f);
mWaterImagep->bind(1);
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glEnable(GL_TEXTURE_2D); // Texture unit 1
@@ -198,18 +199,10 @@ void LLDrawPoolWater::render(S32 pass)
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_REPLACE);
+ gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR);
+ gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_ALPHA);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
-
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glClearStencil(1);
glClear(GL_STENCIL_BUFFER_BIT);
@@ -230,14 +223,14 @@ void LLDrawPoolWater::render(S32 pass)
}
// Now, disable texture coord generation on texture state 1
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glDisable(GL_TEXTURE_2D); // Texture unit 1
glDisable(GL_TEXTURE_GEN_S); //texture unit 1
glDisable(GL_TEXTURE_GEN_T); //texture unit 1
LLImageGL::unbindTexture(1, GL_TEXTURE_2D);
// Disable texture coordinate and color arrays
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
LLImageGL::unbindTexture(0, GL_TEXTURE_2D);
stop_glerror();
@@ -258,7 +251,7 @@ void LLDrawPoolWater::render(S32 pass)
glMatrixMode(GL_MODELVIEW);
LLOverrideFaceColor overrid(this, 1.f, 1.f, 1.f, 0.5f*up_dot);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
for (std::vector::iterator iter = mDrawFace.begin();
iter != mDrawFace.end(); iter++)
@@ -276,7 +269,7 @@ void LLDrawPoolWater::render(S32 pass)
}
}
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
if (gSky.mVOSkyp->getCubeMap())
{
@@ -298,7 +291,7 @@ void LLDrawPoolWater::render(S32 pass)
renderReflection(refl_face);
}
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
void LLDrawPoolWater::renderReflection(LLFace* face)
@@ -331,7 +324,7 @@ void LLDrawPoolWater::renderReflection(LLFace* face)
void LLDrawPoolWater::shade()
{
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
+ gGL.setColorMask(true, true);
LLVOSky *voskyp = gSky.mVOSkyp;
@@ -396,9 +389,9 @@ void LLDrawPoolWater::shade()
if (reftex > -1)
{
- glActiveTextureARB(GL_TEXTURE0_ARB+reftex);
+ gGL.getTexUnit(reftex)->activate();
gPipeline.mWaterRef.bindTexture();
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
//bind normal map
@@ -414,14 +407,8 @@ void LLDrawPoolWater::shade()
mWaterNormp->addTextureStats(1024.f*1024.f);
mWaterNormp->bind(bumpTex);
- if (!gSavedSettings.getBOOL("RenderWaterMipNormal"))
- {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- }
- else
- {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
- }
+ mWaterNormp->setMipFilterNearest (mWaterNormp->getMipFilterNearest(),
+ !gSavedSettings.getBOOL("RenderWaterMipNormal"));
S32 screentex = shader->enableTexture(LLShaderMgr::WATER_SCREENTEX);
stop_glerror();
@@ -548,9 +535,9 @@ void LLDrawPoolWater::shade()
shader->disableTexture(LLShaderMgr::WATER_SCREENDEPTH);
shader->unbind();
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glEnable(GL_TEXTURE_2D);
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_FALSE);
+ gGL.setColorMask(true, false);
}
diff --git a/linden/indra/newview/lldrawpoolwlsky.cpp b/linden/indra/newview/lldrawpoolwlsky.cpp
index e10cd0a..01e1af0 100644
--- a/linden/indra/newview/lldrawpoolwlsky.cpp
+++ b/linden/indra/newview/lldrawpoolwlsky.cpp
@@ -44,7 +44,7 @@
#include "llagent.h"
#include "llviewerregion.h"
#include "llface.h"
-#include "llglimmediate.h"
+#include "llrender.h"
LLPointer LLDrawPoolWLSky::sCloudNoiseTexture = NULL;
@@ -153,7 +153,7 @@ void LLDrawPoolWLSky::renderStars(void) const
{
LLGLSPipelineSkyBox gls_sky;
LLGLEnable blend(GL_BLEND);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
// *NOTE: have to have bound the cloud noise texture already since register
// combiners blending below requires something to be bound
@@ -176,16 +176,8 @@ void LLDrawPoolWLSky::renderStars(void) const
// gl_FragColor.rgb = gl_Color.rgb;
// gl_FragColor.a = gl_Color.a * star_alpha.a;
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_MODULATE);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_PREVIOUS);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_ARB, GL_CONSTANT);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA_ARB, GL_SRC_ALPHA);
- glTexEnvf(GL_TEXTURE_ENV, GL_ALPHA_SCALE, 2.0f);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT_X2, LLTexUnit::TBS_PREV_ALPHA, LLTexUnit::TBS_CONST_ALPHA);
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, star_alpha.mV);
gSky.mVOWLSkyp->drawStars();
@@ -193,8 +185,7 @@ void LLDrawPoolWLSky::renderStars(void) const
glPointSize(1.f);
// and disable the combiner states
- glTexEnvf(GL_TEXTURE_ENV, GL_ALPHA_SCALE, 1.0f);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
void LLDrawPoolWLSky::renderSkyClouds(F32 camHeightLocal) const
@@ -208,7 +199,7 @@ void LLDrawPoolWLSky::renderSkyClouds(F32 camHeightLocal) const
LLGLEnable blend(GL_BLEND);
LLGLSBlendFunc blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glAlphaFunc(GL_GREATER, 0.01f);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
sCloudNoiseTexture->bind();
shader->bind();
diff --git a/linden/indra/newview/lldynamictexture.cpp b/linden/indra/newview/lldynamictexture.cpp
index ce7f1ec..f77187d 100644
--- a/linden/indra/newview/lldynamictexture.cpp
+++ b/linden/indra/newview/lldynamictexture.cpp
@@ -40,7 +40,7 @@
#include "llviewerimage.h"
#include "llvertexbuffer.h"
#include "llviewerdisplay.h"
-#include "llglimmediate.h"
+#include "llrender.h"
void render_ui_and_swap_if_needed();
diff --git a/linden/indra/newview/llface.cpp b/linden/indra/newview/llface.cpp
index 4a5e532..3e0c5b2 100644
--- a/linden/indra/newview/llface.cpp
+++ b/linden/indra/newview/llface.cpp
@@ -42,7 +42,7 @@
#include "lldrawpoolbump.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "lllightconstants.h"
#include "llsky.h"
#include "llviewercamera.h"
@@ -468,6 +468,7 @@ void LLFace::renderSelectedUV(const S32 offset, const S32 count)
if (pass == 0)
{
LLViewerImage::bindTexture(red_blue_imagep);
+ red_blue_imagep->setMipFilterNearest (TRUE, TRUE);
}
else // pass == 1
{
@@ -476,9 +477,8 @@ void LLFace::renderSelectedUV(const S32 offset, const S32 count)
glMatrixMode(GL_TEXTURE);
glPushMatrix();
glScalef(256.f, 256.f, 1.f);
+ green_imagep->setMipFilterNearest (TRUE, TRUE);
}
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
if (!isState(GLOBAL))
diff --git a/linden/indra/newview/llface.h b/linden/indra/newview/llface.h
index f04d221..533851c 100644
--- a/linden/indra/newview/llface.h
+++ b/linden/indra/newview/llface.h
@@ -34,6 +34,7 @@
#include "llstrider.h"
+#include "llrender.h"
#include "v2math.h"
#include "v3math.h"
#include "v4math.h"
diff --git a/linden/indra/newview/llfasttimerview.cpp b/linden/indra/newview/llfasttimerview.cpp
index 047016f..d594dc5 100644
--- a/linden/indra/newview/llfasttimerview.cpp
+++ b/linden/indra/newview/llfasttimerview.cpp
@@ -37,7 +37,7 @@
#include "llrect.h"
#include "llerror.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llmath.h"
#include "llfontgl.h"
diff --git a/linden/indra/newview/llfeaturemanager.cpp b/linden/indra/newview/llfeaturemanager.cpp
index 9f79c18..69e7bcc 100644
--- a/linden/indra/newview/llfeaturemanager.cpp
+++ b/linden/indra/newview/llfeaturemanager.cpp
@@ -95,7 +95,7 @@ void LLFeatureList::addFeature(const char *name, const BOOL available, const F32
{
if (mFeatures.count(name))
{
- llwarns << "LLFeatureList::Attempting to add preexisting feature " << name << llendl;
+ LL_WARNS("RenderInit") << "LLFeatureList::Attempting to add preexisting feature " << name << LL_ENDL;
}
LLFeatureInfo fi(name, available, level);
@@ -109,7 +109,7 @@ BOOL LLFeatureList::isFeatureAvailable(const char *name)
return mFeatures[name].mAvailable;
}
- llwarns << "Feature " << name << " not on feature list!" << llendl;
+ LL_WARNS("RenderInit") << "Feature " << name << " not on feature list!" << LL_ENDL;
// changing this to TRUE so you have to explicitly disable
// something for it to be disabled
@@ -123,7 +123,7 @@ F32 LLFeatureList::getRecommendedValue(const char *name)
return mFeatures[name].mRecommendedLevel;
}
- llwarns << "Feature " << name << " not on feature list or not available!" << llendl;
+ LL_WARNS("RenderInit") << "Feature " << name << " not on feature list or not available!" << LL_ENDL;
return 0;
}
@@ -146,46 +146,46 @@ BOOL LLFeatureList::maskList(LLFeatureList &mask)
//
if (!mFeatures.count(mask_fi.mName))
{
- llwarns << "Feature " << mask_fi.mName << " in mask not in top level!" << llendl;
+ LL_WARNS("RenderInit") << "Feature " << mask_fi.mName << " in mask not in top level!" << LL_ENDL;
continue;
}
LLFeatureInfo &cur_fi = mFeatures[mask_fi.mName];
if (mask_fi.mAvailable && !cur_fi.mAvailable)
{
- llwarns << "Mask attempting to reenabling disabled feature, ignoring " << cur_fi.mName << llendl;
+ LL_WARNS("RenderInit") << "Mask attempting to reenabling disabled feature, ignoring " << cur_fi.mName << LL_ENDL;
continue;
}
cur_fi.mAvailable = mask_fi.mAvailable;
cur_fi.mRecommendedLevel = llmin(cur_fi.mRecommendedLevel, mask_fi.mRecommendedLevel);
-#ifndef LL_RELEASE_FOR_DOWNLOAD
- llinfos << "Feature mask " << mask.mName
+ LL_DEBUGS("RenderInit") << "Feature mask " << mask.mName
<< " Feature " << mask_fi.mName
<< " Mask: " << mask_fi.mRecommendedLevel
- << " Now: " << cur_fi.mRecommendedLevel << llendl;
-#endif
+ << " Now: " << cur_fi.mRecommendedLevel << LL_ENDL;
}
-#if 0 && !LL_RELEASE_FOR_DOWNLOAD
- llinfos << "After applying mask " << mask.mName << llendl;
- dump();
-#endif
+ LL_DEBUGS("RenderInit") << "After applying mask " << mask.mName << std::endl;
+ // Will conditionally call dump only if the above message will be logged, thanks
+ // to it being wrapped by the LL_DEBUGS and LL_ENDL macros.
+ dump();
+ LL_CONT << LL_ENDL;
+
return TRUE;
}
void LLFeatureList::dump()
{
- llinfos << "Feature list: " << mName << llendl;
- llinfos << "--------------" << llendl;
+ LL_DEBUGS("RenderInit") << "Feature list: " << mName << LL_ENDL;
+ LL_DEBUGS("RenderInit") << "--------------" << LL_ENDL;
LLFeatureInfo fi;
feature_map_t::iterator feature_it;
for (feature_it = mFeatures.begin(); feature_it != mFeatures.end(); ++feature_it)
{
fi = feature_it->second;
- llinfos << fi.mName << "\t\t" << fi.mAvailable << ":" << fi.mRecommendedLevel << llendl;
+ LL_DEBUGS("RenderInit") << fi.mName << "\t\t" << fi.mAvailable << ":" << fi.mRecommendedLevel << LL_ENDL;
}
- llinfos << llendl;
+ LL_DEBUGS("RenderInit") << LL_ENDL;
}
LLFeatureList *LLFeatureManager::findMask(const char *name)
@@ -203,10 +203,10 @@ BOOL LLFeatureManager::maskFeatures(const char *name)
LLFeatureList *maskp = findMask(name);
if (!maskp)
{
-// llwarns << "Unknown feature mask " << name << llendl;
+ LL_DEBUGS("RenderInit") << "Unknown feature mask " << name << LL_ENDL;
return FALSE;
}
- llinfos << "Applying Feature Mask: " << name << llendl;
+ LL_DEBUGS("RenderInit") << "Applying Feature Mask: " << name << LL_ENDL;
return maskList(*maskp);
}
@@ -236,7 +236,7 @@ BOOL LLFeatureManager::loadFeatureTables()
if (!file)
{
- llwarns << "Unable to open feature table!" << llendl;
+ LL_WARNS("RenderInit") << "Unable to open feature table!" << LL_ENDL;
return FALSE;
}
@@ -245,7 +245,7 @@ BOOL LLFeatureManager::loadFeatureTables()
file >> version;
if (strcmp(name, "version"))
{
- llwarns << data_path << " does not appear to be a valid feature table!" << llendl;
+ LL_WARNS("RenderInit") << data_path << " does not appear to be a valid feature table!" << LL_ENDL;
return FALSE;
}
@@ -285,7 +285,7 @@ BOOL LLFeatureManager::loadFeatureTables()
file >> name;
if (mMaskList.count(name))
{
- llerrs << "Overriding mask " << name << ", this is invalid!" << llendl;
+ LL_ERRS("RenderInit") << "Overriding mask " << name << ", this is invalid!" << LL_ENDL;
}
flp = new LLFeatureList(name);
@@ -295,7 +295,7 @@ BOOL LLFeatureManager::loadFeatureTables()
{
if (!flp)
{
- llerrs << "Specified parameter before keyword!" << llendl;
+ LL_ERRS("RenderInit") << "Specified parameter before keyword!" << LL_ENDL;
}
S32 available;
F32 recommended;
@@ -327,7 +327,7 @@ void LLFeatureManager::loadGPUClass()
if (!file)
{
- llwarns << "Unable to open GPU table: " << data_path << "!" << llendl;
+ LL_WARNS("RenderInit") << "Unable to open GPU table: " << data_path << "!" << LL_ENDL;
return;
}
@@ -398,7 +398,7 @@ void LLFeatureManager::loadGPUClass()
{
// if we found it, stop!
file.close();
- llinfos << "GPU is " << label << llendl;
+ LL_INFOS("RenderInit") << "GPU is " << label << llendl;
mGPUString = label;
mGPUClass = (EGPUClass) strtol(cls.c_str(), NULL, 10);
mGPUSupported = (BOOL) strtol(supported.c_str(), NULL, 10);
@@ -408,7 +408,7 @@ void LLFeatureManager::loadGPUClass()
}
file.close();
- llwarns << "Couldn't match GPU to a class: " << gGLManager.getRawGLString() << llendl;
+ LL_WARNS("RenderInit") << "Couldn't match GPU to a class: " << gGLManager.getRawGLString() << LL_ENDL;
}
void LLFeatureManager::cleanupFeatureTables()
@@ -546,7 +546,7 @@ void LLFeatureManager::applyBaseMasks()
LLFeatureList* maskp = findMask("all");
if(maskp == NULL)
{
- llwarns << "AHH! No \"all\" in feature table!" << llendl;
+ LL_WARNS("RenderInit") << "AHH! No \"all\" in feature table!" << LL_ENDL;
return;
}
@@ -563,12 +563,12 @@ void LLFeatureManager::applyBaseMasks()
"Class3"
};
- llinfos << "Setting GPU Class to " << class_table[mGPUClass] << llendl;
+ LL_INFOS("RenderInit") << "Setting GPU Class to " << class_table[mGPUClass] << LL_ENDL;
maskFeatures(class_table[mGPUClass]);
}
else
{
- llinfos << "Setting GPU Class to Unknown" << llendl;
+ LL_INFOS("RenderInit") << "Setting GPU Class to Unknown" << LL_ENDL;
maskFeatures("Unknown");
}
diff --git a/linden/indra/newview/llfeaturemanager.h b/linden/indra/newview/llfeaturemanager.h
index b45046b..79ea958 100644
--- a/linden/indra/newview/llfeaturemanager.h
+++ b/linden/indra/newview/llfeaturemanager.h
@@ -76,7 +76,7 @@ public:
void setFeatureAvailable(const char *name, const BOOL available);
void setRecommendedLevel(const char *name, const F32 level);
- BOOL loadFeatureList(FILE *fp);
+ BOOL loadFeatureList(LLFILE *fp);
BOOL maskList(LLFeatureList &mask);
diff --git a/linden/indra/newview/llfloateranimpreview.cpp b/linden/indra/newview/llfloateranimpreview.cpp
index 890cfd2..82729e9 100644
--- a/linden/indra/newview/llfloateranimpreview.cpp
+++ b/linden/indra/newview/llfloateranimpreview.cpp
@@ -46,7 +46,7 @@
#include "llcombobox.h"
#include "lldrawable.h"
#include "lldrawpoolavatar.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llface.h"
#include "llkeyframemotion.h"
#include "lllineeditor.h"
@@ -1135,6 +1135,7 @@ BOOL LLPreviewAnimation::render()
if (avatarp->mDrawable.notNull())
{
LLDrawPoolAvatar *avatarPoolp = (LLDrawPoolAvatar *)avatarp->mDrawable->getFace(0)->getPool();
+ avatarp->dirtyMesh();
avatarPoolp->renderAvatars(avatarp); // renders only one avatar
}
diff --git a/linden/indra/newview/llfloaterauction.cpp b/linden/indra/newview/llfloaterauction.cpp
index 7affff6..4a40abb 100644
--- a/linden/indra/newview/llfloaterauction.cpp
+++ b/linden/indra/newview/llfloaterauction.cpp
@@ -53,7 +53,7 @@
#include "llviewerdisplay.h"
#include "llviewercontrol.h"
#include "llui.h"
-#include "llglimmediate.h"
+#include "llrender.h"
///----------------------------------------------------------------------------
/// Local function declarations, constants, enums, and typedefs
@@ -186,7 +186,10 @@ void LLFloaterAuction::onClickSnapshot(void* data)
self->mTransactionID.generate();
self->mImageID = self->mTransactionID.makeAssetID(gAgent.getSecureSessionID());
- gViewerWindow->playSnapshotAnimAndSound();
+ if(!gSavedSettings.getBOOL("QuietSnapshotsToDisk"))
+ {
+ gViewerWindow->playSnapshotAnimAndSound();
+ }
llinfos << "Writing TGA..." << llendl;
LLPointer tga = new LLImageTGA;
diff --git a/linden/indra/newview/llfloaterbuyland.cpp b/linden/indra/newview/llfloaterbuyland.cpp
index ee78eaa..b596339 100644
--- a/linden/indra/newview/llfloaterbuyland.cpp
+++ b/linden/indra/newview/llfloaterbuyland.cpp
@@ -62,7 +62,7 @@
#include "llwindow.h"
#include "llworld.h"
#include "llxmlrpctransaction.h"
-#include "llappviewer.h"
+#include "llviewernetwork.h"
#include "roles_constants.h"
// NOTE: This is duplicated in lldatamoney.cpp ...
@@ -841,7 +841,7 @@ void LLFloaterBuyLandUI::startTransaction(TransactionType type,
static std::string transaction_uri;
if (transaction_uri.empty())
{
- transaction_uri = LLAppViewer::instance()->getHelperURI() + "landtool.php";
+ transaction_uri = LLViewerLogin::getInstance()->getHelperURI() + "landtool.php";
}
const char* method;
@@ -1363,3 +1363,4 @@ void LLFloaterBuyLandUI::onClickErrorWeb(void* data)
}
+
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp
index 0394cd1..d05b231 100644
--- a/linden/indra/newview/llfloaterchat.cpp
+++ b/linden/indra/newview/llfloaterchat.cpp
@@ -72,6 +72,7 @@
#include "lltexteditor.h"
#include "llfloaterhtml.h"
#include "llweb.h"
+#include "llstylemap.h"
// Used for LCD display
extern void AddNewIMToLCD(const LLString &newLine);
@@ -188,14 +189,26 @@ void LLFloaterChat::updateConsoleVisibility()
|| (getHost() && getHost()->isMinimized() )); // are we hosted in a minimized floater?
}
-void add_timestamped_line(LLViewerTextEditor* edit, const LLString& line, const LLColor4& color)
+void add_timestamped_line(LLViewerTextEditor* edit, const LLChat &chat, const LLColor4& color)
{
+ LLString line = chat.mText;
bool prepend_newline = true;
if (gSavedSettings.getBOOL("ChatShowTimestamps"))
{
edit->appendTime(prepend_newline);
prepend_newline = false;
}
+
+ // If the msg is not from an agent (not yourself though),
+ // extract out the sender name and replace it with the hotlinked name.
+ if (chat.mSourceType == CHAT_SOURCE_AGENT &&
+ chat.mFromID != LLUUID::null &&
+ (line.length() > chat.mFromName.length() && line.find(chat.mFromName,0) == 0))
+ {
+ line = line.substr(chat.mFromName.length());
+ const LLStyleSP &sourceStyle = LLStyleMap::instance().lookup(chat.mFromID);
+ edit->appendStyledText(chat.mFromName, false, false, &sourceStyle);
+ }
edit->appendColoredText(line, false, prepend_newline, color);
}
@@ -243,14 +256,14 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file)
if (!chat.mMuted)
{
- add_timestamped_line(history_editor, chat.mText, color);
- add_timestamped_line(history_editor_with_mute, chat.mText, color);
+ add_timestamped_line(history_editor, chat, color);
+ add_timestamped_line(history_editor_with_mute, chat, color);
}
else
{
// desaturate muted chat
LLColor4 muted_color = lerp(color, LLColor4::grey, 0.5f);
- add_timestamped_line(history_editor_with_mute, chat.mText, color);
+ add_timestamped_line(history_editor_with_mute, chat, color);
}
// add objects as transient speakers that can be muted
diff --git a/linden/indra/newview/llfloatercolorpicker.cpp b/linden/indra/newview/llfloatercolorpicker.cpp
index e72cb1a..7bf9da3 100644
--- a/linden/indra/newview/llfloatercolorpicker.cpp
+++ b/linden/indra/newview/llfloatercolorpicker.cpp
@@ -39,7 +39,7 @@
#include "llfontgl.h"
#include "llsys.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "v3dmath.h"
#include "lldir.h"
#include "llui.h"
diff --git a/linden/indra/newview/llfloaterdirectory.cpp b/linden/indra/newview/llfloaterdirectory.cpp
index 42a3bae..f1ee946 100644
--- a/linden/indra/newview/llfloaterdirectory.cpp
+++ b/linden/indra/newview/llfloaterdirectory.cpp
@@ -79,7 +79,6 @@ LLFloaterDirectory::LLFloaterDirectory(const std::string& name)
mFindAllPanel = NULL;
mClassifiedPanel = NULL;
mEventsPanel = NULL;
- mPopularPanel = NULL;
mLandPanel = NULL;
mPanelAvatarp = NULL;
@@ -96,12 +95,11 @@ LLFloaterDirectory::LLFloaterDirectory(const std::string& name)
factory_map["find_all_panel"] = LLCallbackMap(createFindAll, this);
factory_map["classified_panel"] = LLCallbackMap(createClassified, this);
factory_map["events_panel"] = LLCallbackMap(createEvents, this);
- factory_map["popular_panel"] = LLCallbackMap(createPopular, this);
+ factory_map["showcase_panel"] = LLCallbackMap(createShowcase, this);
factory_map["places_panel"] = LLCallbackMap(createPlaces, this);
factory_map["land_sales_panel"] = LLCallbackMap(createLand, this);
factory_map["people_panel"] = LLCallbackMap(createPeople, this);
factory_map["groups_panel"] = LLCallbackMap(createGroups, this);
- factory_map["find_all_old_panel"] = LLCallbackMap(createFindAllOld, this);
factory_map["classified_details_panel"] = LLCallbackMap(createClassifiedDetail, this);
factory_map["event_details_panel"] = LLCallbackMap(createEventDetail, this);
@@ -120,15 +118,14 @@ LLFloaterDirectory::LLFloaterDirectory(const std::string& name)
mPanelAvatarp->selectTab(0);
}
- childSetTabChangeCallback("Directory Tabs", "find_all_panel", onTabChangedFindAll, this);
+ childSetTabChangeCallback("Directory Tabs", "find_all_panel", onTabChanged, this);
childSetTabChangeCallback("Directory Tabs", "classified_panel", onTabChanged, this);
childSetTabChangeCallback("Directory Tabs", "events_panel", onTabChanged, this);
- childSetTabChangeCallback("Directory Tabs", "popular_panel", onTabChanged, this);
+ childSetTabChangeCallback("Directory Tabs", "showcase_panel", onTabChanged, this);
childSetTabChangeCallback("Directory Tabs", "places_panel", onTabChanged, this);
childSetTabChangeCallback("Directory Tabs", "land_sales_panel", onTabChanged, this);
childSetTabChangeCallback("Directory Tabs", "people_panel", onTabChanged, this);
childSetTabChangeCallback("Directory Tabs", "groups_panel", onTabChanged, this);
- childSetTabChangeCallback("Directory Tabs", "find_all_old_panel", onTabChanged, this);
}
LLFloaterDirectory::~LLFloaterDirectory()
@@ -175,11 +172,10 @@ void* LLFloaterDirectory::createEvents(void* userdata)
}
// static
-void* LLFloaterDirectory::createPopular(void* userdata)
+void* LLFloaterDirectory::createShowcase(void* userdata)
{
LLFloaterDirectory *self = (LLFloaterDirectory*)userdata;
- self->mPopularPanel = new LLPanelDirPopular("popular_panel", self);
- return self->mPopularPanel;
+ return new LLPanelDirPopular("showcase_panel", self);
}
// static
@@ -209,14 +205,7 @@ void* LLFloaterDirectory::createPeople(void* userdata)
void* LLFloaterDirectory::createGroups(void* userdata)
{
LLFloaterDirectory *self = (LLFloaterDirectory*)userdata;
- return new LLPanelDirGroups("groups_panel", self);
-}
-
-// static
-void *LLFloaterDirectory::createFindAllOld(void* userdata)
-{
- LLFloaterDirectory *self = (LLFloaterDirectory*)userdata;
- return new LLPanelDirFindAllOld("find_all_old_panel", self);
+ return new LLPanelDirGroups("people_groups", self);
}
// static
@@ -339,17 +328,6 @@ void LLFloaterDirectory::showEvents(S32 event_id)
}
// static
-void LLFloaterDirectory::showPopular(const LLUUID& parcel_id)
-{
- showPanel("popular_panel");
-
- if (sInstance->mPopularPanel)
- {
- sInstance->mPopularPanel->selectByUUID(parcel_id);
- }
-}
-
-// static
void LLFloaterDirectory::showLandForSale(const LLUUID& parcel_id)
{
showPanel("land_sales_panel");
@@ -498,17 +476,6 @@ void LLFloaterDirectory::onTabChanged(void* data, bool from_click)
}
}
-// static
-void LLFloaterDirectory::onTabChangedFindAll(void* data, bool from_click)
-{
- LLFloaterDirectory* self = (LLFloaterDirectory*)data;
- if (!self) return;
-
- self->hideAllDetailPanels();
- LLPanelDirFindAllInterface::focus(self->mFindAllPanel);
- onTabChanged(data, from_click);
-}
-
void LLFloaterDirectory::hideAllDetailPanels()
{
if (mPanelAvatarp) mPanelAvatarp->setVisible(FALSE);
diff --git a/linden/indra/newview/llfloaterdirectory.h b/linden/indra/newview/llfloaterdirectory.h
index 7aa956a..6915aea 100644
--- a/linden/indra/newview/llfloaterdirectory.h
+++ b/linden/indra/newview/llfloaterdirectory.h
@@ -73,7 +73,6 @@ public:
static void showFindAll(const std::string& search_text);
static void showClassified(const LLUUID& classified_id);
static void showEvents(S32 event_id);
- static void showPopular(const LLUUID& parcel_id);
static void showLandForSale(const LLUUID& parcel_id);
static void showGroups();
static void refreshGroup(const LLUUID& group_id);
@@ -82,7 +81,6 @@ public:
static void toggleEvents(void*);
static void toggleFind(void*);
static void onTabChanged(void*, bool);
- static void onTabChangedFindAll(void*, bool);
void hideAllDetailPanels();
@@ -97,18 +95,16 @@ private:
LLPanelDirFindAll* mFindAllPanel;
LLPanelDirClassified* mClassifiedPanel;
LLPanelDirEvents* mEventsPanel;
- LLPanelDirPopular* mPopularPanel;
LLPanelDirLand* mLandPanel;
static void* createFindAll(void* userdata);
static void* createClassified(void* userdata);
static void* createEvents(void* userdata);
- static void* createPopular(void* userdata);
+ static void* createShowcase(void* userdata);
static void* createPlaces(void* userdata);
static void* createLand(void* userdata);
static void* createPeople(void* userdata);
static void* createGroups(void* userdata);
- static void* createFindAllOld(void* userdata);
static void* createClassifiedDetail(void* userdata);
static void* createAvatarDetail(void* userdata);
diff --git a/linden/indra/newview/llfloatergroupinfo.cpp b/linden/indra/newview/llfloatergroupinfo.cpp
index 1c303b9..c657988 100644
--- a/linden/indra/newview/llfloatergroupinfo.cpp
+++ b/linden/indra/newview/llfloatergroupinfo.cpp
@@ -37,7 +37,7 @@
#include "llagent.h"
#include "llcommandhandler.h"
-#include "llcommandhandler.h"
+#include "llfloaterchatterbox.h"
#include "llpanelgroup.h"
#include "llviewermessage.h" // for inventory_offer_callback
//#include "llviewerwindow.h"
@@ -59,11 +59,35 @@ public:
LLGroupHandler() : LLCommandHandler("group", false) { }
bool handle(const LLSD& tokens, const LLSD& queryMap)
{
+ if (tokens.size() < 1)
+ {
+ return false;
+ }
+
+ if (tokens[0].asString() == "create")
+ {
+ LLFloaterGroupInfo::showCreateGroup(NULL);
+ return true;
+ }
+
if (tokens.size() < 2)
{
return false;
}
+ if (tokens[0].asString() == "list")
+ {
+ if (tokens[1].asString() == "show")
+ {
+ // CP_TODO: get the value we pass in via the XUI name
+ // of the tab instead of using a literal like this
+ LLFloaterMyFriends::showInstance( 1 );
+
+ return true;
+ }
+ return false;
+ }
+
LLUUID group_id;
if (!group_id.set(tokens[0], FALSE))
{
diff --git a/linden/indra/newview/llfloatergroups.cpp b/linden/indra/newview/llfloatergroups.cpp
index 7f32b24..c9ccf1a 100644
--- a/linden/indra/newview/llfloatergroups.cpp
+++ b/linden/indra/newview/llfloatergroups.cpp
@@ -466,7 +466,7 @@ void init_group_list(LLScrollListCtrl* ctrl, const LLUUID& highlight_id, U64 pow
LLSD element;
element["id"] = LLUUID::null;
element["columns"][0]["column"] = "name";
- element["columns"][0]["value"] = "none";
+ element["columns"][0]["value"] = "none"; // *TODO: Translate
element["columns"][0]["font"] = "SANSSERIF";
element["columns"][0]["font-style"] = style;
diff --git a/linden/indra/newview/llfloaterimagepreview.cpp b/linden/indra/newview/llfloaterimagepreview.cpp
index a228587..ccd7737 100644
--- a/linden/indra/newview/llfloaterimagepreview.cpp
+++ b/linden/indra/newview/llfloaterimagepreview.cpp
@@ -43,7 +43,7 @@
#include "llcombobox.h"
#include "lldrawable.h"
#include "lldrawpoolavatar.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llface.h"
#include "lltextbox.h"
#include "lltoolmgr.h"
diff --git a/linden/indra/newview/llfloaterproperties.cpp b/linden/indra/newview/llfloaterproperties.cpp
index 0d2cd5f..48232cb 100644
--- a/linden/indra/newview/llfloaterproperties.cpp
+++ b/linden/indra/newview/llfloaterproperties.cpp
@@ -65,11 +65,21 @@
// helper class to watch the inventory.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class LLPropertiesObserver : public LLInventoryObserver, public LLSingleton
+// Ugh. This can't be a singleton because it needs to remove itself
+// from the inventory observer list when destroyed, which could
+// happen after gInventory has already been destroyed if a singleton.
+// Instead, do our own ref counting and create / destroy it as needed
+class LLPropertiesObserver : public LLInventoryObserver
{
public:
- LLPropertiesObserver() {}
- virtual ~LLPropertiesObserver() {}
+ LLPropertiesObserver()
+ {
+ gInventory.addObserver(this);
+ }
+ virtual ~LLPropertiesObserver()
+ {
+ gInventory.removeObserver(this);
+ }
virtual void changed(U32 mask);
};
@@ -88,7 +98,10 @@ void LLPropertiesObserver::changed(U32 mask)
/// Class LLFloaterProperties
///----------------------------------------------------------------------------
+// static
LLFloaterProperties::instance_map LLFloaterProperties::sInstances;
+LLPropertiesObserver* LLFloaterProperties::sPropertiesObserver = NULL;
+S32 LLFloaterProperties::sPropertiesObserverCount = 0;
// static
LLFloaterProperties* LLFloaterProperties::find(const LLUUID& item_id,
@@ -145,12 +158,12 @@ LLFloaterProperties::LLFloaterProperties(const std::string& name, const LLRect&
{
LLUICtrlFactory::getInstance()->buildFloater(this,"floater_inventory_item_properties.xml");
- // hack to make sure these floaters are observing the inventory.
- if(!gInventory.containsObserver(LLPropertiesObserver::getInstance()))
+ if (!sPropertiesObserver)
{
- // Note: this is where gPropertiesObserver used to be constructed.
- gInventory.addObserver(LLPropertiesObserver::getInstance());
+ sPropertiesObserver = new LLPropertiesObserver;
}
+ sPropertiesObserverCount++;
+
// add the object to the static structure
LLUUID key = mItemID ^ mObjectID;
sInstances.insert(instance_map::value_type(key, this));
@@ -193,6 +206,12 @@ LLFloaterProperties::~LLFloaterProperties()
{
sInstances.erase(it);
}
+ sPropertiesObserverCount--;
+ if (!sPropertiesObserverCount)
+ {
+ delete sPropertiesObserver;
+ sPropertiesObserver = NULL;
+ }
}
void LLFloaterProperties::refresh()
@@ -422,7 +441,7 @@ void LLFloaterProperties::refreshFromItem(LLInventoryItem* item)
perm_string = "G";
perm_string += overwrite_group ? "*: " : ": ";
- perm_string += perm_string += mask_to_string(group_mask);
+ perm_string += mask_to_string(group_mask);
childSetText("GroupMaskDebug",perm_string);
childSetVisible("GroupMaskDebug",TRUE);
diff --git a/linden/indra/newview/llfloaterproperties.h b/linden/indra/newview/llfloaterproperties.h
index d4461fd..a459616 100644
--- a/linden/indra/newview/llfloaterproperties.h
+++ b/linden/indra/newview/llfloaterproperties.h
@@ -47,6 +47,8 @@ class LLLineEditor;
class LLRadioGroup;
class LLTextBox;
+class LLPropertiesObserver;
+
class LLFloaterProperties : public LLFloater
{
public:
@@ -94,6 +96,8 @@ protected:
typedef std::map instance_map;
static instance_map sInstances;
+ static LLPropertiesObserver* sPropertiesObserver;
+ static S32 sPropertiesObserverCount;
};
class LLMultiProperties : public LLMultiFloater
diff --git a/linden/indra/newview/llfloaterregioninfo.cpp b/linden/indra/newview/llfloaterregioninfo.cpp
index 12834b3..7b3b8e2 100644
--- a/linden/indra/newview/llfloaterregioninfo.cpp
+++ b/linden/indra/newview/llfloaterregioninfo.cpp
@@ -80,6 +80,8 @@
const S32 TERRAIN_TEXTURE_COUNT = 4;
const S32 CORNER_COUNT = 4;
+extern LLString gLastVersionChannel;
+
///----------------------------------------------------------------------------
/// Local class declaration
@@ -317,6 +319,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
// GENERAL PANEL
panel = tab->getChild("General");
panel->childSetValue("region_text", LLSD(sim_name));
+ panel->childSetValue("version_channel_text", gLastVersionChannel);
panel->childSetValue("block_terraform_check", (region_flags & REGION_FLAGS_BLOCK_TERRAFORM) ? TRUE : FALSE );
panel->childSetValue("block_fly_check", (region_flags & REGION_FLAGS_BLOCK_FLY) ? TRUE : FALSE );
diff --git a/linden/indra/newview/llfloaterreporter.cpp b/linden/indra/newview/llfloaterreporter.cpp
index 0c1b9ee..9c43f35 100644
--- a/linden/indra/newview/llfloaterreporter.cpp
+++ b/linden/indra/newview/llfloaterreporter.cpp
@@ -81,7 +81,7 @@
#include "llselectmgr.h"
#include "llviewerbuild.h"
#include "lluictrlfactory.h"
-#include "llappviewer.h"
+#include "llviewernetwork.h"
#include "llassetuploadresponders.h"
@@ -656,7 +656,7 @@ LLSD LLFloaterReporter::gatherReport()
mCopyrightWarningSeen = FALSE;
std::ostringstream summary;
- if (!LLAppViewer::instance()->isInProductionGrid())
+ if (!LLViewerLogin::getInstance()->isInProductionGrid())
{
summary << "Preview ";
}
diff --git a/linden/indra/newview/llfloaterreporter.h b/linden/indra/newview/llfloaterreporter.h
index 9696b34..5e8f735 100644
--- a/linden/indra/newview/llfloaterreporter.h
+++ b/linden/indra/newview/llfloaterreporter.h
@@ -49,6 +49,8 @@ struct LLResourceData;
// these flags are used to label info requests to the server
const U32 BUG_REPORT_REQUEST = 0x01 << 0;
const U32 COMPLAINT_REPORT_REQUEST = 0x01 << 1;
+const U32 OBJECT_PAY_REQUEST = 0x01 << 2;
+
// ************************************************************
// THESE ENUMS ARE IN THE DATABASE!!!
diff --git a/linden/indra/newview/llfloatersnapshot.cpp b/linden/indra/newview/llfloatersnapshot.cpp
index c36c54d..f3ad4a7 100644
--- a/linden/indra/newview/llfloatersnapshot.cpp
+++ b/linden/indra/newview/llfloatersnapshot.cpp
@@ -36,7 +36,7 @@
#include "llfontgl.h"
#include "llsys.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "v3dmath.h"
#include "llmath.h"
#include "lldir.h"
@@ -183,6 +183,7 @@ protected:
LLQuaternion mCameraRot;
BOOL mSnapshotActive;
LLViewerWindow::ESnapshotType mSnapshotBufferType;
+ bool mSnapshotSoundPlayed;
public:
static std::set sList;
@@ -208,7 +209,8 @@ LLSnapshotLivePreview::LLSnapshotLivePreview (const LLRect& rect) :
mCameraPos(LLViewerCamera::getInstance()->getOrigin()),
mCameraRot(LLViewerCamera::getInstance()->getQuaternion()),
mSnapshotActive(FALSE),
- mSnapshotBufferType(LLViewerWindow::SNAPSHOT_TYPE_COLOR)
+ mSnapshotBufferType(LLViewerWindow::SNAPSHOT_TYPE_COLOR),
+ mSnapshotSoundPlayed(false)
{
mSnapshotDelayTimer.setTimerExpirySec(0.0f);
mSnapshotDelayTimer.start();
@@ -764,6 +766,19 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview )
{
previewp->mRawImageEncoded->resize(previewp->mRawImage->getWidth(), previewp->mRawImage->getHeight(), previewp->mRawImage->getComponents());
+ if (!gSavedSettings.getBOOL("QuietSnapshotsToDisk"))
+ {
+ // Always play the sound once, on window open.
+ // Don't keep playing if automatic
+ // updates are enabled. It's too invasive. JC
+ if (!previewp->mSnapshotSoundPlayed
+ || !gSavedSettings.getBOOL("AutoSnapshot") )
+ {
+ gViewerWindow->playSnapshotAnimAndSound();
+ previewp->mSnapshotSoundPlayed = true;
+ }
+ }
+
if (previewp->getSnapshotType() == SNAPSHOT_POSTCARD)
{
// *FIX: just resize and reuse existing jpeg?
@@ -923,7 +938,9 @@ BOOL LLSnapshotLivePreview::saveLocal()
class LLFloaterSnapshot::Impl
{
public:
- Impl() : mLastToolset(NULL)
+ Impl()
+ : mAvatarPauseHandles(),
+ mLastToolset(NULL)
{
}
~Impl()
@@ -1054,7 +1071,13 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
previewp->setSize(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight());
}
- if (floaterp->childGetValue("freeze_frame_check").asBoolean())
+ bool use_freeze_frame = floaterp->childGetValue("freeze_frame_check").asBoolean();
+ // For now, auto-snapshot only works in freeze frame mode.
+ // This can be changed in the future by taking the FreezeTime check
+ // out of the onIdle() camera movement detection. JC
+ floaterp->childSetEnabled("auto_snapshot_check", use_freeze_frame);
+
+ if (use_freeze_frame)
{
// stop all mouse events at fullscreen preview layer
floaterp->getParent()->setMouseOpaque(TRUE);
@@ -1089,6 +1112,9 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp)
}
else // turning off freeze frame mode
{
+ // Force off auto-snapshot, see comment above about onIdle. JC
+ gSavedSettings.setBOOL("AutoSnapshot", FALSE);
+
floaterp->getParent()->setMouseOpaque(FALSE);
floaterp->reshape(floaterp->getRect().getWidth(), floaterp->getUIWinHeightLong() + delta_height);
if (previewp)
@@ -1287,12 +1313,6 @@ void LLFloaterSnapshot::Impl::onClickKeep(void* data)
if (gSavedSettings.getBOOL("CloseSnapshotOnKeep"))
{
view->close();
- // only plays sound and anim when keeping a snapshot, and closing the snapshot UI,
- // and only if the save succeeded (i.e. was not canceled)
- if (succeeded)
- {
- gViewerWindow->playSnapshotAnimAndSound();
- }
}
else
{
@@ -1674,13 +1694,13 @@ void LLFloaterSnapshot::Impl::resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32
LLSpinCtrl *sctrl = view->getChild("snapshot_width") ;
if(sctrl)
{
- sctrl->setValue(width) ;
+ sctrl->forceSetValue(width) ;
}
sctrl = view->getChild("snapshot_height") ;
if(sctrl)
{
- sctrl->setValue(height) ;
+ sctrl->forceSetValue(height) ;
}
gSavedSettings.setS32("LastSnapshotWidth", width);
@@ -1707,8 +1727,30 @@ void LLFloaterSnapshot::Impl::onCommitCustomResolution(LLUICtrl *ctrl, void* dat
if (w != curw || h != curh)
{
+ BOOL update_ = FALSE ;
+ //if to upload a snapshot, process spinner input in a special way.
+ if(LLSnapshotLivePreview::SNAPSHOT_TEXTURE == gSavedSettings.getS32("LastSnapshotType"))
+ {
+ S32 spinner_increment = (S32)((LLSpinCtrl*)ctrl)->getIncrement() ;
+ S32 dw = w - curw ;
+ S32 dh = h - curh ;
+ dw = (dw == spinner_increment) ? 1 : ((dw == -spinner_increment) ? -1 : 0) ;
+ dh = (dh == spinner_increment) ? 1 : ((dh == -spinner_increment) ? -1 : 0) ;
+
+ if(dw)
+ {
+ w = (dw > 0) ? curw << dw : curw >> -dw ;
+ update_ = TRUE ;
+ }
+ if(dh)
+ {
+ h = (dh > 0) ? curh << dh : curh >> -dh ;
+ update_ = TRUE ;
+ }
+ }
+
previewp->setMaxImageSize((S32)((LLSpinCtrl *)ctrl)->getMaxValue()) ;
- if(checkImageSize(previewp, w, h, w != curw, previewp->getMaxImageSize()))
+ if(checkImageSize(previewp, w, h, w != curw, previewp->getMaxImageSize()) || update_)
{
resetSnapshotSizeOnUI(view, w, h) ;
}
diff --git a/linden/indra/newview/llfloatertools.cpp b/linden/indra/newview/llfloatertools.cpp
index 97a8db3..97150e3 100644
--- a/linden/indra/newview/llfloatertools.cpp
+++ b/linden/indra/newview/llfloatertools.cpp
@@ -194,12 +194,16 @@ BOOL LLFloaterTools::postBuild()
mBtnLand = getChild("button land" );
childSetAction("button land",LLFloaterTools::setEditTool, (void*)LLToolSelectLand::getInstance());
mTextStatus = getChild("text status");
- mRadioZoom = getChild("radio zoom");
+
childSetCommitCallback("slider zoom",commit_slider_zoom,this);
+
+ mRadioZoom = getChild("radio zoom");
+ childSetCommitCallback("radio zoom",commit_radio_zoom,this);
mRadioOrbit = getChild("radio orbit");
childSetCommitCallback("radio orbit",commit_radio_orbit,this);
mRadioPan = getChild("radio pan");
childSetCommitCallback("radio pan",commit_radio_pan,this);
+
mRadioMove = getChild("radio move");
childSetCommitCallback("radio move",click_popup_grab_drag,this);
mRadioLift = getChild("radio lift");
@@ -492,6 +496,7 @@ void LLFloaterTools::dirty()
// floater is closed.
void LLFloaterTools::resetToolState()
{
+ gCameraBtnZoom = TRUE;
gCameraBtnOrbit = FALSE;
gCameraBtnPan = FALSE;
@@ -524,7 +529,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
mRadioOrbit ->setVisible( focus_visible );
mRadioPan ->setVisible( focus_visible );
childSetVisible("slider zoom", focus_visible);
-
+ childSetEnabled("slider zoom", gCameraBtnZoom);
+
mRadioZoom ->set( !gCameraBtnOrbit &&
!gCameraBtnPan &&
!(mask == MASK_ORBIT) &&
@@ -867,18 +873,21 @@ void click_popup_grab_spin(LLUICtrl*, void*)
void commit_radio_zoom(LLUICtrl *, void*)
{
+ gCameraBtnZoom = TRUE;
gCameraBtnOrbit = FALSE;
gCameraBtnPan = FALSE;
}
void commit_radio_orbit(LLUICtrl *, void*)
{
+ gCameraBtnZoom = FALSE;
gCameraBtnOrbit = TRUE;
gCameraBtnPan = FALSE;
}
void commit_radio_pan(LLUICtrl *, void*)
{
+ gCameraBtnZoom = FALSE;
gCameraBtnOrbit = FALSE;
gCameraBtnPan = TRUE;
}
diff --git a/linden/indra/newview/llfolderview.cpp b/linden/indra/newview/llfolderview.cpp
index 49ca5e4..b543e31 100644
--- a/linden/indra/newview/llfolderview.cpp
+++ b/linden/indra/newview/llfolderview.cpp
@@ -40,7 +40,7 @@
#include "llfocusmgr.h"
#include "llfontgl.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llinventory.h"
#include "llcallbacklist.h"
@@ -3144,6 +3144,10 @@ void LLFolderView::draw()
{
closeAutoOpenedFolders();
}
+ if(gViewerWindow->hasKeyboardFocus(this) && !getVisible())
+ {
+ gViewerWindow->setKeyboardFocus( NULL );
+ }
// while dragging, update selection rendering to reflect single/multi drag status
if (LLToolDragAndDrop::getInstance()->hasMouseCapture())
diff --git a/linden/indra/newview/llframestats.cpp b/linden/indra/newview/llframestats.cpp
index f67c3b8..c7519c9 100644
--- a/linden/indra/newview/llframestats.cpp
+++ b/linden/indra/newview/llframestats.cpp
@@ -184,7 +184,7 @@ void LLFrameStats::dump()
char filename[LL_MAX_PATH]; /* Flawfinder: ignore */
snprintf(filename, LL_MAX_PATH, "%s", gDirUtilp->getExpandedFilename(LL_PATH_LOGS, file_with_num).c_str()); /* Flawfinder: ignore */
- FILE *fp = LLFile::fopen(filename, "w"); /* Flawfinder: ignore */
+ LLFILE *fp = LLFile::fopen(filename, "w"); /* Flawfinder: ignore */
if (!fp)
{
llinfos << "Couldn't open file for dumping frame stats!" << llendl;
diff --git a/linden/indra/newview/llgivemoney.cpp b/linden/indra/newview/llgivemoney.cpp
index 41b1c1e..016acd5 100644
--- a/linden/indra/newview/llgivemoney.cpp
+++ b/linden/indra/newview/llgivemoney.cpp
@@ -40,6 +40,8 @@
#include "llresmgr.h"
#include "lltextbox.h"
#include "lllineeditor.h"
+#include "llmutelist.h"
+#include "llfloaterreporter.h"
#include "llviewerobject.h"
#include "llviewerobjectlist.h"
#include "llviewerregion.h"
@@ -474,6 +476,17 @@ void LLFloaterPay::give(S32 amount)
if(dest_object->isAvatar()) tx_type = TRANS_GIFT;
mCallback(mTargetUUID, region, amount, FALSE, tx_type, object_name);
mObjectSelection = NULL;
+
+ // request the object owner in order to check if the owner needs to be unmuted
+ LLMessageSystem* msg = gMessageSystem;
+ msg->newMessageFast(_PREHASH_RequestObjectPropertiesFamily);
+ msg->nextBlockFast(_PREHASH_AgentData);
+ msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+ msg->nextBlockFast(_PREHASH_ObjectData);
+ msg->addU32Fast(_PREHASH_RequestFlags, OBJECT_PAY_REQUEST );
+ msg->addUUIDFast(_PREHASH_ObjectID, mTargetUUID);
+ msg->sendReliable( region->getHost() );
}
}
}
@@ -481,6 +494,9 @@ void LLFloaterPay::give(S32 amount)
{
// just transfer the L$
mCallback(mTargetUUID, gAgent.getRegion(), amount, mTargetIsGroup, TRANS_GIFT, LLString::null);
+
+ // check if the payee needs to be unmuted
+ LLMuteList::getInstance()->autoRemove(mTargetUUID, LLMuteList::AR_MONEY);
}
}
}
diff --git a/linden/indra/newview/llglsandbox.cpp b/linden/indra/newview/llglsandbox.cpp
index 4ea38aa..30c76c9 100644
--- a/linden/indra/newview/llglsandbox.cpp
+++ b/linden/indra/newview/llglsandbox.cpp
@@ -39,7 +39,7 @@
#include "llviewercontrol.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llglheaders.h"
#include "llparcel.h"
#include "llui.h"
diff --git a/linden/indra/newview/llglslshader.cpp b/linden/indra/newview/llglslshader.cpp
index 5c8f156..afbafde 100644
--- a/linden/indra/newview/llglslshader.cpp
+++ b/linden/indra/newview/llglslshader.cpp
@@ -34,6 +34,7 @@
#include "llfeaturemanager.h"
#include "llglslshader.h"
+#include "llfile.h"
#include "llviewerwindow.h"
#include "llviewercontrol.h"
#include "pipeline.h"
@@ -42,16 +43,16 @@
#include "llwaterparammanager.h"
#include "llsky.h"
#include "llvosky.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#if LL_DARWIN
#include "OpenGL/OpenGL.h"
#endif
#ifdef LL_RELEASE_FOR_DOWNLOAD
-#define UNIFORM_ERRS llwarns
+#define UNIFORM_ERRS LL_WARNS_ONCE("Shader")
#else
-#define UNIFORM_ERRS llerrs
+#define UNIFORM_ERRS LL_ERRS("Shader")
#endif
// Lots of STL stuff in here, using namespace std to keep things more readable
@@ -60,20 +61,6 @@ using std::pair;
using std::make_pair;
using std::string;
-/*
-//utility shader objects (not shader programs)
-GLhandleARB gSumLightsVertex;
-GLhandleARB gLightVertex;
-GLhandleARB gLightFuncVertex;
-GLhandleARB gLightFragment;
-GLhandleARB gWaterFogFragment;
-
-//utility WindLight shader objects (not shader programs)
-GLhandleARB gWindLightVertex;
-GLhandleARB gWindLightFragment;
-GLhandleARB gGammaFragment;
-*/
-
LLVector4 gShinyOrigin;
//object shaders
@@ -506,11 +493,11 @@ void LLShaderMgr::dumpObjectLog(GLhandleARB ret, BOOL warns)
LLString log = get_object_log(ret);
if (warns)
{
- llwarns << log << llendl;
+ LL_WARNS("ShaderLoading") << log << LL_ENDL;
}
else
{
- llinfos << log << llendl;
+ LL_DEBUGS("ShaderLoading") << log << LL_ENDL;
}
}
@@ -520,10 +507,10 @@ GLhandleARB LLShaderMgr::loadShaderFile(const LLString& filename, S32 & shader_l
error = glGetError();
if (error != GL_NO_ERROR)
{
- llwarns << "GL ERROR entering loadShaderFile(): " << error << llendl;
+ LL_WARNS("ShaderLoading") << "GL ERROR entering loadShaderFile(): " << error << LL_ENDL;
}
- llinfos << "Loading shader file: " << filename << " class " << shader_level << llendl;
+ LL_DEBUGS("ShaderLoading") << "Loading shader file: " << filename << " class " << shader_level << LL_ENDL;
if (filename.empty())
{
@@ -532,7 +519,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const LLString& filename, S32 & shader_l
//read in from file
- FILE* file = NULL;
+ LLFILE* file = NULL;
S32 try_gpu_class = shader_level;
S32 gpu_class;
@@ -544,20 +531,18 @@ GLhandleARB LLShaderMgr::loadShaderFile(const LLString& filename, S32 & shader_l
fname << gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "shaders/class");
fname << gpu_class << "/" << filename;
- llinfos << "Looking in " << fname.str().c_str() << llendl;
- file = fopen(fname.str().c_str(), "r"); /* Flawfinder: ignore */
+ LL_DEBUGS("ShaderLoading") << "Looking in " << fname.str().c_str() << LL_ENDL;
+ file = LLFile::fopen(fname.str().c_str(), "r"); /* Flawfinder: ignore */
if (file)
{
-#if !LL_RELEASE_FOR_DOWNLOAD
- llinfos << "Found shader file: " << fname.str() << llendl;
-#endif
+ LL_INFOS("ShaderLoading") << "Loading file: shaders/class" << gpu_class << "/" << filename << " (Want class " << gpu_class << ")" << LL_ENDL;
break; // done
}
}
if (file == NULL)
{
- llinfos << "GLSL Shader file not found: " << filename << llendl;
+ LL_WARNS("ShaderLoading") << "GLSL Shader file not found: " << filename << LL_ENDL;
return 0;
}
@@ -580,7 +565,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const LLString& filename, S32 & shader_l
error = glGetError();
if (error != GL_NO_ERROR)
{
- llwarns << "GL ERROR in glCreateShaderObjectARB: " << error << llendl;
+ LL_WARNS("ShaderLoading") << "GL ERROR in glCreateShaderObjectARB: " << error << LL_ENDL;
}
else
{
@@ -589,7 +574,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const LLString& filename, S32 & shader_l
error = glGetError();
if (error != GL_NO_ERROR)
{
- llwarns << "GL ERROR in glShaderSourceARB: " << error << llendl;
+ LL_WARNS("ShaderLoading") << "GL ERROR in glShaderSourceARB: " << error << LL_ENDL;
}
else
{
@@ -598,7 +583,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const LLString& filename, S32 & shader_l
error = glGetError();
if (error != GL_NO_ERROR)
{
- llwarns << "GL ERROR in glCompileShaderARB: " << error << llendl;
+ LL_WARNS("ShaderLoading") << "GL ERROR in glCompileShaderARB: " << error << LL_ENDL;
}
}
}
@@ -616,7 +601,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const LLString& filename, S32 & shader_l
if (error != GL_NO_ERROR || success == GL_FALSE)
{
//an error occured, print log
- llwarns << "GLSL Compilation Error: (" << error << ") in " << filename << llendl;
+ LL_WARNS("ShaderLoading") << "GLSL Compilation Error: (" << error << ") in " << filename << LL_ENDL;
dumpObjectLog(ret);
ret = 0;
}
@@ -641,7 +626,7 @@ GLhandleARB LLShaderMgr::loadShaderFile(const LLString& filename, S32 & shader_l
shader_level--;
return loadShaderFile(filename,shader_level,type);
}
- llwarns << "Failed to load " << filename << llendl;
+ LL_WARNS("ShaderLoading") << "Failed to load " << filename << LL_ENDL;
}
return ret;
}
@@ -655,7 +640,7 @@ BOOL LLShaderMgr::linkProgramObject(GLhandleARB obj, BOOL suppress_errors)
if (!suppress_errors && success == GL_FALSE)
{
//an error occured, print log
- llwarns << "GLSL Linker Error:" << llendl;
+ LL_WARNS("ShaderLoading") << "GLSL Linker Error:" << LL_ENDL;
}
// NOTE: Removing LL_DARWIN block as it doesn't seem to actually give the correct answer,
@@ -675,7 +660,7 @@ BOOL LLShaderMgr::linkProgramObject(GLhandleARB obj, BOOL suppress_errors)
CGLGetParameter (ctx, kCGLCPGPUFragmentProcessing, &fragmentGPUProcessing);
if (!fragmentGPUProcessing || !vertexGPUProcessing)
{
- llwarns << "GLSL Linker: Running in Software:" << llendl;
+ LL_WARNS("ShaderLoading") << "GLSL Linker: Running in Software:" << LL_ENDL;
success = GL_FALSE;
suppress_errors = FALSE;
}
@@ -685,7 +670,7 @@ BOOL LLShaderMgr::linkProgramObject(GLhandleARB obj, BOOL suppress_errors)
LLString::toLower(log);
if (log.find("software") != LLString::npos)
{
- llwarns << "GLSL Linker: Running in Software:" << llendl;
+ LL_WARNS("ShaderLoading") << "GLSL Linker: Running in Software:" << LL_ENDL;
success = GL_FALSE;
suppress_errors = FALSE;
}
@@ -706,7 +691,7 @@ BOOL LLShaderMgr::validateProgramObject(GLhandleARB obj)
glGetObjectParameterivARB(obj, GL_OBJECT_VALIDATE_STATUS_ARB, &success);
if (success == GL_FALSE)
{
- llwarns << "GLSL program not valid: " << llendl;
+ LL_WARNS("ShaderLoading") << "GLSL program not valid: " << LL_ENDL;
dumpObjectLog(obj);
}
else
@@ -757,7 +742,7 @@ void LLShaderMgr::setShaders()
gPipeline.setLightingDetail(-1);
// Shaders
- llinfos << "\n~~~~~~~~~~~~~~~~~~\n Loading Shaders:\n~~~~~~~~~~~~~~~~~~" << llendl;
+ LL_INFOS("ShaderLoading") << "\n~~~~~~~~~~~~~~~~~~\n Loading Shaders:\n~~~~~~~~~~~~~~~~~~" << LL_ENDL;
for (S32 i = 0; i < SHADER_COUNT; i++)
{
sVertexShaderLevel[i] = 0;
@@ -1625,7 +1610,7 @@ BOOL LLGLSLShader::createShader(vector * attributes,
for ( ; fileIter != mShaderFiles.end(); fileIter++ )
{
GLhandleARB shaderhandle = LLShaderMgr::loadShaderFile((*fileIter).first, mShaderLevel, (*fileIter).second);
- lldebugs << "SHADER FILE: " << (*fileIter).first << " mShaderLevel=" << mShaderLevel << llendl;
+ LL_DEBUGS("ShaderLoading") << "SHADER FILE: " << (*fileIter).first << " mShaderLevel=" << mShaderLevel << LL_ENDL;
if (mShaderLevel > 0)
{
attachObject(shaderhandle);
@@ -1647,12 +1632,12 @@ BOOL LLGLSLShader::createShader(vector * attributes,
}
if( !success )
{
- llwarns << "Failed to link shader: " << mName << llendl;
+ LL_WARNS("ShaderLoading") << "Failed to link shader: " << mName << LL_ENDL;
// Try again using a lower shader level;
if (mShaderLevel > 0)
{
- llwarns << "Failed to link using shader level " << mShaderLevel << ". Trying again using shader level " << (mShaderLevel - 1) << "." << llendl;
+ LL_WARNS("ShaderLoading") << "Failed to link using shader level " << mShaderLevel << " trying again using shader level " << (mShaderLevel - 1) << LL_ENDL;
mShaderLevel--;
return createShader(attributes,uniforms);
}
@@ -1671,7 +1656,7 @@ BOOL LLGLSLShader::attachObject(std::string object)
}
else
{
- llwarns << "Attempting to attach shader object that hasn't been compiled: " << object << llendl;
+ LL_WARNS("ShaderLoading") << "Attempting to attach shader object that hasn't been compiled: " << object << LL_ENDL;
return FALSE;
}
}
@@ -1686,7 +1671,7 @@ void LLGLSLShader::attachObject(GLhandleARB object)
}
else
{
- llwarns << "Attempting to attach non existing shader object. " << llendl;
+ LL_WARNS("ShaderLoading") << "Attempting to attach non existing shader object. " << LL_ENDL;
}
}
@@ -1718,7 +1703,7 @@ BOOL LLGLSLShader::mapAttributes(const vector * attributes)
if (index != -1)
{
mAttribute[i] = index;
- // llinfos << "Attribute " << name << " assigned to channel " << index << llendl;
+ LL_DEBUGS("ShaderLoading") << "Attribute " << name << " assigned to channel " << index << LL_ENDL;
}
}
if (attributes != NULL)
@@ -1730,7 +1715,7 @@ BOOL LLGLSLShader::mapAttributes(const vector * attributes)
if (index != -1)
{
mAttribute[LLShaderMgr::sReservedAttribs.size() + i] = index;
- // llinfos << "Attribute " << name << " assigned to channel " << index << llendl;
+ LL_DEBUGS("ShaderLoading") << "Attribute " << name << " assigned to channel " << index << LL_ENDL;
}
}
}
@@ -1759,9 +1744,7 @@ void LLGLSLShader::mapUniform(GLint index, const vector * uniforms)
if (location != -1)
{
mUniformMap[name] = location;
-#if 0 // !LL_RELEASE_FOR_DOWNLOAD
- llinfos << "Uniform " << name << " is at location " << location << llendl;
-#endif
+ LL_DEBUGS("ShaderLoading") << "Uniform " << name << " is at location " << location << LL_ENDL;
//find the index of this uniform
for (S32 i = 0; i < (S32) LLShaderMgr::sReservedUniforms.size(); i++)
@@ -1798,7 +1781,7 @@ GLint LLGLSLShader::mapUniformTextureChannel(GLint location, GLenum type)
if (type >= GL_SAMPLER_1D_ARB && type <= GL_SAMPLER_2D_RECT_SHADOW_ARB)
{ //this here is a texture
glUniform1iARB(location, mActiveTextureChannels);
- llinfos << "Assigned to texture channel " << mActiveTextureChannels << llendl;
+ LL_DEBUGS("ShaderLoading") << "Assigned to texture channel " << mActiveTextureChannels << LL_ENDL;
return mActiveTextureChannels++;
}
return -1;
@@ -1866,17 +1849,22 @@ void LLGLSLShader::unbind()
}
}
+void LLGLSLShader::bindNoShader(void)
+{
+ glUseProgramObjectARB(0);
+}
+
S32 LLGLSLShader::enableTexture(S32 uniform, S32 mode)
{
if (uniform < 0 || uniform >= (S32)mTexture.size())
{
- UNIFORM_ERRS << "LLGLSLShader::enableTexture: uniform out of range: " << uniform << llendl;
+ UNIFORM_ERRS << "Uniform out of range: " << uniform << LL_ENDL;
return -1;
}
S32 index = mTexture[uniform];
if (index != -1)
{
- glActiveTextureARB(GL_TEXTURE0_ARB+index);
+ gGL.getTexUnit(index)->activate();
glEnable(mode);
}
return index;
@@ -1886,13 +1874,13 @@ S32 LLGLSLShader::disableTexture(S32 uniform, S32 mode)
{
if (uniform < 0 || uniform >= (S32)mTexture.size())
{
- UNIFORM_ERRS << "LLGLSLShader::disableTexture: uniform out of range: " << uniform << llendl;
+ UNIFORM_ERRS << "Uniform out of range: " << uniform << LL_ENDL;
return -1;
}
S32 index = mTexture[uniform];
if (index != -1)
{
- glActiveTextureARB(GL_TEXTURE0_ARB+index);
+ gGL.getTexUnit(index)->activate();
glDisable(mode);
}
return index;
@@ -1904,7 +1892,7 @@ void LLGLSLShader::uniform1f(U32 index, GLfloat x)
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
@@ -1926,7 +1914,7 @@ void LLGLSLShader::uniform2f(U32 index, GLfloat x, GLfloat y)
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
@@ -1949,7 +1937,7 @@ void LLGLSLShader::uniform3f(U32 index, GLfloat x, GLfloat y, GLfloat z)
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
@@ -1972,7 +1960,7 @@ void LLGLSLShader::uniform4f(U32 index, GLfloat x, GLfloat y, GLfloat z, GLfloat
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
@@ -1995,7 +1983,7 @@ void LLGLSLShader::uniform1fv(U32 index, U32 count, const GLfloat* v)
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
@@ -2018,7 +2006,7 @@ void LLGLSLShader::uniform2fv(U32 index, U32 count, const GLfloat* v)
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
@@ -2041,7 +2029,7 @@ void LLGLSLShader::uniform3fv(U32 index, U32 count, const GLfloat* v)
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
@@ -2064,7 +2052,7 @@ void LLGLSLShader::uniform4fv(U32 index, U32 count, const GLfloat* v)
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
@@ -2087,7 +2075,7 @@ void LLGLSLShader::uniformMatrix2fv(U32 index, U32 count, GLboolean transpose, c
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
@@ -2104,7 +2092,7 @@ void LLGLSLShader::uniformMatrix3fv(U32 index, U32 count, GLboolean transpose, c
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
@@ -2121,7 +2109,7 @@ void LLGLSLShader::uniformMatrix4fv(U32 index, U32 count, GLboolean transpose, c
{
if (mUniform.size() <= index)
{
- UNIFORM_ERRS << "Uniform index out of bounds." << llendl;
+ UNIFORM_ERRS << "Uniform index out of bounds." << LL_ENDL;
return;
}
diff --git a/linden/indra/newview/llglslshader.h b/linden/indra/newview/llglslshader.h
index f3f83da..e517b94 100644
--- a/linden/indra/newview/llglslshader.h
+++ b/linden/indra/newview/llglslshader.h
@@ -118,6 +118,9 @@ public:
void bind();
void unbind();
+ // Unbinds any previously bound shader by explicitly binding no shader.
+ static void bindNoShader(void);
+
GLhandleARB mProgramObject;
std::vector mAttribute; //lookup table of attribute enum to attribute channel
std::vector mUniform; //lookup table of uniform enum to uniform location
diff --git a/linden/indra/newview/llgroupnotify.cpp b/linden/indra/newview/llgroupnotify.cpp
index 5b6c3ca..d760e8b 100644
--- a/linden/indra/newview/llgroupnotify.cpp
+++ b/linden/indra/newview/llgroupnotify.cpp
@@ -217,8 +217,8 @@ LLGroupNotifyBox::LLGroupNotifyBox(const char* subject,
LLFontGL::sSansSerif,
FALSE);
- LLStyle headerstyle(true,LLColor4::black,"SansSerifBig");
- LLStyle datestyle(true,LLColor4::black,"serif");
+ static const LLStyleSP headerstyle(new LLStyle(true,LLColor4::black,"SansSerifBig"));
+ static const LLStyleSP datestyle(new LLStyle(true,LLColor4::black,"serif"));
text->appendStyledText(subject,false,false,&headerstyle);
text->appendStyledText(time_buf,false,false,&datestyle);
diff --git a/linden/indra/newview/llhoverview.cpp b/linden/indra/newview/llhoverview.cpp
index 6cc3873..082f413 100644
--- a/linden/indra/newview/llhoverview.cpp
+++ b/linden/indra/newview/llhoverview.cpp
@@ -38,7 +38,7 @@
#include "llfontgl.h"
#include "message.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llfontgl.h"
#include "llparcel.h"
#include "lldbstrings.h"
@@ -52,6 +52,7 @@
#include "llpermissions.h"
#include "llresmgr.h"
#include "llselectmgr.h"
+#include "lltrans.h"
#include "lltoolmgr.h"
#include "lltoolpie.h"
#include "lltoolselectland.h"
@@ -254,7 +255,7 @@ void LLHoverView::updateText()
}
else
{
- line.append("Person");
+ line.append(LLTrans::getString("TooltipPerson"));
}
mText.push_back(line);
}
@@ -275,7 +276,7 @@ void LLHoverView::updateText()
line.clear();
if (nodep->mName.empty())
{
- line.append("(no name)");
+ line.append(LLTrans::getString("TooltipNoName"));
}
else
{
@@ -291,7 +292,7 @@ void LLHoverView::updateText()
// Line: "Owner: James Linden"
line.clear();
- line.append("Owner: ");
+ line.append(LLTrans::getString("TooltipOwner") + " ");
if (nodep->mValid)
{
@@ -302,7 +303,7 @@ void LLHoverView::updateText()
owner = nodep->mPermissions->getOwner();
if (LLUUID::null == owner)
{
- line.append("Public");
+ line.append(LLTrans::getString("TooltipPublic"));
}
else if(gCacheName->getFullName(owner, name))
{
@@ -310,7 +311,7 @@ void LLHoverView::updateText()
}
else
{
- line.append("Retrieving...");
+ line.append(LLTrans::getString("RetrievingData"));
}
}
else
@@ -320,17 +321,17 @@ void LLHoverView::updateText()
if (gCacheName->getGroupName(owner, name))
{
line.append(name);
- line.append("(Group)");
+ line.append(LLTrans::getString("TooltipIsGroup"));
}
else
{
- line.append("Retrieving...");
+ line.append(LLTrans::getString("RetrievingData"));
}
}
}
else
{
- line.append("Retrieving...");
+ line.append(LLTrans::getString("RetrievingData"));
}
mText.push_back(line);
@@ -350,47 +351,48 @@ void LLHoverView::updateText()
line.clear();
if (object->flagScripted())
{
- line.append("Script ");
+
+ line.append(LLTrans::getString("TooltipFlagScript") + " ");
}
if (object->usePhysics())
{
- line.append("Physics ");
+ line.append(LLTrans::getString("TooltipFlagPhysics") + " ");
}
if (object->flagHandleTouch() || (parent && parent->flagHandleTouch()) )
{
- line.append("Touch ");
+ line.append(LLTrans::getString("TooltipFlagTouch") + " ");
suppressObjectHoverDisplay = FALSE; // Show tip
}
if (object->flagTakesMoney() || (parent && parent->flagTakesMoney()) )
{
- line.append("L$ ");
+ line.append(LLTrans::getString("TooltipFlagL$") + " ");
suppressObjectHoverDisplay = FALSE; // Show tip
}
if (object->flagAllowInventoryAdd())
{
- line.append("Drop Inventory ");
+ line.append(LLTrans::getString("TooltipFlagDropInventory") + " ");
suppressObjectHoverDisplay = FALSE; // Show tip
}
if (object->flagPhantom())
{
- line.append("Phantom ");
+ line.append(LLTrans::getString("TooltipFlagPhantom") + " ");
}
if (object->flagTemporary())
{
- line.append("Temporary ");
+ line.append(LLTrans::getString("TooltipFlagTemporary") + " ");
}
if (object->usePhysics() ||
object->flagHandleTouch() ||
(parent && parent->flagHandleTouch()) )
{
- line.append("(Right-click for menu) ");
+ line.append(LLTrans::getString("TooltipFlagRightClickMenu") + " ");
}
mText.push_back(line);
}
@@ -406,12 +408,14 @@ void LLHoverView::updateText()
nodep->mSaleInfo.getSaleType() != LLSaleInfo::FS_COPY);
if (for_copy)
{
- line.append("Free to copy");
+ line.append(LLTrans::getString("TooltipFreeToCopy"));
suppressObjectHoverDisplay = FALSE; // Show tip
}
else if (for_sale)
{
- line.append(llformat("For Sale: L$%d", nodep->mSaleInfo.getSalePrice()));
+ LLString::format_map_t args;
+ args["[AMOUNT]"] = nodep->mSaleInfo.getSalePrice();
+ line.append(LLTrans::getString("TooltipForSaleL$", args));
suppressObjectHoverDisplay = FALSE; // Show tip
}
else
@@ -422,7 +426,9 @@ void LLHoverView::updateText()
}
else
{
- line.append("For Sale: Retrieving...");
+ LLString::format_map_t args;
+ args["[MESSAGE]"] = LLTrans::getString("RetrievingData");
+ line.append(LLTrans::getString("TooltipForSaleMsg", args));
}
mText.push_back(line);
}
@@ -459,7 +465,7 @@ void LLHoverView::updateText()
// Line: "Land"
line.clear();
- line.append("Land: ");
+ line.append(LLTrans::getString("TooltipLand"));
if (hover_parcel)
{
line.append(hover_parcel->getName());
@@ -468,25 +474,25 @@ void LLHoverView::updateText()
// Line: "Owner: James Linden"
line.clear();
- line.append("Owner: ");
+ line.append(LLTrans::getString("TooltipOwner") + " ");
if ( hover_parcel )
{
std::string name;
if (LLUUID::null == owner)
{
- line.append("Public");
+ line.append(LLTrans::getString("TooltipPublic"));
}
else if (hover_parcel->getIsGroupOwned())
{
if (gCacheName->getGroupName(owner, name))
{
line.append(name);
- line.append("(Group)");
+ line.append(LLTrans::getString("TooltipIsGroup"));
}
else
{
- line.append("Retrieving...");
+ line.append(LLTrans::getString("RetrievingData"));
}
}
else if(gCacheName->getFullName(owner, name))
@@ -495,12 +501,12 @@ void LLHoverView::updateText()
}
else
{
- line.append("Retrieving...");
+ line.append(LLTrans::getString("RetrievingData"));
}
}
else
{
- line.append("Retrieving...");
+ line.append(LLTrans::getString("RetrievingData"));
}
mText.push_back(line);
@@ -519,27 +525,26 @@ void LLHoverView::updateText()
{
if ( hover_parcel->getAllowGroupModify() )
{
- line.append("Group Build");
+ line.append(LLTrans::getString("TooltipFlagGroupBuild"));
}
else
{
- line.append("No Build");
+ line.append(LLTrans::getString("TooltipFlagNoBuild"));
}
-
words++;
}
if ( !hover_parcel->getAllowTerraform() )
{
if (words) line.append(", ");
- line.append("No Edit");
+ line.append(LLTrans::getString("TooltipFlagNoEdit"));
words++;
}
if ( hover_parcel->getAllowDamage() )
{
if (words) line.append(", ");
- line.append("Not Safe");
+ line.append(LLTrans::getString("TooltipFlagNotSafe"));
words++;
}
@@ -547,7 +552,7 @@ void LLHoverView::updateText()
if ( !hover_parcel->getAllowFly() )
{
if (words) line.append(", ");
- line.append("No Fly");
+ line.append(LLTrans::getString("TooltipFlagNoFly"));
words++;
}
@@ -556,11 +561,11 @@ void LLHoverView::updateText()
if (words) line.append(", ");
if ( hover_parcel->getAllowGroupScripts() )
{
- line.append("Group Scripts");
+ line.append(LLTrans::getString("TooltipFlagGroupScripts"));
}
else
{
- line.append("No Scripts");
+ line.append(LLTrans::getString("TooltipFlagNoScripts"));
}
words++;
@@ -583,7 +588,9 @@ void LLHoverView::updateText()
*/
if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE))
{
- line = llformat("For Sale: L$%d", hover_parcel->getSalePrice() );
+ LLString::format_map_t args;
+ args["[AMOUNT]"] = hover_parcel->getSalePrice();
+ line = LLTrans::getString("TooltipForSaleL$", args);
mText.push_back(line);
}
}
diff --git a/linden/indra/newview/llhudeffectlookat.cpp b/linden/indra/newview/llhudeffectlookat.cpp
index 92e7fdf..88ad5d6 100644
--- a/linden/indra/newview/llhudeffectlookat.cpp
+++ b/linden/indra/newview/llhudeffectlookat.cpp
@@ -33,7 +33,7 @@
#include "llhudeffectlookat.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "message.h"
#include "llagent.h"
diff --git a/linden/indra/newview/llhudeffectpointat.cpp b/linden/indra/newview/llhudeffectpointat.cpp
index d42eeb5..8cd1023 100644
--- a/linden/indra/newview/llhudeffectpointat.cpp
+++ b/linden/indra/newview/llhudeffectpointat.cpp
@@ -34,7 +34,7 @@
#include "llhudeffectpointat.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llagent.h"
#include "lldrawable.h"
diff --git a/linden/indra/newview/llhudicon.cpp b/linden/indra/newview/llhudicon.cpp
index 010e85f..85cc996 100644
--- a/linden/indra/newview/llhudicon.cpp
+++ b/linden/indra/newview/llhudicon.cpp
@@ -34,7 +34,7 @@
#include "llhudicon.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llviewerobject.h"
#include "lldrawable.h"
diff --git a/linden/indra/newview/llhudtext.cpp b/linden/indra/newview/llhudtext.cpp
index f8eddc7..26df22a 100644
--- a/linden/indra/newview/llhudtext.cpp
+++ b/linden/indra/newview/llhudtext.cpp
@@ -33,7 +33,7 @@
#include "llhudtext.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llagent.h"
#include "llviewercontrol.h"
@@ -308,7 +308,6 @@ void LLHUDText::renderText(BOOL for_select)
}
LLUI::popMatrix();
-
LLImageGL::unbindTexture(0);
LLGLDepthTest gls_depth(mZCompare ? GL_TRUE : GL_FALSE, GL_FALSE);
@@ -375,7 +374,7 @@ void LLHUDText::renderText(BOOL for_select)
// Render label
{
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
for(std::vector::iterator segment_iter = mLabelSegments.begin();
segment_iter != mLabelSegments.end(); ++segment_iter )
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp
index 3cb9dfb..2e3682d 100644
--- a/linden/indra/newview/llimpanel.cpp
+++ b/linden/indra/newview/llimpanel.cpp
@@ -48,16 +48,19 @@
#include "llchat.h"
#include "llconsole.h"
#include "llfloater.h"
+#include "llfloatergroupinfo.h"
+#include "llimview.h"
#include "llinventory.h"
#include "llinventorymodel.h"
#include "llinventoryview.h"
+#include "llfloateractivespeakers.h"
#include "llfloateravatarinfo.h"
#include "llfloaterchat.h"
#include "llkeyboard.h"
#include "lllineeditor.h"
+#include "llnotify.h"
#include "llresmgr.h"
#include "lltabcontainer.h"
-#include "llimview.h"
#include "llviewertexteditor.h"
#include "llviewermessage.h"
#include "llviewerstats.h"
@@ -68,11 +71,8 @@
#include "llfloaterhtml.h"
#include "llweb.h"
#include "llhttpclient.h"
-#include "llfloateractivespeakers.h" // LLSpeakerMgr
-#include "llfloatergroupinfo.h"
-#include "llsdutil.h"
-#include "llnotify.h"
#include "llmutelist.h"
+#include "llstylemap.h"
//
// Constants
@@ -1454,24 +1454,20 @@ BOOL LLFloaterIMPanel::inviteToSession(const LLDynamicArray& ids)
return TRUE;
}
-void LLFloaterIMPanel::addHistoryLine(const LLUUID& source, const std::string &utf8msg, const LLColor4& color, bool log_to_file)
+void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4& color, bool log_to_file, const LLUUID& source, const char *name)
{
// start tab flashing when receiving im for background session from user
- LLMultiFloater* hostp = getHost();
- if( !isInVisibleChain()
- && hostp
- && source != gAgent.getID())
+ if (source != LLUUID::null)
{
- hostp->setFloaterFlashing(this, TRUE);
+ LLMultiFloater* hostp = getHost();
+ if( !isInVisibleChain()
+ && hostp
+ && source != gAgent.getID())
+ {
+ hostp->setFloaterFlashing(this, TRUE);
+ }
}
- addHistoryLine(utf8msg, color, log_to_file);
- mSpeakers->speakerChatted(source);
- mSpeakers->setSpeakerTyping(source, FALSE);
-}
-
-void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4& color, bool log_to_file)
-{
// Now we're adding the actual line of text, so erase the
// "Foo is typing..." text segment, and the optional timestamp
// if it was present. JC
@@ -1485,6 +1481,22 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4
timestring = mHistoryEditor->appendTime(prepend_newline);
prepend_newline = false;
}
+
+ // 'name' is a sender name that we want to hotlink so that clicking on it opens a profile.
+ if (name != NULL) // If name exists, then add it to the front of the message.
+ {
+ // Don't hotlink any messages from the system (e.g. "Second Life:"), so just add those in plain text.
+ if (!strcmp(name,SYSTEM_FROM))
+ {
+ mHistoryEditor->appendColoredText(name,false,false,color);
+ }
+ else
+ {
+ // Convert the name to a hotlink and add to message.
+ const LLStyleSP &source_style = LLStyleMap::instance().lookup(source);
+ mHistoryEditor->appendStyledText(name, false, false, &source_style);
+ }
+ }
mHistoryEditor->appendColoredText(utf8msg, false, prepend_newline, color);
if (log_to_file
@@ -1492,9 +1504,9 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4
{
LLString histstr;
if (gSavedPerAccountSettings.getBOOL("IMLogTimestamp"))
- histstr = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate")) + utf8msg;
+ histstr = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate")) + LLString(name) + utf8msg;
else
- histstr = utf8msg;
+ histstr = LLString(name) + utf8msg;
LLLogChat::saveHistory(getTitle(),histstr);
}
@@ -1503,6 +1515,12 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4
{
mNumUnreadMessages++;
}
+
+ if (source != LLUUID::null)
+ {
+ mSpeakers->speakerChatted(source);
+ mSpeakers->setSpeakerTyping(source, FALSE);
+ }
}
@@ -1836,6 +1854,11 @@ void deliver_message(const std::string& utf8_text,
(EInstantMessage)new_dialog,
im_session_id);
gAgent.sendReliableMessage();
+
+ if (LLMuteList::getInstance())
+ {
+ LLMuteList::getInstance()->autoRemove(other_participant_id, LLMuteList::AR_IM);
+ }
}
void LLFloaterIMPanel::sendMsg()
@@ -1888,7 +1911,7 @@ void LLFloaterIMPanel::sendMsg()
BOOL other_was_typing = mOtherTyping;
- addHistoryLine(gAgent.getID(), history_echo, gSavedSettings.getColor("IMChatColor"));
+ addHistoryLine(history_echo, gSavedSettings.getColor("IMChatColor"), true, gAgent.getID());
if (other_was_typing)
{
@@ -2189,4 +2212,3 @@ void LLFloaterIMPanel::onConfirmForceCloseError(S32 option, void* data)
}
-
diff --git a/linden/indra/newview/llimpanel.h b/linden/indra/newview/llimpanel.h
index 16d4042..2ed866b 100644
--- a/linden/indra/newview/llimpanel.h
+++ b/linden/indra/newview/llimpanel.h
@@ -38,6 +38,7 @@
#include "lldarray.h"
#include "llinstantmessage.h"
#include "llvoiceclient.h"
+#include "llstyle.h"
class LLLineEditor;
class LLViewerTextEditor;
@@ -202,13 +203,12 @@ public:
// Return TRUE if successful, otherwise FALSE.
BOOL inviteToSession(const LLDynamicArray& agent_ids);
- void addHistoryLine(const LLUUID& source,
- const std::string &utf8msg,
- const LLColor4& color = LLColor4::white,
- bool log_to_file = true);
void addHistoryLine(const std::string &utf8msg,
const LLColor4& color = LLColor4::white,
- bool log_to_file = true);
+ bool log_to_file = true,
+ const LLUUID& source = LLUUID::null,
+ const char *name = NULL);
+
void setInputFocus( BOOL b );
void selectAll();
@@ -357,6 +357,9 @@ private:
LLFrameTimer mLastKeystrokeTimer;
void disableWhileSessionStarting();
+
+ typedef std::map styleMap;
+ static styleMap mStyleMap;
};
diff --git a/linden/indra/newview/llimview.cpp b/linden/indra/newview/llimview.cpp
index e451388..797c2a4 100644
--- a/linden/indra/newview/llimview.cpp
+++ b/linden/indra/newview/llimview.cpp
@@ -83,6 +83,7 @@ LLIMMgr* gIMMgr = NULL;
// *FIXME: make these all either UIStrings or Strings
static LLString sOnlyUserMessage;
static LLUIString sOfflineMessage;
+static LLString sMutedMessage;
static LLUIString sInviteMessage;
std::map LLFloaterIM::sEventStringsMap;
@@ -161,6 +162,7 @@ BOOL LLFloaterIM::postBuild()
sOfflineMessage = getUIString("offline_message");
sInviteMessage = getUIString("invite_message");
+ sMutedMessage = childGetText("muted_message");
if ( sErrorStringsMap.find("generic") == sErrorStringsMap.end() )
{
@@ -400,10 +402,10 @@ void LLIMMgr::addMessage(
EInstantMessage dialog,
U32 parent_estate_id,
const LLUUID& region_id,
- const LLVector3& position)
+ const LLVector3& position,
+ bool link_name) // If this is true, then we insert the name and link it to a profile
{
LLUUID other_participant_id = target_id;
- bool is_from_system = target_id.isNull() || !strcmp(from, SYSTEM_FROM);
// don't process muted IMs
if (LLMuteList::getInstance()->isMuted(
@@ -420,8 +422,6 @@ void LLIMMgr::addMessage(
other_participant_id = LLUUID::null;
}
-
-
LLFloaterIMPanel* floater;
LLUUID new_session_id = session_id;
if (new_session_id.isNull())
@@ -482,15 +482,17 @@ void LLIMMgr::addMessage(
}
// now add message to floater
- if ( is_from_system ) // chat came from system
+ bool is_from_system = target_id.isNull() || !strcmp(from, SYSTEM_FROM);
+ const LLColor4& color = ( is_from_system ?
+ gSavedSettings.getColor4("SystemChatColor") :
+ gSavedSettings.getColor("IMChatColor"));
+ if ( !link_name )
{
- floater->addHistoryLine(
- msg,
- gSavedSettings.getColor4("SystemChatColor"));
+ floater->addHistoryLine(msg,color); // No name to prepend, so just add the message normally
}
else
{
- floater->addHistoryLine(other_participant_id, msg, gSavedSettings.getColor("IMChatColor"));
+ floater->addHistoryLine(msg, color, true, other_participant_id, from); // Insert linked name to front of message
}
LLFloaterChatterBox* chat_floater = LLFloaterChatterBox::getInstance(LLSD());
@@ -615,6 +617,8 @@ LLUUID LLIMMgr::addSession(
noteOfflineUsers(floater, ids);
LLFloaterChatterBox::showInstance(session_id);
+ noteMutedUsers(floater, ids);
+ LLFloaterChatterBox::getInstance(LLSD())->showFloater(floater);
}
else
{
@@ -659,6 +663,7 @@ LLUUID LLIMMgr::addSession(
noteOfflineUsers(floater, ids);
LLFloaterChatterBox::showInstance(session_id);
+ noteMutedUsers(floater, ids);
}
else
{
@@ -1232,6 +1237,31 @@ void LLIMMgr::noteOfflineUsers(
}
}
+void LLIMMgr::noteMutedUsers(LLFloaterIMPanel* floater,
+ const LLDynamicArray& ids)
+{
+ S32 count = ids.count();
+ if(count > 0)
+ {
+ const LLRelationship* info = NULL;
+ LLAvatarTracker& at = LLAvatarTracker::instance();
+ for(S32 i = 0; i < count; ++i)
+ {
+ info = at.getBuddyInfo(ids.get(i));
+ char first[DB_FIRST_NAME_BUF_SIZE]; /*Flawfinder: ignore*/
+ char last[DB_LAST_NAME_BUF_SIZE]; /*Flawfinder: ignore*/
+ if(info && LLMuteList::getInstance() && LLMuteList::getInstance()->isMuted(ids.get(i))
+ && gCacheName->getName(ids.get(i), first, last))
+ {
+ LLUIString muted = sMutedMessage;
+ muted.setArg("[FIRST]", first);
+ muted.setArg("[LAST]", last);
+ floater->addHistoryLine(muted);
+ }
+ }
+ }
+}
+
void LLIMMgr::processIMTypingStart(const LLIMInfo* im_info)
{
processIMTypingCore(im_info, TRUE);
@@ -1520,8 +1550,7 @@ public:
snprintf(
buffer,
sizeof(buffer),
- "%s%s%s%s",
- name.c_str(),
+ "%s%s%s",
separator_string,
saved,
(message.c_str() + message_offset)); /*Flawfinder: ignore*/
@@ -1540,7 +1569,8 @@ public:
IM_SESSION_INVITE,
message_params["parent_estate_id"].asInteger(),
message_params["region_id"].asUUID(),
- ll_vector3_from_sd(message_params["position"]));
+ ll_vector3_from_sd(message_params["position"]),
+ true);
snprintf(
buffer,
@@ -1628,4 +1658,3 @@ LLHTTPRegistration
gHTTPRegistrationMessageChatterBoxInvitation(
"/message/ChatterBoxInvitation");
-
diff --git a/linden/indra/newview/llimview.h b/linden/indra/newview/llimview.h
index 44cb992..b2621e8 100644
--- a/linden/indra/newview/llimview.h
+++ b/linden/indra/newview/llimview.h
@@ -65,7 +65,8 @@ public:
EInstantMessage dialog = IM_NOTHING_SPECIAL,
U32 parent_estate_id = 0,
const LLUUID& region_id = LLUUID::null,
- const LLVector3& position = LLVector3::zero);
+ const LLVector3& position = LLVector3::zero,
+ bool link_name = false);
void addSystemMessage(const LLUUID& session_id, const LLString& message_name, const LLString::format_map_t& args);
@@ -192,6 +193,7 @@ private:
// reduce 'hello' messages to the linden employees unlucky enough
// to have their calling card in the default inventory.
void noteOfflineUsers(LLFloaterIMPanel* panel, const LLDynamicArray& ids);
+ void noteMutedUsers(LLFloaterIMPanel* panel, const LLDynamicArray& ids);
void processIMTypingCore(const LLIMInfo* im_info, BOOL typing);
diff --git a/linden/indra/newview/llinventorymodel.cpp b/linden/indra/newview/llinventorymodel.cpp
index e76c427..91bdb8d 100644
--- a/linden/indra/newview/llinventorymodel.cpp
+++ b/linden/indra/newview/llinventorymodel.cpp
@@ -1810,7 +1810,7 @@ bool LLInventoryModel::loadSkeleton(
const S32 NO_VERSION = LLViewerInventoryCategory::VERSION_UNKNOWN;
std::string gzip_filename(inventory_filename);
gzip_filename.append(".gz");
- FILE* fp = LLFile::fopen(gzip_filename.c_str(), "rb"); /*Flawfinder: ignore*/
+ LLFILE* fp = LLFile::fopen(gzip_filename.c_str(), "rb"); /*Flawfinder: ignore*/
bool remove_inventory_file = false;
if(fp)
{
@@ -2344,7 +2344,7 @@ bool LLInventoryModel::loadFromFile(
return false;
}
llinfos << "LLInventoryModel::loadFromFile(" << filename << ")" << llendl;
- FILE* file = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/
+ LLFILE* file = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/
if(!file)
{
llinfos << "unable to load inventory from: " << filename << llendl;
@@ -2417,7 +2417,7 @@ bool LLInventoryModel::saveToFile(
return false;
}
llinfos << "LLInventoryModel::saveToFile(" << filename << ")" << llendl;
- FILE* file = LLFile::fopen(filename, "wb"); /*Flawfinder: ignore*/
+ LLFILE* file = LLFile::fopen(filename, "wb"); /*Flawfinder: ignore*/
if(!file)
{
llwarns << "unable to save inventory to: " << filename << llendl;
@@ -3692,7 +3692,7 @@ BOOL decompress_file(const char* src_filename, const char* dst_filename)
BOOL rv = FALSE;
gzFile src = NULL;
U8* buffer = NULL;
- FILE* dst = NULL;
+ LLFILE* dst = NULL;
S32 bytes = 0;
const S32 DECOMPRESS_BUFFER_SIZE = 32000;
diff --git a/linden/indra/newview/lljoystickbutton.cpp b/linden/indra/newview/lljoystickbutton.cpp
index 1978b78..3957b0a 100644
--- a/linden/indra/newview/lljoystickbutton.cpp
+++ b/linden/indra/newview/lljoystickbutton.cpp
@@ -36,7 +36,7 @@
// Library includes
#include "llcoord.h"
#include "indra_constants.h"
-#include "llglimmediate.h"
+#include "llrender.h"
// Project includes
#include "llui.h"
diff --git a/linden/indra/newview/lllogchat.cpp b/linden/indra/newview/lllogchat.cpp
index 7be9781..38c4869 100644
--- a/linden/indra/newview/lllogchat.cpp
+++ b/linden/indra/newview/lllogchat.cpp
@@ -76,7 +76,7 @@ void LLLogChat::saveHistory(LLString filename, LLString line)
return;
}
- FILE* fp = LLFile::fopen(LLLogChat::makeLogFileName(filename).c_str(), "a"); /*Flawfinder: ignore*/
+ LLFILE* fp = LLFile::fopen(LLLogChat::makeLogFileName(filename).c_str(), "a"); /*Flawfinder: ignore*/
if (!fp)
{
llinfos << "Couldn't open chat history log!" << llendl;
@@ -96,7 +96,7 @@ void LLLogChat::loadHistory(LLString filename , void (*callback)(ELogLineType,LL
llerrs << "Filename is Empty!" << llendl;
}
- FILE* fptr = LLFile::fopen(makeLogFileName(filename).c_str(), "r"); /*Flawfinder: ignore*/
+ LLFILE* fptr = LLFile::fopen(makeLogFileName(filename).c_str(), "r"); /*Flawfinder: ignore*/
if (!fptr)
{
//LLUIString message = LLFloaterChat::getInstance()->getUIString("IM_logging_string");
diff --git a/linden/indra/newview/llmanip.cpp b/linden/indra/newview/llmanip.cpp
index e0621a3..5c19685 100644
--- a/linden/indra/newview/llmanip.cpp
+++ b/linden/indra/newview/llmanip.cpp
@@ -36,7 +36,7 @@
#include "llmath.h"
#include "v3math.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llprimitive.h"
#include "llview.h"
#include "llviewerimagelist.h"
diff --git a/linden/indra/newview/llmaniprotate.cpp b/linden/indra/newview/llmaniprotate.cpp
index 43a22e5..b60e29a 100644
--- a/linden/indra/newview/llmaniprotate.cpp
+++ b/linden/indra/newview/llmaniprotate.cpp
@@ -36,7 +36,7 @@
// library includes
#include "llmath.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "v4color.h"
#include "llprimitive.h"
#include "llview.h"
diff --git a/linden/indra/newview/llmanipscale.cpp b/linden/indra/newview/llmanipscale.cpp
index bb26484..d5ab7a1 100644
--- a/linden/indra/newview/llmanipscale.cpp
+++ b/linden/indra/newview/llmanipscale.cpp
@@ -38,7 +38,7 @@
#include "v3math.h"
#include "llquaternion.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "v4color.h"
#include "llprimitive.h"
diff --git a/linden/indra/newview/llmaniptranslate.cpp b/linden/indra/newview/llmaniptranslate.cpp
index ac41068..7dbb470 100644
--- a/linden/indra/newview/llmaniptranslate.cpp
+++ b/linden/indra/newview/llmaniptranslate.cpp
@@ -38,7 +38,7 @@
#include "llmaniptranslate.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llagent.h"
#include "llbbox.h"
@@ -1535,10 +1535,10 @@ void LLManipTranslate::renderSnapGuides()
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_GREATER);
glBindTexture(GL_TEXTURE_2D, sGridTex);
gGL.flush();
- gGL.blendFunc(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.blendFunc(LLRender::BF_ZERO, LLRender::BF_ONE_MINUS_SOURCE_ALPHA);
renderGrid(u,v,tiles,0.9f, 0.9f, 0.9f,a*0.15f);
gGL.flush();
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
{
@@ -1649,7 +1649,7 @@ void LLManipTranslate::highlightIntersection(LLVector3 normal,
LLGLEnable stencil(GL_STENCIL_TEST);
LLGLDepthTest depth (GL_TRUE, GL_FALSE, GL_ALWAYS);
glStencilFunc(GL_ALWAYS, 0, stencil_mask);
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
+ gGL.setColorMask(false, false);
LLImageGL::unbindTexture(0);
glColor4f(1,1,1,1);
@@ -1700,7 +1700,7 @@ void LLManipTranslate::highlightIntersection(LLVector3 normal,
LLPipeline::toggleRenderType(LLPipeline::RENDER_TYPE_CLOUDS);
}
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
+ gGL.setColorMask(true, false);
}
gGL.color4f(1,1,1,1);
diff --git a/linden/indra/newview/llmemoryview.cpp b/linden/indra/newview/llmemoryview.cpp
index a19328a..ca38a9c 100644
--- a/linden/indra/newview/llmemoryview.cpp
+++ b/linden/indra/newview/llmemoryview.cpp
@@ -58,7 +58,7 @@ mDelay(120)
#ifdef MEM_DUMP_DATA
// clear out file.
- FILE *dump = fopen("memusagedump.txt", "w");
+ LLFILE *dump = LLFile::fopen("memusagedump.txt", "w");
fclose(dump);
#endif
}
@@ -262,7 +262,7 @@ void LLMemoryView::dumpData()
// reset timer
mDumpTimer.reset();
// append dump info to text file
- FILE *dump = fopen("memusagedump.txt", "a");
+ LLFILE *dump = LLFile::fopen("memusagedump.txt", "a");
if (dump)
{
diff --git a/linden/indra/newview/llmutelist.cpp b/linden/indra/newview/llmutelist.cpp
index c411ffe..75c7cce 100644
--- a/linden/indra/newview/llmutelist.cpp
+++ b/linden/indra/newview/llmutelist.cpp
@@ -62,6 +62,12 @@
#include "llviewergenericmessage.h" // for gGenericDispatcher
#include "llviewerwindow.h"
#include "llworld.h" //for particle system banning
+#include "llchat.h"
+#include "llfloaterchat.h"
+#include "llimpanel.h"
+#include "llimview.h"
+#include "llnotify.h"
+#include "lluistring.h"
#include "llviewerobject.h"
#include "llviewerobjectlist.h"
@@ -437,6 +443,78 @@ void LLMuteList::updateRemove(const LLMute& mute)
gAgent.sendReliableMessage();
}
+void notify_automute_callback(const LLUUID& agent_id, const char* first_name, const char* last_name, BOOL is_group, void* user_data)
+{
+ U32 temp_data = (U32)user_data;
+ LLMuteList::EAutoReason reason = (LLMuteList::EAutoReason)temp_data;
+ LLUIString auto_message;
+
+ switch (reason)
+ {
+ default:
+ case LLMuteList::AR_IM:
+ auto_message = LLNotifyBox::getTemplateMessage("AutoUnmuteByIM");
+ break;
+ case LLMuteList::AR_INVENTORY:
+ auto_message = LLNotifyBox::getTemplateMessage("AutoUnmuteByInventory");
+ break;
+ case LLMuteList::AR_MONEY:
+ auto_message = LLNotifyBox::getTemplateMessage("AutoUnmuteByMoney");
+ break;
+ }
+
+ auto_message.setArg("[FIRST]", first_name);
+ auto_message.setArg("[LAST]", last_name);
+
+ if (reason == LLMuteList::AR_IM)
+ {
+ LLFloaterIMPanel *timp = gIMMgr->findFloaterBySession(agent_id);
+ if (timp)
+ {
+ timp->addHistoryLine(auto_message.getString());
+ }
+ }
+
+ LLChat auto_chat(auto_message.getString());
+ LLFloaterChat::addChat(auto_chat, FALSE, FALSE);
+}
+
+
+BOOL LLMuteList::autoRemove(const LLUUID& agent_id, const EAutoReason reason, const LLString& first_name, const LLString& last_name)
+{
+ BOOL removed = FALSE;
+
+ if (isMuted(agent_id))
+ {
+ LLMute automute(agent_id, "", LLMute::AGENT);
+ removed = TRUE;
+ remove(automute);
+
+ if (first_name.empty() && last_name.empty())
+ {
+ char cache_first[DB_FIRST_NAME_BUF_SIZE]; /* Flawfinder: ignore */
+ char cache_last[DB_LAST_NAME_BUF_SIZE]; /* Flawfinder: ignore */
+ if (gCacheName->getName(agent_id, cache_first, cache_last))
+ {
+ // name in cache, call callback directly
+ notify_automute_callback(agent_id, cache_first, cache_last, FALSE, (void *)reason);
+ }
+ else
+ {
+ // not in cache, lookup name from cache
+ gCacheName->get(agent_id, FALSE, notify_automute_callback, (void *)reason);
+ }
+ }
+ else
+ {
+ // call callback directly
+ notify_automute_callback(agent_id, first_name.c_str(), last_name.c_str(), FALSE, (void *)reason);
+ }
+ }
+
+ return removed;
+}
+
std::vector LLMuteList::getMutes() const
{
@@ -472,7 +550,7 @@ BOOL LLMuteList::loadFromFile(const LLString& filename)
return FALSE;
}
- FILE* fp = LLFile::fopen(filename.c_str(), "rb"); /*Flawfinder: ignore*/
+ LLFILE* fp = LLFile::fopen(filename.c_str(), "rb"); /*Flawfinder: ignore*/
if (!fp)
{
llwarns << "Couldn't open mute list " << filename << llendl;
@@ -522,7 +600,7 @@ BOOL LLMuteList::saveToFile(const LLString& filename)
return FALSE;
}
- FILE* fp = LLFile::fopen(filename.c_str(), "wb"); /*Flawfinder: ignore*/
+ LLFILE* fp = LLFile::fopen(filename.c_str(), "wb"); /*Flawfinder: ignore*/
if (!fp)
{
llwarns << "Couldn't open mute list " << filename << llendl;
diff --git a/linden/indra/newview/llmutelist.h b/linden/indra/newview/llmutelist.h
index e1a87c8..0a8c6aa 100644
--- a/linden/indra/newview/llmutelist.h
+++ b/linden/indra/newview/llmutelist.h
@@ -82,6 +82,15 @@ public:
class LLMuteList : public LLSingleton
{
public:
+ // reasons for auto-unmuting a resident
+ enum EAutoReason
+ {
+ AR_IM = 0, // agent IMed a muted resident
+ AR_MONEY = 1, // agent paid L$ to a muted resident
+ AR_INVENTORY = 2, // agent offered inventory to a muted resident
+ AR_COUNT // enum count
+ };
+
LLMuteList();
~LLMuteList();
@@ -98,6 +107,7 @@ public:
// Remove both normal and legacy mutes, for any or all properties.
BOOL remove(const LLMute& mute, U32 flags = 0);
+ BOOL autoRemove(const LLUUID& agent_id, const EAutoReason reason, const LLString& first_name = "", const LLString& last_name = "");
// Name is required to test against legacy text-only mutes.
BOOL isMuted(const LLUUID& id, const LLString& name = LLString::null, U32 flags = 0) const;
diff --git a/linden/indra/newview/llnetmap.cpp b/linden/indra/newview/llnetmap.cpp
index b6e22d8..9629d06 100644
--- a/linden/indra/newview/llnetmap.cpp
+++ b/linden/indra/newview/llnetmap.cpp
@@ -38,7 +38,7 @@
#include "llui.h"
#include "llmath.h" // clampf()
#include "llfocusmgr.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llagent.h"
#include "llcallingcard.h"
@@ -299,7 +299,7 @@ void LLNetMap::draw()
gGL.end();
// Draw water
- glAlphaFunc(GL_GREATER, ABOVE_WATERLINE_ALPHA / 255.f );
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, ABOVE_WATERLINE_ALPHA / 255.f);
{
if (regionp->getLand().getWaterTexture())
{
@@ -316,7 +316,7 @@ void LLNetMap::draw()
gGL.end();
}
}
- glAlphaFunc(GL_GREATER,0.01f);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
}
diff --git a/linden/indra/newview/llnotify.cpp b/linden/indra/newview/llnotify.cpp
index 19695e8..17aff78 100644
--- a/linden/indra/newview/llnotify.cpp
+++ b/linden/indra/newview/llnotify.cpp
@@ -35,7 +35,7 @@
#include "llchat.h"
#include "llfocusmgr.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llbutton.h"
#include "llfocusmgr.h"
diff --git a/linden/indra/newview/lloverlaybar.cpp b/linden/indra/newview/lloverlaybar.cpp
index e5c1113..d430d17 100644
--- a/linden/indra/newview/lloverlaybar.cpp
+++ b/linden/indra/newview/lloverlaybar.cpp
@@ -37,7 +37,7 @@
#include "lloverlaybar.h"
#include "audioengine.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llagent.h"
#include "llbutton.h"
#include "llchatbar.h"
diff --git a/linden/indra/newview/llpanelclassified.cpp b/linden/indra/newview/llpanelclassified.cpp
index 7908ccc..45ceeba 100644
--- a/linden/indra/newview/llpanelclassified.cpp
+++ b/linden/indra/newview/llpanelclassified.cpp
@@ -71,6 +71,9 @@
#include "llappviewer.h" // abortQuit()
const S32 MINIMUM_PRICE_FOR_LISTING = 50; // L$
+const S32 MATURE_CONTENT = 1;
+const S32 NON_MATURE_CONTENT = 2;
+const S32 DECLINE_TO_STATE = 0;
//static
std::list LLPanelClassified::sAllPanels;
@@ -162,7 +165,7 @@ LLPanelClassified::LLPanelClassified(bool in_finder, bool from_search)
mDescEditor(NULL),
mLocationEditor(NULL),
mCategoryCombo(NULL),
- mMatureCheck(NULL),
+ mMatureCombo(NULL),
mAutoRenewCheck(NULL),
mUpdateBtn(NULL),
mTeleportBtn(NULL),
@@ -276,13 +279,15 @@ BOOL LLPanelClassified::postBuild()
mCategoryCombo->setCommitCallback(onCommitAny);
mCategoryCombo->setCallbackUserData(this);
- mMatureCheck = getChild( "classified_mature_check");
- mMatureCheck->setCommitCallback(onCommitAny);
- mMatureCheck->setCallbackUserData(this);
+ mMatureCombo = getChild( "classified_mature_check");
+ mMatureCombo->setCurrentByIndex(0);
+ mMatureCombo->setCommitCallback(onCommitAny);
+ mMatureCombo->setCallbackUserData(this);
if (gAgent.isTeen())
{
// Teens don't get to set mature flag. JC
- mMatureCheck->setVisible(FALSE);
+ mMatureCombo->setVisible(FALSE);
+ mMatureCombo->setCurrentByIndex(NON_MATURE_CONTENT);
}
if (!mInFinder)
@@ -532,7 +537,7 @@ void LLPanelClassified::sendClassifiedInfoUpdate()
msg->addU32Fast(_PREHASH_ParentEstate, 0);
msg->addUUIDFast(_PREHASH_SnapshotID, mSnapshotCtrl->getImageAssetID());
msg->addVector3dFast(_PREHASH_PosGlobal, mPosGlobal);
- BOOL mature = mMatureCheck->get();
+ BOOL mature = mMatureCombo->getCurrentIndex() == MATURE_CONTENT;
BOOL auto_renew = FALSE;
if (mAutoRenewCheck)
{
@@ -656,7 +661,14 @@ void LLPanelClassified::processClassifiedInfoReply(LLMessageSystem *msg, void **
self->mLocationChanged = false;
self->mCategoryCombo->setCurrentByIndex(category - 1);
- self->mMatureCheck->set(mature);
+ if(mature)
+ {
+ self->mMatureCombo->setCurrentByIndex(MATURE_CONTENT);
+ }
+ else
+ {
+ self->mMatureCombo->setCurrentByIndex(NON_MATURE_CONTENT);
+ }
if (self->mAutoRenewCheck)
{
self->mAutoRenewCheck->set(auto_renew);
@@ -722,8 +734,8 @@ void LLPanelClassified::refresh()
mCategoryCombo->setEnabled(godlike);
mCategoryCombo->setVisible(godlike);
- mMatureCheck->setEnabled(godlike);
- mMatureCheck->setVisible(godlike);
+ mMatureCombo->setEnabled(godlike);
+ mMatureCombo->setVisible(godlike);
// Jesse (who is the only one who uses this, as far as we can tell
// Says that he does not want a set location button - he has used it
@@ -742,7 +754,7 @@ void LLPanelClassified::refresh()
//mPriceEditor->setEnabled(is_self);
mCategoryCombo->setEnabled(is_self);
- mMatureCheck->setEnabled(is_self);
+ mMatureCombo->setEnabled(is_self);
if (mAutoRenewCheck)
{
@@ -775,15 +787,60 @@ void LLPanelClassified::onClickUpdate(void* data)
return;
};
+ // If user has not set mature, do not allow publish
+ if(self->mMatureCombo->getCurrentIndex() == DECLINE_TO_STATE)
+ {
+ LLString::format_map_t args;
+ gViewerWindow->alertXml("SetClassifiedMature", &callbackConfirmMature, self);
+ return;
+ }
+
+ // Mature content flag is set, proceed
+ self->gotMature();
+}
+
+// static
+void LLPanelClassified::callbackConfirmMature(S32 option, void* data)
+{
+ LLPanelClassified* self = (LLPanelClassified*)data;
+ self->confirmMature(option);
+}
+
+// invoked from callbackConfirmMature
+void LLPanelClassified::confirmMature(S32 option)
+{
+ // 0 == Yes
+ // 1 == No
+ // 2 == Cancel
+ switch(option)
+ {
+ case 0:
+ mMatureCombo->setCurrentByIndex(MATURE_CONTENT);
+ break;
+ case 1:
+ mMatureCombo->setCurrentByIndex(NON_MATURE_CONTENT);
+ break;
+ default:
+ return;
+ }
+
+ // If we got here it means they set a valid value
+ gotMature();
+}
+
+// Called after we have determined whether this classified has
+// mature content or not.
+void LLPanelClassified::gotMature()
+{
// if already paid for, just do the update
- if (self->mPaidFor)
+ if (mPaidFor)
{
- callbackConfirmPublish(0, self);
+ callbackConfirmPublish(0, this);
}
else
{
// Ask the user how much they want to pay
- LLFloaterPriceForListing::show( callbackGotPriceForListing, self );
+ LLFloaterPriceForListing::show( callbackGotPriceForListing, this );
}
}
@@ -830,8 +887,8 @@ void LLPanelClassified::resetDirty()
mLocationChanged = false;
if (mCategoryCombo)
mCategoryCombo->resetDirty();
- if (mMatureCheck)
- mMatureCheck->resetDirty();
+ if (mMatureCombo)
+ mMatureCombo->resetDirty();
if (mAutoRenewCheck)
mAutoRenewCheck->resetDirty();
}
@@ -948,7 +1005,7 @@ BOOL LLPanelClassified::checkDirty()
if ( mLocationEditor ) mDirty |= mLocationEditor->isDirty();
if ( mLocationChanged ) mDirty |= TRUE;
if ( mCategoryCombo ) mDirty |= mCategoryCombo->isDirty();
- if ( mMatureCheck ) mDirty |= mMatureCheck->isDirty();
+ if ( mMatureCombo ) mDirty |= mMatureCombo->isDirty();
if ( mAutoRenewCheck ) mDirty |= mAutoRenewCheck->isDirty();
return mDirty;
diff --git a/linden/indra/newview/llpanelclassified.h b/linden/indra/newview/llpanelclassified.h
index 78f8a90..e4c8f42 100644
--- a/linden/indra/newview/llpanelclassified.h
+++ b/linden/indra/newview/llpanelclassified.h
@@ -96,12 +96,17 @@ public:
void sendClassifiedInfoRequest();
void sendClassifiedInfoUpdate();
void resetDirty();
- void confirmPublish(S32 option);
static void processClassifiedInfoReply(LLMessageSystem* msg, void**);
+ // Confirmation dialogs flow in this order
+ static void callbackConfirmMature(S32 option, void* data);
+ void confirmMature(S32 option);
+ void gotMature();
static void callbackGotPriceForListing(S32 option, LLString text, void* data);
static void callbackConfirmPublish(S32 option, void* data);
+ void confirmPublish(S32 option);
+
void sendClassifiedClickMessage(const char* type);
protected:
@@ -154,7 +159,7 @@ protected:
LLTextEditor* mDescEditor;
LLLineEditor* mLocationEditor;
LLComboBox* mCategoryCombo;
- LLCheckBoxCtrl* mMatureCheck;
+ LLComboBox* mMatureCombo;
LLCheckBoxCtrl* mAutoRenewCheck;
LLButton* mUpdateBtn;
diff --git a/linden/indra/newview/llpaneldirbrowser.cpp b/linden/indra/newview/llpaneldirbrowser.cpp
index 0d359d7..4d82023 100644
--- a/linden/indra/newview/llpaneldirbrowser.cpp
+++ b/linden/indra/newview/llpaneldirbrowser.cpp
@@ -600,84 +600,6 @@ void LLPanelDirBrowser::processDirPlacesReply(LLMessageSystem* msg, void**)
}
-
-void LLPanelDirBrowser::processDirPopularReply(LLMessageSystem *msg, void**)
-{
- LLUUID agent_id;
- LLUUID query_id;
- LLUUID parcel_id;
- char name[MAX_STRING]; /*Flawfinder: ignore*/
- F32 dwell;
-
- msg->getUUID("AgentData", "AgentID", agent_id);
- msg->getUUID("QueryData", "QueryID", query_id );
-
- LLPanelDirBrowser* self;
- self = gDirBrowserInstances.getIfThere(query_id);
- if (!self)
- {
- // data from an old query
- return;
- }
-
- self->mHaveSearchResults = TRUE;
-
- LLCtrlListInterface *list = self->childGetListInterface("results");
- if (!list) return;
-
- if (!list->getCanSelect())
- {
- list->operateOnAll(LLCtrlListInterface::OP_DELETE);
- self->mResultsContents = LLSD();
- }
-
- S32 i;
- S32 count = msg->getNumberOfBlocks("QueryReplies");
- self->mResultsReceived += count;
- for (i = 0; i < count; i++)
- {
- msg->getUUID( "QueryReplies", "ParcelID", parcel_id, i);
- msg->getString( "QueryReplies", "Name", MAX_STRING, name, i);
- msg->getF32( "QueryReplies", "Dwell", dwell, i);
-
- if (parcel_id.isNull())
- {
- continue;
- }
-
- LLSD content;
- content["type"] = POPULAR_CODE;
- content["name"] = name;
-
- LLSD row;
- row["id"] = parcel_id;
-
- row["columns"][0]["column"] = "icon";
- row["columns"][0]["type"] = "icon";
- row["columns"][0]["value"] = "icon_popular.tga";
-
- row["columns"][1]["column"] = "name";
- row["columns"][1]["value"] = name;
- row["columns"][1]["font"] = "SANSSERIF";
-
- LLString buffer = llformat("%.0f", dwell);
- row["columns"][2]["column"] = "dwell";
- row["columns"][2]["value"] = buffer;
- row["columns"][2]["font"] = "SANSSERIFSMALL";
-
- list->addElement(row);
- self->mResultsContents[parcel_id.asString()] = content;
- }
-
- list->sortByColumn(self->mCurrentSortColumn, self->mCurrentSortAscending);
- self->updateResultCount();
-
- // Poke the result received timer
- self->mLastResultTimer.reset();
- self->mDidAutoSelect = FALSE;
-}
-
-
void LLPanelDirBrowser::processDirEventsReply(LLMessageSystem* msg, void**)
{
LLUUID agent_id;
diff --git a/linden/indra/newview/llpaneldirbrowser.h b/linden/indra/newview/llpaneldirbrowser.h
index 1f0e879..46d1369 100644
--- a/linden/indra/newview/llpaneldirbrowser.h
+++ b/linden/indra/newview/llpaneldirbrowser.h
@@ -116,7 +116,6 @@ public:
static void processDirEventsReply(LLMessageSystem* msg, void**);
static void processDirGroupsReply(LLMessageSystem* msg, void**);
static void processDirClassifiedReply(LLMessageSystem* msg, void**);
- static void processDirPopularReply(LLMessageSystem* msg, void**);
static void processDirLandReply(LLMessageSystem *msg, void**);
std::string filterShortWords( const std::string source_string, int shortest_word_length, bool& was_filtered );
diff --git a/linden/indra/newview/llpaneldirfind.cpp b/linden/indra/newview/llpaneldirfind.cpp
index dcda770..9bf71d9 100644
--- a/linden/indra/newview/llpaneldirfind.cpp
+++ b/linden/indra/newview/llpaneldirfind.cpp
@@ -68,48 +68,31 @@
//---------------------------------------------------------------------------
class LLPanelDirFindAll
-: public LLPanelDirBrowser,
- public LLWebBrowserCtrlObserver
+: public LLPanelDirFind
{
public:
LLPanelDirFindAll(const std::string& name, LLFloaterDirectory* floater);
- /*virtual*/ ~LLPanelDirFindAll();
- /*virtual*/ BOOL postBuild();
- /*virtual*/ void draw();
-
- void search(const std::string& search_text);
- void focus();
- void navigateToDefaultPage();
-
-private:
- static void onClickBack( void* data );
- static void onClickForward( void* data );
- static void onClickHome( void* data );
- static void onClickSearch( void* data );
- static void onCommitSearch(LLUICtrl*, void* data);
-
- static std::string getSearchURLSuffix(bool mature);
-
- /*virtual*/ void onNavigateBegin( const EventType& eventIn );
- /*virtual*/ void onNavigateComplete( const EventType& eventIn );
- // Used to update progress indicator
- /*virtual*/ void onLocationChange( const EventType& eventIn );
- // Debugging info to console
-
-private:
- LLWebBrowserCtrl* mWebBrowser;
+ /*Virtual*/ void search(const std::string& search_text);
};
-
LLPanelDirFindAll::LLPanelDirFindAll(const std::string& name, LLFloaterDirectory* floater)
-: LLPanelDirBrowser(name, floater)
- ,mWebBrowser(NULL)
+: LLPanelDirFind(name, floater, "find_browser")
+{
+}
+
+//---------------------------------------------------------------------------
+// LLPanelDirFind - Base class for all browser-based search tabs
+//---------------------------------------------------------------------------
+
+LLPanelDirFind::LLPanelDirFind(const std::string& name, LLFloaterDirectory* floater, const std::string& browser_name)
+: LLPanelDirBrowser(name, floater),
+ mWebBrowser(NULL),
+ mBrowserName(browser_name)
{
- mMinSearchChars = 3;
}
-BOOL LLPanelDirFindAll::postBuild()
+BOOL LLPanelDirFind::postBuild()
{
LLPanelDirBrowser::postBuild();
@@ -121,11 +104,15 @@ BOOL LLPanelDirFindAll::postBuild()
if (gAgent.isTeen())
{
- childSetVisible("mature_check", false);
- childSetValue("mature_check", false);
+ // Showcase tab does not have mature checkbox
+ if (hasChild("mature_check"))
+ {
+ childSetVisible("mature_check", false);
+ childSetValue("mature_check", false);
+ }
}
- mWebBrowser = getChild("find_browser");
+ mWebBrowser = getChild(mBrowserName);
if (mWebBrowser)
{
// new pages appear in same window as the results page now
@@ -147,14 +134,14 @@ BOOL LLPanelDirFindAll::postBuild()
return TRUE;
}
-LLPanelDirFindAll::~LLPanelDirFindAll()
+LLPanelDirFind::~LLPanelDirFind()
{
if (mWebBrowser)
mWebBrowser->remObserver(this);
}
// virtual
-void LLPanelDirFindAll::draw()
+void LLPanelDirFind::draw()
{
// enable/disable buttons depending on state
if ( mWebBrowser )
@@ -169,46 +156,25 @@ void LLPanelDirFindAll::draw()
LLPanelDirBrowser::draw();
}
+// When we show any browser-based view, we want to hide all
+// the right-side XUI detail panels.
+// virtual
+void LLPanelDirFind::onVisibilityChange(BOOL new_visibility)
+{
+ if (new_visibility)
+ {
+ mFloaterDirectory->hideAllDetailPanels();
+ }
+ LLPanel::onVisibilityChange(new_visibility);
+}
+
void LLPanelDirFindAll::search(const std::string& search_text)
{
if (!search_text.empty())
{
- // Replace spaces with "+" for use by Google search appliance
- // Yes, this actually works for double-spaces
- // " foo bar" becomes "+foo++bar" and works fine. JC
- std::string search_text_with_plus = search_text;
- std::string::iterator it = search_text_with_plus.begin();
- for ( ; it != search_text_with_plus.end(); ++it )
- {
- if ( std::isspace( *it ) )
- {
- *it = '+';
- }
- }
-
- // Our own special set of allowed chars (RFC1738 http://www.ietf.org/rfc/rfc1738.txt)
- // Note that "+" is one of them, so we can do "+" addition first.
- const char* allowed =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
- "0123456789"
- "-._~$+!*'()";
- std::string query = LLURI::escape(search_text_with_plus, allowed);
-
- std::string url = gSavedSettings.getString("SearchURLQuery");
- std::string substring = "[QUERY]";
- url.replace(url.find(substring), substring.length(), query);
-
- // replace the collection name with the one selected from the combo box
- std::string selected_collection = childGetValue( "Category" ).asString();
- substring = "[COLLECTION]";
- url.replace(url.find(substring), substring.length(), selected_collection);
-
- // Add common parameters (mature, teen, location)
bool mature = childGetValue( "mature_check" ).asBoolean();
- url += getSearchURLSuffix(mature);
-
- llinfos << "url " << url << llendl;
-
+ std::string selected_collection = childGetValue( "Category" ).asString();
+ std::string url = buildSearchURL(search_text, selected_collection, mature);
if (mWebBrowser)
{
mWebBrowser->navigateTo(url);
@@ -223,14 +189,14 @@ void LLPanelDirFindAll::search(const std::string& search_text)
childSetText("search_editor", search_text);
}
-void LLPanelDirFindAll::focus()
+void LLPanelDirFind::focus()
{
childSetFocus("search_editor");
}
-void LLPanelDirFindAll::navigateToDefaultPage()
+void LLPanelDirFind::navigateToDefaultPage()
{
- std::string start_url = gSavedSettings.getString("SearchURLDefault");
+ std::string start_url = getString("default_search_page");
bool mature = childGetValue( "mature_check" ).asBoolean();
start_url += getSearchURLSuffix( mature );
@@ -241,9 +207,49 @@ void LLPanelDirFindAll::navigateToDefaultPage()
mWebBrowser->navigateTo( start_url );
}
}
+// static
+std::string LLPanelDirFind::buildSearchURL(const std::string& search_text, const std::string& collection, bool mature_in)
+{
+ std::string url = gSavedSettings.getString("SearchURLDefault");
+ if (!search_text.empty())
+ {
+ // Replace spaces with "+" for use by Google search appliance
+ // Yes, this actually works for double-spaces
+ // " foo bar" becomes "+foo++bar" and works fine. JC
+ std::string search_text_with_plus = search_text;
+ std::string::iterator it = search_text_with_plus.begin();
+ for ( ; it != search_text_with_plus.end(); ++it )
+ {
+ if ( std::isspace( *it ) )
+ {
+ *it = '+';
+ }
+ }
+
+ // Our own special set of allowed chars (RFC1738 http://www.ietf.org/rfc/rfc1738.txt)
+ // Note that "+" is one of them, so we can do "+" addition first.
+ const char* allowed =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
+ "0123456789"
+ "-._~$+!*'()";
+ std::string query = LLURI::escape(search_text_with_plus, allowed);
+
+ url = gSavedSettings.getString("SearchURLQuery");
+ std::string substring = "[QUERY]";
+ url.replace(url.find(substring), substring.length(), query);
+
+ // replace the collection name with the one selected from the combo box
+ // std::string selected_collection = childGetValue( "Category" ).asString();
+ substring = "[COLLECTION]";
+ url.replace(url.find(substring), substring.length(), collection);
+ llinfos << "url " << url << llendl;
+ }
+ url += getSearchURLSuffix( mature_in );
+ return url;
+}
// static
-std::string LLPanelDirFindAll::getSearchURLSuffix(bool mature_in)
+std::string LLPanelDirFind::getSearchURLSuffix(bool mature_in)
{
bool mature = mature_in;
// Teens never get mature results. Explicitly override because
@@ -314,9 +320,9 @@ std::string LLPanelDirFindAll::getSearchURLSuffix(bool mature_in)
// static
-void LLPanelDirFindAll::onClickBack( void* data )
+void LLPanelDirFind::onClickBack( void* data )
{
- LLPanelDirFindAll* self = ( LLPanelDirFindAll* )data;
+ LLPanelDirFind* self = ( LLPanelDirFind* )data;
if ( self->mWebBrowser )
{
self->mWebBrowser->navigateBack();
@@ -324,9 +330,9 @@ void LLPanelDirFindAll::onClickBack( void* data )
}
// static
-void LLPanelDirFindAll::onClickForward( void* data )
+void LLPanelDirFind::onClickForward( void* data )
{
- LLPanelDirFindAll* self = ( LLPanelDirFindAll* )data;
+ LLPanelDirFind* self = ( LLPanelDirFind* )data;
if ( self->mWebBrowser )
{
self->mWebBrowser->navigateForward();
@@ -334,9 +340,9 @@ void LLPanelDirFindAll::onClickForward( void* data )
}
// static
-void LLPanelDirFindAll::onClickHome( void* data )
+void LLPanelDirFind::onClickHome( void* data )
{
- LLPanelDirFindAll* self = ( LLPanelDirFindAll* )data;
+ LLPanelDirFind* self = ( LLPanelDirFind* )data;
if ( self->mWebBrowser )
{
self->mWebBrowser->navigateHome();
@@ -344,32 +350,32 @@ void LLPanelDirFindAll::onClickHome( void* data )
}
// static
-void LLPanelDirFindAll::onCommitSearch(LLUICtrl*, void* data)
+void LLPanelDirFind::onCommitSearch(LLUICtrl*, void* data)
{
onClickSearch(data);
}
// static
-void LLPanelDirFindAll::onClickSearch(void* data)
+void LLPanelDirFind::onClickSearch(void* data)
{
- LLPanelDirFindAll* self = ( LLPanelDirFindAll* )data;
+ LLPanelDirFind* self = ( LLPanelDirFind* )data;
LLString search_text = self->childGetText("search_editor");
self->search(search_text);
LLFloaterDirectory::sNewSearchCount++;
}
-void LLPanelDirFindAll::onNavigateBegin( const EventType& eventIn )
+void LLPanelDirFind::onNavigateBegin( const EventType& eventIn )
{
childSetText("status_text", getString("loading_text"));
}
-void LLPanelDirFindAll::onNavigateComplete( const EventType& eventIn )
+void LLPanelDirFind::onNavigateComplete( const EventType& eventIn )
{
childSetText("status_text", getString("done_text"));
}
-void LLPanelDirFindAll::onLocationChange( const EventType& eventIn )
+void LLPanelDirFind::onLocationChange( const EventType& eventIn )
{
llinfos << eventIn.getStringValue() << llendl;
}
@@ -397,121 +403,3 @@ void LLPanelDirFindAllInterface::focus(LLPanelDirFindAll* panel)
panel->focus();
}
-//---------------------------------------------------------------------------
-// LLPanelDirFindAllOld - deprecated if new Google search works out. JC
-//---------------------------------------------------------------------------
-
-LLPanelDirFindAllOld::LLPanelDirFindAllOld(const std::string& name, LLFloaterDirectory* floater)
- : LLPanelDirBrowser(name, floater)
-{
- mMinSearchChars = 3;
-}
-
-BOOL LLPanelDirFindAllOld::postBuild()
-{
- LLPanelDirBrowser::postBuild();
-
- childSetKeystrokeCallback("name", &LLPanelDirBrowser::onKeystrokeName, this);
-
- childSetAction("Search", onClickSearch, this);
- childDisable("Search");
- setDefaultBtn( "Search" );
-
- return TRUE;
-}
-
-LLPanelDirFindAllOld::~LLPanelDirFindAllOld()
-{
- // Children all cleaned up by default view destructor.
-}
-
-// virtual
-void LLPanelDirFindAllOld::draw()
-{
- // You only have a choice if you are mature
- childSetVisible("incmature", !gAgent.isTeen());
- childSetValue("incmature", gSavedSettings.getBOOL("ShowMatureFindAll"));
-
- LLPanelDirBrowser::draw();
-}
-
-// static
-void LLPanelDirFindAllOld::onCommitScope(LLUICtrl* ctrl, void* data)
-{
- LLPanelDirFindAllOld* self = (LLPanelDirFindAllOld*)data;
- self->setFocus(TRUE);
-}
-
-// static
-void LLPanelDirFindAllOld::onClickSearch(void *userdata)
-{
- LLPanelDirFindAllOld *self = (LLPanelDirFindAllOld *)userdata;
-
- if (self->childGetValue("name").asString().length() < self->mMinSearchChars)
- {
- return;
- };
-
- self->setupNewSearch();
-
- // Figure out scope
- U32 scope = 0x0;
- scope |= DFQ_PEOPLE; // people (not just online = 0x01 | 0x02)
- // places handled below
- scope |= DFQ_EVENTS; // events
- scope |= DFQ_GROUPS; // groups
-
- BOOL filter_mature = (!gSavedSettings.getBOOL("ShowMatureFindAll") ||
- gAgent.isTeen() ||
- !self->childGetValue("incmature").asBoolean() );
-
- if ( filter_mature )
- {
- scope |= DFQ_PG_SIMS_ONLY;
- scope |= DFQ_PG_EVENTS_ONLY;
- scope |= DFQ_FILTER_MATURE;
- scope |= DFQ_PG_PARCELS_ONLY;
- }
-
- // send the message
- LLMessageSystem *msg = gMessageSystem;
- S32 start_row = 0;
- sendDirFindQuery(msg, self->mSearchID, self->childGetValue("name").asString(), scope, start_row);
-
- // Also look up classified ads. JC 12/2005
- BOOL filter_auto_renew = FALSE;
- U32 classified_flags = pack_classified_flags(filter_mature, filter_auto_renew);
- msg->newMessage("DirClassifiedQuery");
- msg->nextBlock("AgentData");
- msg->addUUID("AgentID", gAgent.getID());
- msg->addUUID("SessionID", gAgent.getSessionID());
- msg->nextBlock("QueryData");
- msg->addUUID("QueryID", self->mSearchID);
- msg->addString("QueryText", self->childGetValue("name").asString());
- msg->addU32("QueryFlags", classified_flags);
- msg->addU32("Category", 0); // all categories
- msg->addS32("QueryStart", 0);
- gAgent.sendReliableMessage();
-
- // Need to use separate find places query because places are
- // sent using the more compact DirPlacesReply message.
- U32 query_flags = DFQ_DWELL_SORT;
- if ( filter_mature )
- {
- query_flags |= DFQ_PG_SIMS_ONLY;
- query_flags |= DFQ_PG_PARCELS_ONLY; // FWIW, currently DFQ_PG_PARCELS_ONLY is only supported
- query_flags |= DFQ_FILTER_MATURE;
- }
- msg->newMessage("DirPlacesQuery");
- msg->nextBlock("AgentData");
- msg->addUUID("AgentID", gAgent.getID() );
- msg->addUUID("SessionID", gAgent.getSessionID());
- msg->nextBlock("QueryData");
- msg->addUUID("QueryID", self->mSearchID );
- msg->addString("QueryText", self->childGetValue("name").asString());
- msg->addU32("QueryFlags", query_flags );
- msg->addS32("QueryStart", 0 ); // Always get the first 100 when using find ALL
- msg->addS8("Category", LLParcel::C_ANY);
- msg->addString("SimName", NULL);
- gAgent.sendReliableMessage();
-}
diff --git a/linden/indra/newview/llpaneldirfind.h b/linden/indra/newview/llpaneldirfind.h
index fdf95d7..2359d62 100644
--- a/linden/indra/newview/llpaneldirfind.h
+++ b/linden/indra/newview/llpaneldirfind.h
@@ -33,34 +33,62 @@
#define LL_LLPANELDIRFIND_H
#include "llpaneldirbrowser.h"
+#include "llwebbrowserctrl.h"
class LLUICtrl;
class LLLineEditor;
class LLPanelDirFindAll;
class LLFloaterDirectory;
+class LLWebBrowserCtrlObserver;
-class LLPanelDirFindAllInterface
+// This class in an abstract base class for all new style search widgets. It contains a pointer to a web browser control
+//
+class LLPanelDirFind
+: public LLPanelDirBrowser,
+ public LLWebBrowserCtrlObserver
{
public:
- static LLPanelDirFindAll* create(LLFloaterDirectory* floater);
- static void search(LLPanelDirFindAll* panel, const std::string& search_text);
- static void focus(LLPanelDirFindAll* panel);
-};
+ LLPanelDirFind(const std::string& name, LLFloaterDirectory* floater, const std::string& browser_name);
+ /*virtual*/ ~LLPanelDirFind();
+ /*virtual*/ void draw();
+ /*virtual*/ BOOL postBuild();
+ /*virtual*/ void onVisibilityChange(BOOL new_visibility);
-class LLPanelDirFindAllOld : public LLPanelDirBrowser
-{
-public:
- LLPanelDirFindAllOld(const std::string& name, LLFloaterDirectory* floater);
- /*virtual*/ ~LLPanelDirFindAllOld();
+ // Pure virtual. Must be implemented
+ virtual void search(const std::string& search_text) = 0;
- /*virtual*/ BOOL postBuild();
+ virtual void navigateToDefaultPage();
+ void focus();
- /*virtual*/ void draw();
+ static std::string buildSearchURL(const std::string& search_text, const std::string& collection, bool mature_in);
+ static std::string getSearchURLSuffix(bool mature_in);
- static void onClickSearch(void *userdata);
- static void onCommitScope(LLUICtrl* ctrl, void* data);
- static void onKeystrokeName(LLLineEditor* line, void* data);
+private:
+ static void onClickBack( void* data );
+ static void onClickForward( void* data );
+ static void onClickHome( void* data );
+ static void onClickSearch( void* data );
+ static void onCommitSearch(LLUICtrl*, void* data);
+
+ /*virtual*/ void onNavigateBegin( const EventType& eventIn );
+ /*virtual*/ void onNavigateComplete( const EventType& eventIn );
+
+ // Used to update progress indicator
+ /*virtual*/ void onLocationChange( const EventType& eventIn );
+ // Debugging info to console
+
+protected:
+ LLWebBrowserCtrl* mWebBrowser;
+ std::string mBrowserName;
+};
+
+class LLPanelDirFindAllInterface
+{
+public:
+ static LLPanelDirFindAll* create(LLFloaterDirectory* floater);
+ static void search(LLPanelDirFindAll* panel, const std::string& search_text);
+ static void focus(LLPanelDirFindAll* panel);
};
#endif
diff --git a/linden/indra/newview/llpaneldirgroups.cpp b/linden/indra/newview/llpaneldirgroups.cpp
index 0a0a14d..b765e99 100644
--- a/linden/indra/newview/llpaneldirgroups.cpp
+++ b/linden/indra/newview/llpaneldirgroups.cpp
@@ -33,101 +33,31 @@
#include "llpaneldirgroups.h"
-// linden library includes
-#include "llagent.h"
-//#include "llfontgl.h"
-#include "message.h"
-#include "llqueryflags.h"
-#include "llviewercontrol.h"
-#include "llviewerwindow.h"
-
-// viewer project includes
+#include "llwebbrowserctrl.h"
LLPanelDirGroups::LLPanelDirGroups(const std::string& name, LLFloaterDirectory* floater)
- : LLPanelDirBrowser(name, floater)
-{
- mMinSearchChars = 3;
-}
-
-
-BOOL LLPanelDirGroups::postBuild()
+ : LLPanelDirFind(name, floater, "groups_browser")
{
- LLPanelDirBrowser::postBuild();
-
- childSetKeystrokeCallback("name", &LLPanelDirBrowser::onKeystrokeName, this);
-
- childSetAction("Search", &LLPanelDirBrowser::onClickSearchCore, this);
- childDisable("Search");
- setDefaultBtn( "Search" );
-
- return TRUE;
}
-LLPanelDirGroups::~LLPanelDirGroups()
-{
- // Children all cleaned up by default view destructor.
-}
-// virtual
-void LLPanelDirGroups::draw()
+void LLPanelDirGroups::search(const std::string& search_text)
{
- // You only have a choice if you are mature
- childSetVisible("incmature", !gAgent.isTeen());
- childSetValue("incmature", gSavedSettings.getBOOL("ShowMatureGroups"));
-
- LLPanelDirBrowser::draw();
-}
-
-
-// virtual
-void LLPanelDirGroups::performQuery()
-{
- std::string group_name = childGetValue("name").asString();
- if (group_name.length() < mMinSearchChars)
+ if (!search_text.empty())
{
- return;
+ bool mature = childGetValue( "mature_check" ).asBoolean();
+ std::string selected_collection = "Groups";
+ std::string url = buildSearchURL(search_text, selected_collection, mature);
+ if (mWebBrowser)
+ {
+ mWebBrowser->navigateTo(url);
+ }
}
-
- // "hi " is three chars but not a long-enough search
- std::string query_string = group_name;
- LLString::trim( query_string );
- bool query_was_filtered = (query_string != group_name);
-
- // possible we threw away all the short words in the query so check length
- if ( query_string.length() < mMinSearchChars )
- {
- gViewerWindow->alertXml("SeachFilteredOnShortWordsEmpty");
- return;
- };
-
- // if we filtered something out, display a popup
- if ( query_was_filtered )
+ else
{
- LLString::format_map_t args;
- args["[FINALQUERY]"] = query_string;
- gViewerWindow->alertXml("SeachFilteredOnShortWords", args);
- };
-
- setupNewSearch();
-
- // groups
- U32 scope = DFQ_GROUPS;
-
- // Check group mature filter.
- if ( !gSavedSettings.getBOOL("ShowMatureGroups")
- || gAgent.isTeen() )
- {
- scope |= DFQ_FILTER_MATURE;
+ // empty search text
+ navigateToDefaultPage();
}
- mCurrentSortColumn = "score";
- mCurrentSortAscending = FALSE;
-
- // send the message
- sendDirFindQuery(
- gMessageSystem,
- mSearchID,
- query_string,
- scope,
- mSearchStart);
+ childSetText("search_editor", search_text);
}
diff --git a/linden/indra/newview/llpaneldirgroups.h b/linden/indra/newview/llpaneldirgroups.h
index 4d44143..03608e2 100644
--- a/linden/indra/newview/llpaneldirgroups.h
+++ b/linden/indra/newview/llpaneldirgroups.h
@@ -32,21 +32,14 @@
#ifndef LLPANELDIRGROUPS_H
#define LLPANELDIRGROUPS_H
-#include "llpaneldirbrowser.h"
+#include "llpaneldirfind.h"
-class LLPanelDirGroups : public LLPanelDirBrowser
+class LLPanelDirGroups : public LLPanelDirFind
{
public:
LLPanelDirGroups(const std::string& name, LLFloaterDirectory* floater);
- virtual ~LLPanelDirGroups();
- /*virtual*/ void draw();
-
- /*virtual*/ BOOL postBuild();
-
- /*virtual*/ void performQuery();
-
- static void onClickSearch(void *userdata);
+ /*virtual*/ void search(const std::string& search_text);
};
#endif
diff --git a/linden/indra/newview/llpaneldirplaces.cpp b/linden/indra/newview/llpaneldirplaces.cpp
index 3e79ec0..3980fb4 100644
--- a/linden/indra/newview/llpaneldirplaces.cpp
+++ b/linden/indra/newview/llpaneldirplaces.cpp
@@ -33,161 +33,37 @@
#include "llpaneldirplaces.h"
-// linden library includes
-#include "llfontgl.h"
-#include "message.h"
-#include "lldir.h"
-#include "llparcel.h"
-#include "llregionflags.h"
-#include "llqueryflags.h"
-
-// viewer project includes
-#include "llagent.h"
-#include "llbutton.h"
-#include "llcheckboxctrl.h"
-#include "llcombobox.h"
-#include "llfloaterdirectory.h"
-#include "lllineeditor.h"
-#include "llviewerwindow.h"
-#include "llpaneldirbrowser.h"
-#include "lltextbox.h"
-#include "lluiconstants.h"
-#include "llviewercontrol.h"
-#include "llviewermessage.h"
-#include "llworldmap.h"
+#include "llwebbrowserctrl.h"
LLPanelDirPlaces::LLPanelDirPlaces(const std::string& name, LLFloaterDirectory* floater)
- : LLPanelDirBrowser(name, floater)
-{
- mMinSearchChars = 3;
-}
-
-BOOL LLPanelDirPlaces::postBuild()
-{
- LLPanelDirBrowser::postBuild();
-
- childSetKeystrokeCallback("name", &LLPanelDirBrowser::onKeystrokeName, this);
-
- childSetAction("Search", &LLPanelDirBrowser::onClickSearchCore, this);
- childDisable("Search");
-
- mCurrentSortColumn = "dwell";
- mCurrentSortAscending = FALSE;
-
- // Don't prepopulate the places list, as it hurts the database as of 2006-12-04. JC
- // initialQuery();
-
- return TRUE;
-}
-
-LLPanelDirPlaces::~LLPanelDirPlaces()
+: LLPanelDirFind(name, floater, "places_browser")
{
- // Children all cleaned up by default view destructor.
}
-// virtual
-void LLPanelDirPlaces::draw()
-{
- // You only have a choice if you are mature
- childSetVisible("incmature", !gAgent.isTeen());
- childSetValue("incmature", gSavedSettings.getBOOL("ShowMatureSims"));
-
- LLPanelDirBrowser::draw();
-}
-
-// virtual
-void LLPanelDirPlaces::performQuery()
+void LLPanelDirPlaces::search(const std::string& search_text)
{
- LLString place_name = childGetValue("name").asString();
- if (place_name.length() < mMinSearchChars)
+ if (!search_text.empty())
{
- return;
- }
-
- // "hi " is three chars but not a long-enough search
- std::string query_string = place_name;
- LLString::trim( query_string );
- bool query_was_filtered = (query_string != place_name);
-
- // possible we threw away all the short words in the query so check length
- if ( query_string.length() < mMinSearchChars )
- {
- gViewerWindow->alertXml("SeachFilteredOnShortWordsEmpty");
- return;
- };
-
- // if we filtered something out, display a popup
- if ( query_was_filtered )
- {
- LLString::format_map_t args;
- args["[FINALQUERY]"] = query_string;
- gViewerWindow->alertXml("SeachFilteredOnShortWords", args);
- };
-
- LLString catstring = childGetValue("Category").asString();
-
- // Because LLParcel::C_ANY is -1, must do special check
- S32 category = 0;
- if (catstring == "any")
- {
- category = LLParcel::C_ANY;
+ bool mature = childGetValue( "mature_check" ).asBoolean();
+ std::string selected_collection = "Places";
+ std::string url = buildSearchURL(search_text, selected_collection, mature);
+ if (mWebBrowser)
+ {
+ mWebBrowser->navigateTo(url);
+ }
}
else
{
- category = LLParcel::getCategoryFromString(catstring.c_str());
+ // empty search text
+ navigateToDefaultPage();
}
- BOOL pg_only = !gSavedSettings.getBOOL("ShowMatureSims")
- || gAgent.isTeen();
-
- queryCore(query_string, category, pg_only);
+ childSetText("search_editor", search_text);
}
-void LLPanelDirPlaces::initialQuery()
-{
- // All Linden locations in PG/Mature sims, any name.
- const BOOL pg_only = FALSE;
- queryCore("", LLParcel::C_LINDEN, pg_only);
-}
-
-void LLPanelDirPlaces::queryCore(const LLString& name,
- S32 category,
- BOOL pg_only)
+LLPanelDirPlaces::~LLPanelDirPlaces()
{
- setupNewSearch();
-
- // send the message
- U32 flags = 0x0;
-
- if (pg_only)
- {
- flags |= DFQ_PG_PARCELS_ONLY;
- }
-
-// JC: Sorting by dwell severely impacts the performance of the query.
-// Instead of sorting on the dataserver, we sort locally once the results
-// are received.
-// IW: Re-enabled dwell sort based on new 3-character minimum description
-// Hopefully we'll move to next-gen Find before this becomes a big problem
-
- flags |= DFQ_DWELL_SORT;
-
- LLMessageSystem* msg = gMessageSystem;
-
- msg->newMessage("DirPlacesQuery");
- msg->nextBlock("AgentData");
- msg->addUUID("AgentID", gAgent.getID());
- msg->addUUID("SessionID", gAgent.getSessionID());
- msg->nextBlock("QueryData");
- msg->addUUID("QueryID", getSearchID());
- msg->addString("QueryText", name);
- msg->addU32("QueryFlags", flags);
- msg->addS8("Category", (S8)category);
- // No longer support queries by region name, too many regions
- // for combobox, no easy way to do autocomplete. JC
- msg->addString("SimName", "");
- msg->addS32Fast(_PREHASH_QueryStart,mSearchStart);
- gAgent.sendReliableMessage();
+ // Children all cleaned up by default view destructor.
}
diff --git a/linden/indra/newview/llpaneldirplaces.h b/linden/indra/newview/llpaneldirplaces.h
index 7bc2b08..4785f94 100644
--- a/linden/indra/newview/llpaneldirplaces.h
+++ b/linden/indra/newview/llpaneldirplaces.h
@@ -32,31 +32,17 @@
#ifndef LL_LLPANELDIRPLACES_H
#define LL_LLPANELDIRPLACES_H
-#include "llpaneldirbrowser.h"
+#include "llpaneldirfind.h"
// UI class forward declarations
-class LLLineEditor;
-class LLPanelDirPlaces : public LLPanelDirBrowser
+class LLPanelDirPlaces : public LLPanelDirFind
{
public:
LLPanelDirPlaces(const std::string& name, LLFloaterDirectory* floater);
virtual ~LLPanelDirPlaces();
- /*virtual*/ void draw();
+ /*virtual*/ void search(const std::string& search_text);
- virtual BOOL postBuild();
-
- static void onClickSearch(void *userdata);
- static void onKeystrokeName(LLLineEditor* line, void* data);
-
- void performQuery();
-
- // Initially fill in some data for the panel.
- void initialQuery();
-
-private:
- void queryCore(const LLString& name, S32 category, BOOL pg_only);
};
-
#endif
diff --git a/linden/indra/newview/llpaneldirpopular.cpp b/linden/indra/newview/llpaneldirpopular.cpp
index 5a94275..7cfc5b5 100644
--- a/linden/indra/newview/llpaneldirpopular.cpp
+++ b/linden/indra/newview/llpaneldirpopular.cpp
@@ -33,102 +33,15 @@
#include "llpaneldirpopular.h"
-// linden library includes
-#include "llfontgl.h"
-#include "message.h"
-#include "llqueryflags.h"
-
-// viewer project includes
-#include "llagent.h"
-#include "llcheckboxctrl.h"
-#include "llviewercontrol.h"
-#include "lluiconstants.h"
-#include "lltextbox.h"
-
LLPanelDirPopular::LLPanelDirPopular(const std::string& name, LLFloaterDirectory* floater)
- : LLPanelDirBrowser(name, floater),
- mRequested(false)
-{
-}
-
-BOOL LLPanelDirPopular::postBuild()
-{
- LLPanelDirBrowser::postBuild();
-
- childSetCommitCallback("incpictures", onCommitAny, this);
- childSetCommitCallback("incmature", onCommitAny, this);
-
- mCurrentSortColumn = "dwell";
- mCurrentSortAscending = FALSE;
-
- // Don't request popular until first drawn. JC
- // requestPopular();
-
- return TRUE;
-}
-
-LLPanelDirPopular::~LLPanelDirPopular()
+: LLPanelDirFind(name, floater, "showcase_browser")
{
- // Children all cleaned up by default view destructor.
+ // *NOTE: This is now the "Showcase" section
}
-
// virtual
-void LLPanelDirPopular::draw()
-{
- // You only have a choice if you are mature]
- childSetVisible("incmature", !gAgent.isTeen());
- childSetValue("incmature", gSavedSettings.getBOOL("ShowMatureSims"));
-
- LLPanelDirBrowser::draw();
-
- if (!mRequested)
- {
- requestPopular();
- mRequested = true;
- }
-}
-
-
-void LLPanelDirPopular::requestPopular()
-{
- LLMessageSystem* msg = gMessageSystem;
- BOOL pg_only = !childGetValue("incmature").asBoolean() || gAgent.isTeen();
- BOOL pictures_only = childGetValue("incpictures").asBoolean();
-
- U32 flags = 0x0;
- if (pg_only)
- {
- flags |= DFQ_PG_SIMS_ONLY;
- }
- if (pictures_only)
- {
- flags |= DFQ_PICTURES_ONLY;
- }
-
- setupNewSearch();
-
- msg->newMessage("DirPopularQuery");
- msg->nextBlock("AgentData");
- msg->addUUID("AgentID", gAgent.getID());
- msg->addUUID("SessionID", gAgent.getSessionID());
- msg->nextBlock("QueryData");
- msg->addUUID("QueryID", getSearchID());
- msg->addU32("QueryFlags", flags);
- gAgent.sendReliableMessage();
-}
-
-
-// static
-void LLPanelDirPopular::onClickSearch(void* data)
-{
- LLPanelDirPopular* self = (LLPanelDirPopular*)data;
- self->requestPopular();
-}
-
-// static
-void LLPanelDirPopular::onCommitAny(LLUICtrl* ctrl, void* data)
+void LLPanelDirPopular::search(const std::string& search_text)
{
- LLPanelDirPopular* self = (LLPanelDirPopular*)data;
- self->requestPopular();
+ // no-op, initial page is loaded during construction and there
+ // is no search interface, just browse
}
diff --git a/linden/indra/newview/llpaneldirpopular.h b/linden/indra/newview/llpaneldirpopular.h
index c3f5de3..5f28ba0 100644
--- a/linden/indra/newview/llpaneldirpopular.h
+++ b/linden/indra/newview/llpaneldirpopular.h
@@ -32,29 +32,14 @@
#ifndef LL_LLPANELDIRPOPULAR_H
#define LL_LLPANELDIRPOPULAR_H
-#include "llpaneldirbrowser.h"
+#include "llpaneldirfind.h"
-class LLUICtrl;
-
-class LLPanelDirPopular : public LLPanelDirBrowser
+class LLPanelDirPopular : public LLPanelDirFind
{
public:
LLPanelDirPopular(const std::string& name, LLFloaterDirectory* floater);
- virtual ~LLPanelDirPopular();
-
- virtual void draw();
-
- virtual BOOL postBuild();
- void requestPopular();
-
-protected:
- static void onClickSearch(void* data);
- static void onCommitAny(LLUICtrl* ctrl, void* data);
-
-private:
- bool mRequested;
+ /*virtual*/ void search(const std::string& search_text);
};
-
#endif
diff --git a/linden/indra/newview/llpaneldisplay.cpp b/linden/indra/newview/llpaneldisplay.cpp
index e5072c5..cc70f79 100644
--- a/linden/indra/newview/llpaneldisplay.cpp
+++ b/linden/indra/newview/llpaneldisplay.cpp
@@ -82,6 +82,8 @@
// parent
#include "llfloaterpreference.h"
+#include
+
const F32 MAX_USER_FAR_CLIP = 512.f;
const F32 MIN_USER_FAR_CLIP = 64.f;
@@ -164,6 +166,8 @@ BOOL LLPanelDisplay::postBuild()
}
}
+ initWindowSizeControls();
+
if (gSavedSettings.getBOOL("FullScreenAutoDetectAspectRatio"))
{
mAspectRatio = gViewerWindow->getDisplayAspectRatio();
@@ -319,6 +323,36 @@ BOOL LLPanelDisplay::postBuild()
return TRUE;
}
+void LLPanelDisplay::initWindowSizeControls()
+{
+ // Window size
+ mWindowSizeLabel = getChild("WindowSizeLabel");
+ mCtrlWindowSize = getChild("windowsize combo");
+
+ // Look to see if current window size matches existing window sizes, if so then
+ // just set the selection value...
+ const U32 height = gViewerWindow->getWindowDisplayHeight();
+ const U32 width = gViewerWindow->getWindowDisplayWidth();
+ for (S32 i=0; i < mCtrlWindowSize->getItemCount(); i++)
+ {
+ U32 height_test = 0;
+ U32 width_test = 0;
+ mCtrlWindowSize->setCurrentByIndex(i);
+ if (extractWindowSizeFromString(mCtrlWindowSize->getValue().asString().c_str(), width_test, height_test))
+ {
+ if ((height_test == height) && (width_test == width))
+ {
+ return;
+ }
+ }
+ }
+ // ...otherwise, add a new entry with the current window height/width.
+ LLUIString resolution_label = getUIString("resolution_format");
+ resolution_label.setArg("[RES_X]", llformat("%d", width));
+ resolution_label.setArg("[RES_Y]", llformat("%d", height));
+ mCtrlWindowSize->add(resolution_label, ADD_TOP);
+ mCtrlWindowSize->setCurrentByIndex(0);
+}
LLPanelDisplay::~LLPanelDisplay()
{
@@ -327,6 +361,10 @@ LLPanelDisplay::~LLPanelDisplay()
{
mCtrlAspectRatio->setCurrentByIndex(i);
}
+ for (S32 i = 0; i < mCtrlWindowSize->getItemCount(); i++)
+ {
+ mCtrlWindowSize->setCurrentByIndex(i);
+ }
}
void LLPanelDisplay::refresh()
@@ -392,6 +430,7 @@ void LLPanelDisplay::refreshEnabledState()
mAspectRatioLabel1->setVisible(isFullScreen);
mCtrlAutoDetectAspect->setVisible(isFullScreen);
mFullScreenInfo->setVisible(!isFullScreen);
+ mWindowSizeLabel->setVisible(!isFullScreen);
// disable graphics settings and exit if it's not set to custom
if(!gSavedSettings.getBOOL("RenderCustomSettings"))
@@ -656,6 +695,12 @@ void LLPanelDisplay::cancel()
void LLPanelDisplay::apply()
{
applyResolution();
+
+ // Only set window size if we're not in fullscreen mode
+ if (mCtrlWindowed->get())
+ {
+ applyWindowSize();
+ }
}
void LLPanelDisplay::onChangeQuality(LLUICtrl *ctrl, void *data)
@@ -712,7 +757,7 @@ void LLPanelDisplay::applyResolution()
if (mCtrlAspectRatio->getCurrentIndex() == -1)
{
strncpy(aspect_ratio_text, mCtrlAspectRatio->getSimple().c_str(), sizeof(aspect_ratio_text) -1); /*Flawfinder: ignore*/
- aspect_ratio_text[sizeof(aspect_ratio_text) -1] = '\0';
+ aspect_ratio_text[sizeof(aspect_ratio_text) -1] = '\0';
char *element = strtok(aspect_ratio_text, ":/\\");
if (!element)
{
@@ -817,6 +862,36 @@ void LLPanelDisplay::applyResolution()
refresh();
}
+// Extract from strings of the form " x ", e.g. "640 x 480".
+bool LLPanelDisplay::extractWindowSizeFromString(const char *sInput, U32 &width, U32 &height)
+{
+ using namespace boost;
+ cmatch what;
+ const regex expression("([0-9]+) x ([0-9]+)");
+ if (regex_match(sInput, what, expression))
+ {
+ width = atoi(what[1].first);
+ height = atoi(what[2].first);
+ return true;
+ }
+
+ width = height = 0;
+ return false;
+}
+
+void LLPanelDisplay::applyWindowSize()
+{
+ if (mCtrlWindowSize->getVisible() && (mCtrlWindowSize->getCurrentIndex() != -1))
+ {
+ U32 width = 0;
+ U32 height = 0;
+ if (extractWindowSizeFromString(mCtrlWindowSize->getValue().asString().c_str(), width,height))
+ {
+ LLViewerWindow::movieSize(width, height);
+ }
+ }
+}
+
//static
void LLPanelDisplay::onCommitWindowedMode(LLUICtrl* ctrl, void *data)
{
diff --git a/linden/indra/newview/llpaneldisplay.h b/linden/indra/newview/llpaneldisplay.h
index cc39f93..e100a18 100644
--- a/linden/indra/newview/llpaneldisplay.h
+++ b/linden/indra/newview/llpaneldisplay.h
@@ -33,7 +33,7 @@
#define LL_LLPANELDISPLAY_H
#include "llpanel.h"
-
+#include "llwindow.h"
#include "llcontrol.h"
class LLSlider;
@@ -72,15 +72,21 @@ public:
void setHiddenGraphicsState(bool isHidden);
void apply(); // Apply the changed values.
void applyResolution();
+ void applyWindowSize();
void cancel();
protected:
+ void initWindowSizeControls();
+ bool extractWindowSizeFromString(const char *sInput, U32 &width, U32 &height);
+
// aspect ratio sliders and boxes
LLComboBox *mCtrlFullScreen; // Fullscreen resolution
- LLCheckBoxCtrl *mCtrlWindowed; // windowed mode
LLCheckBoxCtrl *mCtrlAutoDetectAspect; // automatically detect aspect ratio
LLComboBox *mCtrlAspectRatio; // user provided aspect ratio
+ LLCheckBoxCtrl *mCtrlWindowed; // windowed mode
+ LLComboBox *mCtrlWindowSize; // window size for windowed mode
+
/// performance radio group
LLSliderCtrl *mCtrlSliderQuality;
LLCheckBoxCtrl *mCtrlCustomSettings;
@@ -113,7 +119,8 @@ protected:
LLTextBox *mAspectRatioLabel1;
LLTextBox *mDisplayResLabel;
LLTextEditor *mFullScreenInfo;
-
+ LLTextBox *mWindowSizeLabel;
+
LLTextBox *mShaderText;
LLTextBox *mReflectionText;
LLTextBox *mAvatarText;
diff --git a/linden/indra/newview/llpanelgroupgeneral.cpp b/linden/indra/newview/llpanelgroupgeneral.cpp
index 1709ad2..a7eac37 100644
--- a/linden/indra/newview/llpanelgroupgeneral.cpp
+++ b/linden/indra/newview/llpanelgroupgeneral.cpp
@@ -54,6 +54,11 @@
#include "lltexturectrl.h"
#include "llviewerwindow.h"
+// consts
+const S32 MATURE_CONTENT = 1;
+const S32 NON_MATURE_CONTENT = 2;
+const S32 DECLINE_TO_STATE = 0;
+
// static
void* LLPanelGroupGeneral::createTab(void* data)
{
@@ -76,7 +81,7 @@ LLPanelGroupGeneral::LLPanelGroupGeneral(const std::string& name,
mBtnJoinGroup(NULL),
mListVisibleMembers(NULL),
mCtrlShowInGroupList(NULL),
- mCtrlMature(NULL),
+ mComboMature(NULL),
mCtrlOpenEnrollment(NULL),
mCtrlEnrollmentFee(NULL),
mSpinEnrollmentFee(NULL),
@@ -156,14 +161,19 @@ BOOL LLPanelGroupGeneral::postBuild()
mCtrlShowInGroupList->setCallbackUserData(this);
}
- mCtrlMature = getChild("mature", recurse);
- if (mCtrlMature)
+ mComboMature = getChild("group_mature_check", recurse);
+ if(mComboMature)
{
- mCtrlMature->setCommitCallback(onCommitAny);
- mCtrlMature->setCallbackUserData(this);
- mCtrlMature->setVisible( !gAgent.isTeen() );
+ mComboMature->setCurrentByIndex(0);
+ mComboMature->setCommitCallback(onCommitAny);
+ mComboMature->setCallbackUserData(this);
+ if (gAgent.isTeen())
+ {
+ // Teens don't get to set mature flag. JC
+ mComboMature->setVisible(FALSE);
+ mComboMature->setCurrentByIndex(NON_MATURE_CONTENT);
+ }
}
-
mCtrlOpenEnrollment = getChild("open_enrollement", recurse);
if (mCtrlOpenEnrollment)
{
@@ -231,7 +241,7 @@ BOOL LLPanelGroupGeneral::postBuild()
mEditCharter->setEnabled(TRUE);
mCtrlShowInGroupList->setEnabled(TRUE);
- mCtrlMature->setEnabled(TRUE);
+ mComboMature->setEnabled(TRUE);
mCtrlOpenEnrollment->setEnabled(TRUE);
mCtrlEnrollmentFee->setEnabled(TRUE);
mSpinEnrollmentFee->setEnabled(TRUE);
@@ -429,6 +439,16 @@ bool LLPanelGroupGeneral::apply(LLString& mesg)
if (has_power_in_group || mGroupID.isNull())
{
llinfos << "LLPanelGroupGeneral::apply" << llendl;
+
+ // Check to make sure mature has been set
+ if(mComboMature->getCurrentIndex() == DECLINE_TO_STATE)
+ {
+ LLString::format_map_t args;
+ gViewerWindow->alertXml("SetGroupMature", &callbackConfirmMatureApply,
+ new LLHandle(getHandle()));
+ return false;
+ }
+
if (mGroupID.isNull())
{
// Validate the group name length.
@@ -446,13 +466,12 @@ bool LLPanelGroupGeneral::apply(LLString& mesg)
LLString::format_map_t args;
args["[MESSAGE]"] = mConfirmGroupCreateStr;
gViewerWindow->alertXml("GenericAlertYesCancel", args,
- createGroupCallback,new LLHandle(getHandle()));
+ createGroupCallback, new LLHandle(getHandle()) );
return false;
}
LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID);
-
if (!gdatap)
{
mesg = "No group data found for group ";
@@ -468,11 +487,12 @@ bool LLPanelGroupGeneral::apply(LLString& mesg)
{
if (mEditCharter) gdatap->mCharter = mEditCharter->getText();
if (mInsignia) gdatap->mInsigniaID = mInsignia->getImageAssetID();
- if (mCtrlMature)
+ if (mComboMature)
{
if (!gAgent.isTeen())
{
- gdatap->mMaturePublish = mCtrlMature->get();
+ gdatap->mMaturePublish =
+ mComboMature->getCurrentIndex() == MATURE_CONTENT;
}
else
{
@@ -523,6 +543,42 @@ void LLPanelGroupGeneral::cancel()
notifyObservers();
}
+
+// static
+void LLPanelGroupGeneral::callbackConfirmMatureApply(S32 option, void* data)
+{
+ LLHandle* handlep = (LLHandle*)data;
+ LLPanelGroupGeneral* self = dynamic_cast(handlep->get());
+ delete handlep;
+ if (self)
+ {
+ self->confirmMatureApply(option);
+ }
+}
+
+// invoked from callbackConfirmMature
+void LLPanelGroupGeneral::confirmMatureApply(S32 option)
+{
+ // 0 == Yes
+ // 1 == No
+ // 2 == Cancel
+ switch(option)
+ {
+ case 0:
+ mComboMature->setCurrentByIndex(MATURE_CONTENT);
+ break;
+ case 1:
+ mComboMature->setCurrentByIndex(NON_MATURE_CONTENT);
+ break;
+ default:
+ return;
+ }
+
+ // If we got here it means they set a valid value
+ LLString mesg = "";
+ apply(mesg);
+}
+
// static
void LLPanelGroupGeneral::createGroupCallback(S32 option, void* userdata)
{
@@ -547,7 +603,7 @@ void LLPanelGroupGeneral::createGroupCallback(S32 option, void* userdata)
enrollment_fee,
self->mCtrlOpenEnrollment->get(),
false,
- self->mCtrlMature->get());
+ self->mComboMature->getCurrentIndex() == MATURE_CONTENT);
}
break;
@@ -632,11 +688,18 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
mCtrlShowInGroupList->set(gdatap->mShowInList);
mCtrlShowInGroupList->setEnabled(mAllowEdit && can_change_ident);
}
- if (mCtrlMature)
+ if (mComboMature)
{
- mCtrlMature->set(gdatap->mMaturePublish);
- mCtrlMature->setEnabled(mAllowEdit && can_change_ident);
- mCtrlMature->setVisible( !gAgent.isTeen() );
+ if(gdatap->mMaturePublish)
+ {
+ mComboMature->setCurrentByIndex(MATURE_CONTENT);
+ }
+ else
+ {
+ mComboMature->setCurrentByIndex(NON_MATURE_CONTENT);
+ }
+ mComboMature->setEnabled(mAllowEdit && can_change_ident);
+ mComboMature->setVisible( !gAgent.isTeen() );
}
if (mCtrlOpenEnrollment)
{
@@ -820,7 +883,7 @@ void LLPanelGroupGeneral::updateChanged()
mInsignia,
mEditCharter,
mCtrlShowInGroupList,
- mCtrlMature,
+ mComboMature,
mCtrlOpenEnrollment,
mCtrlEnrollmentFee,
mSpinEnrollmentFee,
diff --git a/linden/indra/newview/llpanelgroupgeneral.h b/linden/indra/newview/llpanelgroupgeneral.h
index daf7bfa..169fcff 100644
--- a/linden/indra/newview/llpanelgroupgeneral.h
+++ b/linden/indra/newview/llpanelgroupgeneral.h
@@ -58,6 +58,7 @@ public:
virtual bool apply(LLString& mesg);
virtual void cancel();
static void createGroupCallback(S32 option, void* user_data);
+ static void callbackConfirmMatureApply(S32 option, void* data);
virtual void update(LLGroupChange gc);
@@ -80,6 +81,7 @@ private:
void updateMembers();
void updateChanged();
+ void confirmMatureApply(S32 option);
BOOL mPendingMemberUpdate;
BOOL mChanged;
@@ -101,7 +103,6 @@ private:
// Options (include any updates in updateChanged)
LLCheckBoxCtrl *mCtrlShowInGroupList;
- LLCheckBoxCtrl *mCtrlMature;
LLCheckBoxCtrl *mCtrlOpenEnrollment;
LLCheckBoxCtrl *mCtrlEnrollmentFee;
LLSpinCtrl *mSpinEnrollmentFee;
@@ -109,6 +110,7 @@ private:
LLCheckBoxCtrl *mCtrlListGroup;
LLTextBox *mActiveTitleLabel;
LLComboBox *mComboActiveTitle;
+ LLComboBox *mComboMature;
LLGroupMgrGroupData::member_list_t::iterator mMemberProgress;
};
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp
index 9fcd73d..334e9f4 100644
--- a/linden/indra/newview/llpanellogin.cpp
+++ b/linden/indra/newview/llpanellogin.cpp
@@ -133,83 +133,77 @@ void LLLoginHandler::parse(const LLSD& queryMap)
mFirstName = queryMap["first_name"].asString();
mLastName = queryMap["last_name"].asString();
+ EGridInfo grid_choice = GRID_INFO_NONE;
if (queryMap["grid"].asString() == "aditi")
{
- gGridChoice = GRID_INFO_ADITI;
+ grid_choice = GRID_INFO_ADITI;
}
else if (queryMap["grid"].asString() == "agni")
{
- gGridChoice = GRID_INFO_AGNI;
+ grid_choice = GRID_INFO_AGNI;
}
else if (queryMap["grid"].asString() == "siva")
{
- gGridChoice = GRID_INFO_SIVA;
+ grid_choice = GRID_INFO_SIVA;
}
else if (queryMap["grid"].asString() == "durga")
{
- gGridChoice = GRID_INFO_DURGA;
+ grid_choice = GRID_INFO_DURGA;
}
else if (queryMap["grid"].asString() == "shakti")
{
- gGridChoice = GRID_INFO_SHAKTI;
+ grid_choice = GRID_INFO_SHAKTI;
}
else if (queryMap["grid"].asString() == "soma")
{
- gGridChoice = GRID_INFO_SOMA;
+ grid_choice = GRID_INFO_SOMA;
}
else if (queryMap["grid"].asString() == "ganga")
{
- gGridChoice = GRID_INFO_GANGA;
+ grid_choice = GRID_INFO_GANGA;
}
else if (queryMap["grid"].asString() == "vaak")
{
- gGridChoice = GRID_INFO_VAAK;
+ grid_choice = GRID_INFO_VAAK;
}
else if (queryMap["grid"].asString() == "uma")
{
- gGridChoice = GRID_INFO_UMA;
+ grid_choice = GRID_INFO_UMA;
}
else if (queryMap["grid"].asString() == "mohini")
{
- gGridChoice = GRID_INFO_MOHINI;
+ grid_choice = GRID_INFO_MOHINI;
}
else if (queryMap["grid"].asString() == "yami")
{
- gGridChoice = GRID_INFO_YAMI;
+ grid_choice = GRID_INFO_YAMI;
}
else if (queryMap["grid"].asString() == "nandi")
{
- gGridChoice = GRID_INFO_NANDI;
+ grid_choice = GRID_INFO_NANDI;
}
else if (queryMap["grid"].asString() == "mitra")
{
- gGridChoice = GRID_INFO_MITRA;
+ grid_choice = GRID_INFO_MITRA;
}
else if (queryMap["grid"].asString() == "radha")
{
- gGridChoice = GRID_INFO_RADHA;
+ grid_choice = GRID_INFO_RADHA;
}
else if (queryMap["grid"].asString() == "ravi")
{
- gGridChoice = GRID_INFO_RAVI;
+ grid_choice = GRID_INFO_RAVI;
}
else if (queryMap["grid"].asString() == "aruna")
{
- gGridChoice = GRID_INFO_ARUNA;
+ grid_choice = GRID_INFO_ARUNA;
}
-#if !LL_RELEASE_FOR_DOWNLOAD
- if (gGridChoice > GRID_INFO_NONE && gGridChoice < GRID_INFO_LOCAL)
+
+ if(grid_choice != GRID_INFO_NONE)
{
- gSavedSettings.setS32("ServerChoice", gGridChoice);
+ LLViewerLogin::getInstance()->setGridChoice(grid_choice);
}
-#endif
-
- if (LLAppViewer::instance()->getLoginURIs().size() == 0)
- {
- gGridName = gGridInfo[gGridChoice].mName; /* Flawfinder: ignore */
- LLAppViewer::instance()->resetURIs();
- }
-
+
LLString startLocation = queryMap["location"].asString();
if (startLocation == "specify")
@@ -794,7 +788,7 @@ BOOL LLPanelLogin::getServer(LLString &server, S32 &domain_name)
if ((S32)GRID_INFO_OTHER == domain_name)
{
- server = gGridName;
+ server = LLViewerLogin::getInstance()->getGridLabel();
}
}
else
@@ -942,20 +936,9 @@ void LLPanelLogin::loadLoginPage()
LLString grid;
S32 grid_index;
getServer( grid, grid_index );
- if( grid_index != (S32)GRID_INFO_OTHER )
- {
- grid = gGridInfo[grid_index].mLabel;
- }
- if(gGridChoice != (EGridInfo)grid_index)
- {
- LLAppViewer::instance()->resetURIs();
- gGridChoice = (EGridInfo)grid_index;
- gSavedSettings.setString("GridChoice", gGridInfo[gGridChoice].mLabel);
- gViewerWindow->setMenuBackgroundColor(false,
- !LLAppViewer::instance()->isInProductionGrid());
- gLoginMenuBarView->setBackgroundColor(gMenuBarView->getBackgroundColor());
- }
+ gViewerWindow->setMenuBackgroundColor(false, !LLViewerLogin::getInstance()->isInProductionGrid());
+ gLoginMenuBarView->setBackgroundColor(gMenuBarView->getBackgroundColor());
char* curl_grid = curl_escape(grid.c_str(), 0);
oStr << "&grid=" << curl_grid;
@@ -1087,15 +1070,6 @@ void LLPanelLogin::onClickConnect(void *)
if (!first.empty() && !last.empty())
{
// has both first and last name typed
-
- // store off custom server entry, if currently selected
- LLComboBox* combo = sInstance->getChild("server_combo");
- S32 selected_server = combo->getValue();
- if (selected_server == GRID_INFO_NONE)
- {
- LLString custom_server = combo->getValue().asString();
- gSavedSettings.setString("CustomServer", custom_server);
- }
sInstance->mCallback(0, sInstance->mCallbackData);
}
else
@@ -1180,6 +1154,26 @@ void LLPanelLogin::onPassKey(LLLineEditor* caller, void* user_data)
// static
void LLPanelLogin::onSelectServer(LLUICtrl*, void*)
{
+ // The user twiddled with the grid choice ui.
+ // apply the selection to the grid setting.
+ LLString grid;
+ S32 grid_index;
+ getServer( grid, grid_index );
+
+ // This new seelction will override preset uris
+ // from the command line.
+ LLViewerLogin* vl = LLViewerLogin::getInstance();
+ vl->resetURIs();
+ if(grid_index != GRID_INFO_OTHER)
+ {
+ vl->setGridChoice((EGridInfo)grid_index);
+ grid = vl->getGridLabel();
+ }
+ else
+ {
+ vl->setGridChoice(grid);
+ }
+
// grid changed so show new splash screen (possibly)
loadLoginPage();
}
diff --git a/linden/indra/newview/llpanellogin.h b/linden/indra/newview/llpanellogin.h
index 1100cd6..cdf567b 100644
--- a/linden/indra/newview/llpanellogin.h
+++ b/linden/indra/newview/llpanellogin.h
@@ -68,6 +68,7 @@ class LLPanelLogin:
public LLPanel,
public LLWebBrowserCtrlObserver
{
+ LOG_CLASS(LLPanelLogin);
public:
LLPanelLogin(const LLRect &rect, BOOL show_server,
void (*callback)(S32 option, void* user_data),
diff --git a/linden/indra/newview/llpanelpermissions.cpp b/linden/indra/newview/llpanelpermissions.cpp
index ea742ba..0d50f38 100644
--- a/linden/indra/newview/llpanelpermissions.cpp
+++ b/linden/indra/newview/llpanelpermissions.cpp
@@ -327,6 +327,7 @@ void LLPanelPermissions::refresh()
// update group text field
childSetEnabled("Group:",true);
+ childSetText("Group Name",LLString::null);
LLUUID group_id;
BOOL groups_identical = LLSelectMgr::getInstance()->selectGetGroup(group_id);
if (groups_identical)
@@ -337,6 +338,16 @@ void LLPanelPermissions::refresh()
mLabelGroupName->setEnabled(TRUE);
}
}
+ else
+ {
+ if(mLabelGroupName)
+ {
+ mLabelGroupName->setNameID(LLUUID::null, TRUE);
+ mLabelGroupName->refresh(LLUUID::null, "", "", TRUE);
+ mLabelGroupName->setEnabled(FALSE);
+ }
+ }
+
childSetEnabled("button set group",owners_identical && (mOwnerID == gAgent.getID()));
// figure out the contents of the name, description, & category
@@ -854,7 +865,7 @@ void callback_deed_to_group(S32 option, void*)
{
LLUUID group_id;
BOOL groups_identical = LLSelectMgr::getInstance()->selectGetGroup(group_id);
- if(groups_identical && (gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED)))
+ if(group_id.notNull() && groups_identical && (gAgent.hasPowerInGroup(group_id, GP_OBJECT_DEED)))
{
LLSelectMgr::getInstance()->sendOwner(LLUUID::null, group_id, FALSE);
// LLViewerStats::getInstance()->incStat(LLViewerStats::ST_RELEASE_COUNT);
diff --git a/linden/indra/newview/llpolymesh.cpp b/linden/indra/newview/llpolymesh.cpp
index d74beeb..3884b31 100644
--- a/linden/indra/newview/llpolymesh.cpp
+++ b/linden/indra/newview/llpolymesh.cpp
@@ -271,7 +271,7 @@ BOOL LLPolyMeshSharedData::loadMesh( const char *fileName )
llerrs << "Filename is Empty!" << llendl;
return FALSE;
}
- FILE* fp = LLFile::fopen(fileName, "rb"); /*Flawfinder: ignore*/
+ LLFILE* fp = LLFile::fopen(fileName, "rb"); /*Flawfinder: ignore*/
if (!fp)
{
llerrs << "can't open: " << fileName << llendl;
diff --git a/linden/indra/newview/llpolymorph.cpp b/linden/indra/newview/llpolymorph.cpp
index a83f5ab..11ca7af 100644
--- a/linden/indra/newview/llpolymorph.cpp
+++ b/linden/indra/newview/llpolymorph.cpp
@@ -83,7 +83,7 @@ LLPolyMorphData::~LLPolyMorphData()
//-----------------------------------------------------------------------------
// loadBinary()
//-----------------------------------------------------------------------------
-BOOL LLPolyMorphData::loadBinary(FILE *fp, LLPolyMeshSharedData *mesh)
+BOOL LLPolyMorphData::loadBinary(LLFILE *fp, LLPolyMeshSharedData *mesh)
{
S32 numVertices;
S32 numRead;
diff --git a/linden/indra/newview/llpolymorph.h b/linden/indra/newview/llpolymorph.h
index 5f7a034..0ad5b18 100644
--- a/linden/indra/newview/llpolymorph.h
+++ b/linden/indra/newview/llpolymorph.h
@@ -51,7 +51,7 @@ public:
LLPolyMorphData(char *morph_name);
~LLPolyMorphData();
- BOOL loadBinary(FILE* fp, LLPolyMeshSharedData *mesh);
+ BOOL loadBinary(LLFILE* fp, LLPolyMeshSharedData *mesh);
char* loadASCII(char* text, LLPolyMeshSharedData *mesh);
char* getName() { return mName; }
diff --git a/linden/indra/newview/llpostprocess.cpp b/linden/indra/newview/llpostprocess.cpp
index c72b8ae..7ee7100 100644
--- a/linden/indra/newview/llpostprocess.cpp
+++ b/linden/indra/newview/llpostprocess.cpp
@@ -35,7 +35,7 @@
#include "llpostprocess.h"
#include "llglslshader.h"
#include "llsdserialize.h"
-#include "llglimmediate.h"
+#include "llrender.h"
LLPostProcess * gPostProcess = NULL;
@@ -59,7 +59,7 @@ LLPostProcess::LLPostProcess(void) :
screenW(1), screenH(1)
{
LLString pathName(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", XML_FILENAME));
- llinfos << "Loading PostProcess Effects settings from " << pathName << llendl;
+ LL_DEBUGS2("AppInit", "Shaders") << "Loading PostProcess Effects settings from " << pathName << LL_ENDL;
llifstream effectsXML(pathName.c_str());
@@ -215,7 +215,7 @@ void LLPostProcess::applyColorFilterShader(void)
{
gPostColorFilterProgram.bind();
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glEnable(GL_TEXTURE_RECTANGLE_ARB);
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, sceneRenderTexture);
@@ -234,7 +234,7 @@ void LLPostProcess::applyColorFilterShader(void)
glUniform3fARB(colorFilterUniforms["lumWeights"], LUMINANCE_R, LUMINANCE_G, LUMINANCE_B);
LLGLEnable blend(GL_BLEND);
- gGL.blendFunc(GL_ONE,GL_ZERO);
+ gGL.setSceneBlendType(LLRender::BT_REPLACE);
LLGLDepthTest depth(GL_FALSE);
/// Draw a screen space quad
@@ -257,14 +257,14 @@ void LLPostProcess::applyNightVisionShader(void)
{
gPostNightVisionProgram.bind();
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glEnable(GL_TEXTURE_RECTANGLE_ARB);
getShaderUniforms(nightVisionUniforms, gPostNightVisionProgram.mProgramObject);
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, sceneRenderTexture);
glUniform1iARB(nightVisionUniforms["RenderTexture"], 0);
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, noiseTexture);
@@ -280,13 +280,13 @@ void LLPostProcess::applyNightVisionShader(void)
glUniform3fARB(nightVisionUniforms["lumWeights"], LUMINANCE_R, LUMINANCE_G, LUMINANCE_B);
LLGLEnable blend(GL_BLEND);
- gGL.blendFunc(GL_ONE,GL_ZERO);
+ gGL.setSceneBlendType(LLRender::BT_REPLACE);
LLGLDepthTest depth(GL_FALSE);
/// Draw a screen space quad
drawOrthoQuad(screenW, screenH, QUAD_NOISE);
gPostNightVisionProgram.unbind();
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
}
void LLPostProcess::createNightVisionShader(void)
@@ -352,7 +352,7 @@ void LLPostProcess::doEffects(void)
checkError();
applyShaders();
- glUseProgramObjectARB(0);
+ LLGLSLShader::bindNoShader();
checkError();
/// Change to a perspective view
@@ -565,74 +565,3 @@ void LLPostProcess::checkShaderError(GLhandleARB shader)
}
checkError(); // Check for OpenGL errors
}
-
-void LLPostProcess::textureBlendReplace(void)
-{
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
- glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR );
-}
-
-void LLPostProcess::textureBlendAdd(void)
-{
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
- glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_ADD );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR );
-}
-
-void LLPostProcess::textureBlendAddSigned(void)
-{
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
- glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_ADD_SIGNED );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR );
-}
-
-void LLPostProcess::textureBlendSubtract(void)
-{
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
- glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_SUBTRACT );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR );
-}
-
-void LLPostProcess::textureBlendAlpha(void)
-{
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
- glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_TEXTURE);
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_PREVIOUS );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE2_RGB, GL_TEXTURE);
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_ALPHA );
-}
-
-void LLPostProcess::textureBlendMultiply(void)
-{
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
- glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR );
-}
-
-void LLPostProcess::textureBlendMultiplyX2(void)
-{
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE );
- glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR );
- glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB, GL_TEXTURE );
- glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR );
- glTexEnvi( GL_TEXTURE_ENV, GL_RGB_SCALE, 2 );
-}
diff --git a/linden/indra/newview/llpostprocess.h b/linden/indra/newview/llpostprocess.h
index 2e98fb3..738d0f0 100644
--- a/linden/indra/newview/llpostprocess.h
+++ b/linden/indra/newview/llpostprocess.h
@@ -260,13 +260,6 @@ private:
void viewOrthogonal(unsigned int width, unsigned int height);
void changeOrthogonal(unsigned int width, unsigned int height);
void viewPerspective(void);
- void textureBlendReplace(void);
- void textureBlendAdd(void);
- void textureBlendSubtract(void);
- void textureBlendAddSigned(void);
- void textureBlendAlpha(void);
- void textureBlendMultiply(void);
- void textureBlendMultiplyX2(void);
};
extern LLPostProcess * gPostProcess;
diff --git a/linden/indra/newview/llpreviewgesture.cpp b/linden/indra/newview/llpreviewgesture.cpp
index 4ca6009..c53eab7 100644
--- a/linden/indra/newview/llpreviewgesture.cpp
+++ b/linden/indra/newview/llpreviewgesture.cpp
@@ -67,9 +67,10 @@
#include "llviewerstats.h"
#include "llviewerwindow.h" // busycount
#include "llappviewer.h" // gVFS
-
+#include "llanimstatelabels.h"
#include "llresmgr.h"
+
// *TODO: Translate?
const char NONE_LABEL[] = "---";
const char SHIFT_LABEL[] = "Shift";
@@ -592,7 +593,7 @@ void LLPreviewGesture::addAnimations()
for (i = 0; i < gUserAnimStatesCount; ++i)
{
// Use the user-readable name
- const char* label = gUserAnimStates[i].mLabel;
+ std::string label = LLAnimStateLabels::getStateLabel( gUserAnimStates[i].mName );
const LLUUID& id = gUserAnimStates[i].mID;
combo->add(label, id);
}
diff --git a/linden/indra/newview/llpreviewscript.cpp b/linden/indra/newview/llpreviewscript.cpp
index 6acd6bf..9ef711d 100644
--- a/linden/indra/newview/llpreviewscript.cpp
+++ b/linden/indra/newview/llpreviewscript.cpp
@@ -1262,7 +1262,7 @@ void LLPreviewLSL::saveIfNeeded()
std::string filepath = gDirUtilp->getExpandedFilename(LL_PATH_CACHE,asset_id.asString());
std::string filename = llformat("%s.lsl", filepath.c_str());
- FILE* fp = LLFile::fopen(filename.c_str(), "wb");
+ LLFILE* fp = LLFile::fopen(filename.c_str(), "wb");
if(!fp)
{
llwarns << "Unable to write to " << filename << llendl;
@@ -1336,7 +1336,7 @@ void LLPreviewLSL::uploadAssetLegacy(const std::string& filename,
//system(command);
// load the error file into the error scrolllist
- FILE* fp = LLFile::fopen(err_filename.c_str(), "r");
+ LLFILE* fp = LLFile::fopen(err_filename.c_str(), "r");
if(fp)
{
char buffer[MAX_STRING]; /*Flawfinder: ignore*/
@@ -1851,7 +1851,7 @@ void LLLiveLSLEditor::loadScriptText(const char* filename)
llerrs << "Filename is Empty!" << llendl;
return;
}
- FILE* file = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/
+ LLFILE* file = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/
if(file)
{
// read in the whole file
@@ -2063,7 +2063,7 @@ void LLLiveLSLEditor::saveIfNeeded()
mItem->setTransactionID(tid);
// write out the data, and store it in the asset database
- FILE* fp = LLFile::fopen(filename.c_str(), "wb");
+ LLFILE* fp = LLFile::fopen(filename.c_str(), "wb");
if(!fp)
{
llwarns << "Unable to write to " << filename << llendl;
@@ -2136,7 +2136,7 @@ void LLLiveLSLEditor::uploadAssetLegacy(const std::string& filename,
std::string dst_filename = llformat("%s.lso", filepath.c_str());
std::string err_filename = llformat("%s.out", filepath.c_str());
- FILE *fp;
+ LLFILE *fp;
if(!lscript_compile(filename.c_str(),
dst_filename.c_str(),
err_filename.c_str(),
diff --git a/linden/indra/newview/llprogressview.cpp b/linden/indra/newview/llprogressview.cpp
index b4f0704..d10cc8f 100644
--- a/linden/indra/newview/llprogressview.cpp
+++ b/linden/indra/newview/llprogressview.cpp
@@ -36,7 +36,7 @@
#include "indra_constants.h"
#include "llmath.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llui.h"
#include "llfontgl.h"
#include "llimagegl.h"
diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp
index 7d26f06..4488a46 100644
--- a/linden/indra/newview/llselectmgr.cpp
+++ b/linden/indra/newview/llselectmgr.cpp
@@ -39,7 +39,7 @@
#include "lldbstrings.h"
#include "lleconomy.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llpermissions.h"
#include "llpermissionsflags.h"
#include "llundo.h"
@@ -62,6 +62,7 @@
#include "llhudmanager.h"
#include "llinventorymodel.h"
#include "llmenugl.h"
+#include "llmutelist.h"
#include "llstatusbar.h"
#include "llsurface.h"
#include "lltool.h"
@@ -1037,19 +1038,21 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 &
if (mGridMode == GRID_MODE_LOCAL && mSelectedObjects->getObjectCount())
{
- LLViewerObject* root = getSelectedParentObject(mSelectedObjects->getFirstObject());
+ //LLViewerObject* root = getSelectedParentObject(mSelectedObjects->getFirstObject());
LLBBox bbox = mSavedSelectionBBox;
mGridOrigin = mSavedSelectionBBox.getCenterAgent();
mGridScale = mSavedSelectionBBox.getExtentLocal() * 0.5f;
- if(mSelectedObjects->getObjectCount() < 2 || !root || root->mDrawable.isNull())
+ // DEV-12570 Just taking the saved selection box rotation prevents
+ // wild rotations of linked sets while in local grid mode
+ //if(mSelectedObjects->getObjectCount() < 2 || !root || root->mDrawable.isNull())
{
mGridRotation = mSavedSelectionBBox.getRotation();
}
- else //set to the root object
+ /*else //set to the root object
{
mGridRotation = root->getRenderRotation();
- }
+ }*/
}
else if (mGridMode == GRID_MODE_REF_OBJECT && first_grid_object && first_grid_object->mDrawable.notNull())
{
@@ -2509,11 +2512,7 @@ BOOL LLSelectMgr::selectGetGroup(LLUUID& result_id)
}
}
}
- if (first_id.isNull())
- {
- return FALSE;
- }
-
+
result_id = first_id;
return identical;
@@ -4443,6 +4442,11 @@ void LLSelectMgr::processObjectPropertiesFamily(LLMessageSystem* msg, void** use
reporterp->setPickedObjectProperties(name, fullname, owner_id);
}
}
+ else if (request_flags & OBJECT_PAY_REQUEST)
+ {
+ // check if the owner of the paid object is muted
+ LLMuteList::getInstance()->autoRemove(owner_id, LLMuteList::AR_MONEY);
+ }
// Now look through all of the hovered nodes
struct f : public LLSelectedNodeFunctor
@@ -4780,7 +4784,7 @@ void LLSelectMgr::updateSilhouettes()
objectp->clearChanged(LLXform::MOVED | LLXform::SILHOUETTE);
}
- //glAlphaFunc(GL_GREATER, 0.01f);
+ //gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
}
void LLSelectMgr::renderSilhouettes(BOOL for_hud)
@@ -4792,7 +4796,7 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
LLViewerImage::bindTexture(mSilhouetteImagep);
LLGLSPipelineSelection gls_select;
- glAlphaFunc(GL_GREATER, 0.0f);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.f);
LLGLEnable blend(GL_BLEND);
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
@@ -4898,7 +4902,7 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud)
}
mSilhouetteImagep->unbindTexture(0, GL_TEXTURE_2D);
- glAlphaFunc(GL_GREATER, 0.01f);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
}
void LLSelectMgr::generateSilhouette(LLSelectNode* nodep, const LLVector3& view_point)
@@ -5263,7 +5267,7 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
if (LLSelectMgr::sRenderHiddenSelections) // && gFloaterTools && gFloaterTools->getVisible())
{
gGL.flush();
- gGL.blendFunc(GL_SRC_COLOR, GL_ONE);
+ gGL.blendFunc(LLRender::BF_SOURCE_COLOR, LLRender::BF_ONE);
LLGLEnable fog(GL_FOG);
glFogi(GL_FOG_MODE, GL_LINEAR);
float d = (LLViewerCamera::getInstance()->getPointOfInterest()-LLViewerCamera::getInstance()->getOrigin()).magVec();
@@ -5273,7 +5277,7 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
glFogfv(GL_FOG_COLOR, fogCol.mV);
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_GEQUAL);
- glAlphaFunc(GL_GREATER, 0.01f);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
gGL.begin(LLVertexBuffer::LINES);
{
S32 i = 0;
@@ -5294,7 +5298,7 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color)
}
gGL.flush();
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
gGL.begin(LLVertexBuffer::TRIANGLES);
{
S32 i = 0;
diff --git a/linden/indra/newview/llspatialpartition.cpp b/linden/indra/newview/llspatialpartition.cpp
index cb115ff..520501e 100644
--- a/linden/indra/newview/llspatialpartition.cpp
+++ b/linden/indra/newview/llspatialpartition.cpp
@@ -43,7 +43,7 @@
#include "llviewerregion.h"
#include "llcamera.h"
#include "pipeline.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "lloctree.h"
const F32 SG_OCCLUSION_FUDGE = 1.01f;
@@ -2006,7 +2006,7 @@ void renderOctree(LLSpatialGroup* group)
//render solid object bounding box, color
//coded by buffer usage and activity
LLGLDepthTest depth(GL_TRUE, GL_FALSE);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE);
+ gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA);
LLVector4 col;
if (group->mBuilt > 0.f)
{
@@ -2094,7 +2094,7 @@ void renderOctree(LLSpatialGroup* group)
drawBox(group->mObjectBounds[0], group->mObjectBounds[1]*1.01f+LLVector3(0.001f, 0.001f, 0.001f));
glDepthMask(GL_TRUE);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
if (group->mBuilt <= 0.f)
{
@@ -2122,7 +2122,7 @@ void renderOctree(LLSpatialGroup* group)
void renderVisibility(LLSpatialGroup* group, LLCamera* camera)
{
LLGLEnable blend(GL_BLEND);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
LLGLEnable cull(GL_CULL_FACE);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
@@ -2498,7 +2498,7 @@ void LLSpatialPartition::renderDebug()
LLGLDisable cullface(GL_CULL_FACE);
LLGLEnable blend(GL_BLEND);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
LLImageGL::unbindTexture(0);
gPipeline.disableLights();
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index 914b993..52f4d1a 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -127,6 +127,7 @@
#include "llsky.h"
#include "llsrv.h"
#include "llstatview.h"
+#include "lltrans.h"
#include "llsurface.h"
#include "lltexturecache.h"
#include "lltexturefetch.h"
@@ -264,8 +265,8 @@ namespace
const char* message, const LLSD& body,
LLHTTPClient::ResponderPtr response) const
{
- llwarns << " attemped to send " << message << " to " << host
- << " with null sender" << llendl;
+ LL_WARNS("AppInit") << " attemped to send " << message << " to " << host
+ << " with null sender" << LL_ENDL;
}
};
}
@@ -427,17 +428,17 @@ BOOL idle_startup()
if (ll_init_ares() == NULL)
{
- llerrs << "Could not start address resolution system" << llendl;
+ LL_ERRS("AppInit") << "Could not start address resolution system" << LL_ENDL;
}
//
// Initialize messaging system
//
- llinfos << "Initializing messaging system..." << llendl;
+ LL_DEBUGS("AppInit") << "Initializing messaging system..." << LL_ENDL;
std::string message_template_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"message_template.msg");
- FILE* found_template = NULL;
+ LLFILE* found_template = NULL;
found_template = LLFile::fopen(message_template_path.c_str(), "r"); /* Flawfinder: ignore */
if (found_template)
{
@@ -495,7 +496,7 @@ BOOL idle_startup()
if (gSavedSettings.getBOOL("LogMessages"))
{
- llinfos << "Message logging activated!" << llendl;
+ LL_DEBUGS("AppInit") << "Message logging activated!" << LL_ENDL;
msg->startLogging();
}
@@ -520,13 +521,13 @@ BOOL idle_startup()
F32 outBandwidth = gSavedSettings.getF32("OutBandwidth");
if (inBandwidth != 0.f)
{
- llinfos << "Setting packetring incoming bandwidth to " << inBandwidth << llendl;
+ LL_DEBUGS("AppInit") << "Setting packetring incoming bandwidth to " << inBandwidth << LL_ENDL;
msg->mPacketRing.setUseInThrottle(TRUE);
msg->mPacketRing.setInBandwidth(inBandwidth);
}
if (outBandwidth != 0.f)
{
- llinfos << "Setting packetring outgoing bandwidth to " << outBandwidth << llendl;
+ LL_DEBUGS("AppInit") << "Setting packetring outgoing bandwidth to " << outBandwidth << LL_ENDL;
msg->mPacketRing.setUseOutThrottle(TRUE);
msg->mPacketRing.setOutBandwidth(outBandwidth);
}
@@ -557,7 +558,7 @@ BOOL idle_startup()
BOOL init = gAudiop->init(kAUDIO_NUM_SOURCES, window_handle);
if(!init)
{
- llwarns << "Unable to initialize audio engine" << llendl;
+ LL_WARNS("AppInit") << "Unable to initialize audio engine" << LL_ENDL;
}
gAudiop->setMuted(TRUE);
}
@@ -565,7 +566,7 @@ BOOL idle_startup()
if (LLTimer::knownBadTimer())
{
- llwarns << "Unreliable timers detected (may be bad PCI chipset)!!" << llendl;
+ LL_WARNS("AppInit") << "Unreliable timers detected (may be bad PCI chipset)!!" << LL_ENDL;
}
//
@@ -638,7 +639,7 @@ BOOL idle_startup()
//---------------------------------------------------------------------
if (STATE_MEDIA_INIT == LLStartUp::getStartupState())
{
- llinfos << "Initializing Multimedia...." << llendl;
+ LL_DEBUGS("AppInit") << "Initializing Multimedia...." << LL_ENDL;
set_startup_status(0.03f, "Initializing Multimedia...", gAgent.mMOTD.c_str());
display_startup();
LLViewerMedia::initClass();
@@ -656,7 +657,7 @@ BOOL idle_startup()
if (STATE_LOGIN_SHOW == LLStartUp::getStartupState())
{
- llinfos << "Initializing Window" << llendl;
+ LL_DEBUGS("AppInit") << "Initializing Window" << LL_ENDL;
gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
// Push our window frontmost
@@ -667,11 +668,13 @@ BOOL idle_startup()
if (show_connect_box)
{
// Load all the name information out of the login view
- LLPanelLogin::getFields(firstname, lastname, password, remember_password);
+ // NOTE: Hits "Attempted getFields with no login view shown" warning, since we don't
+ // show the login view until login_show() is called below.
+ // LLPanelLogin::getFields(firstname, lastname, password, remember_password);
if (gNoRender)
{
- llerrs << "Need to autologin or use command line with norender!" << llendl;
+ LL_ERRS("AppInit") << "Need to autologin or use command line with norender!" << LL_ENDL;
}
// Make sure the process dialog doesn't hide things
gViewerWindow->setShowProgress(FALSE);
@@ -764,7 +767,7 @@ BOOL idle_startup()
}
gSavedSettings.setBOOL("RememberPassword", remember_password);
- llinfos << "Attempting login as: " << firstname << " " << lastname << llendl;
+ LL_INFOS("AppInit") << "Attempting login as: " << firstname << " " << lastname << LL_ENDL;
gDebugInfo["LoginName"] = firstname + " " + lastname;
}
@@ -812,22 +815,28 @@ BOOL idle_startup()
LLString server_label;
S32 domain_name_index;
BOOL user_picked_server = LLPanelLogin::getServer( server_label, domain_name_index );
- gGridChoice = (EGridInfo) domain_name_index;
- gSavedSettings.setS32("ServerChoice", gGridChoice);
- if (gGridChoice == GRID_INFO_OTHER)
+ if((EGridInfo)domain_name_index == GRID_INFO_OTHER)
{
- gGridName = server_label;/* Flawfinder: ignore */
+ // Since the grid chosen was an 'other', set the choice by string.
+ LLViewerLogin::getInstance()->setGridChoice(server_label);
+ }
+ else
+ {
+ // Set the choice according to index.
+ LLViewerLogin::getInstance()->setGridChoice((EGridInfo)domain_name_index);
}
if ( user_picked_server )
- { // User picked a grid from the popup, so clear the stored urls and they will be re-generated from gGridChoice
+ { // User picked a grid from the popup, so clear the
+ // stored uris and they will be re-generated from the GridChoice
sAuthUris.clear();
- LLAppViewer::instance()->resetURIs();
+ LLViewerLogin::getInstance()->resetURIs();
}
LLString location;
LLPanelLogin::getLocation( location );
LLURLSimString::setString( location );
+
// END TODO
LLPanelLogin::close();
}
@@ -884,7 +893,7 @@ BOOL idle_startup()
// Poke the VFS, which could potentially block for a while if
// Windows XP is acting up
- set_startup_status(0.07f, "Verifying cache files (can take 60-90 seconds)...", NULL);
+ set_startup_status(0.07f, LLTrans::getString("LoginVerifyingCache").c_str(), NULL);
display_startup();
gVFS->pokeFiles();
@@ -907,10 +916,9 @@ BOOL idle_startup()
if(STATE_LOGIN_AUTH_INIT == LLStartUp::getStartupState())
{
//#define LL_MINIMIAL_REQUESTED_OPTIONS
- gDebugInfo["GridName"] = gGridInfo[gGridChoice].mLabel;
+ gDebugInfo["GridName"] = LLViewerLogin::getInstance()->getGridLabel();
// *Note: this is where gUserAuth used to be created.
-
requested_options.clear();
requested_options.push_back("inventory-root");
requested_options.push_back("inventory-skeleton");
@@ -942,7 +950,8 @@ BOOL idle_startup()
gSavedSettings.setBOOL("UseDebugMenus", TRUE);
requested_options.push_back("god-connect");
}
- const std::vector& uris = LLAppViewer::instance()->getLoginURIs();
+ std::vector uris;
+ LLViewerLogin::getInstance()->getLoginURIs(uris);
std::vector::const_iterator iter, end;
for (iter = uris.begin(), end = uris.end(); iter != end; ++iter)
{
@@ -953,15 +962,16 @@ BOOL idle_startup()
}
sAuthUriNum = 0;
auth_method = "login_to_simulator";
- auth_desc = "Logging in. ";
- auth_desc += LLAppViewer::instance()->getSecondLifeTitle();
- auth_desc += " may appear frozen. Please wait.";
+
+ LLString::format_map_t args;
+ args["[APP_NAME]"] = LLAppViewer::instance()->getSecondLifeTitle();
+ auth_desc = LLTrans::getString("LoginInProgress", args).c_str();
LLStartUp::setStartupState( STATE_LOGIN_AUTHENTICATE );
}
if (STATE_LOGIN_AUTHENTICATE == LLStartUp::getStartupState())
{
- lldebugs << "STATE_LOGIN_AUTHENTICATE" << llendl;
+ LL_DEBUGS("AppInit") << "STATE_LOGIN_AUTHENTICATE" << LL_ENDL;
set_startup_status(progress, auth_desc.c_str(), auth_message.c_str());
progress += 0.02f;
display_startup();
@@ -1021,7 +1031,7 @@ BOOL idle_startup()
if(STATE_LOGIN_NO_DATA_YET == LLStartUp::getStartupState())
{
- //lldebugs << "STATE_LOGIN_NO_DATA_YET" << llendl;
+ LL_DEBUGS("AppInit") << "STATE_LOGIN_NO_DATA_YET" << LL_ENDL;
// If we get here we have gotten past the potential stall
// in curl, so take "may appear frozen" out of progress bar. JC
auth_desc = "Logging in...";
@@ -1035,7 +1045,7 @@ BOOL idle_startup()
LLUserAuth::UserAuthcode error = LLUserAuth::getInstance()->authResponse();
if(LLUserAuth::E_NO_RESPONSE_YET == error)
{
- //llinfos << "waiting..." << llendl;
+ LL_DEBUGS("AppInit") << "waiting..." << LL_ENDL;
return do_normal_idle;
}
LLStartUp::setStartupState( STATE_LOGIN_DOWNLOADING );
@@ -1046,7 +1056,7 @@ BOOL idle_startup()
if(STATE_LOGIN_DOWNLOADING == LLStartUp::getStartupState())
{
- lldebugs << "STATE_LOGIN_DOWNLOADING" << llendl;
+ LL_DEBUGS("AppInit") << "STATE_LOGIN_DOWNLOADING" << LL_ENDL;
// Process messages to keep from dropping circuit.
LLMessageSystem* msg = gMessageSystem;
while (msg->checkAllMessages(gFrameCount, gServicePump))
@@ -1056,18 +1066,18 @@ BOOL idle_startup()
LLUserAuth::UserAuthcode error = LLUserAuth::getInstance()->authResponse();
if(LLUserAuth::E_DOWNLOADING == error)
{
- //llinfos << "downloading..." << llendl;
+ LL_DEBUGS("AppInit") << "downloading..." << LL_ENDL;
return do_normal_idle;
}
LLStartUp::setStartupState( STATE_LOGIN_PROCESS_RESPONSE );
progress += 0.01f;
- set_startup_status(progress, "Processing Response...", auth_message.c_str());
+ set_startup_status(progress, LLTrans::getString("LoginProcessingResponse").c_str(), auth_message.c_str());
return do_normal_idle;
}
if(STATE_LOGIN_PROCESS_RESPONSE == LLStartUp::getStartupState())
{
- lldebugs << "STATE_LOGIN_PROCESS_RESPONSE" << llendl;
+ LL_DEBUGS("AppInit") << "STATE_LOGIN_PROCESS_RESPONSE" << LL_ENDL;
std::ostringstream emsg;
BOOL quit = FALSE;
const char* login_response = NULL;
@@ -1089,18 +1099,18 @@ BOOL idle_startup()
}
else if(login_response && (0 == strcmp(login_response, "indeterminate")))
{
- llinfos << "Indeterminate login..." << llendl;
+ LL_INFOS("AppInit") << "Indeterminate login..." << LL_ENDL;
sAuthUris = LLSRV::rewriteURI(LLUserAuth::getInstance()->getResponse("next_url"));
sAuthUriNum = 0;
auth_method = LLUserAuth::getInstance()->getResponse("next_method");
auth_message = LLUserAuth::getInstance()->getResponse("message");
if(auth_method.substr(0, 5) == "login")
{
- auth_desc.assign("Authenticating...");
+ auth_desc.assign(LLTrans::getString("LoginAuthenticating").c_str());
}
else
{
- auth_desc.assign("Performing account maintenance...");
+ auth_desc.assign(LLTrans::getString("LoginMaintenance").c_str());
}
// ignoring the duration & options array for now.
// Go back to authenticate.
@@ -1136,7 +1146,7 @@ BOOL idle_startup()
{
if (show_connect_box)
{
- llinfos << "Need tos agreement" << llendl;
+ LL_DEBUGS("AppInit") << "Need tos agreement" << LL_ENDL;
LLStartUp::setStartupState( STATE_UPDATE_CHECK );
LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_TOS,
message_response);
@@ -1153,7 +1163,7 @@ BOOL idle_startup()
{
if (show_connect_box)
{
- llinfos << "Need critical message" << llendl;
+ LL_DEBUGS("AppInit") << "Need critical message" << LL_ENDL;
LLStartUp::setStartupState( STATE_UPDATE_CHECK );
LLFloaterTOS* tos_dialog = LLFloaterTOS::show(LLFloaterTOS::TOS_CRITICAL_MESSAGE,
message_response);
@@ -1188,7 +1198,7 @@ BOOL idle_startup()
}
if(reason_response && (0 == strcmp(reason_response, "optional")))
{
- llinfos << "Login got optional update" << llendl;
+ LL_DEBUGS("AppInit") << "Login got optional update" << LL_ENDL;
auth_message = LLUserAuth::getInstance()->getResponse("message");
if (show_connect_box)
{
@@ -1213,9 +1223,9 @@ BOOL idle_startup()
} else {
sAuthUriNum++;
std::ostringstream s;
- s << "Previous login attempt failed. Logging in, attempt "
- << (sAuthUriNum + 1) << ". ";
- auth_desc = s.str();
+ LLString::format_map_t args;
+ args["[NUMBER]"] = sAuthUriNum + 1;
+ auth_desc = LLTrans::getString("LoginAttempt", args).c_str();
LLStartUp::setStartupState( STATE_LOGIN_AUTHENTICATE );
return do_normal_idle;
}
@@ -1451,8 +1461,8 @@ BOOL idle_startup()
{
if (gNoRender)
{
- llinfos << "Bad login - missing return values" << llendl;
- llinfos << emsg << llendl;
+ LL_WARNS("AppInit") << "Bad login - missing return values" << LL_ENDL;
+ LL_WARNS("AppInit") << emsg << LL_ENDL;
exit(0);
}
// Bounce back to the login screen.
@@ -1471,8 +1481,8 @@ BOOL idle_startup()
{
if (gNoRender)
{
- llinfos << "Failed to login!" << llendl;
- llinfos << emsg << llendl;
+ LL_WARNS("AppInit") << "Failed to login!" << LL_ENDL;
+ LL_WARNS("AppInit") << emsg << LL_ENDL;
exit(0);
}
// Bounce back to the login screen.
@@ -1493,7 +1503,7 @@ BOOL idle_startup()
//---------------------------------------------------------------------
if (STATE_WORLD_INIT == LLStartUp::getStartupState())
{
- set_startup_status(0.40f, "Initializing World...", gAgent.mMOTD.c_str());
+ set_startup_status(0.40f, LLTrans::getString("LoginInitializingWorld").c_str(), gAgent.mMOTD.c_str());
display_startup();
// We should have an agent id by this point.
llassert(!(gAgentID == LLUUID::null));
@@ -1541,11 +1551,11 @@ BOOL idle_startup()
LLWorld::getInstance()->addRegion(first_sim_handle, first_sim);
LLViewerRegion *regionp = LLWorld::getInstance()->getRegionFromHandle(first_sim_handle);
- llinfos << "Adding initial simulator " << regionp->getOriginGlobal() << llendl;
+ LL_INFOS("AppInit") << "Adding initial simulator " << regionp->getOriginGlobal() << LL_ENDL;
LLStartUp::setStartupState( STATE_SEED_GRANTED_WAIT );
regionp->setSeedCapability(first_sim_seed_cap);
- llinfos << "Waiting for seed grant ...." << llendl;
+ LL_DEBUGS("AppInit") << "Waiting for seed grant ...." << LL_ENDL;
// Set agent's initial region to be the one we just created.
gAgent.setRegion(regionp);
@@ -1613,7 +1623,7 @@ BOOL idle_startup()
//
// Set message handlers
//
- llinfos << "Initializing communications..." << llendl;
+ LL_INFOS("AppInit") << "Initializing communications..." << LL_ENDL;
// register callbacks for messages. . . do this after initial handshake to make sure that we don't catch any unwanted
register_viewer_callbacks(gMessageSystem);
@@ -1662,7 +1672,7 @@ BOOL idle_startup()
// Sets up the parameters for the first simulator
- llinfos << "Initializing camera..." << llendl;
+ LL_DEBUGS("AppInit") << "Initializing camera..." << LL_ENDL;
gFrameTime = totalTime();
F32 last_time = gFrameTimeSeconds;
gFrameTimeSeconds = (S64)(gFrameTime - gStartTime)/SEC_TO_MICROSEC;
@@ -1697,19 +1707,19 @@ BOOL idle_startup()
// Initialize global class data needed for surfaces (i.e. textures)
if (!gNoRender)
{
- llinfos << "Initializing sky..." << llendl;
+ LL_DEBUGS("AppInit") << "Initializing sky..." << LL_ENDL;
// Initialize all of the viewer object classes for the first time (doing things like texture fetches.
gSky.init(initial_sun_direction);
}
- llinfos << "Decoding images..." << llendl;
+ LL_DEBUGS("AppInit") << "Decoding images..." << LL_ENDL;
// For all images pre-loaded into viewer cache, decode them.
// Need to do this AFTER we init the sky
const S32 DECODE_TIME_SEC = 2;
for (int i = 0; i < DECODE_TIME_SEC; i++)
{
F32 frac = (F32)i / (F32)DECODE_TIME_SEC;
- set_startup_status(0.45f + frac*0.1f, "Decoding images...", gAgent.mMOTD.c_str());
+ set_startup_status(0.45f + frac*0.1f, LLTrans::getString("LoginDecodingImages").c_str(), gAgent.mMOTD.c_str());
display_startup();
gImageList.decodeAllImages(1.f);
}
@@ -1720,14 +1730,14 @@ BOOL idle_startup()
LLMessageSystem* msg = gMessageSystem;
if (!msg->mOurCircuitCode)
{
- llwarns << "Attempting to connect to simulator with a zero circuit code!" << llendl;
+ LL_WARNS("AppInit") << "Attempting to connect to simulator with a zero circuit code!" << LL_ENDL;
}
gUseCircuitCallbackCalled = FALSE;
msg->enableCircuit(first_sim, TRUE);
// now, use the circuit info to tell simulator about us!
- llinfos << "viewer: UserLoginLocationReply() Enabling " << first_sim << " with code " << msg->mOurCircuitCode << llendl;
+ LL_INFOS("AppInit") << "viewer: UserLoginLocationReply() Enabling " << first_sim << " with code " << msg->mOurCircuitCode << LL_ENDL;
msg->newMessageFast(_PREHASH_UseCircuitCode);
msg->nextBlockFast(_PREHASH_CircuitCode);
msg->addU32Fast(_PREHASH_Code, msg->mOurCircuitCode);
@@ -1753,8 +1763,8 @@ BOOL idle_startup()
//---------------------------------------------------------------------
if(STATE_WORLD_WAIT == LLStartUp::getStartupState())
{
- //llinfos << "Waiting for simulator ack...." << llendl;
- set_startup_status(0.59f, "Waiting for region handshake...", gAgent.mMOTD.c_str());
+ LL_DEBUGS("AppInit") << "Waiting for simulator ack...." << LL_ENDL;
+ set_startup_status(0.59f, LLTrans::getString("LoginWaitingForRegionHandshake").c_str(), gAgent.mMOTD.c_str());
if(gGotUseCircuitCodeAck)
{
LLStartUp::setStartupState( STATE_AGENT_SEND );
@@ -1772,8 +1782,8 @@ BOOL idle_startup()
//---------------------------------------------------------------------
if (STATE_AGENT_SEND == LLStartUp::getStartupState())
{
- llinfos << "Connecting to region..." << llendl;
- set_startup_status(0.60f, "Connecting to region...", gAgent.mMOTD.c_str());
+ LL_DEBUGS("AppInit") << "Connecting to region..." << LL_ENDL;
+ set_startup_status(0.60f, LLTrans::getString("LoginConnectingToRegion").c_str(), gAgent.mMOTD.c_str());
// register with the message system so it knows we're
// expecting this message
LLMessageSystem* msg = gMessageSystem;
@@ -1824,8 +1834,8 @@ BOOL idle_startup()
}
else
{
- //llinfos << "Awaiting AvatarInitComplete, got "
- //<< msg->getMessageName() << llendl;
+ LL_DEBUGS("AppInit") << "Awaiting AvatarInitComplete, got "
+ << msg->getMessageName() << LL_ENDL;
}
}
msg->processAcks();
@@ -1877,7 +1887,7 @@ BOOL idle_startup()
{
if(!gInventory.loadSkeleton(options, gInventoryLibraryOwner))
{
- llwarns << "Problem loading inventory-skel-lib" << llendl;
+ LL_WARNS("AppInit") << "Problem loading inventory-skel-lib" << LL_ENDL;
}
}
options.clear();
@@ -1885,8 +1895,7 @@ BOOL idle_startup()
{
if(!gInventory.loadSkeleton(options, gAgent.getID()))
{
- llwarns << "Problem loading inventory-skel-targets"
- << llendl;
+ LL_WARNS("AppInit") << "Problem loading inventory-skel-targets" << LL_ENDL;
}
}
@@ -2038,17 +2047,17 @@ BOOL idle_startup()
if (rate_bps > FASTER_RATE_BPS
&& rate_bps > max_bandwidth)
{
- llinfos << "Fast network connection, increasing max bandwidth to "
+ LL_DEBUGS("AppInit") << "Fast network connection, increasing max bandwidth to "
<< FASTER_RATE_BPS/1024.f
- << " kbps" << llendl;
+ << " kbps" << LL_ENDL;
gViewerThrottle.setMaxBandwidth(FASTER_RATE_BPS / 1024.f);
}
else if (rate_bps > FAST_RATE_BPS
&& rate_bps > max_bandwidth)
{
- llinfos << "Fast network connection, increasing max bandwidth to "
+ LL_DEBUGS("AppInit") << "Fast network connection, increasing max bandwidth to "
<< FAST_RATE_BPS/1024.f
- << " kbps" << llendl;
+ << " kbps" << LL_ENDL;
gViewerThrottle.setMaxBandwidth(FAST_RATE_BPS / 1024.f);
}
}
@@ -2080,8 +2089,8 @@ BOOL idle_startup()
LLUserAuth::options_t gesture_options;
if (LLUserAuth::getInstance()->getOptions("gestures", gesture_options))
{
- llinfos << "Gesture Manager loading " << gesture_options.size()
- << llendl;
+ LL_DEBUGS("AppInit") << "Gesture Manager loading " << gesture_options.size()
+ << LL_ENDL;
std::vector item_ids;
LLUserAuth::options_t::iterator resp_it;
for (resp_it = gesture_options.begin();
@@ -2134,7 +2143,7 @@ BOOL idle_startup()
msg->setHandlerFuncFast(_PREHASH_AttachedSound, process_attached_sound);
msg->setHandlerFuncFast(_PREHASH_AttachedSoundGainChange, process_attached_sound_gain_change);
- llinfos << "Initialization complete" << llendl;
+ LL_DEBUGS("AppInit") << "Initialization complete" << LL_ENDL;
gRenderStartTime.reset();
gForegroundTime.reset();
@@ -2249,7 +2258,7 @@ BOOL idle_startup()
{
update_texture_fetch();
set_startup_status(0.f + 0.25f * wearables_time / MAX_WEARABLES_TIME,
- "Downloading clothing...",
+ LLTrans::getString("LoginDownloadingClothing").c_str(),
gAgent.mMOTD.c_str());
}
return do_normal_idle;
@@ -2271,7 +2280,7 @@ BOOL idle_startup()
gViewerWindow->showCursor();
gViewerWindow->getWindow()->resetBusyCount();
gViewerWindow->getWindow()->setCursor(UI_CURSOR_ARROW);
- //llinfos << "Done releasing bitmap" << llendl;
+ LL_DEBUGS("AppInit") << "Done releasing bitmap" << LL_ENDL;
gViewerWindow->setShowProgress(FALSE);
gViewerWindow->setProgressCancelButtonVisible(FALSE, "");
@@ -2293,7 +2302,7 @@ BOOL idle_startup()
if (gSavedSettings.getBOOL("StatsAutoRun"))
{
LLUUID id;
- llinfos << "Starting automatic playback" << llendl;
+ LL_DEBUGS("AppInit") << "Starting automatic playback" << LL_ENDL;
gAgentPilot.startPlayback();
}
@@ -2309,9 +2318,9 @@ BOOL idle_startup()
// Unmute audio if desired and setup volumes.
// This is a not-uncommon crash site, so surround it with
// llinfos output to aid diagnosis.
- llinfos << "Doing first audio_update_volume..." << llendl;
+ LL_INFOS("AppInit") << "Doing first audio_update_volume..." << LL_ENDL;
audio_update_volume();
- llinfos << "Done first audio_update_volume." << llendl;
+ LL_INFOS("AppInit") << "Done first audio_update_volume." << LL_ENDL;
// reset keyboard focus to sane state of pointing at world
gFocusMgr.setKeyboardFocus(NULL);
@@ -2320,10 +2329,12 @@ BOOL idle_startup()
gDebugView->mFastTimerView->setVisible(TRUE);
#endif
+ LLAppViewer::instance()->startMainloopTimeout();
+
return do_normal_idle;
}
- llwarns << "Reached end of idle_startup for state " << LLStartUp::getStartupState() << llendl;
+ LL_WARNS("AppInit") << "Reached end of idle_startup for state " << LLStartUp::getStartupState() << LL_ENDL;
return do_normal_idle;
}
@@ -2333,7 +2344,7 @@ BOOL idle_startup()
void login_show()
{
- llinfos << "Initializing Login Screen" << llendl;
+ LL_INFOS("AppInit") << "Initializing Login Screen" << LL_ENDL;
#ifdef LL_RELEASE_FOR_DOWNLOAD
BOOL bUseDebugLogin = gSavedSettings.getBOOL("UseDebugLogin");
@@ -2347,35 +2358,15 @@ void login_show()
// UI textures have been previously loaded in doPreloadImages()
- llinfos << "Setting Servers" << llendl;
+ LL_DEBUGS("AppInit") << "Setting Servers" << LL_ENDL;
- if( GRID_INFO_OTHER == gGridChoice )
- {
- LLPanelLogin::addServer( gGridName.c_str(), GRID_INFO_OTHER );
- }
- else
+ LLPanelLogin::addServer(LLViewerLogin::getInstance()->getGridLabel().c_str(), LLViewerLogin::getInstance()->getGridChoice());
+
+ LLViewerLogin* vl = LLViewerLogin::getInstance();
+ for(int grid_index = GRID_INFO_ADITI; grid_index < GRID_INFO_OTHER; ++grid_index)
{
- LLPanelLogin::addServer( gGridInfo[gGridChoice].mLabel, gGridChoice );
+ LLPanelLogin::addServer(vl->getKnownGridLabel((EGridInfo)grid_index).c_str(), grid_index);
}
-
- // Arg! We hate loops!
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_ADITI].mLabel, GRID_INFO_ADITI );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_AGNI].mLabel, GRID_INFO_AGNI );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_ARUNA].mLabel, GRID_INFO_ARUNA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_DURGA].mLabel, GRID_INFO_DURGA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_GANGA].mLabel, GRID_INFO_GANGA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_MITRA].mLabel, GRID_INFO_MITRA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_MOHINI].mLabel, GRID_INFO_MOHINI );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_NANDI].mLabel, GRID_INFO_NANDI );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_RADHA].mLabel, GRID_INFO_RADHA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_RAVI].mLabel, GRID_INFO_RAVI );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_SIVA].mLabel, GRID_INFO_SIVA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_SHAKTI].mLabel, GRID_INFO_SHAKTI );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_SOMA].mLabel, GRID_INFO_SOMA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_UMA].mLabel, GRID_INFO_UMA );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_VAAK].mLabel, GRID_INFO_VAAK );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_YAMI].mLabel, GRID_INFO_YAMI );
- LLPanelLogin::addServer( gGridInfo[GRID_INFO_LOCAL].mLabel, GRID_INFO_LOCAL );
}
// Callback for when login screen is closed. Option 0 = connect, option 1 = quit.
@@ -2416,7 +2407,7 @@ void login_callback(S32 option, void *userdata)
}
else
{
- llwarns << "Unknown login button clicked" << llendl;
+ LL_WARNS("AppInit") << "Unknown login button clicked" << LL_ENDL;
}
}
@@ -2437,7 +2428,7 @@ LLString load_password_from_disk()
std::string filepath = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,
"password.dat");
- FILE* fp = LLFile::fopen(filepath.c_str(), "rb"); /* Flawfinder: ignore */
+ LLFILE* fp = LLFile::fopen(filepath.c_str(), "rb"); /* Flawfinder: ignore */
if (!fp)
{
return hashed_password;
@@ -2484,7 +2475,7 @@ void save_password_to_disk(const char* hashed_password)
}
else
{
- FILE* fp = LLFile::fopen(filepath.c_str(), "wb"); /* Flawfinder: ignore */
+ LLFILE* fp = LLFile::fopen(filepath.c_str(), "wb"); /* Flawfinder: ignore */
if (!fp)
{
return;
@@ -2501,7 +2492,7 @@ void save_password_to_disk(const char* hashed_password)
if (fwrite(buffer, HASHED_LENGTH, 1, fp) != 1)
{
- llwarns << "Short write" << llendl;
+ LL_WARNS("AppInit") << "Short write" << LL_ENDL;
}
fclose(fp);
@@ -2551,7 +2542,7 @@ void first_run_dialog_callback(S32 option, void* userdata)
{
if (0 == option)
{
- llinfos << "First run dialog cancelling" << llendl;
+ LL_DEBUGS("AppInit") << "First run dialog cancelling" << LL_ENDL;
LLWeb::loadURL( CREATE_ACCOUNT_URL );
}
@@ -2584,7 +2575,7 @@ void login_alert_status(S32 option, void* user_data)
LLStartUp::setStartupState( STATE_LOGIN_CLEANUP );
break;
default:
- llwarns << "Missing case in login_alert_status switch" << llendl;
+ LL_WARNS("AppInit") << "Missing case in login_alert_status switch" << LL_ENDL;
}
LLPanelLogin::giveFocus();
@@ -2692,7 +2683,7 @@ void update_dialog_callback(S32 option, void *userdata)
#endif
// *TODO change userserver to be grid on both viewer and sim, since
// userserver no longer exists.
- query_map["userserver"] = gGridName;
+ query_map["userserver"] = LLViewerLogin::getInstance()->getGridLabel();
query_map["channel"] = gSavedSettings.getString("VersionChannelName");
// *TODO constantize this guy
LLURI update_url = LLURI::buildHTTP("secondlife.com", 80, "update.php", query_map);
@@ -2702,7 +2693,7 @@ void update_dialog_callback(S32 option, void *userdata)
if (update_exe_path.empty())
{
// We're hosed, bail
- llwarns << "LLDir::getTempFilename() failed" << llendl;
+ LL_WARNS("AppInit") << "LLDir::getTempFilename() failed" << LL_ENDL;
LLAppViewer::instance()->forceQuit();
return;
}
@@ -2713,14 +2704,14 @@ void update_dialog_callback(S32 option, void *userdata)
updater_source += gDirUtilp->getDirDelimiter();
updater_source += "updater.exe";
- llinfos << "Calling CopyFile source: " << updater_source.c_str()
+ LL_DEBUGS("AppInit") << "Calling CopyFile source: " << updater_source.c_str()
<< " dest: " << update_exe_path
- << llendl;
+ << LL_ENDL;
if (!CopyFileA(updater_source.c_str(), update_exe_path.c_str(), FALSE))
{
- llinfos << "Unable to copy the updater!" << llendl;
+ LL_WARNS("AppInit") << "Unable to copy the updater!" << LL_ENDL;
LLAppViewer::instance()->forceQuit();
return;
}
@@ -2758,14 +2749,14 @@ void update_dialog_callback(S32 option, void *userdata)
params << " -program \"" << program_name << "\"";
}
- llinfos << "Calling updater: " << update_exe_path << " " << params.str() << llendl;
+ LL_DEBUGS("AppInit") << "Calling updater: " << update_exe_path << " " << params.str() << LL_ENDL;
//Explicitly remove the marker file, otherwise we pass the lock onto the child process and things get weird.
LLAppViewer::instance()->removeMarkerFile(); // In case updater fails
// Use spawn() to run asynchronously
int retval = _spawnl(_P_NOWAIT, update_exe_path.c_str(), update_exe_path.c_str(), params.str().c_str(), NULL);
- llinfos << "Spawn returned " << retval << llendl;
+ LL_DEBUGS("AppInit") << "Spawn returned " << retval << LL_ENDL;
#elif LL_DARWIN
// if a sim name was passed in via command line parameter (typically through a SLURL)
@@ -2783,11 +2774,8 @@ void update_dialog_callback(S32 option, void *userdata)
update_exe_path += LLAppViewer::instance()->getSecondLifeTitle();
update_exe_path += "\" &";
- llinfos << "Calling updater: " << update_exe_path << llendl;
+ LL_DEBUGS("AppInit") << "Calling updater: " << update_exe_path << LL_ENDL;
- // *REMOVE:Mani The following call is handled through ~LLAppViewer.
- // remove_marker_file(); // In case updater fails
-
// Run the auto-updater.
system(update_exe_path.c_str()); /* Flawfinder: ignore */
@@ -2795,10 +2783,6 @@ void update_dialog_callback(S32 option, void *userdata)
OSMessageBox("Automatic updating is not yet implemented for Linux.\n"
"Please download the latest version from www.secondlife.com.",
NULL, OSMB_OK);
-
- // *REMOVE:Mani The following call is handled through ~LLAppViewer.
- // remove_marker_file();
-
#endif
LLAppViewer::instance()->forceQuit();
}
@@ -2813,7 +2797,7 @@ void use_circuit_callback(void**, S32 result)
if (result)
{
// Make sure user knows something bad happened. JC
- llinfos << "Backing up to login screen!" << llendl;
+ LL_WARNS("AppInit") << "Backing up to login screen!" << LL_ENDL;
gViewerWindow->alertXml("LoginPacketNeverReceived",
login_alert_status, NULL);
reset_login();
@@ -2981,7 +2965,7 @@ void register_viewer_callbacks(LLMessageSystem* msg)
//msg->setHandlerFunc("DirPicksReply", LLPanelDirBrowser::processDirPicksReply);
msg->setHandlerFunc("DirClassifiedReply", LLPanelDirBrowser::processDirClassifiedReply);
msg->setHandlerFunc("DirLandReply", LLPanelDirBrowser::processDirLandReply);
- msg->setHandlerFunc("DirPopularReply",LLPanelDirBrowser::processDirPopularReply);
+ //msg->setHandlerFunc("DirPopularReply",LLPanelDirBrowser::processDirPopularReply);
msg->setHandlerFunc("AvatarPickerReply", LLFloaterAvatarPicker::processAvatarPickerReply);
@@ -3660,10 +3644,10 @@ void init_start_screen(S32 location_id)
if (gStartImageGL.notNull())
{
gStartImageGL = NULL;
- llinfos << "re-initializing start screen" << llendl;
+ LL_INFOS("AppInit") << "re-initializing start screen" << LL_ENDL;
}
- llinfos << "Loading startup bitmap..." << llendl;
+ LL_DEBUGS("AppInit") << "Loading startup bitmap..." << LL_ENDL;
LLString temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter();
@@ -3682,12 +3666,12 @@ void init_start_screen(S32 location_id)
// driver bug
if(!gSavedSettings.getBOOL("UseStartScreen"))
{
- llinfos << "Bitmap load disabled" << llendl;
+ LL_INFOS("AppInit") << "Bitmap load disabled" << LL_ENDL;
return;
}
else if(!start_image_bmp->load(temp_str) )
{
- llinfos << "Bitmap load failed" << llendl;
+ LL_WARNS("AppInit") << "Bitmap load failed" << LL_ENDL;
return;
}
@@ -3698,7 +3682,7 @@ void init_start_screen(S32 location_id)
LLPointer raw = new LLImageRaw;
if (!start_image_bmp->decode(raw, 0.0f))
{
- llinfos << "Bitmap decode failed" << llendl;
+ LL_WARNS("AppInit") << "Bitmap decode failed" << LL_ENDL;
gStartImageGL = NULL;
return;
}
@@ -3711,7 +3695,7 @@ void init_start_screen(S32 location_id)
// frees the bitmap
void release_start_screen()
{
- //llinfos << "Releasing bitmap..." << llendl;
+ LL_DEBUGS("AppInit") << "Releasing bitmap..." << LL_ENDL;
gStartImageGL = NULL;
}
@@ -3719,7 +3703,7 @@ void release_start_screen()
// static
void LLStartUp::setStartupState( S32 state )
{
- llinfos << "Startup state changing from " << gStartupState << " to " << state << llendl;
+ LL_INFOS("AppInit") << "Startup state changing from " << gStartupState << " to " << state << LL_ENDL;
gStartupState = state;
}
diff --git a/linden/indra/newview/llstatgraph.cpp b/linden/indra/newview/llstatgraph.cpp
index c9969a2..9f219e2 100644
--- a/linden/indra/newview/llstatgraph.cpp
+++ b/linden/indra/newview/llstatgraph.cpp
@@ -32,7 +32,7 @@
#include "llviewerprecompiledheaders.h"
#include "llstatgraph.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llmath.h"
#include "llui.h"
diff --git a/linden/indra/newview/llstatusbar.cpp b/linden/indra/newview/llstatusbar.cpp
index c11d46d..42acdcc 100644
--- a/linden/indra/newview/llstatusbar.cpp
+++ b/linden/indra/newview/llstatusbar.cpp
@@ -429,26 +429,18 @@ void LLStatusBar::refresh()
childSetVisible("restrictpush", FALSE);
}
- BOOL voice_enabled = gVoiceClient->voiceEnabled();
BOOL have_voice = parcel && parcel->getVoiceEnabled();
- if (!voice_enabled)
+ if (have_voice)
{
childSetVisible("status_no_voice", FALSE);
}
else
{
- if (have_voice)
- {
- childSetVisible("status_no_voice", FALSE);
- }
- else if (!have_voice)
- {
- childSetVisible("status_no_voice", TRUE);
- childGetRect( "status_no_voice", buttonRect );
- r.setOriginAndSize( x, y, buttonRect.getWidth(), buttonRect.getHeight());
- childSetRect( "status_no_voice", r );
- x += buttonRect.getWidth();
- }
+ childSetVisible("status_no_voice", TRUE);
+ childGetRect( "status_no_voice", buttonRect );
+ r.setOriginAndSize( x, y, buttonRect.getWidth(), buttonRect.getHeight());
+ childSetRect( "status_no_voice", r );
+ x += buttonRect.getWidth();
}
BOOL canBuyLand = parcel
diff --git a/linden/indra/newview/llstylemap.cpp b/linden/indra/newview/llstylemap.cpp
new file mode 100644
index 0000000..a8c8bf7
--- /dev/null
+++ b/linden/indra/newview/llstylemap.cpp
@@ -0,0 +1,75 @@
+/**
+ * @file llstylemap.cpp
+ * @brief LLStyleMap class implementation
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ *
+ * Copyright (c) 2002-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+
+#include "llstylemap.h"
+#include "llstring.h"
+#include "llui.h"
+#include "llviewercontrol.h"
+#include "llagent.h"
+
+LLStyleMap::LLStyleMap()
+{
+}
+
+LLStyleMap::~LLStyleMap()
+{
+}
+
+LLStyleMap &LLStyleMap::instance()
+{
+ static LLStyleMap mStyleMap;
+ return mStyleMap;
+}
+
+// This is similar to the [] accessor except that if the entry doesn't already exist,
+// then this will create the entry.
+const LLStyleSP &LLStyleMap::lookup(const LLUUID &source)
+{
+ // Find this style in the map or add it if not. This map holds links to residents' profiles.
+ if (find(source) == end())
+ {
+ LLStyleSP style(new LLStyle);
+ style->setVisible(true);
+ style->setFontName(LLString::null);
+ if (source != gAgent.getID() && source != LLUUID::null)
+ {
+ style->setColor(gSavedSettings.getColor4("HTMLLinkColor"));
+ LLString link = llformat("secondlife:///app/agent/%s/about",source.asString().c_str());
+ style->setLinkHREF(link);
+ }
+ else
+ style->setColor(LLColor4::white);
+ (*this)[source] = style;
+ }
+ return (*this)[source];
+}
diff --git a/linden/indra/newview/llstylemap.h b/linden/indra/newview/llstylemap.h
new file mode 100644
index 0000000..2e9339c
--- /dev/null
+++ b/linden/indra/newview/llstylemap.h
@@ -0,0 +1,54 @@
+/**
+ * @file LLStyleMap.h
+ * @brief LLStyleMap class definition
+ *
+ * $LicenseInfo:firstyear=2002&license=viewergpl$
+ *
+ * Copyright (c) 2002-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+
+#ifndef LL_LLSTYLE_MAP_H
+#define LL_LLSTYLE_MAP_H
+
+#include "llstyle.h"
+#include "lluuid.h"
+
+// Lightweight class for holding and managing mappings between UUIDs and links.
+// Used (for example) to create clickable name links off of IM chat.
+
+typedef std::map style_map_t;
+
+class LLStyleMap : public style_map_t
+{
+public:
+ LLStyleMap();
+ ~LLStyleMap();
+ // Just like the [] accessor but it will add the entry in if it doesn't exist.
+ const LLStyleSP &lookup(const LLUUID &source);
+ static LLStyleMap &instance();
+};
+
+#endif // LL_LLSTYLE_MAP_H
diff --git a/linden/indra/newview/llsurfacepatch.cpp b/linden/indra/newview/llsurfacepatch.cpp
index 5b03c98..42aea9e 100644
--- a/linden/indra/newview/llsurfacepatch.cpp
+++ b/linden/indra/newview/llsurfacepatch.cpp
@@ -206,10 +206,11 @@ LLVector2 LLSurfacePatch::getTexCoords(const U32 x, const U32 y) const
void LLSurfacePatch::eval(const U32 x, const U32 y, const U32 stride, LLVector3 *vertex, LLVector3 *normal,
LLVector2 *tex0, LLVector2 *tex1)
{
- if (!mSurfacep || !mSurfacep->getRegion())
+ if (!mSurfacep || !mSurfacep->getRegion() || !mSurfacep->getGridsPerEdge())
{
return; // failsafe
}
+ llassert_always(vertex && normal && tex0 && tex1);
U32 surface_stride = mSurfacep->getGridsPerEdge();
U32 point_offset = x + y*surface_stride;
diff --git a/linden/indra/newview/lltexlayer.cpp b/linden/indra/newview/lltexlayer.cpp
index 66d9a33..0e4c9c2 100644
--- a/linden/indra/newview/lltexlayer.cpp
+++ b/linden/indra/newview/lltexlayer.cpp
@@ -52,7 +52,7 @@
#include "llxmltree.h"
#include "pipeline.h"
#include "v4coloru.h"
-#include "llglimmediate.h"
+#include "llrender.h"
//#include "../tools/imdebug/imdebug.h"
@@ -239,6 +239,9 @@ BOOL LLTexLayerSetBuffer::render()
{
U8* baked_bump_data = NULL;
+ // Default color mask for tex layer render
+ gGL.setColorMask(true, true);
+
// do we need to upload, and do we have sufficient data to create an uploadable composite?
// When do we upload the texture if gAgent.mNumPendingQueries is non-zero?
BOOL upload_now = (gAgent.mNumPendingQueries == 0 && mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal());
@@ -292,8 +295,8 @@ BOOL LLTexLayerSetBuffer::render()
}
// reset GL state
- glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );
- gGL.blendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
+ gGL.setColorMask(true, true);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
// we have valid texture data now
mInitialized = TRUE;
@@ -756,6 +759,7 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
LLGLSUIDefault gls_ui;
LLGLDepthTest gls_depth(GL_FALSE, GL_FALSE);
+ gGL.setColorMask(true, true);
// composite color layers
for( layer_list_t::iterator iter = mLayerList.begin(); iter != mLayerList.end(); iter++ )
@@ -774,8 +778,8 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
{
LLGLSNoAlphaTest gls_no_alpha_test;
gGL.flush();
- glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE );
- gGL.blendFunc( GL_ONE, GL_ZERO );
+ gGL.setColorMask(false, true);
+ gGL.setSceneBlendType(LLRender::BT_REPLACE);
{
LLImageGL* image_gl = gTexStaticImageList.getImageGL( getInfo()->mStaticAlphaFileName, TRUE );
@@ -793,8 +797,8 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
LLImageGL::unbindTexture(0, GL_TEXTURE_2D);
gGL.flush();
- glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );
- gGL.blendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
+ gGL.setColorMask(true, true);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
else
if( getInfo()->mClearAlpha )
@@ -803,12 +807,12 @@ BOOL LLTexLayerSet::render( S32 x, S32 y, S32 width, S32 height )
LLGLSNoTextureNoAlphaTest gls_no_alpha;
gGL.color4f( 0.f, 0.f, 0.f, 1.f );
gGL.flush();
- glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE );
+ gGL.setColorMask(false, true);
gl_rect_2d_simple( width, height );
gGL.flush();
- glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );
+ gGL.setColorMask(true, true);
}
stop_glerror();
@@ -836,11 +840,11 @@ BOOL LLTexLayerSet::renderBump( S32 x, S32 y, S32 width, S32 height )
// Set the alpha channel to one (clean up after previous blending)
LLGLSNoTextureNoAlphaTest gls_no_texture_no_alpha;
gGL.color4f( 0.f, 0.f, 0.f, 1.f );
- glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE );
+ gGL.setColorMask(false, true);
gl_rect_2d_simple( width, height );
- glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );
+ gGL.setColorMask(true, true);
stop_glerror();
return success;
@@ -1330,7 +1334,7 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height )
renderAlphaMasks( x, y, width, height, &net_color );
alpha_mask_specified = TRUE;
gGL.flush();
- gGL.blendFunc( GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA );
+ gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ONE_MINUS_DEST_ALPHA);
}
gGL.color4fv( net_color.mV);
@@ -1338,7 +1342,7 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height )
if( getInfo()->mWriteAllChannels )
{
gGL.flush();
- gGL.blendFunc( GL_ONE, GL_ZERO );
+ gGL.setSceneBlendType(LLRender::BT_REPLACE);
}
if( (getInfo()->mLocalTexture != -1) && !getInfo()->mUseLocalTextureAlphaOnly )
@@ -1401,7 +1405,7 @@ BOOL LLTexLayer::render( S32 x, S32 y, S32 width, S32 height )
{
// Restore standard blend func value
gGL.flush();
- gGL.blendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
stop_glerror();
}
@@ -1506,7 +1510,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4
llassert( !mParamAlphaList.empty() );
- glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE );
+ gGL.setColorMask(false, true);
alpha_list_t::iterator iter = mParamAlphaList.begin();
LLTexLayerParamAlpha* first_param = *iter;
@@ -1518,7 +1522,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4
// Clear the alpha
gGL.flush();
- gGL.blendFunc( GL_ONE, GL_ZERO );
+ gGL.setSceneBlendType(LLRender::BT_REPLACE);
gGL.color4f( 0.f, 0.f, 0.f, 0.f );
gl_rect_2d_simple( width, height );
@@ -1536,7 +1540,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4
// Approximates a min() function
gGL.flush();
- gGL.blendFunc( GL_DST_ALPHA, GL_ZERO );
+ gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ZERO);
// Accumulate the alpha component of the texture
if( getInfo()->mLocalTexture != -1 )
@@ -1601,7 +1605,7 @@ BOOL LLTexLayer::renderAlphaMasks( S32 x, S32 y, S32 width, S32 height, LLColor4
LLGLSUIDefault gls_ui;
- glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );
+ gGL.setColorMask(true, true);
if (!mMorphMasksValid && !mMaskedMorphs.empty())
{
@@ -1963,11 +1967,11 @@ BOOL LLTexLayerParamAlpha::render( S32 x, S32 y, S32 width, S32 height )
gGL.flush();
if( getInfo()->mMultiplyBlend )
{
- gGL.blendFunc( GL_DST_ALPHA, GL_ZERO ); // Multiplication: approximates a min() function
+ gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ZERO); // Multiplication: approximates a min() function
}
else
{
- gGL.blendFunc( GL_ONE, GL_ONE ); // Addition: approximates a max() function
+ gGL.setSceneBlendType(LLRender::BT_ADD); // Addition: approximates a max() function
}
if( !getInfo()->mStaticImageFileName.empty() && !mStaticImageInvalid)
diff --git a/linden/indra/newview/lltexturecache.cpp b/linden/indra/newview/lltexturecache.cpp
index c31fbba..ab85b32 100644
--- a/linden/indra/newview/lltexturecache.cpp
+++ b/linden/indra/newview/lltexturecache.cpp
@@ -1023,8 +1023,8 @@ S64 LLTextureCache::initCache(ELLPath location, S64 max_size, BOOL read_only)
sCacheMaxTexturesSize = max_size;
max_size -= sCacheMaxTexturesSize;
- llinfos << "TEXTURE CACHE: Headers: " << sCacheMaxEntries
- << " Textures size: " << sCacheMaxTexturesSize/(1024*1024) << " MB" << llendl;
+ LL_INFOS("TextureCache") << "Headers: " << sCacheMaxEntries
+ << " Textures size: " << sCacheMaxTexturesSize/(1024*1024) << " MB" << LL_ENDL;
setDirNames(location);
@@ -1161,7 +1161,7 @@ void LLTextureCache::purgeTextures(bool validate)
S32 num_entries = filesize / sizeof(Entry);
if (num_entries * (S32)sizeof(Entry) != filesize)
{
- llwarns << "Bad cache file: " << mTexturesDirEntriesFileName << " Purging." << llendl;
+ LL_WARNS("TextureCache") << "Bad cache file: " << mTexturesDirEntriesFileName << " Purging." << LL_ENDL;
purgeAllTextures(false);
return;
}
@@ -1175,19 +1175,19 @@ void LLTextureCache::purgeTextures(bool validate)
(U8*)entries, 0, num_entries*sizeof(Entry));
if (bytes_read != filesize)
{
- llwarns << "Bad cache file (2): " << mTexturesDirEntriesFileName << " Purging." << llendl;
+ LL_WARNS("TextureCache") << "Bad cache file (2): " << mTexturesDirEntriesFileName << " Purging." << LL_ENDL;
purgeAllTextures(false);
return;
}
- llinfos << "TEXTURE CACHE: Reading Entries..." << llendl;
+ LL_DEBUGS("TextureCache") << "TEXTURE CACHE: Reading Entries..." << LL_ENDL;
std::map entry_idx_map;
S64 total_size = 0;
for (S32 idx=0; idx::iterator iter = entry_idx_map.find(id);
if (iter != entry_idx_map.end())
{
@@ -1206,7 +1206,7 @@ void LLTextureCache::purgeTextures(bool validate)
validate_idx = gSavedSettings.getU32("CacheValidateCounter");
U32 next_idx = (++validate_idx) % 256;
gSavedSettings.setU32("CacheValidateCounter", next_idx);
- llinfos << "TEXTURE CACHE: Validating: " << validate_idx << llendl;
+ LL_DEBUGS("TextureCache") << "TEXTURE CACHE: Validating: " << validate_idx << LL_ENDL;
}
S64 min_cache_size = (sCacheMaxTexturesSize * 9) / 10;
@@ -1230,12 +1230,12 @@ void LLTextureCache::purgeTextures(bool validate)
S32 uuididx = entries[idx].mID.mData[0];
if (uuididx == validate_idx)
{
-// llinfos << "Validating: " << filename << "Size: " << entries[idx].mSize << llendl;
+ LL_DEBUGS("TextureCache") << "Validating: " << filename << "Size: " << entries[idx].mSize << LL_ENDL;
S32 bodysize = ll_apr_file_size(filename, NULL);
if (bodysize != entries[idx].mSize)
{
- llwarns << "TEXTURE CACHE BODY HAS BAD SIZE: " << bodysize << " != " << entries[idx].mSize
- << filename << llendl;
+ LL_WARNS("TextureCache") << "TEXTURE CACHE BODY HAS BAD SIZE: " << bodysize << " != " << entries[idx].mSize
+ << filename << LL_ENDL;
purge_entry = true;
}
}
@@ -1243,7 +1243,7 @@ void LLTextureCache::purgeTextures(bool validate)
if (purge_entry)
{
purge_count++;
-// llinfos << "PURGING: " << filename << llendl;
+ LL_DEBUGS("TextureCache") << "PURGING: " << filename << LL_ENDL;
ll_apr_file_remove(filename, NULL);
total_size -= entries[idx].mSize;
entries[idx].mSize = 0;
@@ -1259,7 +1259,7 @@ void LLTextureCache::purgeTextures(bool validate)
}
num_entries = next_idx;
- llinfos << "TEXTURE CACHE: Writing Entries: " << num_entries << llendl;
+ LL_DEBUGS("TextureCache") << "TEXTURE CACHE: Writing Entries: " << num_entries << LL_ENDL;
ll_apr_file_remove(mTexturesDirEntriesFileName, NULL);
ll_apr_file_write_ex(mTexturesDirEntriesFileName, NULL,
@@ -1276,7 +1276,7 @@ void LLTextureCache::purgeTextures(bool validate)
delete[] entries;
- llinfos << "TEXTURE CACHE:"
+ LL_INFOS("TextureCache") << "TEXTURE CACHE:"
<< " PURGED: " << purge_count
<< " ENTRIES: " << num_entries
<< " CACHE SIZE: " << total_size / 1024*1024 << " MB"
diff --git a/linden/indra/newview/lltexturectrl.cpp b/linden/indra/newview/lltexturectrl.cpp
index 2be75c7..9a02c5a 100644
--- a/linden/indra/newview/lltexturectrl.cpp
+++ b/linden/indra/newview/lltexturectrl.cpp
@@ -34,7 +34,7 @@
#include "lltexturectrl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llagent.h"
#include "llviewerimagelist.h"
#include "llcheckboxctrl.h"
diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp
index 9399ed3..2e4283b 100644
--- a/linden/indra/newview/lltexturefetch.cpp
+++ b/linden/indra/newview/lltexturefetch.cpp
@@ -1341,13 +1341,13 @@ bool LLTextureFetch::createRequest(const LLString& filename, const LLUUID& id, c
}
S32 desired_size;
- if ((desired_discard == 0) && worker && worker->mFileSize)
+ if (desired_discard == 0)
{
// if we want the entire image, and we know its size, then get it all
// (calcDataSizeJ2C() below makes assumptions about how the image
// was compressed - this code ensures that when we request the entire image,
// we really do get it.)
- desired_size = worker->mFileSize;
+ desired_size = MAX_IMAGE_DATA_SIZE;
}
else if (w*h*c > 0)
{
@@ -1358,17 +1358,11 @@ bool LLTextureFetch::createRequest(const LLString& filename, const LLUUID& id, c
}
else
{
- if (desired_discard == 0)
- {
- // If we want all of the image, request the maximum possible data
- desired_size = MAX_IMAGE_DATA_SIZE;
- }
- else
- {
- desired_size = FIRST_PACKET_SIZE;
- desired_discard = MAX_DISCARD_LEVEL;
- }
+ desired_size = FIRST_PACKET_SIZE;
+ desired_discard = MAX_DISCARD_LEVEL;
}
+
+
if (worker)
{
if (worker->wasAborted())
diff --git a/linden/indra/newview/lltextureview.cpp b/linden/indra/newview/lltextureview.cpp
index db2853e..a2b3d47 100644
--- a/linden/indra/newview/lltextureview.cpp
+++ b/linden/indra/newview/lltextureview.cpp
@@ -40,7 +40,7 @@
#include "lllfsthread.h"
#include "llui.h"
#include "llimageworker.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llhoverview.h"
#include "llselectmgr.h"
diff --git a/linden/indra/newview/lltoolbar.cpp b/linden/indra/newview/lltoolbar.cpp
index 8d103ce..6612538 100644
--- a/linden/indra/newview/lltoolbar.cpp
+++ b/linden/indra/newview/lltoolbar.cpp
@@ -288,10 +288,15 @@ void LLToolBar::refresh()
// Clothing button updated inside LLFloaterClothing
- childSetEnabled("fly_btn", gAgent.canFly() || gAgent.getFlying() );
+ BOOL sitting = FALSE;
+ if (gAgent.getAvatarObject())
+ {
+ sitting = gAgent.getAvatarObject()->mIsSitting;
+ }
- childSetEnabled("build_btn", LLViewerParcelMgr::getInstance()->agentCanBuild() );
+ childSetEnabled("fly_btn", (gAgent.canFly() || gAgent.getFlying()) && !sitting );
+ childSetEnabled("build_btn", LLViewerParcelMgr::getInstance()->agentCanBuild() );
// Check to see if we're in build mode
BOOL build_mode = LLToolMgr::getInstance()->inEdit();
diff --git a/linden/indra/newview/lltoolbrush.cpp b/linden/indra/newview/lltoolbrush.cpp
index 319a5fd..9958d50 100644
--- a/linden/indra/newview/lltoolbrush.cpp
+++ b/linden/indra/newview/lltoolbrush.cpp
@@ -35,7 +35,7 @@
#include "lltoolselectland.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "message.h"
diff --git a/linden/indra/newview/lltooldraganddrop.cpp b/linden/indra/newview/lltooldraganddrop.cpp
index 67a2153..c492c7b 100644
--- a/linden/indra/newview/lltooldraganddrop.cpp
+++ b/linden/indra/newview/lltooldraganddrop.cpp
@@ -47,6 +47,7 @@
#include "llhudmanager.h"
#include "llinventorymodel.h"
#include "llinventoryview.h"
+#include "llmutelist.h"
#include "llnotify.h"
#include "llpreviewnotecard.h"
#include "llselectmgr.h"
@@ -1693,6 +1694,8 @@ void LLToolDragAndDrop::commitGiveInventoryItem(const LLUUID& to_agent,
effectp->setDuration(LL_HUD_DUR_SHORT);
effectp->setColor(LLColor4U(gAgent.getEffectColor()));
gFloaterTools->dirty();
+
+ LLMuteList::getInstance()->autoRemove(to_agent, LLMuteList::AR_INVENTORY);
}
void LLToolDragAndDrop::giveInventoryCategory(const LLUUID& to_agent,
@@ -1895,6 +1898,8 @@ void LLToolDragAndDrop::commitGiveInventoryCategory(const LLUUID& to_agent,
effectp->setDuration(LL_HUD_DUR_SHORT);
effectp->setColor(LLColor4U(gAgent.getEffectColor()));
gFloaterTools->dirty();
+
+ LLMuteList::getInstance()->autoRemove(to_agent, LLMuteList::AR_INVENTORY);
}
}
diff --git a/linden/indra/newview/lltoolfocus.cpp b/linden/indra/newview/lltoolfocus.cpp
index c526e6e..e5a3ed5 100644
--- a/linden/indra/newview/lltoolfocus.cpp
+++ b/linden/indra/newview/lltoolfocus.cpp
@@ -57,6 +57,7 @@
#include "llmorphview.h"
// Globals
+BOOL gCameraBtnZoom = TRUE;
BOOL gCameraBtnOrbit = FALSE;
BOOL gCameraBtnPan = FALSE;
@@ -403,7 +404,7 @@ BOOL LLToolCamera::handleHover(S32 x, S32 y, MASK mask)
}
lldebugst(LLERR_USER_INPUT) << "hover handled by LLToolPan" << llendl;
}
- else
+ else if (gCameraBtnZoom)
{
// Zoom tool
if (hasMouseCapture())
diff --git a/linden/indra/newview/lltoolfocus.h b/linden/indra/newview/lltoolfocus.h
index 3f5b04c..e50ea5e 100644
--- a/linden/indra/newview/lltoolfocus.h
+++ b/linden/indra/newview/lltoolfocus.h
@@ -77,5 +77,6 @@ protected:
extern BOOL gCameraBtnOrbit;
extern BOOL gCameraBtnPan;
+extern BOOL gCameraBtnZoom;
#endif
diff --git a/linden/indra/newview/lltoolmorph.cpp b/linden/indra/newview/lltoolmorph.cpp
index a18321a..2fbf4ae 100644
--- a/linden/indra/newview/lltoolmorph.cpp
+++ b/linden/indra/newview/lltoolmorph.cpp
@@ -33,7 +33,7 @@
// File includes
#include "lltoolmorph.h"
-#include "llglimmediate.h"
+#include "llrender.h"
// Library includes
#include "audioengine.h"
diff --git a/linden/indra/newview/lltoolselectrect.cpp b/linden/indra/newview/lltoolselectrect.cpp
index 11cdf4b..ceb0659 100644
--- a/linden/indra/newview/lltoolselectrect.cpp
+++ b/linden/indra/newview/lltoolselectrect.cpp
@@ -36,7 +36,7 @@
// Library includes
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "lldarray.h"
// Viewer includes
diff --git a/linden/indra/newview/lltracker.cpp b/linden/indra/newview/lltracker.cpp
index 9e4bb09..b5854c8 100644
--- a/linden/indra/newview/lltracker.cpp
+++ b/linden/indra/newview/lltracker.cpp
@@ -36,7 +36,7 @@
#include "lldarray.h"
#include "llfontgl.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llinventory.h"
#include "llmemory.h"
#include "llstring.h"
diff --git a/linden/indra/newview/lltrans.cpp b/linden/indra/newview/lltrans.cpp
new file mode 100644
index 0000000..a848250
--- /dev/null
+++ b/linden/indra/newview/lltrans.cpp
@@ -0,0 +1,103 @@
+/**
+ * @file lltrans.cpp
+ * @brief LLTrans implementation
+ *
+ * $LicenseInfo:firstyear=2000&license=viewergpl$
+ *
+ * Copyright (c) 2000-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+
+#include "llviewerprecompiledheaders.h"
+#include "lltrans.h"
+#include "llxmlnode.h"
+#include "lluictrlfactory.h"
+#include "llalertdialog.h"
+
+#include
+
+LLTrans::template_map_t LLTrans::sStringTemplates;
+
+//static
+bool LLTrans::parseStrings(const LLString& xml_filename)
+{
+ LLXMLNodePtr root;
+ BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
+
+ if (!success || root.isNull() || !root->hasName( "strings" ))
+ {
+ llerrs << "Problem reading strings: " << xml_filename << llendl;
+ return false;
+ }
+
+ for (LLXMLNode* string = root->getFirstChild();
+ string != NULL; string = string->getNextSibling())
+ {
+ if (!string->hasName("string"))
+ {
+ continue;
+ }
+
+ LLString string_name;
+
+ if (! string->getAttributeString("name", string_name))
+ {
+ llwarns << "Unable to parse string with no name" << llendl;
+ continue;
+ }
+
+ LLTransTemplate xml_template(string_name, string->getTextContents());
+ sStringTemplates[xml_template.mName] = xml_template;
+ }
+
+ return true;
+}
+
+//static
+LLString LLTrans::getString(const LLString &xml_desc, const LLString::format_map_t& args)
+{
+ template_map_t::iterator iter = sStringTemplates.find(xml_desc);
+
+ if (iter != sStringTemplates.end())
+ {
+ LLString text = iter->second.mText;
+ LLString::format(text, args);
+
+ return text;
+ }
+ else
+ {
+ LLString::format_map_t args;
+ args["[STRING_NAME]"] = xml_desc;
+ llwarns << "Missing String: [" << xml_desc << "]" << llendl;
+ LLAlertDialog* dialogp = LLAlertDialog::showXml("MissingString", args);
+ if (dialogp == NULL)
+ {
+ llerrs << "Bad or missing alerts.xml!" << llendl;
+ }
+ return "";
+ }
+}
+
diff --git a/linden/indra/newview/lltrans.h b/linden/indra/newview/lltrans.h
new file mode 100644
index 0000000..eb159f2
--- /dev/null
+++ b/linden/indra/newview/lltrans.h
@@ -0,0 +1,92 @@
+/**
+ * @file lltrans.h
+ * @brief LLTrans definition
+ *
+ * $LicenseInfo:firstyear=2000&license=viewergpl$
+ *
+ * Copyright (c) 2000-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_TRANS_H
+#define LL_TRANS_H
+
+#include
+
+/**
+ * @brief String template loaded from strings.xml
+ */
+class LLTransTemplate
+{
+public:
+ LLTransTemplate(const LLString& name = "", const LLString& text = "") : mName(name), mText(text) {}
+
+ LLString mName;
+ LLString mText;
+};
+
+/**
+ * @brief Localized strings class
+ * This class is used to retrieve translations of strings used to build larger ones, as well as
+ * strings with a general usage that don't belong to any specific floater. For example,
+ * "Owner:", "Retrieving..." used in the place of a not yet known name, etc.
+ */
+class LLTrans
+{
+public:
+ LLTrans();
+
+ /**
+ * @brief Parses the xml file that holds the strings. Used once on startup
+ * @param xml_filename Filename to parse
+ * @returns true if the file was parsed successfully, true if something went wrong
+ */
+ static bool parseStrings(const LLString& xml_filename);
+
+ /**
+ * @brief Returns a translated string
+ * @param xml_desc String's description
+ * @param args A list of substrings to replace in the string
+ * @returns Translated string
+ */
+ static LLString getString(const LLString &xml_desc, const LLString::format_map_t& args);
+
+ /**
+ * @brief Returns a translated string
+ * @param xml_desc String's description
+ * @returns Translated string
+ */
+ static LLString getString(const LLString &xml_desc)
+ {
+ LLString::format_map_t empty;
+ return getString(xml_desc, empty);
+ }
+
+
+private:
+ typedef std::map template_map_t;
+ static template_map_t sStringTemplates;
+};
+
+#endif
diff --git a/linden/indra/newview/lluserauth.cpp b/linden/indra/newview/lluserauth.cpp
index 9e040d2..6c8801a 100644
--- a/linden/indra/newview/lluserauth.cpp
+++ b/linden/indra/newview/lluserauth.cpp
@@ -103,14 +103,15 @@ void LLUserAuth::authenticate(
const std::string& hashed_mac,
const std::string& hashed_volume_serial)
{
- llinfos << "Authenticating: " << firstname << " " << lastname << ", "
- << /*dpasswd.c_str() <<*/ llendl;
+ LL_INFOS2("AppInit", "Authentication") << "Authenticating: " << firstname << " " << lastname << ", "
+ << /*dpasswd.c_str() <<*/ LL_ENDL;
std::ostringstream option_str;
option_str << "Options: ";
std::ostream_iterator appender(option_str, ", ");
std::copy(requested_options.begin(), requested_options.end(), appender);
option_str << "END";
- llinfos << option_str.str().c_str() << llendl;
+
+ LL_INFOS2("AppInit", "Authentication") << option_str.str().c_str() << LL_ENDL;
mAuthResponse = E_NO_RESPONSE_YET;
//mDownloadTimer.reset();
@@ -163,7 +164,7 @@ void LLUserAuth::authenticate(
XMLRPC_RequestFree(request, 1);
- llinfos << "LLUserAuth::authenticate: uri=" << auth_uri << llendl;
+ LL_INFOS2("AppInit", "Authentication") << "LLUserAuth::authenticate: uri=" << auth_uri << LL_ENDL;
}
@@ -188,14 +189,15 @@ void LLUserAuth::authenticate(
{
std::string dpasswd("$1$");
dpasswd.append(passwd);
- llinfos << "Authenticating: " << firstname << " " << lastname << ", "
- << /*dpasswd.c_str() <<*/ llendl;
+ LL_INFOS2("AppInit", "Authentication") << "Authenticating: " << firstname << " " << lastname << ", "
+ << /*dpasswd.c_str() <<*/ LL_ENDL;
std::ostringstream option_str;
option_str << "Options: ";
std::ostream_iterator appender(option_str, ", ");
std::copy(requested_options.begin(), requested_options.end(), appender);
option_str << "END";
- llinfos << option_str.str().c_str() << llendl;
+
+ LL_INFOS2("AppInit", "Authentication") << option_str.str().c_str() << LL_ENDL;
mAuthResponse = E_NO_RESPONSE_YET;
//mDownloadTimer.reset();
@@ -248,7 +250,7 @@ void LLUserAuth::authenticate(
XMLRPC_RequestFree(request, 1);
- llinfos << "LLUserAuth::authenticate: uri=" << auth_uri << llendl;
+ LL_INFOS2("AppInit", "Authentication") << "LLUserAuth::authenticate: uri=" << auth_uri << LL_ENDL;
}
@@ -300,7 +302,7 @@ LLUserAuth::UserAuthcode LLUserAuth::authResponse()
break;
}
- llinfos << "Processed response: " << result << llendl;
+ LL_INFOS2("AppInit", "Authentication") << "Processed response: " << result << LL_ENDL;
delete mTransaction;
mTransaction = NULL;
diff --git a/linden/indra/newview/llviewerassetstorage.cpp b/linden/indra/newview/llviewerassetstorage.cpp
index d9d497a..ac4003b 100644
--- a/linden/indra/newview/llviewerassetstorage.cpp
+++ b/linden/indra/newview/llviewerassetstorage.cpp
@@ -202,7 +202,7 @@ if(!filename)
llinfos << "ASSET_ID: " << asset_id << llendl;
S32 size = 0;
- FILE* fp = LLFile::fopen(filename, "rb");
+ LLFILE* fp = LLFile::fopen(filename, "rb");
if (fp)
{
fseek(fp, 0, SEEK_END);
diff --git a/linden/indra/newview/llviewercontrol.cpp b/linden/indra/newview/llviewercontrol.cpp
index 203f9c7..146d738 100644
--- a/linden/indra/newview/llviewercontrol.cpp
+++ b/linden/indra/newview/llviewercontrol.cpp
@@ -69,7 +69,7 @@
#include "llappviewer.h"
#include "llvosurfacepatch.h"
#include "llvowlsky.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#ifdef TOGGLE_HACKED_GODLIKE_VIEWER
BOOL gHackGodmode = FALSE;
@@ -86,6 +86,7 @@ LLString gLastRunVersion;
LLString gCurrentVersion;
extern BOOL gResizeScreenTexture;
+extern BOOL gDebugGL;
////////////////////////////////////////////////////////////////////////////
// Listeners
@@ -357,9 +358,15 @@ static bool handleRenderUseImpostorsChanged(const LLSD& newvalue)
return true;
}
-static bool handleRenderUseCleverUIChanged(const LLSD& newvalue)
+static bool handleRenderDebugGLChanged(const LLSD& newvalue)
{
- gGL.setClever(newvalue.asBoolean());
+ gDebugGL = newvalue.asBoolean();
+ return true;
+}
+
+static bool handleRenderDebugPipelineChanged(const LLSD& newvalue)
+{
+ gDebugPipeline = newvalue.asBoolean();
return true;
}
@@ -426,6 +433,7 @@ bool handleVoiceClientPrefsChanged(const LLSD& newvalue)
gVoiceClient->setCaptureDevice(inputDevice);
std::string outputDevice = gSavedSettings.getString("VoiceOutputAudioDevice");
gVoiceClient->setRenderDevice(outputDevice);
+ gVoiceClient->setLipSyncEnabled(gSavedSettings.getBOOL("LipSyncEnabled"));
}
return true;
}
@@ -463,7 +471,8 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderMaxVBOSize")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _1));
gSavedSettings.getControl("RenderUseFBO")->getSignal()->connect(boost::bind(&handleRenderUseFBOChanged, _1));
gSavedSettings.getControl("RenderUseImpostors")->getSignal()->connect(boost::bind(&handleRenderUseImpostorsChanged, _1));
- gSavedSettings.getControl("RenderUseCleverUI")->getSignal()->connect(boost::bind(&handleRenderUseCleverUIChanged, _1));
+ gSavedSettings.getControl("RenderDebugGL")->getSignal()->connect(boost::bind(&handleRenderDebugGLChanged, _1));
+ gSavedSettings.getControl("RenderDebugPipeline")->getSignal()->connect(boost::bind(&handleRenderDebugPipelineChanged, _1));
gSavedSettings.getControl("RenderResolutionDivisor")->getSignal()->connect(boost::bind(&handleRenderResolutionDivisorChanged, _1));
gSavedSettings.getControl("RenderDeferred")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _1));
gSavedSettings.getControl("AvatarCompositeLimit")->getSignal()->connect(boost::bind(&handleCompositeLimitChanged, _1));
@@ -555,5 +564,6 @@ void settings_setup_listeners()
gSavedSettings.getControl("VivoxDebugServerName")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
gSavedSettings.getControl("VoiceInputAudioDevice")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
gSavedSettings.getControl("VoiceOutputAudioDevice")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
+ gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceClientPrefsChanged, _1));
}
diff --git a/linden/indra/newview/llviewerdisplay.cpp b/linden/indra/newview/llviewerdisplay.cpp
index cdffe33..47c9c32 100644
--- a/linden/indra/newview/llviewerdisplay.cpp
+++ b/linden/indra/newview/llviewerdisplay.cpp
@@ -34,7 +34,7 @@
#include "llviewerdisplay.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llglheaders.h"
#include "llagent.h"
#include "llviewercontrol.h"
@@ -99,6 +99,9 @@ BOOL gDisplaySwapBuffers = FALSE;
BOOL gResizeScreenTexture = FALSE;
BOOL gSnapshot = FALSE;
+U32 gRecentFrameCount = 0; // number of 'recent' frames
+LLFrameTimer gRecentTime;
+
// Rendering stuff
void pre_show_depth_buffer();
void post_show_depth_buffer();
@@ -125,27 +128,24 @@ void display_startup()
// Required for HTML update in login screen
static S32 frame_count = 0;
-#ifndef LL_RELEASE_FOR_DOWNLOAD
+
LLGLState::checkStates();
LLGLState::checkTextureChannels();
-#endif
if (frame_count++ > 1) // make sure we have rendered a frame first
{
LLDynamicTexture::updateAllInstances();
}
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
-#endif
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
LLGLSUIDefault gls_ui;
gPipeline.disableLights();
gViewerWindow->setup2DRender();
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
gGL.color4f(1,1,1,1);
gViewerWindow->draw();
@@ -153,10 +153,8 @@ void display_startup()
LLVertexBuffer::unbind();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
-#endif
gViewerWindow->mWindow->swapBuffers();
glClear(GL_DEPTH_BUFFER_BIT);
@@ -186,6 +184,18 @@ void display_update_camera()
LLWorld::getInstance()->setLandFarClip(final_far);
}
+// Write some stats to llinfos
+void display_stats()
+{
+ F32 log_freq = gSavedSettings.getF32("FPSLogFrequency");
+ if (log_freq > 0.f && gRecentTime.getElapsedTimeF32() >= log_freq)
+ {
+ F32 fps = gRecentFrameCount / log_freq;
+ llinfos << llformat("FPS: %.02f", fps) << llendl;
+ gRecentFrameCount = 0;
+ gRecentTime.reset();
+ }
+}
// Paint the display!
void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
@@ -204,10 +214,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
LLVertexBuffer::unbind();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
-#endif
gPipeline.disableLights();
@@ -232,10 +240,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
gViewerWindow->performPick();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
-#endif
//////////////////////////////////////////////////////////
//
@@ -286,6 +292,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
gPipeline.mBackfaceCull = TRUE;
gFrameCount++;
+ gRecentFrameCount++;
if (gFocusMgr.getAppHasFocus())
{
gForegroundFrameCount++;
@@ -474,7 +481,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
LLFastTimer t(LLFastTimer::FTM_UPDATE_TEXTURES);
if (LLDynamicTexture::updateAllInstances())
{
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
+ gGL.setColorMask(true, true);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
}
@@ -559,7 +566,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
gPipeline.resizeScreenTexture();
}
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
+ gGL.setColorMask(true, true);
glClearColor(0,0,0,0);
if (!for_snapshot)
@@ -690,20 +697,20 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
if (to_texture)
{
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ gGL.setColorMask(true, true);
gPipeline.mScreen.bindTarget();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
+ gGL.setColorMask(true, false);
}
if (!(LLAppViewer::instance()->logoutRequestSent() && LLAppViewer::instance()->hasSavedFinalSnapshot())
&& !gRestoreGL)
{
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
+ gGL.setColorMask(true, false);
LLPipeline::sUnderWaterRender = LLViewerCamera::getInstance()->cameraUnderWater() ? TRUE : FALSE;
gPipeline.renderGeom(*LLViewerCamera::getInstance(), TRUE);
LLPipeline::sUnderWaterRender = FALSE;
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ gGL.setColorMask(true, true);
//store this frame's modelview matrix for use
//when rendering next frame's occlusion queries
@@ -741,6 +748,8 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
send_agent_resume();
LLPipeline::sRenderFrameTest = FALSE;
}
+
+ display_stats();
}
void render_hud_attachments()
@@ -880,9 +889,7 @@ BOOL setup_hud_matrices(BOOL for_select)
void render_ui_and_swap()
{
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
-#endif
glPushMatrix();
glLoadMatrixd(gGLLastModelView);
@@ -918,15 +925,11 @@ void render_ui_and_swap()
if (!gDisconnected)
{
render_ui_3d();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
-#endif
}
render_ui_2d();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
-#endif
}
gGL.flush();
@@ -1088,7 +1091,7 @@ void render_ui_2d()
}
stop_glerror();
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
// render outline for HUD
if (gAgent.getAvatarObject() && gAgent.getAvatarObject()->mHUDCurZoom < 0.98f)
@@ -1115,7 +1118,6 @@ void render_ui_2d()
LLFontGL::sCurOrigin.set(0, 0);
}
-
void render_disconnected_background()
{
gGL.color4f(1,1,1,1);
diff --git a/linden/indra/newview/llviewerimagelist.cpp b/linden/indra/newview/llviewerimagelist.cpp
index 88759af..a824b29 100644
--- a/linden/indra/newview/llviewerimagelist.cpp
+++ b/linden/indra/newview/llviewerimagelist.cpp
@@ -114,7 +114,7 @@ void LLViewerImageList::init()
void LLViewerImageList::doPreloadImages()
{
- llinfos << "Preloading images..." << llendl;
+ LL_DEBUGS("ViewerImages") << "Preloading images..." << LL_ENDL;
// Set the "missing asset" image
LLViewerImage::sMissingAssetImagep = getImageFromFile("missing_asset.tga");
@@ -772,10 +772,10 @@ void LLViewerImageList::decodeAllImages(F32 max_time)
max_time = llmax(max_time, .001f);
F32 create_time = updateImagesCreateTextures(max_time);
- llinfos << "decodeAllImages() took " << timer.getElapsedTimeF32() << " seconds. "
+ LL_DEBUGS("ViewerImages") << "decodeAllImages() took " << timer.getElapsedTimeF32() << " seconds. "
<< " fetch_pending " << fetch_pending
<< " create_time " << create_time
- << llendl;
+ << LL_ENDL;
}
diff --git a/linden/indra/newview/llviewerinventory.cpp b/linden/indra/newview/llviewerinventory.cpp
index db005c7..d7c1778 100644
--- a/linden/indra/newview/llviewerinventory.cpp
+++ b/linden/indra/newview/llviewerinventory.cpp
@@ -254,7 +254,7 @@ void LLViewerInventoryItem::packMessage(LLMessageSystem* msg) const
msg->addU32Fast(_PREHASH_CRC, crc);
}
// virtual
-BOOL LLViewerInventoryItem::importFile(FILE* fp)
+BOOL LLViewerInventoryItem::importFile(LLFILE* fp)
{
BOOL rv = LLInventoryItem::importFile(fp);
mIsComplete = TRUE;
@@ -269,7 +269,7 @@ BOOL LLViewerInventoryItem::importLegacyStream(std::istream& input_stream)
return rv;
}
-bool LLViewerInventoryItem::importFileLocal(FILE* fp)
+bool LLViewerInventoryItem::importFileLocal(LLFILE* fp)
{
// TODO: convert all functions that return BOOL to return bool
bool rv = (LLInventoryItem::importFile(fp) ? true : false);
@@ -277,7 +277,7 @@ bool LLViewerInventoryItem::importFileLocal(FILE* fp)
return rv;
}
-bool LLViewerInventoryItem::exportFileLocal(FILE* fp) const
+bool LLViewerInventoryItem::exportFileLocal(LLFILE* fp) const
{
char uuid_str[UUID_STR_LENGTH]; /* Flawfinder: ignore */
fprintf(fp, "\tinv_item\t0\n\t{\n");
@@ -469,7 +469,7 @@ bool LLViewerInventoryCategory::fetchDescendents()
return false;
}
-bool LLViewerInventoryCategory::importFileLocal(FILE* fp)
+bool LLViewerInventoryCategory::importFileLocal(LLFILE* fp)
{
// *NOTE: This buffer size is hard coded into scanf() below.
char buffer[MAX_STRING]; /* Flawfinder: ignore */
@@ -538,7 +538,7 @@ bool LLViewerInventoryCategory::importFileLocal(FILE* fp)
return true;
}
-bool LLViewerInventoryCategory::exportFileLocal(FILE* fp) const
+bool LLViewerInventoryCategory::exportFileLocal(LLFILE* fp) const
{
char uuid_str[UUID_STR_LENGTH]; /* Flawfinder: ignore */
fprintf(fp, "\tinv_category\t0\n\t{\n");
diff --git a/linden/indra/newview/llviewerinventory.h b/linden/indra/newview/llviewerinventory.h
index 05dc19a..e80a042 100644
--- a/linden/indra/newview/llviewerinventory.h
+++ b/linden/indra/newview/llviewerinventory.h
@@ -100,13 +100,13 @@ public:
//virtual void packMessage(LLMessageSystem* msg) const;
virtual BOOL unpackMessage(LLMessageSystem* msg, const char* block, S32 block_num = 0);
virtual BOOL unpackMessage(LLSD item);
- virtual BOOL importFile(FILE* fp);
+ virtual BOOL importFile(LLFILE* fp);
virtual BOOL importLegacyStream(std::istream& input_stream);
// file handling on the viewer. These are not meant for anything
// other than cacheing.
- bool exportFileLocal(FILE* fp) const;
- bool importFileLocal(FILE* fp);
+ bool exportFileLocal(LLFILE* fp) const;
+ bool importFileLocal(LLFILE* fp);
// new methods
BOOL isComplete() const { return mIsComplete; }
@@ -182,8 +182,8 @@ public:
// file handling on the viewer. These are not meant for anything
// other than cacheing.
- bool exportFileLocal(FILE* fp) const;
- bool importFileLocal(FILE* fp);
+ bool exportFileLocal(LLFILE* fp) const;
+ bool importFileLocal(LLFILE* fp);
protected:
LLUUID mOwnerID;
diff --git a/linden/indra/newview/llviewerjoint.cpp b/linden/indra/newview/llviewerjoint.cpp
index 71f9211..1be6e66 100644
--- a/linden/indra/newview/llviewerjoint.cpp
+++ b/linden/indra/newview/llviewerjoint.cpp
@@ -37,7 +37,7 @@
#include "llviewerjoint.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llmath.h"
#include "llglheaders.h"
#include "llrendersphere.h"
@@ -272,12 +272,12 @@ U32 LLViewerJoint::render( F32 pixelArea, BOOL first_pass )
triangle_count += drawShape( pixelArea, first_pass);
}
// second pass writes to z buffer only
- glColorMask(FALSE, FALSE, FALSE, FALSE);
+ gGL.setColorMask(false, false);
{
triangle_count += drawShape( pixelArea, FALSE );
}
// third past respects z buffer and writes color
- glColorMask(TRUE, TRUE, TRUE, FALSE);
+ gGL.setColorMask(true, false);
{
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
triangle_count += drawShape( pixelArea, FALSE );
diff --git a/linden/indra/newview/llviewerjointattachment.cpp b/linden/indra/newview/llviewerjointattachment.cpp
index bbab71b..f5a5d8a 100644
--- a/linden/indra/newview/llviewerjointattachment.cpp
+++ b/linden/indra/newview/llviewerjointattachment.cpp
@@ -38,7 +38,7 @@
#include "llviewercontrol.h"
#include "lldrawable.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llvoavatar.h"
#include "llvolume.h"
#include "pipeline.h"
diff --git a/linden/indra/newview/llviewerjointmesh.cpp b/linden/indra/newview/llviewerjointmesh.cpp
index 4a0f0b8..0dcf4ab 100644
--- a/linden/indra/newview/llviewerjointmesh.cpp
+++ b/linden/indra/newview/llviewerjointmesh.cpp
@@ -36,6 +36,7 @@
#include "imageids.h"
#include "llfasttimer.h"
+#include "llrender.h"
#include "llagent.h"
#include "llapr.h"
@@ -545,17 +546,7 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass)
else
{
glColor4f(0.7f, 0.6f, 0.3f, 1.f);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE_ARB);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_LERP_TEX_ALPHA, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR);
}
}
else if( mLayerSet )
@@ -573,12 +564,10 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass)
else
if ( mTexture.notNull() )
{
- mTexture->bind();
- if (!mTexture->getClampS()) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- }
- if (!mTexture->getClampT()) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ if (!mTexture->getClampS() || !mTexture->getClampT())
+ {
+ mTexture->bind();
+ mTexture->overrideClamp (TRUE, TRUE);
}
}
else
@@ -590,15 +579,8 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass)
{
if (isTransparent())
{
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_MODULATE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE); // GL_TEXTURE_ENV_COLOR is set in renderPass1
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_CONST_ALPHA);
}
else
{
@@ -639,16 +621,13 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass)
if (mTestImageName)
{
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
- if (mTexture.notNull()) {
- if (!mTexture->getClampS()) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- }
- if (!mTexture->getClampT()) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- }
+ if (mTexture.notNull())
+ {
+ mTexture->bind();
+ mTexture->restoreClamp();
}
return triangle_count;
@@ -870,9 +849,9 @@ void LLViewerJointMesh::updateVectorize()
case 1: vp = "SSE"; break;
default: vp = "COMPILER DEFAULT"; break;
}
- llinfos << "Vectorization : " << ( vectorizeEnable ? "ENABLED" : "DISABLED" ) << llendl ;
- llinfos << "Vector Processor : " << vp << llendl ;
- llinfos << "Vectorized Skinning : " << ( vectorizeSkin ? "ENABLED" : "DISABLED" ) << llendl ;
+ LL_INFOS("AppInit") << "Vectorization : " << ( vectorizeEnable ? "ENABLED" : "DISABLED" ) << LL_ENDL ;
+ LL_INFOS("AppInit") << "Vector Processor : " << vp << LL_ENDL ;
+ LL_INFOS("AppInit") << "Vectorized Skinning : " << ( vectorizeSkin ? "ENABLED" : "DISABLED" ) << LL_ENDL ;
if(vectorizeEnable && vectorizeSkin)
{
switch(sVectorizeProcessor)
diff --git a/linden/indra/newview/llviewerjoystick.cpp b/linden/indra/newview/llviewerjoystick.cpp
index e9690f8..cf9d8a1 100644
--- a/linden/indra/newview/llviewerjoystick.cpp
+++ b/linden/indra/newview/llviewerjoystick.cpp
@@ -228,8 +228,38 @@ void LLViewerJoystick::init(bool autoenable)
mDriverState = JDS_UNINITIALIZED;
}
}
+
+ // Autoenable the joystick for recognized devices if nothing was connected previously
+ if (!autoenable)
+ {
+ autoenable = gSavedSettings.getString("JoystickInitialized").empty() ? true : false;
+ }
updateEnabled(autoenable);
+ if (mDriverState == JDS_INITIALIZED)
+ {
+ // A Joystick device is plugged in
+ if (isLikeSpaceNavigator())
+ {
+ // It's a space navigator, we have defaults for it.
+ if (gSavedSettings.getString("JoystickInitialized") != "SpaceNavigator")
+ {
+ // Only set the defaults if we haven't already (in case they were overridden)
+ setSNDefaults();
+ gSavedSettings.setString("JoystickInitialized", "SpaceNavigator");
+ }
+ }
+ else
+ {
+ // It's not a Space Navigator
+ gSavedSettings.setString("JoystickInitialized", "UnknownDevice");
+ }
+ }
+ else
+ {
+ // No device connected, don't change any settings
+ }
+
llinfos << "ndof: mDriverState=" << mDriverState << "; mNdofDev="
<< mNdofDev << "; libinit=" << libinit << llendl;
#endif
diff --git a/linden/indra/newview/llviewerkeyboard.cpp b/linden/indra/newview/llviewerkeyboard.cpp
index 0d927ae..c732ae5 100644
--- a/linden/indra/newview/llviewerkeyboard.cpp
+++ b/linden/indra/newview/llviewerkeyboard.cpp
@@ -738,7 +738,7 @@ BOOL LLViewerKeyboard::bindKey(const S32 mode, const KEY key, const MASK mask, c
S32 LLViewerKeyboard::loadBindings(const char *filename)
{
- FILE *fp;
+ LLFILE *fp;
const S32 BUFFER_SIZE = 2048;
char buffer[BUFFER_SIZE]; /* Flawfinder: ignore */
// *NOTE: This buffer size is hard coded into scanf() below.
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index 2459133..00226dd 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -401,8 +401,8 @@ void handle_duplicate_in_place(void*);
void handle_repeat_duplicate(void*);
void handle_export(void*);
-void handle_deed_object_to_group(void*);
-BOOL enable_deed_object_to_group(void*);
+// void handle_deed_object_to_group(void*);
+// BOOL enable_deed_object_to_group(void*);
void handle_object_owner_self(void*);
void handle_object_owner_permissive(void*);
void handle_object_lock(void*);
@@ -515,7 +515,7 @@ public:
virtual void changed(U32 mask)
{
- // JAMESDEBUG disabled for now - slows down client or causes crashes
+ // JC - Disabled for now - slows down client or causes crashes
// in inventory code.
//
// Also, this may not be faster than just rebuilding the menu each time.
@@ -700,7 +700,7 @@ void init_menus()
gPopupMenuView->setBackgroundColor( color );
// If we are not in production, use a different color to make it apparent.
- if (LLAppViewer::instance()->isInProductionGrid())
+ if (LLViewerLogin::getInstance()->isInProductionGrid())
{
color = gColors.getColor( "MenuBarBgColor" );
}
@@ -722,7 +722,7 @@ void init_menus()
gViewerWindow->getRootView()->addChild(gMenuHolder);
gViewerWindow->setMenuBackgroundColor(false,
- LLAppViewer::instance()->isInProductionGrid());
+ LLViewerLogin::getInstance()->isInProductionGrid());
// *TODO:Get the cost info from the server
const LLString upload_cost("10");
@@ -739,7 +739,7 @@ void init_menus()
// TomY TODO convert these two
LLMenuGL*menu;
- // JAMESDEBUG - Maybe we don't want a global landmark menu
+ // JC - Maybe we don't want a global landmark menu
/*
menu = new LLMenuGL(LANDMARK_MENU_NAME);
// Defer init_landmark_menu() until inventory observer reports that we actually
@@ -969,7 +969,7 @@ void init_client_menu(LLMenuGL* menu)
#ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- if (!LLAppViewer::instance()->isInProductionGrid())
+ if (!LLViewerLogin::getInstance()->isInProductionGrid())
{
menu->append(new LLMenuItemCheckGL("Hacked Godmode",
&handle_toggle_hacked_godmode,
@@ -1064,7 +1064,7 @@ void init_client_menu(LLMenuGL* menu)
menu->appendSeparator();
- menu->append(new LLMenuItemCallGL("Compress Image...",
+ menu->append(new LLMenuItemCallGL("Compress Images...",
&handle_compress_image, NULL, NULL));
menu->append(new LLMenuItemCheckGL("Limit Select Distance",
@@ -1096,7 +1096,9 @@ void init_client_menu(LLMenuGL* menu)
{
LLMenuGL* sub = NULL;
sub = new LLMenuGL("Debugging");
+#if LL_WINDOWS
sub->append(new LLMenuItemCallGL("Force Breakpoint", &force_error_breakpoint, NULL, NULL, 'B', MASK_CONTROL | MASK_ALT));
+#endif
sub->append(new LLMenuItemCallGL("Force LLError And Crash", &force_error_llerror));
sub->append(new LLMenuItemCallGL("Force Bad Memory Access", &force_error_bad_memory_access));
sub->append(new LLMenuItemCallGL("Force Infinite Loop", &force_error_infinite_loop));
@@ -1189,7 +1191,7 @@ void init_debug_ui_menu(LLMenuGL* menu)
menu->append(new LLMenuItemCallGL( "Dump Focus Holder", &handle_dump_focus, NULL, NULL, 'F', MASK_ALT | MASK_CONTROL));
menu->append(new LLMenuItemCallGL( "Print Selected Object Info", &print_object_info, NULL, NULL, 'P', MASK_CONTROL|MASK_SHIFT ));
menu->append(new LLMenuItemCallGL( "Print Agent Info", &print_agent_nvpairs, NULL, NULL, 'P', MASK_SHIFT ));
- menu->append(new LLMenuItemCallGL( "Texture Memory Stats", &output_statistics, NULL, NULL, 'M', MASK_SHIFT | MASK_ALT | MASK_CONTROL));
+ menu->append(new LLMenuItemCallGL( "Memory Stats", &output_statistics, NULL, NULL, 'M', MASK_SHIFT | MASK_ALT | MASK_CONTROL));
menu->append(new LLMenuItemCheckGL("Double-Click Auto-Pilot",
menu_toggle_control, NULL, menu_check_control,
(void*)"DoubleClickAutoPilot"));
@@ -1429,6 +1431,12 @@ void init_debug_rendering_menu(LLMenuGL* menu)
item = new LLMenuItemCheckGL("Object-Object Occlusion", menu_toggle_control, NULL, menu_check_control, (void*)"UseOcclusion", 'O', MASK_CONTROL|MASK_SHIFT);
item->setEnabled(gGLManager.mHasOcclusionQuery && LLFeatureManager::getInstance()->isFeatureAvailable("UseOcclusion"));
menu->append(item);
+
+ item = new LLMenuItemCheckGL("Debug GL", menu_toggle_control, NULL, menu_check_control, (void*)"RenderDebugGL");
+ menu->append(item);
+
+ item = new LLMenuItemCheckGL("Debug Pipeline", menu_toggle_control, NULL, menu_check_control, (void*)"RenderDebugPipeline");
+ menu->append(item);
item = new LLMenuItemCheckGL("Fast Alpha", menu_toggle_control, NULL, menu_check_control, (void*)"RenderFastAlpha");
menu->append(item);
@@ -1490,6 +1498,7 @@ void init_debug_avatar_menu(LLMenuGL* menu)
menu->appendMenu(sub_menu);
+ menu->append(new LLMenuItemCheckGL("Enable Lip Sync (Beta)", menu_toggle_control, NULL, menu_check_control, (void*)"LipSyncEnabled"));
menu->append(new LLMenuItemToggleGL("Tap-Tap-Hold To Run", &gAllowTapTapHoldRun));
menu->append(new LLMenuItemCallGL("Force Params to Default", &LLAgent::clearVisualParams, NULL));
menu->append(new LLMenuItemCallGL("Reload Vertex Shader", &reload_vertex_shader, NULL));
@@ -1501,7 +1510,8 @@ void init_debug_avatar_menu(LLMenuGL* menu)
menu->append(new LLMenuItemToggleGL("Disable LOD", &LLViewerJoint::sDisableLOD));
menu->append(new LLMenuItemToggleGL("Debug Character Vis", &LLVOAvatar::sDebugInvisible));
//menu->append(new LLMenuItemToggleGL("Show Attachment Points", &LLVOAvatar::sShowAttachmentPoints));
- menu->append(new LLMenuItemToggleGL("Show Collision Plane", &LLVOAvatar::sShowFootPlane));
+ //diabling collision plane due to DEV-14477 -brad
+ //menu->append(new LLMenuItemToggleGL("Show Collision Plane", &LLVOAvatar::sShowFootPlane));
menu->append(new LLMenuItemToggleGL("Show Collision Skeleton", &LLVOAvatar::sShowCollisionVolumes));
menu->append(new LLMenuItemToggleGL( "Display Agent Target", &LLAgent::sDebugDisplayTarget));
menu->append(new LLMenuItemToggleGL( "Debug Rotation", &gDebugAvatarRotation));
@@ -2753,7 +2763,7 @@ void set_god_level(U8 god_level)
if(gViewerWindow)
{
gViewerWindow->setMenuBackgroundColor(god_level > GOD_NOT,
- LLAppViewer::instance()->isInProductionGrid());
+ LLViewerLogin::getInstance()->isInProductionGrid());
}
LLString::format_map_t args;
@@ -3163,6 +3173,21 @@ class LLWorldFly : public view_listener_t
}
};
+class LLWorldEnableFly : public view_listener_t
+{
+ bool handleEvent(LLPointer event, const LLSD& userdata)
+ {
+ BOOL sitting = FALSE;
+ if (gAgent.getAvatarObject())
+ {
+ sitting = gAgent.getAvatarObject()->mIsSitting;
+ }
+ gMenuHolder->findControl(userdata["control"].asString())->setValue(!sitting);
+ return true;
+ }
+};
+
+
void handle_agent_stop_moving(void*)
{
// stop agent
@@ -3476,6 +3501,7 @@ void handle_repeat_duplicate(void*)
LLSelectMgr::getInstance()->repeatDuplicate();
}
+/* dead code 30-apr-2008
void handle_deed_object_to_group(void*)
{
LLUUID group_id;
@@ -3501,6 +3527,8 @@ BOOL enable_deed_object_to_group(void*)
return FALSE;
}
+*/
+
/*
* No longer able to support viewer side manipulations in this way
@@ -4072,7 +4100,7 @@ BOOL enable_take()
return TRUE;
#else
# ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- if (!LLAppViewer::instance()->isInProductionGrid()
+ if (!LLViewerLogin::getInstance()->isInProductionGrid()
&& gAgent.isGodlike())
{
return TRUE;
@@ -4629,7 +4657,7 @@ class LLObjectEnableDelete : public view_listener_t
TRUE;
#else
# ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- (!LLAppViewer::instance()->isInProductionGrid()
+ (!LLViewerLogin::getInstance()->isInProductionGrid()
&& gAgent.isGodlike()) ||
# endif
LLSelectMgr::getInstance()->canDoDelete();
@@ -6487,7 +6515,7 @@ class LLToolsEnableTakeCopy : public view_listener_t
all_valid = true;
#ifndef HACKED_GODLIKE_VIEWER
# ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- if (LLAppViewer::instance()->isInProductionGrid()
+ if (LLViewerLogin::getInstance()->isInProductionGrid()
|| !gAgent.isGodlike())
# endif
{
@@ -6591,7 +6619,7 @@ BOOL enable_save_into_inventory(void*)
return TRUE;
#else
# ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- if (!LLAppViewer::instance()->isInProductionGrid()
+ if (!LLViewerLogin::getInstance()->isInProductionGrid()
&& gAgent.isGodlike())
{
return TRUE;
@@ -7766,6 +7794,7 @@ void initialize_menus()
addMenu(new LLWorldChat(), "World.Chat");
addMenu(new LLWorldAlwaysRun(), "World.AlwaysRun");
addMenu(new LLWorldFly(), "World.Fly");
+ addMenu(new LLWorldEnableFly(), "World.EnableFly");
addMenu(new LLWorldCreateLandmark(), "World.CreateLandmark");
addMenu(new LLWorldSetHomeLocation(), "World.SetHomeLocation");
addMenu(new LLWorldTeleportHome(), "World.TeleportHome");
diff --git a/linden/indra/newview/llviewermenufile.cpp b/linden/indra/newview/llviewermenufile.cpp
index ab77b53..b8a4f65 100644
--- a/linden/indra/newview/llviewermenufile.cpp
+++ b/linden/indra/newview/llviewermenufile.cpp
@@ -414,18 +414,6 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
}
};
-class LLFileSetWindowSize : public view_listener_t
-{
- bool handleEvent(LLPointer event, const LLSD& userdata)
- {
- LLString size = userdata.asString();
- S32 width, height;
- sscanf(size.c_str(), "%d,%d", &width, &height);
- LLViewerWindow::movieSize(width, height);
- return true;
- }
-};
-
class LLFileQuit : public view_listener_t
{
bool handleEvent(LLPointer event, const LLSD& userdata)
@@ -448,25 +436,31 @@ void handle_upload(void* data)
void handle_compress_image(void*)
{
LLFilePicker& picker = LLFilePicker::instance();
- if (picker.getOpenFile(LLFilePicker::FFLOAD_IMAGE))
+ if (picker.getMultipleOpenFiles(LLFilePicker::FFLOAD_IMAGE))
{
- std::string infile(picker.getFirstFile());
- std::string outfile = infile + ".j2c";
+ const char* input_file = picker.getFirstFile();
+ while (input_file)
+ {
+ std::string infile(input_file);
+ std::string outfile = infile + ".j2c";
- llinfos << "Input: " << infile << llendl;
- llinfos << "Output: " << outfile << llendl;
+ llinfos << "Input: " << infile << llendl;
+ llinfos << "Output: " << outfile << llendl;
- BOOL success;
+ BOOL success;
- success = LLViewerImageList::createUploadFile(infile, outfile, IMG_CODEC_TGA);
+ success = LLViewerImageList::createUploadFile(infile, outfile, IMG_CODEC_TGA);
- if (success)
- {
- llinfos << "Compression complete" << llendl;
- }
- else
- {
- llinfos << "Compression failed: " << LLImageBase::getLastError() << llendl;
+ if (success)
+ {
+ llinfos << "Compression complete" << llendl;
+ }
+ else
+ {
+ llinfos << "Compression failed: " << LLImageBase::getLastError() << llendl;
+ }
+
+ input_file = picker.getNextFile();
}
}
}
@@ -603,7 +597,7 @@ void upload_new_resource(const LLString& src_filename, std::string name,
{
// This is a generic .lin resource file
asset_type = LLAssetType::AT_OBJECT;
- FILE* in = LLFile::fopen(src_filename.c_str(), "rb"); /* Flawfinder: ignore */
+ LLFILE* in = LLFile::fopen(src_filename.c_str(), "rb"); /* Flawfinder: ignore */
if (in)
{
// read in the file header
@@ -688,7 +682,7 @@ void upload_new_resource(const LLString& src_filename, std::string name,
}
// copy the file's data segment into another file for uploading
- FILE* out = LLFile::fopen(filename.c_str(), "wb"); /* Flawfinder: ignore */
+ LLFILE* out = LLFile::fopen(filename.c_str(), "wb"); /* Flawfinder: ignore */
if (out)
{
while((read = fread(buf, 1, 16384, in))) /* Flawfinder: ignore */
@@ -1024,7 +1018,6 @@ void init_menu_file()
(new LLFileSaveTexture())->registerListener(gMenuHolder, "File.SaveTexture");
(new LLFileTakeSnapshot())->registerListener(gMenuHolder, "File.TakeSnapshot");
(new LLFileTakeSnapshotToDisk())->registerListener(gMenuHolder, "File.TakeSnapshotToDisk");
- (new LLFileSetWindowSize())->registerListener(gMenuHolder, "File.SetWindowSize");
(new LLFileQuit())->registerListener(gMenuHolder, "File.Quit");
(new LLFileEnableUpload())->registerListener(gMenuHolder, "File.EnableUpload");
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index a9adbcd..7cc833a 100644
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -202,7 +202,7 @@ void give_money(const LLUUID& uuid, LLViewerRegion* region, S32 amount, BOOL is_
{
if(0 == amount) return;
amount = abs(amount);
- llinfos << "give_money(" << uuid << "," << amount << ")"<< llendl;
+ LL_INFOS("Messaging") << "give_money(" << uuid << "," << amount << ")"<< LL_ENDL;
if(can_afford_transaction(amount))
{
// gStatusBar->debitBalance(amount);
@@ -242,7 +242,7 @@ void send_complete_agent_movement(const LLHost& sim_host)
void process_logout_reply(LLMessageSystem* msg, void**)
{
// The server has told us it's ok to quit.
- llinfos << "process_logout_reply" << llendl;
+ LL_DEBUGS("Messaging") << "process_logout_reply" << LL_ENDL;
LLUUID agent_id;
msg->getUUID("AgentData", "AgentID", agent_id);
@@ -250,7 +250,7 @@ void process_logout_reply(LLMessageSystem* msg, void**)
msg->getUUID("AgentData", "SessionID", session_id);
if((agent_id != gAgent.getID()) || (session_id != gAgent.getSessionID()))
{
- llwarns << "Bogus Logout Reply" << llendl;
+ LL_WARNS("Messaging") << "Bogus Logout Reply" << LL_ENDL;
}
LLInventoryModel::update_map_t parents;
@@ -268,7 +268,7 @@ void process_logout_reply(LLMessageSystem* msg, void**)
// We do not need to track the asset ids, just account for an
// updated inventory version.
- llinfos << "process_logout_reply itemID=" << item_id << llendl;
+ LL_INFOS("Messaging") << "process_logout_reply itemID=" << item_id << LL_ENDL;
LLInventoryItem* item = gInventory.getItem( item_id );
if( item )
{
@@ -277,7 +277,7 @@ void process_logout_reply(LLMessageSystem* msg, void**)
}
else
{
- llinfos << "process_logout_reply item not found: " << item_id << llendl;
+ LL_INFOS("Messaging") << "process_logout_reply item not found: " << item_id << LL_ENDL;
}
}
LLAppViewer::instance()->forceQuit();
@@ -300,15 +300,15 @@ void process_layer_data(LLMessageSystem *mesgsys, void **user_data)
size = mesgsys->getSizeFast(_PREHASH_LayerData, _PREHASH_Data);
if (0 == size)
{
- llwarns << "Layer data has zero size." << llendl;
+ LL_WARNS("Messaging") << "Layer data has zero size." << LL_ENDL;
return;
}
if (size < 0)
{
// getSizeFast() is probably trying to tell us about an error
- llwarns << "getSizeFast() returned negative result: "
+ LL_WARNS("Messaging") << "getSizeFast() returned negative result: "
<< size
- << llendl;
+ << LL_ENDL;
return;
}
U8 *datap = new U8[size];
@@ -345,7 +345,7 @@ void export_complete()
gExporterRequestID.setNull();
gExportDirectory = "";
- FILE* fXML = LLFile::fopen(gExportedFile.c_str(), "rb"); /* Flawfinder: ignore */
+ LLFILE* fXML = LLFile::fopen(gExportedFile.c_str(), "rb"); /* Flawfinder: ignore */
fseek(fXML, 0, SEEK_END);
long length = ftell(fXML);
fseek(fXML, 0, SEEK_SET);
@@ -353,7 +353,7 @@ void export_complete()
size_t nread = fread(buffer, 1, length, fXML);
if (nread < (size_t) length)
{
- llwarns << "Short read" << llendl;
+ LL_WARNS("Messaging") << "Short read" << LL_ENDL;
}
buffer[nread] = '\0';
fclose(fXML);
@@ -375,12 +375,12 @@ void export_complete()
LLUUID image_uuid(image_uuid_str);
- llinfos << "Found UUID: " << image_uuid << llendl;
+ LL_INFOS("Messaging") << "Found UUID: " << image_uuid << LL_ENDL;
std::map::iterator itor = gImageChecksums.find(image_uuid);
if (itor != gImageChecksums.end())
{
- llinfos << "Replacing with checksum: " << itor->second << llendl;
+ LL_INFOS("Messaging") << "Replacing with checksum: " << itor->second << LL_ENDL;
if (itor->second.c_str() != NULL)
{
memcpy(&pos_check[10], itor->second.c_str(), 32); /* Flawfinder: ignore */
@@ -390,10 +390,10 @@ void export_complete()
}
}
- FILE* fXMLOut = LLFile::fopen(gExportedFile.c_str(), "wb"); /* Flawfinder: ignore */
+ LLFILE* fXMLOut = LLFile::fopen(gExportedFile.c_str(), "wb"); /* Flawfinder: ignore */
if (fwrite(buffer, 1, length, fXMLOut) != length)
{
- llwarns << "Short write" << llendl;
+ LL_WARNS("Messaging") << "Short write" << LL_ENDL;
}
fclose(fXMLOut);
@@ -407,14 +407,14 @@ void exported_item_complete(const LLTSCode status, void *user_data)
if (status < LLTS_OK)
{
- llinfos << "Export failed!" << llendl;
+ LL_WARNS("Messaging") << "Export failed!" << LL_ENDL;
}
else
{
++current_object_count;
if (current_image_count == exported_image_count && current_object_count == exported_object_count)
{
- llinfos << "*** Export complete ***" << llendl;
+ LL_INFOS("Messaging") << "*** Export complete ***" << LL_ENDL;
export_complete();
}
@@ -442,11 +442,11 @@ void exported_j2c_complete(const LLTSCode status, void *user_data)
if (status < LLTS_OK)
{
- llinfos << "Image download failed!" << llendl;
+ LL_WARNS("Messaging") << "Image download failed!" << LL_ENDL;
}
else
{
- FILE* fIn = LLFile::fopen(filename.c_str(), "rb"); /* Flawfinder: ignore */
+ LLFILE* fIn = LLFile::fopen(filename.c_str(), "rb"); /* Flawfinder: ignore */
if (fIn)
{
LLPointer ImageUtility = new LLImageJ2C;
@@ -458,7 +458,7 @@ void exported_j2c_complete(const LLTSCode status, void *user_data)
U8 *buffer = ImageUtility->allocateData(length);
if (fread(buffer, 1, length, fIn) != length)
{
- llwarns << "Short read" << llendl;
+ LL_WARNS("Messaging") << "Short read" << LL_ENDL;
}
fclose(fIn);
LLFile::remove(filename.c_str());
@@ -481,14 +481,14 @@ void exported_j2c_complete(const LLTSCode status, void *user_data)
delete [] file_path;
//S32 name_len = output_file.length();
//strcpy(&output_file[name_len-3], "tga");
- FILE* fOut = LLFile::fopen(output_file.c_str(), "wb"); /* Flawfinder: ignore */
+ LLFILE* fOut = LLFile::fopen(output_file.c_str(), "wb"); /* Flawfinder: ignore */
char md5_hash_string[33]; /* Flawfinder: ignore */
strcpy(md5_hash_string, "00000000000000000000000000000000"); /* Flawfinder: ignore */
if (fOut)
{
if (fwrite(data, 1, data_size, fOut) != data_size)
{
- llwarns << "Short write" << llendl;
+ LL_WARNS("Messaging") << "Short write" << LL_ENDL;
}
fseek(fOut, 0, SEEK_SET);
fclose(fOut);
@@ -504,7 +504,7 @@ void exported_j2c_complete(const LLTSCode status, void *user_data)
++current_image_count;
if (current_image_count == exported_image_count && current_object_count == exported_object_count)
{
- llinfos << "*** Export textures complete ***" << llendl;
+ LL_INFOS("Messaging") << "*** Export textures complete ***" << LL_ENDL;
export_complete();
}
else
@@ -533,7 +533,7 @@ void process_places_reply(LLMessageSystem* msg, void** data)
}
else
{
- llwarns << "Got invalid PlacesReply message" << llendl;
+ LL_WARNS("Messaging") << "Got invalid PlacesReply message" << LL_ENDL;
}
}
@@ -705,7 +705,7 @@ public:
virtual ~LLDiscardAgentOffer() {}
virtual void done()
{
- lldebugs << "LLDiscardAgentOffer::done()" << llendl;
+ LL_DEBUGS("Messaging") << "LLDiscardAgentOffer::done()" << LL_ENDL;
LLUUID trash_id;
trash_id = gInventory.findCategoryUUIDForType(LLAssetType::AT_TRASH);
bool notify = false;
@@ -729,9 +729,9 @@ public:
}
else
{
- llwarns << "DiscardAgentOffer unable to find: "
+ LL_WARNS("Messaging") << "DiscardAgentOffer unable to find: "
<< (trash_id.isNull() ? "trash " : "")
- << (mObjectID.isNull() ? "object" : "") << llendl;
+ << (mObjectID.isNull() ? "object" : "") << LL_ENDL;
}
gInventory.removeObserver(this);
if(notify)
@@ -766,14 +766,14 @@ bool check_offer_throttle(const std::string& from_name, bool check_only)
if(gThrottleTimer.checkExpirationAndReset(OFFER_THROTTLE_TIME))
{
- //llinfos << "Throttle Expired" << llendl;
+ LL_DEBUGS("Messaging") << "Throttle Expired" << LL_ENDL;
throttle_count=1;
throttle_logged=false;
return true;
}
else //has not expired
{
- //llinfos << "Throttle Not Expired, Count: " << throttle_count << llendl;
+ LL_DEBUGS("Messaging") << "Throttle Not Expired, Count: " << throttle_count << LL_ENDL;
// When downloading the initial inventory we get a lot of new items
// coming in and can't tell that from spam. JC
if (LLStartUp::getStartupState() >= STATE_STARTED
@@ -821,7 +821,7 @@ void open_offer(const std::vector& items, const std::string& from_name)
item = gInventory.getItem(*it);
if(!item)
{
- llwarns << "Unable to show inventory item: " << *it << llendl;
+ LL_WARNS("Messaging") << "Unable to show inventory item: " << *it << LL_ENDL;
continue;
}
if(gInventory.isObjectDescendentOf(*it, trash_id))
@@ -880,7 +880,7 @@ void open_offer(const std::vector& items, const std::string& from_name)
//don't dick with highlight while the user is working
//if(inventory_has_focus && !user_is_away)
// break;
- //llinfos << "Highlighting" << item->getUUID() << llendl;
+ LL_DEBUGS("Messaging") << "Highlighting" << item->getUUID() << LL_ENDL;
//highlight item
LLUICtrl* focus_ctrl = gFocusMgr.getKeyboardFocus();
@@ -1041,8 +1041,8 @@ void inventory_offer_callback(S32 button, void* user_data)
}
// we will want to open this item when it comes back.
- lldebugs << "Initializing an opener for tid: " << info->mTransactionID
- << llendl;
+ LL_DEBUGS("Messaging") << "Initializing an opener for tid: " << info->mTransactionID
+ << LL_ENDL;
switch (info->mIM)
{
case IM_INVENTORY_OFFERED:
@@ -1075,7 +1075,7 @@ void inventory_offer_callback(S32 button, void* user_data)
}
break;
default:
- llwarns << "inventory_offer_callback: unknown offer type" << llendl;
+ LL_WARNS("Messaging") << "inventory_offer_callback: unknown offer type" << LL_ENDL;
break;
} // end switch (info->mIM)
break;
@@ -1187,11 +1187,11 @@ void inventory_offer_handler(LLOfferInfo* info, BOOL from_task)
}
else
{
- llwarns << "LLAssetType::lookupHumanReadable() returned NULL - probably bad asset type: " << info->mType << llendl;
+ LL_WARNS("Messaging") << "LLAssetType::lookupHumanReadable() returned NULL - probably bad asset type: " << info->mType << LL_ENDL;
args["[OBJECTTYPE]"] = "";
// This seems safest, rather than propagating bogosity
- llwarns << "Forcing an inventory-decline for probably-bad asset type." << llendl;
+ LL_WARNS("Messaging") << "Forcing an inventory-decline for probably-bad asset type." << LL_ENDL;
inventory_offer_callback(IOR_DECLINE, info);
return;
}
@@ -1278,10 +1278,6 @@ void lure_callback(S32 option, void* user_data)
case 0:
{
// accept
- send_simple_im(info->mFromID,
- "",
- IM_LURE_ACCEPTED,
- info->mLureID);
gAgent.teleportViaLure(info->mLureID, info->mGodlike);
}
break;
@@ -1426,9 +1422,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// now store incoming IM in chat history
- snprintf(buffer, sizeof(buffer), "%s%s%s", name, separator_string, (message+message_offset)); /* Flawfinder: ignore */
+ snprintf(buffer, sizeof(buffer), "%s%s", separator_string, (message+message_offset)); /* Flawfinder: ignore */
- llinfos << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << llendl;
+ LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL;
// add to IM panel, but do not bother the user
gIMMgr->addMessage(
@@ -1440,7 +1436,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
dialog,
parent_estate_id,
region_id,
- position);
+ position,
+ true);
// pretend this is chat generated by self, so it does not show up on screen
snprintf(buffer, sizeof(buffer), "IM: %s%s%s", name, separator_string, (message+message_offset)); /* Flawfinder: ignore */
@@ -1481,9 +1478,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
snprintf(saved, MAX_STRING, "(Saved %s) ", /* Flawfinder: ignore */
formatted_time(timestamp, time_buf));
}
- snprintf(buffer, sizeof(buffer), "%s%s%s%s", name, separator_string, saved,(message+message_offset)); /* Flawfinder: ignore */
+ snprintf(buffer, sizeof(buffer), "%s%s%s", separator_string, saved,(message+message_offset)); /* Flawfinder: ignore */
- llinfos << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << llendl;
+ LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL;
if (!is_muted || is_linden)
{
@@ -1496,7 +1493,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
dialog,
parent_estate_id,
region_id,
- position);
+ position,
+ true);
snprintf(buffer, sizeof(buffer), "IM: %s%s%s%s", name, separator_string, saved, (message+message_offset)); /* Flawfinder: ignore */
chat.mText = buffer;
@@ -1540,7 +1538,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
case IM_GROUP_NOTICE:
case IM_GROUP_NOTICE_REQUESTED:
{
- llinfos << "Received IM_GROUP_NOTICE message." << llendl;
+ LL_INFOS("Messaging") << "Received IM_GROUP_NOTICE message." << LL_ENDL;
// Read the binary bucket for more information.
struct notice_bucket_header_t
{
@@ -1559,7 +1557,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
if ( (binary_bucket_size < (S32)((sizeof(notice_bucket_header_t) + sizeof(U8))))
|| (binary_bucket[binary_bucket_size - 1] != '\0') )
{
- llwarns << "Malformed group notice binary bucket" << llendl;
+ LL_WARNS("Messaging") << "Malformed group notice binary bucket" << LL_ENDL;
break;
}
@@ -1625,7 +1623,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
}
else
{
- llinfos << "Received IM_GROUP_INVITATION message." << llendl;
+ LL_INFOS("Messaging") << "Received IM_GROUP_INVITATION message." << LL_ENDL;
// Read the binary bucket for more information.
struct invite_bucket_t
{
@@ -1636,7 +1634,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// Make sure the binary bucket is the correct size.
if (binary_bucket_size != sizeof(invite_bucket_t))
{
- llwarns << "Malformed group invite binary bucket" << llendl;
+ LL_WARNS("Messaging") << "Malformed group invite binary bucket" << LL_ENDL;
break;
}
@@ -1675,7 +1673,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
if (sizeof(offer_agent_bucket_t) != binary_bucket_size)
{
- llwarns << "Malformed inventory offer from agent" << llendl;
+ LL_WARNS("Messaging") << "Malformed inventory offer from agent" << LL_ENDL;
break;
}
bucketp = (struct offer_agent_bucket_t*) &binary_bucket[0];
@@ -1686,7 +1684,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
{
if (sizeof(S8) != binary_bucket_size)
{
- llwarns << "Malformed inventory offer from object" << llendl;
+ LL_WARNS("Messaging") << "Malformed inventory offer from object" << LL_ENDL;
break;
}
info->mType = (LLAssetType::EType) binary_bucket[0];
@@ -1747,7 +1745,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
case IM_GROUP_ELECTION_DEPRECATED:
{
- llwarns << "Received IM: IM_GROUP_ELECTION_DEPRECATED" << llendl;
+ LL_WARNS("Messaging") << "Received IM: IM_GROUP_ELECTION_DEPRECATED" << LL_ENDL;
}
break;
@@ -1776,7 +1774,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
"(Saved %s) ",
formatted_time(timestamp, time_buf));
}
- snprintf(buffer, sizeof(buffer), "%s%s%s%s", name, separator_string, saved, (message+message_offset)); /* Flawfinder: ignore */
+ snprintf(buffer, sizeof(buffer), "%s%s%s", separator_string, saved, (message+message_offset)); /* Flawfinder: ignore */
BOOL is_this_agent = FALSE;
if(from_id == gAgentID)
{
@@ -1791,7 +1789,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
IM_SESSION_INVITE,
parent_estate_id,
region_id,
- position);
+ position,
+ true);
snprintf(buffer, sizeof(buffer), "IM: %s%s%s%s", name, separator_string, saved, (message+message_offset)); /* Flawfinder: ignore */
chat.mText = buffer;
@@ -1826,7 +1825,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
case IM_BUSY_AUTO_RESPONSE:
if (is_muted)
{
- lldebugs << "Ignoring busy response from " << from_id << llendl;
+ LL_DEBUGS("Messaging") << "Ignoring busy response from " << from_id << LL_ENDL;
return;
}
else
@@ -1874,16 +1873,16 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
// URLs sent by scripts (i.e. llLoadURL)
if (binary_bucket_size <= 0)
{
- llwarns << "bad binary_bucket_size: "
+ LL_WARNS("Messaging") << "bad binary_bucket_size: "
<< binary_bucket_size
- << " - aborting function." << llendl;
+ << " - aborting function." << LL_ENDL;
return;
}
char* url = new char[binary_bucket_size];
if (url == NULL)
{
- llerrs << "Memory Allocation failed" << llendl;
+ LL_ERRS("Messaging") << "Memory Allocation failed" << LL_ENDL;
return;
}
@@ -1944,8 +1943,8 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
break;
default:
- llwarns << "Instant message calling for unknown dialog "
- << (S32)dialog << llendl;
+ LL_WARNS("Messaging") << "Instant message calling for unknown dialog "
+ << (S32)dialog << LL_ENDL;
break;
}
@@ -1960,6 +1959,8 @@ void busy_message (LLMessageSystem* msg, LLUUID from_id)
{
if (gAgent.getBusy())
{
+ std::string my_name;
+ gAgent.buildFullname(my_name);
LLString response = gSavedPerAccountSettings.getText("BusyModeResponse");
pack_instant_message(
gMessageSystem,
@@ -1967,10 +1968,10 @@ void busy_message (LLMessageSystem* msg, LLUUID from_id)
FALSE,
gAgent.getSessionID(),
from_id,
- SYSTEM_FROM,
+ my_name.c_str(),
response.c_str(),
IM_ONLINE,
- IM_CONSOLE_AND_CHAT_HISTORY);
+ IM_BUSY_AUTO_RESPONSE);
gAgent.sendReliableMessage();
}
}
@@ -2071,7 +2072,7 @@ void callingcard_offer_callback(S32 option, void* user_data)
void process_offer_callingcard(LLMessageSystem* msg, void**)
{
// someone has offered to form a friendship
- lldebugs << "callingcard offer" << llendl;
+ LL_DEBUGS("Messaging") << "callingcard offer" << LL_ENDL;
LLUUID source_id;
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, source_id);
@@ -2116,7 +2117,7 @@ void process_offer_callingcard(LLMessageSystem* msg, void**)
}
else
{
- llwarns << "Calling card offer from an unknown source." << llendl;
+ LL_WARNS("Messaging") << "Calling card offer from an unknown source." << LL_ENDL;
}
delete offerdata; // !=NULL if we didn't give ownership away
@@ -2309,10 +2310,10 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
break;
case CHAT_TYPE_START:
case CHAT_TYPE_STOP:
- llwarns << "Got chat type start/stop in main chat processing." << llendl;
+ LL_WARNS("Messaging") << "Got chat type start/stop in main chat processing." << LL_ENDL;
break;
default:
- llwarns << "Unknown type " << chat.mChatType << " in chat!" << llendl;
+ LL_WARNS("Messaging") << "Unknown type " << chat.mChatType << " in chat!" << LL_ENDL;
verb = " say, ";
break;
}
@@ -2405,7 +2406,7 @@ void process_teleport_progress(LLMessageSystem* msg, void**)
if((gAgent.getID() != agent_id)
|| (gAgent.getTeleportState() == LLAgent::TELEPORT_NONE))
{
- llwarns << "Unexpected teleport progress message." << llendl;
+ LL_WARNS("Messaging") << "Unexpected teleport progress message." << LL_ENDL;
return;
}
U32 teleport_flags = 0x0;
@@ -2420,7 +2421,7 @@ void process_teleport_progress(LLMessageSystem* msg, void**)
}
char buffer[MAX_STRING]; /* Flawfinder: ignore */
msg->getString("Info", "Message", MAX_STRING, buffer);
- lldebugs << "teleport progress: " << buffer << llendl;
+ LL_DEBUGS("Messaging") << "teleport progress: " << buffer << LL_ENDL;
//Sorta hacky...default to using simulator raw messages
//if we don't find the coresponding mapping in our progress mappings
@@ -2544,12 +2545,12 @@ BOOL LLPostTeleportNotifiers::tick()
// We're going to pretend to be a new agent
void process_teleport_finish(LLMessageSystem* msg, void**)
{
- //llinfos << "Got teleport location message" << llendl;
+ LL_DEBUGS("Messaging") << "Got teleport location message" << LL_ENDL;
LLUUID agent_id;
msg->getUUIDFast(_PREHASH_Info, _PREHASH_AgentID, agent_id);
if (agent_id != gAgent.getID())
{
- llwarns << "Got teleport notification for wrong agent!" << llendl;
+ LL_WARNS("Messaging") << "Got teleport notification for wrong agent!" << LL_ENDL;
return;
}
@@ -2617,8 +2618,8 @@ void process_teleport_finish(LLMessageSystem* msg, void**)
*/
// now, use the circuit info to tell simulator about us!
- llinfos << "process_teleport_finish() Enabling "
- << sim_host << " with code " << msg->mOurCircuitCode << llendl;
+ LL_INFOS("Messaging") << "process_teleport_finish() Enabling "
+ << sim_host << " with code " << msg->mOurCircuitCode << LL_ENDL;
msg->newMessageFast(_PREHASH_UseCircuitCode);
msg->nextBlockFast(_PREHASH_CircuitCode);
msg->addU32Fast(_PREHASH_Code, msg->getOurCircuitCode());
@@ -2679,12 +2680,12 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_SessionID, session_id);
if((gAgent.getID() != agent_id) || (gAgent.getSessionID() != session_id))
{
- llwarns << "Incorrect id in process_agent_movement_complete()"
- << llendl;
+ LL_WARNS("Messaging") << "Incorrect id in process_agent_movement_complete()"
+ << LL_ENDL;
return;
}
- llinfos << "process_agent_movement_complete()" << llendl;
+ LL_DEBUGS("Messaging") << "process_agent_movement_complete()" << LL_ENDL;
// *TODO: check timestamp to make sure the movement compleation
// makes sense.
@@ -2703,7 +2704,7 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
{
// Could happen if you were immediately god-teleported away on login,
// maybe other cases. Continue, but warn. JC
- llwarns << "agent_movement_complete() with NULL avatarp." << llendl;
+ LL_WARNS("Messaging") << "agent_movement_complete() with NULL avatarp." << LL_ENDL;
}
F32 x, y;
@@ -2713,19 +2714,19 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
{
if (gAgent.getRegion())
{
- llwarns << "current region " << gAgent.getRegion()->getOriginGlobal() << llendl;
+ LL_WARNS("Messaging") << "current region " << gAgent.getRegion()->getOriginGlobal() << LL_ENDL;
}
- llwarns << "Agent being sent to invalid home region: "
+ LL_WARNS("Messaging") << "Agent being sent to invalid home region: "
<< x << ":" << y
<< " current pos " << gAgent.getPositionGlobal()
- << llendl;
+ << LL_ENDL;
LLAppViewer::instance()->forceDisconnect("You were sent to an invalid region.");
return;
}
- llinfos << "Changing home region to " << x << ":" << y << llendl;
+ LL_INFOS("Messaging") << "Changing home region to " << x << ":" << y << LL_ENDL;
// set our upstream host the new simulator and shuffle things as
// appropriate.
@@ -2845,11 +2846,11 @@ void process_crossed_region(LLMessageSystem* msg, void**)
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_SessionID, session_id);
if((gAgent.getID() != agent_id) || (gAgent.getSessionID() != session_id))
{
- llwarns << "Incorrect id in process_crossed_region()"
- << llendl;
+ LL_WARNS("Messaging") << "Incorrect id in process_crossed_region()"
+ << LL_ENDL;
return;
}
- llinfos << "process_crossed_region()" << llendl;
+ LL_INFOS("Messaging") << "process_crossed_region()" << LL_ENDL;
U32 sim_ip;
msg->getIPAddrFast(_PREHASH_RegionData, _PREHASH_SimIP, sim_ip);
@@ -2977,24 +2978,24 @@ void send_agent_update(BOOL force_send, BOOL send_reliable)
/*
if (head_rot_chg < THRESHOLD_HEAD_ROT_QDOT)
{
- //llinfos << "head rot " << head_rotation << llendl;
- llinfos << "head_rot_chg = " << head_rot_chg << llendl;
+ //LL_INFOS("Messaging") << "head rot " << head_rotation << LL_ENDL;
+ LL_INFOS("Messaging") << "head_rot_chg = " << head_rot_chg << LL_ENDL;
}
if (cam_rot_chg.magVec() > ROTATION_THRESHOLD)
{
- llinfos << "cam rot " << cam_rot_chg.magVec() << llendl;
+ LL_INFOS("Messaging") << "cam rot " << cam_rot_chg.magVec() << LL_ENDL;
}
if (cam_center_chg.magVec() > TRANSLATE_THRESHOLD)
{
- llinfos << "cam center " << cam_center_chg.magVec() << llendl;
+ LL_INFOS("Messaging") << "cam center " << cam_center_chg.magVec() << LL_ENDL;
}
// if (drag_delta_chg.magVec() > TRANSLATE_THRESHOLD)
// {
-// llinfos << "drag delta " << drag_delta_chg.magVec() << llendl;
+// LL_INFOS("Messaging") << "drag delta " << drag_delta_chg.magVec() << LL_ENDL;
// }
if (control_flag_change)
{
- llinfos << "dcf = " << control_flag_change << llendl;
+ LL_INFOS("Messaging") << "dcf = " << control_flag_change << LL_ENDL;
}
*/
@@ -3043,7 +3044,7 @@ void send_agent_update(BOOL force_send, BOOL send_reliable)
// if (camera_pos_agent.mV[VY] > 255.f)
// {
-// llinfos << "Sending camera center " << camera_pos_agent << llendl;
+// LL_INFOS("Messaging") << "Sending camera center " << camera_pos_agent << LL_ENDL;
// }
msg->addVector3Fast(_PREHASH_CameraCenter, camera_pos_agent);
@@ -3058,12 +3059,12 @@ void send_agent_update(BOOL force_send, BOOL send_reliable)
{
if (control_flags & AGENT_CONTROL_LBUTTON_DOWN)
{
- llinfos << "AgentUpdate left button down" << llendl;
+ LL_INFOS("Messaging") << "AgentUpdate left button down" << LL_ENDL;
}
if (control_flags & AGENT_CONTROL_LBUTTON_UP)
{
- llinfos << "AgentUpdate left button up" << llendl;
+ LL_INFOS("Messaging") << "AgentUpdate left button up" << LL_ENDL;
}
}
@@ -3078,7 +3079,7 @@ void send_agent_update(BOOL force_send, BOOL send_reliable)
gAgent.sendReliableMessage();
}
- //llinfos << "agent " << avatar_pos_agent << " cam " << camera_pos_agent << llendl;
+// LL_DEBUGS("Messaging") << "agent " << avatar_pos_agent << " cam " << camera_pos_agent << LL_ENDL;
// Copy the old data
last_head_rot = head_rotation;
@@ -3191,13 +3192,13 @@ void process_kill_object(LLMessageSystem *mesgsys, void **user_data)
gMessageSystem->getSenderPort());
if (id == LLUUID::null)
{
- //llinfos << "Unknown kill for local " << local_id << llendl;
+ LL_DEBUGS("Messaging") << "Unknown kill for local " << local_id << LL_ENDL;
gObjectList.mNumUnknownKills++;
continue;
}
else
{
- //llinfos << "Kill message for local " << local_id << llendl;
+ LL_DEBUGS("Messaging") << "Kill message for local " << local_id << LL_ENDL;
}
LLSelectMgr::getInstance()->removeObjectFromSelections(id);
@@ -3227,7 +3228,7 @@ void process_kill_object(LLMessageSystem *mesgsys, void **user_data)
}
else
{
- llwarns << "Object in UUID lookup, but not on object list in kill!" << llendl;
+ LL_WARNS("Messaging") << "Object in UUID lookup, but not on object list in kill!" << LL_ENDL;
gObjectList.mNumUnknownKills++;
}
}
@@ -3256,8 +3257,8 @@ void process_time_synch(LLMessageSystem *mesgsys, void **user_data)
LLWorld::getInstance()->setSpaceTimeUSec(space_time_usec);
- //lldebugs << "time_synch() - " << sun_direction << ", " << sun_ang_velocity
- // << ", " << phase << llendl;
+ //LL_DEBUGS("Messaging") << "time_synch() - " << sun_direction << ", " << sun_ang_velocity
+ // << ", " << phase << LL_ENDL;
gSky.setSunPhase(phase);
gSky.setSunTargetDirection(sun_direction, sun_ang_velocity);
@@ -3509,7 +3510,8 @@ void process_sim_stats(LLMessageSystem *msg, void **user_data)
LLViewerStats::getInstance()->mPhysicsMemoryAllocated.addValue(stat_value);
break;
default:
-// llwarns << "Unknown stat id" << stat_id << llendl;
+ // Used to be a commented out warning.
+ LL_DEBUGS("Messaging") << "Unknown stat id" << stat_id << LL_ENDL;
break;
}
}
@@ -3576,7 +3578,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data)
if (!avatarp)
{
// no agent by this ID...error?
- llwarns << "Received animation state for unknown avatar" << uuid << llendl;
+ LL_WARNS("Messaging") << "Received animation state for unknown avatar" << uuid << LL_ENDL;
return;
}
@@ -3594,7 +3596,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data)
mesgsys->getUUIDFast(_PREHASH_AnimationList, _PREHASH_AnimID, animation_id, i);
mesgsys->getS32Fast(_PREHASH_AnimationList, _PREHASH_AnimSequenceID, anim_sequence_id, i);
- //llinfos << "Anim sequence ID: " << anim_sequence_id << llendl;
+ LL_DEBUGS("Messaging") << "Anim sequence ID: " << anim_sequence_id << LL_ENDL;
avatarp->mSignaledAnimations[animation_id] = anim_sequence_id;
@@ -3654,7 +3656,7 @@ void process_avatar_appearance(LLMessageSystem *mesgsys, void **user_data)
}
else
{
- llwarns << "avatar_appearance sent for unknown avatar " << uuid << llendl;
+ LL_WARNS("Messaging") << "avatar_appearance sent for unknown avatar " << uuid << LL_ENDL;
}
}
@@ -3720,7 +3722,7 @@ void process_avatar_sit_response(LLMessageSystem *mesgsys, void **user_data)
}
else
{
- llwarns << "Received sit approval for unknown object " << sitObjectID << llendl;
+ LL_WARNS("Messaging") << "Received sit approval for unknown object " << sitObjectID << LL_ENDL;
}
}
@@ -3870,13 +3872,13 @@ void process_name_value(LLMessageSystem *mesgsys, void **user_data)
for (i = 0; i < num_blocks; i++)
{
mesgsys->getStringFast(_PREHASH_NameValueData, _PREHASH_NVPair, NAME_VALUE_BUF_SIZE, temp_str, i);
- llinfos << "Added to object Name Value: " << temp_str << llendl;
+ LL_INFOS("Messaging") << "Added to object Name Value: " << temp_str << LL_ENDL;
object->addNVPair(temp_str);
}
}
else
{
- llinfos << "Can't find object " << id << " to add name value pair" << llendl;
+ LL_INFOS("Messaging") << "Can't find object " << id << " to add name value pair" << LL_ENDL;
}
}
@@ -3896,13 +3898,13 @@ void process_remove_name_value(LLMessageSystem *mesgsys, void **user_data)
for (i = 0; i < num_blocks; i++)
{
mesgsys->getStringFast(_PREHASH_NameValueData, _PREHASH_NVPair, NAME_VALUE_BUF_SIZE, temp_str, i);
- llinfos << "Removed from object Name Value: " << temp_str << llendl;
+ LL_INFOS("Messaging") << "Removed from object Name Value: " << temp_str << LL_ENDL;
object->removeNVPair(temp_str);
}
}
else
{
- llinfos << "Can't find object " << id << " to remove name value pair" << llendl;
+ LL_INFOS("Messaging") << "Can't find object " << id << " to remove name value pair" << LL_ENDL;
}
}
@@ -3982,8 +3984,8 @@ void process_money_balance_reply( LLMessageSystem* msg, void** )
msg->getS32("MoneyData", "SquareMetersCredit", credit);
msg->getS32("MoneyData", "SquareMetersCommitted", committed);
msg->getStringFast(_PREHASH_MoneyData, _PREHASH_Description, STD_STRING_BUF_SIZE, desc);
- llinfos << "L$, credit, committed: " << balance << " " << credit << " "
- << committed << llendl;
+ LL_INFOS("Messaging") << "L$, credit, committed: " << balance << " " << credit << " "
+ << committed << LL_ENDL;
if (gStatusBar)
{
@@ -4027,10 +4029,10 @@ void process_money_balance_reply( LLMessageSystem* msg, void** )
const S32 POP_FRONT_SIZE = 12;
if(recent.size() > MAX_LOOKBACK)
{
- lldebugs << "Removing oldest transaction records" << llendl;
+ LL_DEBUGS("Messaging") << "Removing oldest transaction records" << LL_ENDL;
recent.erase(recent.begin(), recent.begin() + POP_FRONT_SIZE);
}
- //lldebugs << "Pushing back transaction " << tid << llendl;
+ //LL_DEBUGS("Messaging") << "Pushing back transaction " << tid << LL_ENDL;
recent.push_back(tid);
}
}
@@ -4475,9 +4477,9 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
switch (question_throttle.noteAction(throttle_owner_name))
{
case LLStringThrottle::THROTTLE_NEWLY_BLOCKED:
- llinfos << "process_script_question throttled"
+ LL_INFOS("Messaging") << "process_script_question throttled"
<< " owner_name:" << owner_name
- << llendl;
+ << LL_ENDL;
// Fall through
case LLStringThrottle::THROTTLE_BLOCKED:
@@ -4539,7 +4541,7 @@ void process_script_question(LLMessageSystem *msg, void **user_data)
void process_derez_container(LLMessageSystem *msg, void**)
{
- llwarns << "call to deprecated process_derez_container" << llendl;
+ LL_WARNS("Messaging") << "call to deprecated process_derez_container" << LL_ENDL;
}
void container_inventory_arrived(LLViewerObject* object,
@@ -4547,7 +4549,7 @@ void container_inventory_arrived(LLViewerObject* object,
S32 serial_num,
void* data)
{
- llinfos << "container_inventory_arrived()" << llendl;
+ LL_DEBUGS("Messaging") << "container_inventory_arrived()" << LL_ENDL;
if( gAgent.cameraMouselook() )
{
gAgent.changeCameraToDefault();
@@ -4693,7 +4695,7 @@ void process_teleport_local(LLMessageSystem *msg,void**)
msg->getUUIDFast(_PREHASH_Info, _PREHASH_AgentID, agent_id);
if (agent_id != gAgent.getID())
{
- llwarns << "Got teleport notification for wrong agent!" << llendl;
+ LL_WARNS("Messaging") << "Got teleport notification for wrong agent!" << LL_ENDL;
return;
}
@@ -4923,8 +4925,8 @@ void process_user_info_reply(LLMessageSystem* msg, void**)
msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id);
if(agent_id != gAgent.getID())
{
- llwarns << "process_user_info_reply - "
- << "wrong agent id." << llendl;
+ LL_WARNS("Messaging") << "process_user_info_reply - "
+ << "wrong agent id." << LL_ENDL;
}
BOOL im_via_email;
@@ -5132,7 +5134,7 @@ void process_load_url(LLMessageSystem* msg, void**)
if (LLMuteList::getInstance()->isMuted(infop->mObjectID, infop->mObjectName) ||
LLMuteList::getInstance()->isMuted(infop->mOwnerID))
{
- llinfos<<"Ignoring load_url from muted object/owner."<getUUID("AgentData", "AgentID", agent_id);
if (agent_id != gAgent.getID())
{
- llwarns << "Initiate download for wrong agent" << llendl;
+ LL_WARNS("Messaging") << "Initiate download for wrong agent" << LL_ENDL;
return;
}
@@ -5192,10 +5194,12 @@ void process_script_teleport_request(LLMessageSystem* msg, void**)
msg->getVector3("Data", "SimPosition", pos);
msg->getVector3("Data", "LookAt", look_at);
- // gFloaterWorldMap->trackURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]);
- // LLFloaterWorldMap::show(NULL, TRUE);
+ gFloaterWorldMap->trackURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]);
+ LLFloaterWorldMap::show(NULL, TRUE);
- LLURLDispatcher::dispatch(LLURLDispatcher::buildSLURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]), FALSE);
+ // remove above two lines and replace with below line
+ // to re-enable parcel browser for llMapDestination()
+ // LLURLDispatcher::dispatch(LLURLDispatcher::buildSLURL(sim_name, (S32)pos.mV[VX], (S32)pos.mV[VY], (S32)pos.mV[VZ]), FALSE);
}
@@ -5287,7 +5291,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
LLAssetType::EType type,
void* user_data, S32 status, LLExtStat ext_status)
{
- llinfos << "onCovenantLoadComplete()" << llendl;
+ LL_DEBUGS("Messaging") << "onCovenantLoadComplete()" << LL_ENDL;
std::string covenant_text;
if(0 == status)
{
@@ -5298,7 +5302,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
char* buffer = new char[file_length+1];
if (buffer == NULL)
{
- llerrs << "Memory Allocation failed" << llendl;
+ LL_ERRS("Messaging") << "Memory Allocation failed" << LL_ENDL;
return;
}
@@ -5315,7 +5319,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
file_length+1);
if( !editor->importBuffer( buffer ) )
{
- llwarns << "Problem importing estate covenant." << llendl;
+ LL_WARNS("Messaging") << "Problem importing estate covenant." << LL_ENDL;
covenant_text = "Problem importing estate covenant.";
}
else
@@ -5328,7 +5332,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
}
else
{
- llwarns << "Problem importing estate covenant: Covenant file format error." << llendl;
+ LL_WARNS("Messaging") << "Problem importing estate covenant: Covenant file format error." << LL_ENDL;
covenant_text = "Problem importing estate covenant: Covenant file format error.";
}
}
@@ -5350,7 +5354,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
covenant_text = "Unable to load estate covenant at this time.";
}
- llwarns << "Problem loading notecard: " << status << llendl;
+ LL_WARNS("Messaging") << "Problem loading notecard: " << status << LL_ENDL;
}
LLPanelEstateCovenant::updateCovenantText(covenant_text, asset_uuid);
LLPanelLandCovenant::updateCovenantText(covenant_text);
@@ -5368,7 +5372,7 @@ void process_feature_disabled_message(LLMessageSystem* msg, void**)
msg->getUUIDFast(_PREHASH_FailureInfo,_PREHASH_AgentID,agentID);
msg->getUUIDFast(_PREHASH_FailureInfo,_PREHASH_TransactionID,transactionID);
- llwarns << "Blacklisted Feature Response:" << &messageText[0] << llendl;
+ LL_WARNS("Messaging") << "Blacklisted Feature Response:" << &messageText[0] << LL_ENDL;
}
// ------------------------------------------------------------
diff --git a/linden/indra/newview/llviewernetwork.cpp b/linden/indra/newview/llviewernetwork.cpp
index d6e92c2..3224c00 100644
--- a/linden/indra/newview/llviewernetwork.cpp
+++ b/linden/indra/newview/llviewernetwork.cpp
@@ -33,8 +33,17 @@
#include "llviewerprecompiledheaders.h"
#include "llviewernetwork.h"
+#include "llviewercontrol.h"
-LLGridData gGridInfo[GRID_INFO_COUNT] =
+struct LLGridData
+{
+ const char* mLabel;
+ const char* mName;
+ const char* mLoginURI;
+ const char* mHelperURI;
+};
+
+static LLGridData gGridInfo[GRID_INFO_COUNT] =
{
{ "None", "", "", ""},
{ "Aditi",
@@ -111,8 +120,177 @@ LLGridData gGridInfo[GRID_INFO_COUNT] =
"" }
};
-// Use this to figure out which domain name and login URI to use.
+#if LL_RELEASE_FOR_DOWNLOAD
+ // Default userserver for production builds is agni
+ const EGridInfo DEFAULT_GRID_CHOICE = GRID_INFO_AGNI;
+#else
+ // Default userserver for development builds is none
+ const EGridInfo DEFAULT_GRID_CHOICE = GRID_INFO_NONE;
+#endif
-EGridInfo gGridChoice = GRID_INFO_NONE;
-LLString gGridName; /* Flawfinder: ignore */
unsigned char gMACAddress[MAC_ADDRESS_BYTES]; /* Flawfinder: ignore */
+
+LLViewerLogin::LLViewerLogin() :
+ mGridChoice(DEFAULT_GRID_CHOICE)
+{
+}
+
+void LLViewerLogin::setGridChoice(EGridInfo grid)
+{
+ if(grid < 0 || grid >= GRID_INFO_COUNT)
+ {
+ llerrs << "Invalid grid index specified." << llendl;
+ }
+
+ if(mGridChoice != grid)
+ {
+ mGridChoice = grid;
+ if(GRID_INFO_LOCAL == mGridChoice)
+ {
+ mGridName = LOOPBACK_ADDRESS_STRING;
+ }
+ else if(GRID_INFO_OTHER == mGridChoice)
+ {
+ // *FIX:Mani - could this possibly be valid?
+ mGridName = "other";
+ }
+ else
+ {
+ mGridName = gGridInfo[mGridChoice].mLabel;
+ }
+
+ gSavedSettings.setS32("ServerChoice", mGridChoice);
+ gSavedSettings.setString("CustomServer", "");
+ }
+}
+
+void LLViewerLogin::setGridChoice(const std::string& grid_name)
+{
+ // Set the grid choice based on a string.
+ // The string can be:
+ // - a grid label from the gGridInfo table
+ // - an ip address
+ if(!grid_name.empty())
+ {
+ // find the grid choice from the user setting.
+ int grid_index = GRID_INFO_NONE;
+ for(;grid_index < GRID_INFO_OTHER; ++grid_index)
+ {
+ if(0 == LLString::compareInsensitive(gGridInfo[grid_index].mLabel, grid_name.c_str()))
+ {
+ // Founding a matching label in the list...
+ setGridChoice((EGridInfo)grid_index);
+ break;
+ }
+ }
+
+ if(GRID_INFO_OTHER == grid_index)
+ {
+ // *FIX:MEP Can and should we validate that this is an IP address?
+ mGridChoice = GRID_INFO_OTHER;
+ mGridName = grid_name;
+ gSavedSettings.setS32("ServerChoice", mGridChoice);
+ gSavedSettings.setString("CustomServer", mGridName);
+ }
+ }
+}
+
+void LLViewerLogin::resetURIs()
+{
+ // Clear URIs when picking a new server
+ gSavedSettings.setValue("CmdLineLoginURI", LLSD::emptyArray());
+ gSavedSettings.setString("CmdLineHelperURI", "");
+}
+
+EGridInfo LLViewerLogin::getGridChoice() const
+{
+ return mGridChoice;
+}
+
+std::string LLViewerLogin::getGridLabel() const
+{
+ if(mGridChoice == GRID_INFO_NONE)
+ {
+ return "None";
+ }
+ else if(mGridChoice < GRID_INFO_OTHER)
+ {
+ return gGridInfo[mGridChoice].mLabel;
+ }
+
+ return mGridName;
+}
+
+std::string LLViewerLogin::getKnownGridLabel(EGridInfo grid_index) const
+{
+ if(grid_index > GRID_INFO_NONE && grid_index < GRID_INFO_OTHER)
+ {
+ return gGridInfo[grid_index].mLabel;
+ }
+ return gGridInfo[GRID_INFO_NONE].mLabel;
+}
+
+void LLViewerLogin::getLoginURIs(std::vector& uris) const
+{
+ // return the login uri set on the command line.
+ LLControlVariable* c = gSavedSettings.getControl("CmdLineLoginURI");
+ if(c)
+ {
+ LLSD v = c->getValue();
+ if(v.isArray())
+ {
+ for(LLSD::array_const_iterator itr = v.beginArray();
+ itr != v.endArray(); ++itr)
+ {
+ std::string uri = itr->asString();
+ if(!uri.empty())
+ {
+ uris.push_back(uri);
+ }
+ }
+ }
+ else
+ {
+ std::string uri = v.asString();
+ if(!uri.empty())
+ {
+ uris.push_back(uri);
+ }
+ }
+ }
+
+ // If there was no command line uri...
+ if(uris.empty())
+ {
+ // If its a known grid choice, get the uri from the table,
+ // else try the grid name.
+ if(mGridChoice > GRID_INFO_NONE && mGridChoice < GRID_INFO_OTHER)
+ {
+ uris.push_back(gGridInfo[mGridChoice].mLoginURI);
+ }
+ else
+ {
+ uris.push_back(mGridName);
+ }
+ }
+}
+
+std::string LLViewerLogin::getHelperURI() const
+{
+ return gSavedSettings.getString("CmdLineHelperURI");
+}
+
+bool LLViewerLogin::isInProductionGrid()
+{
+ // *NOTE:Mani This used to compare GRID_INFO_AGNI to gGridChoice,
+ // but it seems that loginURI trumps that.
+ std::vector uris;
+ getLoginURIs(uris);
+ LLString::toLower(uris[0]);
+ if((uris[0].find("agni") != std::string::npos))
+ {
+ return true;
+ }
+
+ return false;
+}
diff --git a/linden/indra/newview/llviewernetwork.h b/linden/indra/newview/llviewernetwork.h
index 176ce43..966034f 100644
--- a/linden/indra/newview/llviewernetwork.h
+++ b/linden/indra/newview/llviewernetwork.h
@@ -59,18 +59,44 @@ enum EGridInfo
GRID_INFO_COUNT
};
-
-struct LLGridData
+/**
+ * @brief A class to manage the viewer's login state.
+ *
+ **/
+class LLViewerLogin : public LLSingleton
{
- const char* mLabel;
- const char* mName;
- const char* mLoginURI;
- const char* mHelperURI;
-};
+public:
+ LLViewerLogin();
+
+ void setGridChoice(EGridInfo grid);
+ void setGridChoice(const std::string& grid_name);
+ void resetURIs();
+
+ /**
+ * @brief Get the enumeration of the grid choice.
+ * Should only return values > 0 && < GRID_INFO_COUNT
+ **/
+ EGridInfo getGridChoice() const;
-extern EGridInfo gGridChoice;
-extern LLGridData gGridInfo[];
-extern LLString gGridName; /* Flawfinder: ignore */
+ /**
+ * @brief Get a readable label for the grid choice.
+ * Returns the readable name for the grid choice.
+ * If the grid is 'other', returns something
+ * the string used to specifiy the grid.
+ **/
+ std::string getGridLabel() const;
+
+ std::string getKnownGridLabel(EGridInfo grid_index) const;
+
+ void getLoginURIs(std::vector& uris) const;
+ std::string getHelperURI() const;
+
+ bool isInProductionGrid();
+
+private:
+ EGridInfo mGridChoice;
+ std::string mGridName;
+};
const S32 MAC_ADDRESS_BYTES = 6;
extern unsigned char gMACAddress[MAC_ADDRESS_BYTES]; /* Flawfinder: ignore */
diff --git a/linden/indra/newview/llviewerobject.cpp b/linden/indra/newview/llviewerobject.cpp
index b0bd5ce..54114e4 100644
--- a/linden/indra/newview/llviewerobject.cpp
+++ b/linden/indra/newview/llviewerobject.cpp
@@ -94,7 +94,7 @@
#include "llworld.h"
#include "llui.h"
#include "pipeline.h"
-#include "llappviewer.h"
+#include "llviewernetwork.h"
#include "llvowlsky.h"
//#define DEBUG_UPDATE_TYPE
@@ -4073,6 +4073,37 @@ BOOL LLViewerObject::isParticleSource() const
return !mPartSourcep.isNull() && !mPartSourcep->isDead();
}
+void LLViewerObject::setParticleSource(const LLPartSysData& particle_parameters, const LLUUID& owner_id)
+{
+ if (mPartSourcep)
+ {
+ deleteParticleSource();
+ }
+
+ LLPointer pss = LLViewerPartSourceScript::createPSS(this, particle_parameters);
+ mPartSourcep = pss;
+
+ if (mPartSourcep)
+ {
+ mPartSourcep->setOwnerUUID(owner_id);
+
+ if (mPartSourcep->getImage()->getID() != mPartSourcep->mPartSysData.mPartImageID)
+ {
+ LLViewerImage* image;
+ if (mPartSourcep->mPartSysData.mPartImageID == LLUUID::null)
+ {
+ image = gImageList.getImageFromFile("pixiesmall.tga");
+ }
+ else
+ {
+ image = gImageList.getImage(mPartSourcep->mPartSysData.mPartImageID);
+ }
+ mPartSourcep->setImage(image);
+ }
+ }
+ LLViewerPartSim::getInstance()->addPartSource(pss);
+}
+
void LLViewerObject::unpackParticleSource(const S32 block_num, const LLUUID& owner_id)
{
if (!mPartSourcep.isNull() && mPartSourcep->isDead())
@@ -4539,7 +4570,7 @@ BOOL LLViewerObject::permYouOwner() const
return TRUE;
#else
# ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- if (!LLAppViewer::instance()->isInProductionGrid()
+ if (!LLViewerLogin::getInstance()->isInProductionGrid()
&& (gAgent.getGodLevel() >= GOD_MAINTENANCE))
{
return TRUE;
@@ -4576,7 +4607,7 @@ BOOL LLViewerObject::permOwnerModify() const
return TRUE;
#else
# ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- if (!LLAppViewer::instance()->isInProductionGrid()
+ if (!LLViewerLogin::getInstance()->isInProductionGrid()
&& (gAgent.getGodLevel() >= GOD_MAINTENANCE))
{
return TRUE;
@@ -4600,7 +4631,7 @@ BOOL LLViewerObject::permModify() const
return TRUE;
#else
# ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- if (!LLAppViewer::instance()->isInProductionGrid()
+ if (!LLViewerLogin::getInstance()->isInProductionGrid()
&& (gAgent.getGodLevel() >= GOD_MAINTENANCE))
{
return TRUE;
@@ -4624,7 +4655,7 @@ BOOL LLViewerObject::permCopy() const
return TRUE;
#else
# ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- if (!LLAppViewer::instance()->isInProductionGrid()
+ if (!LLViewerLogin::getInstance()->isInProductionGrid()
&& (gAgent.getGodLevel() >= GOD_MAINTENANCE))
{
return TRUE;
@@ -4648,7 +4679,7 @@ BOOL LLViewerObject::permMove() const
return TRUE;
#else
# ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- if (!LLAppViewer::instance()->isInProductionGrid()
+ if (!LLViewerLogin::getInstance()->isInProductionGrid()
&& (gAgent.getGodLevel() >= GOD_MAINTENANCE))
{
return TRUE;
@@ -4672,7 +4703,7 @@ BOOL LLViewerObject::permTransfer() const
return TRUE;
#else
# ifdef TOGGLE_HACKED_GODLIKE_VIEWER
- if (!LLAppViewer::instance()->isInProductionGrid()
+ if (!LLViewerLogin::getInstance()->isInProductionGrid()
&& (gAgent.getGodLevel() >= GOD_MAINTENANCE))
{
return TRUE;
diff --git a/linden/indra/newview/llviewerobject.h b/linden/indra/newview/llviewerobject.h
index 316e8db..88e2a15 100644
--- a/linden/indra/newview/llviewerobject.h
+++ b/linden/indra/newview/llviewerobject.h
@@ -558,6 +558,7 @@ protected:
void unpackParticleSource(const S32 block_num, const LLUUID& owner_id);
void unpackParticleSource(LLDataPacker &dp, const LLUUID& owner_id);
void deleteParticleSource();
+ void setParticleSource(const LLPartSysData& particle_parameters, const LLUUID& owner_id);
private:
void setNameValueList(const std::string& list); // clears nv pairs and then individually adds \n separated NV pairs from \0 terminated string
diff --git a/linden/indra/newview/llviewerobjectlist.cpp b/linden/indra/newview/llviewerobjectlist.cpp
index 03567b0..bd8ed97 100644
--- a/linden/indra/newview/llviewerobjectlist.cpp
+++ b/linden/indra/newview/llviewerobjectlist.cpp
@@ -36,7 +36,7 @@
#include "message.h"
#include "timing.h"
#include "llfasttimer.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llviewercontrol.h"
#include "llface.h"
@@ -1212,6 +1212,7 @@ U32 LLViewerObjectList::renderObjectsForSelect(LLCamera &camera, BOOL pick_parce
// render pickable ui elements, like names, etc.
LLHUDObject::renderAllForSelect();
gGL.flush();
+ LLVertexBuffer::unbind();
gRenderForSelect = FALSE;
diff --git a/linden/indra/newview/llviewerparcelmedia.cpp b/linden/indra/newview/llviewerparcelmedia.cpp
index 187a553..c29f277 100644
--- a/linden/indra/newview/llviewerparcelmedia.cpp
+++ b/linden/indra/newview/llviewerparcelmedia.cpp
@@ -100,9 +100,17 @@ void LLViewerParcelMedia::update(LLParcel* parcel)
// we have a player
if (parcel)
{
+ if(!gAgent.getRegion())
+ {
+ sMediaRegionID = LLUUID() ;
+ stop() ;
+ return ;
+ }
+
// we're in a parcel
bool new_parcel = false;
- S32 parcelid = parcel->getLocalID();
+ S32 parcelid = parcel->getLocalID();
+
LLUUID regionid = gAgent.getRegion()->getRegionID();
if (parcelid != sMediaParcelLocalID || regionid != sMediaRegionID)
{
diff --git a/linden/indra/newview/llviewerparceloverlay.cpp b/linden/indra/newview/llviewerparceloverlay.cpp
index 7d0b2b4..b50ddb6 100644
--- a/linden/indra/newview/llviewerparceloverlay.cpp
+++ b/linden/indra/newview/llviewerparceloverlay.cpp
@@ -36,7 +36,7 @@
// indra includes
#include "llparcel.h"
#include "llgl.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "v4color.h"
#include "v2math.h"
@@ -48,6 +48,8 @@
#include "llagent.h"
#include "llviewercamera.h"
#include "llviewerimagelist.h"
+#include "llselectmgr.h"
+#include "llfloatertools.h"
#include "llglheaders.h"
const U8 OVERLAY_IMG_COMPONENTS = 4;
@@ -69,7 +71,7 @@ LLViewerParcelOverlay::LLViewerParcelOverlay(LLViewerRegion* region, F32 region_
mTexture = new LLImageGL(FALSE);
mImageRaw = new LLImageRaw(mParcelGridsPerEdge, mParcelGridsPerEdge, OVERLAY_IMG_COMPONENTS);
mTexture->createGLTexture(0, mImageRaw);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
mTexture->bind(0);
mTexture->setClamp(TRUE, TRUE);
mTexture->setMipFilterNearest(TRUE);
@@ -839,31 +841,34 @@ S32 LLViewerParcelOverlay::renderPropertyLines ()
gGL.end();
- LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_GREATER);
-
- colorp = mColorArray + BYTES_PER_COLOR * i;
- vertexp = mVertexArray + FLOATS_PER_VERTEX * i;
+ if (LLSelectMgr::sRenderHiddenSelections && gFloaterTools && gFloaterTools->getVisible())
+ {
+ LLGLDepthTest depth(GL_TRUE, GL_FALSE, GL_GREATER);
+
+ colorp = mColorArray + BYTES_PER_COLOR * i;
+ vertexp = mVertexArray + FLOATS_PER_VERTEX * i;
- gGL.begin(LLVertexBuffer::TRIANGLE_STRIP);
+ gGL.begin(LLVertexBuffer::TRIANGLE_STRIP);
- for (j = 0; j < vertex_per_edge; j++)
- {
- U8 color[4];
- color[0] = colorp[0];
- color[1] = colorp[1];
- color[2] = colorp[2];
- color[3] = colorp[3]/4;
+ for (j = 0; j < vertex_per_edge; j++)
+ {
+ U8 color[4];
+ color[0] = colorp[0];
+ color[1] = colorp[1];
+ color[2] = colorp[2];
+ color[3] = colorp[3]/4;
- gGL.color4ubv(color);
- gGL.vertex3fv(vertexp);
+ gGL.color4ubv(color);
+ gGL.vertex3fv(vertexp);
- colorp += BYTES_PER_COLOR;
- vertexp += FLOATS_PER_VERTEX;
- }
+ colorp += BYTES_PER_COLOR;
+ vertexp += FLOATS_PER_VERTEX;
+ }
- drawn += vertex_per_edge;
+ drawn += vertex_per_edge;
- gGL.end();
+ gGL.end();
+ }
}
diff --git a/linden/indra/newview/llviewerpartsource.cpp b/linden/indra/newview/llviewerpartsource.cpp
index 040d108..6c0596a 100644
--- a/linden/indra/newview/llviewerpartsource.cpp
+++ b/linden/indra/newview/llviewerpartsource.cpp
@@ -466,6 +466,25 @@ LLPointer LLViewerPartSourceScript::unpackPSS(LLViewer
}
}
+
+/* static */
+LLPointer LLViewerPartSourceScript::createPSS(LLViewerObject *source_objp, const LLPartSysData& particle_parameters)
+{
+ LLMemType mt(LLMemType::MTYPE_PARTICLES);
+
+ LLPointer new_pssp = new LLViewerPartSourceScript(source_objp);
+
+ new_pssp->mPartSysData = particle_parameters;
+
+ if (new_pssp->mPartSysData.mTargetUUID.notNull())
+ {
+ LLViewerObject *target_objp = gObjectList.findObject(new_pssp->mPartSysData.mTargetUUID);
+ new_pssp->setTargetObject(target_objp);
+ }
+ return new_pssp;
+}
+
+
void LLViewerPartSourceScript::setImage(LLViewerImage *imagep)
{
LLMemType mt(LLMemType::MTYPE_PARTICLES);
diff --git a/linden/indra/newview/llviewerpartsource.h b/linden/indra/newview/llviewerpartsource.h
index cda81a0..8b6fb2c 100644
--- a/linden/indra/newview/llviewerpartsource.h
+++ b/linden/indra/newview/llviewerpartsource.h
@@ -119,6 +119,7 @@ public:
// Returns a new particle source to attach to an object...
static LLPointer unpackPSS(LLViewerObject *source_objp, LLPointer pssp, const S32 block_num);
static LLPointer unpackPSS(LLViewerObject *source_objp, LLPointer pssp, LLDataPacker &dp);
+ static LLPointer createPSS(LLViewerObject *source_objp, const LLPartSysData& particle_parameters);
LLViewerImage *getImage() const { return mImagep; }
void setImage(LLViewerImage *imagep);
diff --git a/linden/indra/newview/llviewerregion.cpp b/linden/indra/newview/llviewerregion.cpp
index e8ed85f..e1590cc 100644
--- a/linden/indra/newview/llviewerregion.cpp
+++ b/linden/indra/newview/llviewerregion.cpp
@@ -214,7 +214,7 @@ void LLViewerRegion::loadCache()
U32(mHandle>>32)/REGION_WIDTH_UNITS,
U32(mHandle)/REGION_WIDTH_UNITS );
- FILE* fp = LLFile::fopen(filename, "rb"); /* Flawfinder: ignore */
+ LLFILE* fp = LLFile::fopen(filename, "rb"); /* Flawfinder: ignore */
if (!fp)
{
// might not have a file, which is normal
@@ -303,7 +303,7 @@ void LLViewerRegion::saveCache()
U32(mHandle>>32)/REGION_WIDTH_UNITS,
U32(mHandle)/REGION_WIDTH_UNITS );
- FILE* fp = LLFile::fopen(filename, "wb"); /* Flawfinder: ignore */
+ LLFILE* fp = LLFile::fopen(filename, "wb"); /* Flawfinder: ignore */
if (!fp)
{
llwarns << "Unable to write cache file " << filename << llendl;
@@ -1307,6 +1307,7 @@ void LLViewerRegion::unpackRegionHandshake()
class BaseCapabilitiesComplete : public LLHTTPClient::Responder
{
+ LOG_CLASS(BaseCapabilitiesComplete);
public:
BaseCapabilitiesComplete(LLViewerRegion* region)
: mRegion(region)
@@ -1314,8 +1315,7 @@ public:
void error(U32 statusNum, const std::string& reason)
{
- llinfos << "BaseCapabilitiesComplete::error "
- << statusNum << ": " << reason << llendl;
+ LL_WARNS2("AppInit", "Capabilities") << statusNum << ": " << reason << LL_ENDL;
if (STATE_SEED_GRANTED_WAIT == LLStartUp::getStartupState())
{
@@ -1329,8 +1329,8 @@ public:
for(iter = content.beginMap(); iter != content.endMap(); ++iter)
{
mRegion->setCapability(iter->first, iter->second);
- llinfos << "BaseCapabilitiesComplete::result got capability for "
- << iter->first << llendl;
+ LL_DEBUGS2("AppInit", "Capabilities") << "got capability for "
+ << iter->first << LL_ENDL;
/* HACK we're waiting for the ServerReleaseNotes */
if ((iter->first == "ServerReleaseNotes") && (LLFloaterReleaseMsg::sDisplayMessage))
diff --git a/linden/indra/newview/llviewerstats.cpp b/linden/indra/newview/llviewerstats.cpp
index 9f10bbf..52b6748 100644
--- a/linden/indra/newview/llviewerstats.cpp
+++ b/linden/indra/newview/llviewerstats.cpp
@@ -53,6 +53,7 @@
#include "llfasttimerview.h"
#include "llviewerregion.h"
#include "llfloaterhtml.h"
+#include "llviewerwindow.h" // *TODO: remove, only used for width/height
#include "llworld.h"
#include "llfeaturemanager.h"
#if LL_WINDOWS && LL_LCD_COMPILE
@@ -748,7 +749,12 @@ void send_stats()
// If the current revision is recent, ping the previous author before overriding
LLSD &misc = body["stats"]["misc"];
- // misc["string_1"] =
+ // Screen size so the UI team can figure out how big the widgets
+ // appear and use a "typical" size for end user tests.
+
+ S32 window_width = gViewerWindow->getWindowDisplayWidth();
+ S32 window_height = gViewerWindow->getWindowDisplayHeight();
+ misc["string_1"] = llformat("%.dx%d", window_width, window_height);
// misc["string_2"] =
misc["int_1"] = LLFloaterDirectory::sOldSearchCount; // Steve: 1.18.6
misc["int_2"] = LLFloaterDirectory::sNewSearchCount; // Steve: 1.18.6
diff --git a/linden/indra/newview/llviewertexteditor.cpp b/linden/indra/newview/llviewertexteditor.cpp
index 60ec187..e1c56a6 100644
--- a/linden/indra/newview/llviewertexteditor.cpp
+++ b/linden/indra/newview/llviewertexteditor.cpp
@@ -631,7 +631,7 @@ BOOL LLViewerTextEditor::handleToolTip(S32 x, S32 y, LLString& msg, LLRect* stic
if( cur_segment )
{
BOOL has_tool_tip = FALSE;
- if( cur_segment->getStyle().getIsEmbeddedItem() )
+ if( cur_segment->getStyle()->getIsEmbeddedItem() )
{
LLWString wtip;
has_tool_tip = getEmbeddedItemToolTipAtPos(cur_segment->getStart(), wtip);
@@ -851,14 +851,14 @@ BOOL LLViewerTextEditor::handleHover(S32 x, S32 y, MASK mask)
const LLTextSegment* cur_segment = getSegmentAtLocalPos( x, y );
if( cur_segment )
{
- if(cur_segment->getStyle().isLink())
+ if(cur_segment->getStyle()->isLink())
{
lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << " (over link, inactive)" << llendl;
getWindow()->setCursor(UI_CURSOR_HAND);
handled = TRUE;
}
else
- if(cur_segment->getStyle().getIsEmbeddedItem())
+ if(cur_segment->getStyle()->getIsEmbeddedItem())
{
lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << " (over embedded item, inactive)" << llendl;
getWindow()->setCursor(UI_CURSOR_HAND);
@@ -970,10 +970,10 @@ BOOL LLViewerTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask)
// const LLTextSegment* cur_segment = getSegmentAtLocalPos( x, y );
// if( cur_segment )
// {
-// if(cur_segment->getStyle().isLink())
+// if(cur_segment->getStyle()->isLink())
// {
// handled = TRUE;
-// mHTML = cur_segment->getStyle().getLinkHREF();
+// mHTML = cur_segment->getStyle()->getLinkHREF();
// }
// }
// }
@@ -1008,7 +1008,7 @@ BOOL LLViewerTextEditor::handleDoubleClick(S32 x, S32 y, MASK mask)
if( allowsEmbeddedItems() )
{
const LLTextSegment* cur_segment = getSegmentAtLocalPos( x, y );
- if( cur_segment && cur_segment->getStyle().getIsEmbeddedItem() )
+ if( cur_segment && cur_segment->getStyle()->getIsEmbeddedItem() )
{
if( openEmbeddedItemAtPos( cur_segment->getStart() ) )
{
@@ -1598,7 +1598,7 @@ LLView* LLViewerTextEditor::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlF
text_editor->initFromXML(node, parent);
// add text after all parameters have been set
- text_editor->appendStyledText(text, FALSE, FALSE, NULL);
+ text_editor->appendStyledText(text, FALSE, FALSE);
return text_editor;
}
diff --git a/linden/indra/newview/llviewerthrottle.cpp b/linden/indra/newview/llviewerthrottle.cpp
index ceff856..54188cd 100644
--- a/linden/indra/newview/llviewerthrottle.cpp
+++ b/linden/indra/newview/llviewerthrottle.cpp
@@ -182,9 +182,9 @@ void LLViewerThrottleGroup::dump()
S32 i;
for (i = 0; i < TC_EOF; i++)
{
- llinfos << LLViewerThrottle::sNames[i] << ": " << mThrottles[i] << llendl;
+ LL_DEBUGS("Throttle") << LLViewerThrottle::sNames[i] << ": " << mThrottles[i] << LL_ENDL;
}
- llinfos << "Total: " << mThrottleTotal << llendl;
+ LL_DEBUGS("Throttle") << "Total: " << mThrottleTotal << LL_ENDL;
}
class LLBPSListener : public LLSimpleListener
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp
index 4c76b8b..9f091dc 100644
--- a/linden/indra/newview/llviewerwindow.cpp
+++ b/linden/indra/newview/llviewerwindow.cpp
@@ -43,7 +43,7 @@
#include "llviewquery.h"
#include "llxmltree.h"
//#include "llviewercamera.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llvoiceclient.h" // for push-to-talk button handling
@@ -182,6 +182,7 @@
#include "llviewerdisplay.h"
#include "llspatialpartition.h"
#include "llviewerjoystick.h"
+#include "llviewernetwork.h"
#if LL_WINDOWS
#include "llwindebug.h"
@@ -1529,9 +1530,9 @@ LLViewerWindow::LLViewerWindow(
ignore_pixel_depth,
gSavedSettings.getU32("RenderFSAASamples"));
#if LL_WINDOWS
- if (!LLWinDebug::setupExceptionHandler())
+ if (!LLWinDebug::checkExceptionHandler())
{
- llwarns << " Someone took over my exception handler (post createWindow)!" << llendl;
+ LL_WARNS("Window") << " Someone took over my exception handler (post createWindow)!" << LL_ENDL;
}
#endif
@@ -1542,8 +1543,8 @@ LLViewerWindow::LLViewerWindow(
llwarns << "Unable to create window, be sure screen is set at 32-bit color and your graphics driver is configured correctly. See README-linux.txt or README-solaris.txt for further information."
<< llendl;
#else
- llwarns << "Unable to create window, be sure screen is set at 32-bit color in Control Panels->Display->Settings"
- << llendl;
+ LL_WARNS("Window") << "Unable to create window, be sure screen is set at 32-bit color in Control Panels->Display->Settings"
+ << LL_ENDL;
#endif
LLAppViewer::instance()->forceExit(1);
}
@@ -1569,7 +1570,7 @@ LLViewerWindow::LLViewerWindow(
// We want to set this stuff up BEFORE we initialize the pipeline, so we can turn off
// stuff like AGP if we think that it'll crash the viewer.
//
- llinfos << "Loading feature tables." << llendl;
+ LL_DEBUGS("Window") << "Loading feature tables." << LL_ENDL;
LLFeatureManager::getInstance()->init();
@@ -1638,7 +1639,7 @@ LLViewerWindow::LLViewerWindow(
void LLViewerWindow::initGLDefaults()
{
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
glColorMaterial( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE );
F32 ambient[4] = {0.f,0.f,0.f,0.f };
@@ -1656,7 +1657,7 @@ void LLViewerWindow::initGLDefaults()
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
glCullFace(GL_BACK);
@@ -2198,7 +2199,7 @@ void LLViewerWindow::setNormalControlsVisible( BOOL visible )
// ...and set the menu color appropriately.
setMenuBackgroundColor(gAgent.getGodLevel() > GOD_NOT,
- LLAppViewer::instance()->isInProductionGrid());
+ LLViewerLogin::getInstance()->isInProductionGrid());
}
if ( gStatusBar )
@@ -2213,15 +2214,15 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid)
LLString::format_map_t args;
LLColor4 new_bg_color;
- if(god_mode && LLAppViewer::instance()->isInProductionGrid())
+ if(god_mode && LLViewerLogin::getInstance()->isInProductionGrid())
{
new_bg_color = gColors.getColor( "MenuBarGodBgColor" );
}
- else if(god_mode && !LLAppViewer::instance()->isInProductionGrid())
+ else if(god_mode && !LLViewerLogin::getInstance()->isInProductionGrid())
{
new_bg_color = gColors.getColor( "MenuNonProductionGodBgColor" );
}
- else if(!god_mode && !LLAppViewer::instance()->isInProductionGrid())
+ else if(!god_mode && !LLViewerLogin::getInstance()->isInProductionGrid())
{
new_bg_color = gColors.getColor( "MenuNonProductionBgColor" );
}
@@ -3538,7 +3539,7 @@ void LLViewerWindow::hitUIElementAsync(S32 x, S32 y_from_bot, MASK mask, void (*
const LLVector2& display_scale = getDisplayScale();
glScalef(display_scale.mV[VX], display_scale.mV[VY], 1.f);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
// make viewport big enough to handle antialiased frame buffers
glViewport(x - (PICK_HALF_WIDTH + 2), y_from_bot - (PICK_HALF_WIDTH + 2), PICK_DIAMETER + 4, PICK_DIAMETER + 4);
@@ -4185,8 +4186,9 @@ void LLViewerWindow::movieSize(S32 new_width, S32 new_height)
if ( (size.mX != new_width + BORDERWIDTH)
||(size.mY != new_height + BORDERHEIGHT))
{
- S32 x = gViewerWindow->getWindowWidth();
- S32 y = gViewerWindow->getWindowHeight();
+ // use actual display dimensions, not virtual UI dimensions
+ S32 x = gViewerWindow->getWindowDisplayWidth();
+ S32 y = gViewerWindow->getWindowDisplayHeight();
BORDERWIDTH = size.mX - x;
BORDERHEIGHT = size.mY- y;
LLCoordScreen new_size(new_width + BORDERWIDTH,
@@ -4938,7 +4940,7 @@ void LLViewerWindow::restoreGL(const LLString& progress_message)
}
llinfos << "...Restoring GL done" << llendl;
#if LL_WINDOWS
- if (SetUnhandledExceptionFilter(LLWinDebug::handleException) != LLWinDebug::handleException)
+ if(!LLWinDebug::checkExceptionHandler())
{
llwarns << " Someone took over my exception handler (post restoreGL)!" << llendl;
}
@@ -4951,21 +4953,21 @@ void LLViewerWindow::initFonts(F32 zoom_factor)
{
LLFontGL::destroyGL();
LLFontGL::initDefaultFonts( gSavedSettings.getF32("FontScreenDPI"),
- mDisplayScale.mV[VX] * zoom_factor,
- mDisplayScale.mV[VY] * zoom_factor,
- gSavedSettings.getString("FontMonospace"),
- gSavedSettings.getF32("FontSizeMonospace"),
- gSavedSettings.getString("FontSansSerif"),
- gSavedSettings.getString("FontSansSerifFallback"),
- gSavedSettings.getF32("FontSansSerifFallbackScale"),
- gSavedSettings.getF32("FontSizeSmall"),
- gSavedSettings.getF32("FontSizeMedium"),
- gSavedSettings.getF32("FontSizeLarge"),
- gSavedSettings.getF32("FontSizeHuge"),
- gSavedSettings.getString("FontSansSerifBold"),
- gSavedSettings.getF32("FontSizeMedium"),
- gDirUtilp->getAppRODataDir()
- );
+ mDisplayScale.mV[VX] * zoom_factor,
+ mDisplayScale.mV[VY] * zoom_factor,
+ gSavedSettings.getString("FontMonospace"),
+ gSavedSettings.getF32("FontSizeMonospace"),
+ gSavedSettings.getString("FontSansSerif"),
+ gSavedSettings.getString("FontSansSerifFallback"),
+ gSavedSettings.getF32("FontSansSerifFallbackScale"),
+ gSavedSettings.getF32("FontSizeSmall"),
+ gSavedSettings.getF32("FontSizeMedium"),
+ gSavedSettings.getF32("FontSizeLarge"),
+ gSavedSettings.getF32("FontSizeHuge"),
+ gSavedSettings.getString("FontSansSerifBold"),
+ gSavedSettings.getF32("FontSizeMedium"),
+ gDirUtilp->getAppRODataDir()
+ );
}
void LLViewerWindow::toggleFullscreen(BOOL show_progress)
{
@@ -5018,20 +5020,16 @@ BOOL LLViewerWindow::checkSettings()
return FALSE;
}
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
-#endif
changeDisplaySettings(TRUE,
LLCoordScreen(gSavedSettings.getS32("FullScreenWidth"),
gSavedSettings.getS32("FullScreenHeight")),
gSavedSettings.getBOOL("DisableVerticalSync"),
mShowFullscreenProgress);
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
-#endif
return TRUE;
}
return FALSE;
diff --git a/linden/indra/newview/llviewerwindow.h b/linden/indra/newview/llviewerwindow.h
index a9f941c..da5fa4e 100644
--- a/linden/indra/newview/llviewerwindow.h
+++ b/linden/indra/newview/llviewerwindow.h
@@ -114,12 +114,18 @@ public:
// ACCESSORS
//
LLView* getRootView() const { return mRootView; }
+
+ // Window in raw pixels as seen on screen.
const LLRect& getWindowRect() const { return mWindowRect; };
+ S32 getWindowDisplayHeight() const;
+ S32 getWindowDisplayWidth() const;
+
+ // Window in scaled pixels (via UI scale), use this for
+ // UI elements checking size.
const LLRect& getVirtualWindowRect() const { return mVirtualWindowRect; };
S32 getWindowHeight() const;
S32 getWindowWidth() const;
- S32 getWindowDisplayHeight() const;
- S32 getWindowDisplayWidth() const;
+
LLWindow* getWindow() const { return mWindow; }
void* getPlatformWindow() const { return mWindow->getPlatformWindow(); }
void focusClient() const { return mWindow->focusClient(); };
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index 7de2f9c..6b5f066 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -37,7 +37,7 @@
#include "llvoavatar.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "audioengine.h"
#include "imageids.h"
#include "indra_constants.h"
@@ -95,7 +95,6 @@
#include "llstatusbar.h"
#include "lltargetingmotion.h"
#include "lltexlayer.h"
-#include "lltoolbar.h"
#include "lltoolgrab.h" // for needsRenderBeam
#include "lltoolmgr.h" // for needsRenderBeam
#include "lltoolmorph.h"
@@ -117,20 +116,14 @@
#include "llspatialpartition.h"
#include "llglslshader.h"
#include "llappviewer.h"
-#include "lscript_byteformat.h"
+#include "llsky.h"
+#include "llanimstatelabels.h"
//#include "vtune/vtuneapi.h"
-//Ventrella
-#include "llgesturemgr.h" //needed to trigger the voice gestculations
+#include "llgesturemgr.h" //needed to trigger the voice gesticulations
#include "llvoicevisualizer.h"
#include "llvoiceclient.h"
-//end Ventrella
-
-// Direct imports, evil
-extern LLSky gSky;
-extern void set_avatar_character(void* charNameArg);
-extern BOOL gRenderForSelect;
LLXmlTree LLVOAvatar::sXMLTree;
LLXmlTree LLVOAvatar::sSkeletonXMLTree;
@@ -686,7 +679,8 @@ LLVOAvatar::LLVOAvatar(
mTexHairColor( NULL ),
mTexEyeColor( NULL ),
mNeedsSkin(FALSE),
- mUpdatePeriod(1)
+ mUpdatePeriod(1),
+ mFullyLoadedInitialized(FALSE)
{
LLMemType mt(LLMemType::MTYPE_AVATAR);
@@ -766,6 +760,10 @@ LLVOAvatar::LLVOAvatar(
mStepOnLand = TRUE;
mStepMaterial = 0;
+ mLipSyncActive = false;
+ mOohMorph = NULL;
+ mAahMorph = NULL;
+
//-------------------------------------------------------------------------
// initialize joint, mesh and shape members
//-------------------------------------------------------------------------
@@ -950,10 +948,8 @@ LLVOAvatar::LLVOAvatar(
//VTPause(); // VTune
- //Ventrella
mVoiceVisualizer->setVoiceEnabled( gVoiceClient->getVoiceEnabled( mID ) );
mCurrentGesticulationLevel = 0;
- //END Ventrella
}
//------------------------------------------------------------------------
@@ -1887,6 +1883,26 @@ void LLVOAvatar::buildCharacter()
updateHeadOffset();
//-------------------------------------------------------------------------
+ // initialize lip sync morph pointers
+ //-------------------------------------------------------------------------
+ mOohMorph = getVisualParam( "Lipsync_Ooh" );
+ mAahMorph = getVisualParam( "Lipsync_Aah" );
+
+ // If we don't have the Ooh morph, use the Kiss morph
+ if (!mOohMorph)
+ {
+ llwarns << "Missing 'Ooh' morph for lipsync, using fallback." << llendl;
+ mOohMorph = getVisualParam( "Express_Kiss" );
+ }
+
+ // If we don't have the Aah morph, use the Open Mouth morph
+ if (!mAahMorph)
+ {
+ llwarns << "Missing 'Aah' morph for lipsync, using fallback." << llendl;
+ mAahMorph = getVisualParam( "Express_Open_Mouth" );
+ }
+
+ //-------------------------------------------------------------------------
// start default motions
//-------------------------------------------------------------------------
startMotion( ANIM_AGENT_HEAD_ROT );
@@ -2449,88 +2465,93 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
// animate the character
// store off last frame's root position to be consistent with camera position
LLVector3 root_pos_last = mRoot.getWorldPosition();
-
BOOL detailed_update = updateCharacter(agent);
+ bool voiceEnabled = gVoiceClient->getVoiceEnabled( mID ) && gVoiceClient->inProximalChannel();
- {
- //Ventrella
- bool voiceEnabled = gVoiceClient->getVoiceEnabled( mID ) && gVoiceClient->inProximalChannel();
- // disable voice visualizer when in mouselook
- mVoiceVisualizer->setVoiceEnabled( voiceEnabled && !(mIsSelf && gAgent.cameraMouselook()) );
- if ( voiceEnabled )
- {
- //----------------------------------------------------------------
- // Only do gesture triggering for your own avatar, and only when you're in a proximal channel.
- //----------------------------------------------------------------
- if( mIsSelf )
+ // disable voice visualizer when in mouselook
+ mVoiceVisualizer->setVoiceEnabled( voiceEnabled && !(mIsSelf && gAgent.cameraMouselook()) );
+ if ( voiceEnabled )
+ {
+ //----------------------------------------------------------------
+ // Only do gesture triggering for your own avatar, and only when you're in a proximal channel.
+ //----------------------------------------------------------------
+ if( mIsSelf )
+ {
+ //----------------------------------------------------------------------------------------
+ // The following takes the voice signal and uses that to trigger gesticulations.
+ //----------------------------------------------------------------------------------------
+ int lastGesticulationLevel = mCurrentGesticulationLevel;
+ mCurrentGesticulationLevel = mVoiceVisualizer->getCurrentGesticulationLevel();
+
+ //---------------------------------------------------------------------------------------------------
+ // If "current gesticulation level" changes, we catch this, and trigger the new gesture
+ //---------------------------------------------------------------------------------------------------
+ if ( lastGesticulationLevel != mCurrentGesticulationLevel )
{
- //----------------------------------------------------------------------------------------
- // The following takes the voice signal and uses that to trigger gesticulations.
- //----------------------------------------------------------------------------------------
- int lastGesticulationLevel = mCurrentGesticulationLevel;
- mCurrentGesticulationLevel = mVoiceVisualizer->getCurrentGesticulationLevel();
-
- //---------------------------------------------------------------------------------------------------
- // If "current gesticulation level" changes, we catch this, and trigger the new gesture
- //---------------------------------------------------------------------------------------------------
- if ( lastGesticulationLevel != mCurrentGesticulationLevel )
- {
- if ( mCurrentGesticulationLevel != VOICE_GESTICULATION_LEVEL_OFF )
- {
- LLString gestureString = "unInitialized";
- if ( mCurrentGesticulationLevel == 0 ) { gestureString = "/voicelevel1"; }
- else if ( mCurrentGesticulationLevel == 1 ) { gestureString = "/voicelevel2"; }
- else if ( mCurrentGesticulationLevel == 2 ) { gestureString = "/voicelevel3"; }
- else { llinfos << "oops - CurrentGesticulationLevel can be only 0, 1, or 2" << llendl; }
-
- // this is the call that Karl S. created for triggering gestures from within the code.
- gGestureManager.triggerAndReviseString( gestureString );
- }
- }
-
- } //if( mIsSelf )
-
- //-----------------------------------------------------------------------------------------------------------------
- // If the avatar is speaking, then the voice amplitude signal is passed to the voice visualizer.
- // Also, here we trigger voice visualizer start and stop speaking, so it can animate the voice symbol.
- //
- // Notice the calls to "gAwayTimer.reset()". This resets the timer that determines how long the avatar has been
- // "away", so that the avatar doesn't lapse into away-mode (and slump over) while the user is still talking.
- //-----------------------------------------------------------------------------------------------------------------
- if ( gVoiceClient->getIsSpeaking( mID ) )
- {
- if ( ! mVoiceVisualizer->getCurrentlySpeaking() )
+ if ( mCurrentGesticulationLevel != VOICE_GESTICULATION_LEVEL_OFF )
{
- mVoiceVisualizer->setStartSpeaking();
+ LLString gestureString = "unInitialized";
+ if ( mCurrentGesticulationLevel == 0 ) { gestureString = "/voicelevel1"; }
+ else if ( mCurrentGesticulationLevel == 1 ) { gestureString = "/voicelevel2"; }
+ else if ( mCurrentGesticulationLevel == 2 ) { gestureString = "/voicelevel3"; }
+ else { llinfos << "oops - CurrentGesticulationLevel can be only 0, 1, or 2" << llendl; }
- //printf( "gAwayTimer.reset();\n" );
- }
-
- mVoiceVisualizer->setSpeakingAmplitude( gVoiceClient->getCurrentPower( mID ) );
-
- if( mIsSelf )
- {
- gAgent.clearAFK();
+ // this is the call that Karl S. created for triggering gestures from within the code.
+ gGestureManager.triggerAndReviseString( gestureString );
}
}
- else
+
+ } //if( mIsSelf )
+
+ //-----------------------------------------------------------------------------------------------------------------
+ // If the avatar is speaking, then the voice amplitude signal is passed to the voice visualizer.
+ // Also, here we trigger voice visualizer start and stop speaking, so it can animate the voice symbol.
+ //
+ // Notice the calls to "gAwayTimer.reset()". This resets the timer that determines how long the avatar has been
+ // "away", so that the avatar doesn't lapse into away-mode (and slump over) while the user is still talking.
+ //-----------------------------------------------------------------------------------------------------------------
+ if ( gVoiceClient->getIsSpeaking( mID ) )
+ {
+ if ( ! mVoiceVisualizer->getCurrentlySpeaking() )
+ {
+ mVoiceVisualizer->setStartSpeaking();
+
+ //printf( "gAwayTimer.reset();\n" );
+ }
+
+ mVoiceVisualizer->setSpeakingAmplitude( gVoiceClient->getCurrentPower( mID ) );
+
+ if( mIsSelf )
+ {
+ gAgent.clearAFK();
+ }
+ }
+ else
+ {
+ if ( mVoiceVisualizer->getCurrentlySpeaking() )
{
- if ( mVoiceVisualizer->getCurrentlySpeaking() )
+ mVoiceVisualizer->setStopSpeaking();
+
+ if ( mLipSyncActive )
{
- mVoiceVisualizer->setStopSpeaking();
+ if( mOohMorph ) mOohMorph->setWeight(mOohMorph->getMinWeight(), FALSE);
+ if( mAahMorph ) mAahMorph->setWeight(mAahMorph->getMinWeight(), FALSE);
+
+ mLipSyncActive = false;
+ LLCharacter::updateVisualParams();
+ dirtyMesh();
}
}
-
- //--------------------------------------------------------------------------------------------
- // here we get the approximate head position and set as sound source for the voice symbol
- // (the following version uses a tweak of "mHeadOffset" which handle sitting vs. standing)
- //--------------------------------------------------------------------------------------------
- LLVector3 headOffset = LLVector3( 0.0f, 0.0f, mHeadOffset.mV[2] );
- mVoiceVisualizer->setVoiceSourceWorldPosition( mRoot.getWorldPosition() + headOffset );
-
- }//if ( voiceEnabled )
- }
- //End Ventrella
+ }
+
+ //--------------------------------------------------------------------------------------------
+ // here we get the approximate head position and set as sound source for the voice symbol
+ // (the following version uses a tweak of "mHeadOffset" which handle sitting vs. standing)
+ //--------------------------------------------------------------------------------------------
+ LLVector3 headOffset = LLVector3( 0.0f, 0.0f, mHeadOffset.mV[2] );
+ mVoiceVisualizer->setVoiceSourceWorldPosition( mRoot.getWorldPosition() + headOffset );
+
+ }//if ( voiceEnabled )
if (LLVOAvatar::sJointDebug)
{
@@ -2704,6 +2725,76 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time)
dirtyMesh();
}
+ // Use the Lipsync_Ooh and Lipsync_Aah morphs for lip sync
+ if ( voiceEnabled && (gVoiceClient->lipSyncEnabled()) && gVoiceClient->getIsSpeaking( mID ) )
+ {
+ F32 ooh_morph_amount = 0.0f;
+ F32 aah_morph_amount = 0.0f;
+
+ mVoiceVisualizer->lipSyncOohAah( ooh_morph_amount, aah_morph_amount );
+
+ if( mOohMorph )
+ {
+ F32 ooh_weight = mOohMorph->getMinWeight()
+ + ooh_morph_amount * (mOohMorph->getMaxWeight() - mOohMorph->getMinWeight());
+
+ mOohMorph->setWeight( ooh_weight, FALSE );
+ }
+
+ if( mAahMorph )
+ {
+ F32 aah_weight = mAahMorph->getMinWeight()
+ + aah_morph_amount * (mAahMorph->getMaxWeight() - mAahMorph->getMinWeight());
+
+ mAahMorph->setWeight( aah_weight, FALSE );
+ }
+
+ mLipSyncActive = true;
+ LLCharacter::updateVisualParams();
+ dirtyMesh();
+ }
+
+ // update visibility when avatar is partially loaded
+ if (updateIsFullyLoaded()) // changed?
+ {
+ if (isFullyLoaded())
+ {
+ deleteParticleSource();
+ }
+ else
+ {
+ LLPartSysData particle_parameters;
+
+ // fancy particle cloud designed by Brent
+ particle_parameters.mPartData.mMaxAge = 4.f;
+ particle_parameters.mPartData.mStartScale.mV[VX] = 0.8f;
+ particle_parameters.mPartData.mStartScale.mV[VX] = 0.8f;
+ particle_parameters.mPartData.mStartScale.mV[VY] = 1.0f;
+ particle_parameters.mPartData.mEndScale.mV[VX] = 0.02f;
+ particle_parameters.mPartData.mEndScale.mV[VY] = 0.02f;
+ particle_parameters.mPartData.mStartColor = LLColor4(1, 1, 1, 0.5f);
+ particle_parameters.mPartData.mEndColor = LLColor4(1, 1, 1, 0.0f);
+ particle_parameters.mPartData.mStartScale.mV[VX] = 0.8f;
+ LLViewerImage* cloud = gImageList.getImageFromFile("cloud-particle.j2c");
+ particle_parameters.mPartImageID = cloud->getID();
+ particle_parameters.mMaxAge = 0.f;
+ particle_parameters.mPattern = LLPartSysData::LL_PART_SRC_PATTERN_ANGLE_CONE;
+ particle_parameters.mInnerAngle = 3.14159f;
+ particle_parameters.mOuterAngle = 0.f;
+ particle_parameters.mBurstRate = 0.02f;
+ particle_parameters.mBurstRadius = 0.0f;
+ particle_parameters.mBurstPartCount = 1;
+ particle_parameters.mBurstSpeedMin = 0.1f;
+ particle_parameters.mBurstSpeedMax = 1.f;
+ particle_parameters.mPartData.mFlags = ( LLPartData::LL_PART_INTERP_COLOR_MASK | LLPartData::LL_PART_INTERP_SCALE_MASK |
+ LLPartData::LL_PART_EMISSIVE_MASK | // LLPartData::LL_PART_FOLLOW_SRC_MASK |
+ LLPartData::LL_PART_TARGET_POS_MASK );
+
+ setParticleSource(particle_parameters, getID());
+ }
+ }
+
+
// update wind effect
if ((LLShaderMgr::getVertexShaderLevel(LLShaderMgr::SHADER_AVATAR) >= LLDrawPoolAvatar::SHADER_LEVEL_CLOTH))
{
@@ -3883,7 +3974,7 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
if (mDirtyMesh || mDrawable->isState(LLDrawable::REBUILD_GEOMETRY))
{ //LOD changed or new mesh created, allocate new vertex buffer if needed
updateMeshData();
- mDirtyMesh = FALSE;
+ mDirtyMesh = FALSE;
mNeedsSkin = TRUE;
mDrawable->clearState(LLDrawable::REBUILD_GEOMETRY);
}
@@ -3957,7 +4048,10 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
}
// render collision normal
- if (sShowFootPlane && mDrawable.notNull())
+ // *NOTE: this is disabled (there is no UI for enabling sShowFootPlane) due
+ // to DEV-14477. the code is left here to aid in tracking down the cause
+ // of the crash in the future. -brad
+ if (!gRenderForSelect && sShowFootPlane && mDrawable.notNull())
{
LLVector3 slaved_pos = mDrawable->getPositionAgent();
LLVector3 foot_plane_normal(mFootPlane.mV[VX], mFootPlane.mV[VY], mFootPlane.mV[VZ]);
@@ -3985,7 +4079,9 @@ U32 LLVOAvatar::renderSkinned(EAvatarRenderPass pass)
gGL.vertex3f(collide_point.mV[VX], collide_point.mV[VY], collide_point.mV[VZ]);
gGL.vertex3f(collide_point.mV[VX] + mFootPlane.mV[VX], collide_point.mV[VY] + mFootPlane.mV[VY], collide_point.mV[VZ] + mFootPlane.mV[VZ]);
- }gGL.end();
+ }
+ gGL.end();
+ gGL.flush();
}
//--------------------------------------------------------------------
// render all geomety attached to the skeleton
@@ -4027,23 +4123,23 @@ U32 LLVOAvatar::renderTransparent()
BOOL first_pass = FALSE;
if( isWearingWearableType( WT_SKIRT ) )
{
- glAlphaFunc(GL_GREATER,0.25f);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.25f);
num_indices += mSkirtLOD.render(mAdjustedPixelArea, FALSE);
first_pass = FALSE;
- glAlphaFunc(GL_GREATER,0.01f);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
}
if (!mIsSelf || gAgent.needsRenderHead())
{
if (LLPipeline::sImpostorRender)
{
- glAlphaFunc(GL_GREATER, 0.5f);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.5f);
}
num_indices += mEyeLashLOD.render(mAdjustedPixelArea, first_pass);
num_indices += mHairLOD.render(mAdjustedPixelArea, FALSE);
if (LLPipeline::sImpostorRender)
{
- glAlphaFunc(GL_GREATER, 0.01f);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
}
}
@@ -4136,7 +4232,7 @@ U32 LLVOAvatar::renderImpostor(LLColor4U color)
up *= mImpostorDim.mV[1];
LLGLEnable test(GL_ALPHA_TEST);
- glAlphaFunc(GL_GREATER, 0.f);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.f);
gGL.color4f(1,1,1,1);
gGL.color4ubv(color.mV);
@@ -6637,6 +6733,89 @@ BOOL LLVOAvatar::isVisible()
}
+// call periodically to keep isFullyLoaded up to date.
+// returns true if the value has changed.
+BOOL LLVOAvatar::updateIsFullyLoaded()
+{
+ // a "heuristic" to determine if we have enough avatar data to render
+ // (to avoid rendering a "Ruth" - DEV-3168)
+
+ BOOL loading = FALSE;
+
+ // do we have a shape?
+ if (visualParamWeightsAreDefault())
+ {
+ loading = TRUE;
+ }
+
+ // are our texture settings still default?
+ if ((getTEImage( TEX_HAIR )->getID() == IMG_DEFAULT))
+ {
+ loading = TRUE;
+ }
+
+ // special case to keep nudity off orientation island -
+ // this is fragilely dependent on the compositing system,
+ // which gets available textures in the following order:
+ //
+ // 1) use the baked texture
+ // 2) use the layerset
+ // 3) use the previously baked texture
+ //
+ // on orientation island case (3) can show naked skin.
+ // so we test for that here:
+ //
+ // if we were previously unloaded, and we don't have enough
+ // texture info for our shirt/pants, stay unloaded:
+ if (!mPreviousFullyLoaded)
+ {
+ if ((!isLocalTextureDataAvailable(mLowerBodyLayerSet)) &&
+ (getTEImage(TEX_LOWER_BAKED)->getID() == IMG_DEFAULT_AVATAR))
+ {
+ loading = TRUE;
+ }
+
+ if ((!isLocalTextureDataAvailable(mUpperBodyLayerSet)) &&
+ (getTEImage(TEX_UPPER_BAKED)->getID() == IMG_DEFAULT_AVATAR))
+ {
+ loading = TRUE;
+ }
+ }
+
+
+ // we wait a little bit before giving the all clear,
+ // to let textures settle down
+ const F32 PAUSE = 1.f;
+ if (loading)
+ mFullyLoadedTimer.reset();
+
+ mFullyLoaded = (mFullyLoadedTimer.getElapsedTimeF32() > PAUSE);
+
+
+ // did our loading state "change" from last call?
+ const S32 UPDATE_RATE = 30;
+ BOOL changed =
+ ((mFullyLoaded != mPreviousFullyLoaded) || // if the value is different from the previous call
+ (!mFullyLoadedInitialized) || // if we've never been called before
+ (mFullyLoadedFrameCounter % UPDATE_RATE == 0)); // every now and then issue a change
+
+ mPreviousFullyLoaded = mFullyLoaded;
+ mFullyLoadedInitialized = TRUE;
+ mFullyLoadedFrameCounter++;
+
+ return changed;
+}
+
+
+BOOL LLVOAvatar::isFullyLoaded()
+{
+ if (gSavedSettings.getBOOL("RenderUnloadedAvatar"))
+ return TRUE;
+ else
+ return mFullyLoaded;
+}
+
+
//-----------------------------------------------------------------------------
// findMotion()
//-----------------------------------------------------------------------------
@@ -8289,12 +8468,12 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
}
// static
-void LLVOAvatar::getAnimLabels( LLDynamicArray* labels )
+void LLVOAvatar::getAnimLabels( LLDynamicArray* labels )
{
S32 i;
for( i = 0; i < gUserAnimStatesCount; i++ )
{
- labels->put( gUserAnimStates[i].mLabel );
+ labels->put( LLAnimStateLabels::getStateLabel( gUserAnimStates[i].mName ) );
}
// Special case to trigger away (AFK) state
@@ -8302,13 +8481,13 @@ void LLVOAvatar::getAnimLabels( LLDynamicArray* labels )
}
// static
-void LLVOAvatar::getAnimNames( LLDynamicArray* names )
+void LLVOAvatar::getAnimNames( LLDynamicArray* names )
{
S32 i;
for( i = 0; i < gUserAnimStatesCount; i++ )
{
- names->put( gUserAnimStates[i].mName );
+ names->put( std::string(gUserAnimStates[i].mName) );
}
// Special case to trigger away (AFK) state
@@ -9507,7 +9686,7 @@ BOOL LLVOAvatar::updateLOD()
if (mDirtyMesh || mDrawable->isState(LLDrawable::REBUILD_GEOMETRY))
{ //LOD changed or new mesh created, allocate new vertex buffer if needed
updateMeshData();
- mDirtyMesh = FALSE;
+ mDirtyMesh = FALSE;
mNeedsSkin = TRUE;
mDrawable->clearState(LLDrawable::REBUILD_GEOMETRY);
}
diff --git a/linden/indra/newview/llvoavatar.h b/linden/indra/newview/llvoavatar.h
index bc68cf4..1df8275 100644
--- a/linden/indra/newview/llvoavatar.h
+++ b/linden/indra/newview/llvoavatar.h
@@ -413,8 +413,8 @@ public:
//--------------------------------------------------------------------
BOOL allocateCollisionVolumes( U32 num );
void resetHUDAttachments();
- static void getAnimLabels( LLDynamicArray* labels );
- static void getAnimNames( LLDynamicArray* names );
+ static void getAnimLabels( LLDynamicArray* labels );
+ static void getAnimNames( LLDynamicArray* names );
static void onCustomizeStart();
static void onCustomizeEnd();
@@ -832,6 +832,17 @@ public:
BOOL mAppearanceAnimating;
//--------------------------------------------------------------------
+ // we're morphing for lip sync
+ //--------------------------------------------------------------------
+ bool mLipSyncActive;
+
+ //--------------------------------------------------------------------
+ // cached pointers morphs for lip sync
+ //--------------------------------------------------------------------
+ LLVisualParam *mOohMorph;
+ LLVisualParam *mAahMorph;
+
+ //--------------------------------------------------------------------
// static members
//--------------------------------------------------------------------
static S32 sMaxVisible;
@@ -957,7 +968,21 @@ protected:
static LLVOAvatarSkeletonInfo* sSkeletonInfo;
static LLVOAvatarInfo* sAvatarInfo;
+
+ //--------------------------------------------------------------------
+ // Handling partially loaded avatars (Ruth)
+ //--------------------------------------------------------------------
+public:
+ BOOL isFullyLoaded();
+ BOOL updateIsFullyLoaded();
+private:
+ BOOL mFullyLoaded;
+ BOOL mPreviousFullyLoaded;
+ BOOL mFullyLoadedInitialized;
+ S32 mFullyLoadedFrameCounter;
+ LLFrameTimer mFullyLoadedTimer;
+
protected:
BOOL loadSkeletonNode();
diff --git a/linden/indra/newview/llvocache.cpp b/linden/indra/newview/llvocache.cpp
index 39ee63f..45b7782 100644
--- a/linden/indra/newview/llvocache.cpp
+++ b/linden/indra/newview/llvocache.cpp
@@ -63,7 +63,7 @@ LLVOCacheEntry::LLVOCacheEntry()
}
-static inline void checkedRead(FILE *fp, void *data, size_t nbytes)
+static inline void checkedRead(LLFILE *fp, void *data, size_t nbytes)
{
if (fread(data, 1, nbytes, fp) != nbytes)
{
@@ -72,7 +72,7 @@ static inline void checkedRead(FILE *fp, void *data, size_t nbytes)
}
}
-LLVOCacheEntry::LLVOCacheEntry(FILE *fp)
+LLVOCacheEntry::LLVOCacheEntry(LLFILE *fp)
{
S32 size;
checkedRead(fp, &mLocalID, sizeof(U32));
@@ -153,7 +153,7 @@ void LLVOCacheEntry::dump() const
<< llendl;
}
-static inline void checkedWrite(FILE *fp, const void *data, size_t nbytes)
+static inline void checkedWrite(LLFILE *fp, const void *data, size_t nbytes)
{
if (fwrite(data, 1, nbytes, fp) != nbytes)
{
@@ -161,7 +161,7 @@ static inline void checkedWrite(FILE *fp, const void *data, size_t nbytes)
}
}
-void LLVOCacheEntry::writeToFile(FILE *fp) const
+void LLVOCacheEntry::writeToFile(LLFILE *fp) const
{
checkedWrite(fp, &mLocalID, sizeof(U32));
checkedWrite(fp, &mCRC, sizeof(U32));
diff --git a/linden/indra/newview/llvocache.h b/linden/indra/newview/llvocache.h
index c994d4b..2432f22 100644
--- a/linden/indra/newview/llvocache.h
+++ b/linden/indra/newview/llvocache.h
@@ -45,7 +45,7 @@ class LLVOCacheEntry : public LLDLinked
{
public:
LLVOCacheEntry(U32 local_id, U32 crc, LLDataPackerBinaryBuffer &dp);
- LLVOCacheEntry(FILE *fp);
+ LLVOCacheEntry(LLFILE *fp);
LLVOCacheEntry();
~LLVOCacheEntry();
@@ -55,7 +55,7 @@ public:
S32 getCRCChangeCount() const { return mCRCChangeCount; }
void dump() const;
- void writeToFile(FILE *fp) const;
+ void writeToFile(LLFILE *fp) const;
void assignCRC(U32 crc, LLDataPackerBinaryBuffer &dp);
LLDataPackerBinaryBuffer *getDP(U32 crc);
void recordHit();
diff --git a/linden/indra/newview/llvograss.h b/linden/indra/newview/llvograss.h
index f5b0c5d..679f5dc 100644
--- a/linden/indra/newview/llvograss.h
+++ b/linden/indra/newview/llvograss.h
@@ -56,8 +56,8 @@ public:
U32 block_num,
const EObjectUpdateType update_type,
LLDataPacker *dp);
- static void import(FILE *file, LLMessageSystem *mesgsys, const LLVector3 &pos);
- /*virtual*/ void exportFile(FILE *file, const LLVector3 &position);
+ static void import(LLFILE *file, LLMessageSystem *mesgsys, const LLVector3 &pos);
+ /*virtual*/ void exportFile(LLFILE *file, const LLVector3 &position);
void updateDrawable(BOOL force_damped);
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp
index 738eeac..7f63aca 100644
--- a/linden/indra/newview/llvoiceclient.cpp
+++ b/linden/indra/newview/llvoiceclient.cpp
@@ -268,7 +268,7 @@ LLIOPipe::EStatus LLVivoxProtocolParser::process_impl(
}
else
{
- llinfos << "parsing: " << mInput.substr(start, delim - start) << llendl;
+ LL_INFOS("Voice") << "parsing: " << mInput.substr(start, delim - start) << LL_ENDL;
}
}
@@ -287,12 +287,12 @@ LLIOPipe::EStatus LLVivoxProtocolParser::process_impl(
if(start != 0)
mInput = mInput.substr(start);
-// llinfos << "at end, mInput is: " << mInput << llendl;
+ LL_DEBUGS("Voice") << "at end, mInput is: " << mInput << LL_ENDL;
if(!gVoiceClient->mConnected)
{
// If voice has been disabled, we just want to close the socket. This does so.
- llinfos << "returning STATUS_STOP" << llendl;
+ LL_INFOS("Voice") << "returning STATUS_STOP" << LL_ENDL;
return STATUS_STOP;
}
@@ -366,17 +366,17 @@ void LLVivoxProtocolParser::StartTag(const char *tag, const char **attr)
}
}
}
- //llinfos << tag << " (" << responseDepth << ")" << llendl;
+ LL_DEBUGS("Voice") << tag << " (" << responseDepth << ")" << LL_ENDL;
}
else
{
if (ignoringTags)
{
- //llinfos << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << llendl;
+ LL_DEBUGS("Voice") << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL;
}
else
{
- //llinfos << tag << " (" << responseDepth << ")" << llendl;
+ LL_DEBUGS("Voice") << tag << " (" << responseDepth << ")" << LL_ENDL;
// Ignore the InputXml stuff so we don't get confused
if (strcmp("InputXml", tag) == 0)
@@ -385,7 +385,7 @@ void LLVivoxProtocolParser::StartTag(const char *tag, const char **attr)
ignoreDepth = responseDepth;
accumulateText = false;
- //llinfos << "starting ignore, ignoreDepth is " << ignoreDepth << llendl;
+ LL_DEBUGS("Voice") << "starting ignore, ignoreDepth is " << ignoreDepth << LL_ENDL;
}
else if (strcmp("CaptureDevices", tag) == 0)
{
@@ -413,18 +413,18 @@ void LLVivoxProtocolParser::EndTag(const char *tag)
{
if (ignoreDepth == responseDepth)
{
- //llinfos << "end of ignore" << llendl;
+ LL_DEBUGS("Voice") << "end of ignore" << LL_ENDL;
ignoringTags = false;
}
else
{
- //llinfos << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << llendl;
+ LL_DEBUGS("Voice") << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL;
}
}
if (!ignoringTags)
{
- //llinfos << "processing tag " << tag << " (depth = " << responseDepth << ")" << llendl;
+ LL_DEBUGS("Voice") << "processing tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL;
// Closing a tag. Finalize the text we've accumulated and reset
if (strcmp("ReturnCode", tag) == 0)
@@ -531,7 +531,7 @@ void LLVivoxProtocolParser::CharData(const char *buffer, int length)
void LLVivoxProtocolParser::processResponse(std::string tag)
{
- //llinfos << tag << llendl;
+ LL_DEBUGS("Voice") << tag << LL_ENDL;
if (isEvent)
{
@@ -700,9 +700,9 @@ private:
void LLVoiceClientCapResponder::error(U32 status, const std::string& reason)
{
- llwarns << "LLVoiceClientCapResponder::error("
+ LL_WARNS("Voice") << "LLVoiceClientCapResponder::error("
<< status << ": " << reason << ")"
- << llendl;
+ << LL_ENDL;
}
void LLVoiceClientCapResponder::result(const LLSD& content)
@@ -710,8 +710,8 @@ void LLVoiceClientCapResponder::result(const LLSD& content)
LLSD::map_const_iterator iter;
for(iter = content.beginMap(); iter != content.endMap(); ++iter)
{
- llinfos << "LLVoiceClientCapResponder::result got "
- << iter->first << llendl;
+ LL_DEBUGS("Voice") << "LLVoiceClientCapResponder::result got "
+ << iter->first << LL_ENDL;
}
if ( content.has("voice_credentials") )
@@ -833,6 +833,7 @@ LLVoiceClient::LLVoiceClient()
setCaptureDevice(captureDevice);
std::string renderDevice = gSavedSettings.getString("VoiceOutputAudioDevice");
setRenderDevice(renderDevice);
+ mLipSyncEnabled = gSavedSettings.getBOOL("LipSyncEnabled");
mTuningMode = false;
mTuningEnergy = 0.0f;
@@ -917,7 +918,7 @@ bool LLVoiceClient::writeString(const std::string &str)
apr_size_t size = (apr_size_t)str.size();
apr_size_t written = size;
-// llinfos << "sending: " << str << llendl;
+ LL_DEBUGS("Voice") << "sending: " << str << LL_ENDL;
// MBW -- XXX -- check return code - sockets will fail (broken, etc.)
err = apr_socket_send(
@@ -940,7 +941,7 @@ bool LLVoiceClient::writeString(const std::string &str)
{
// Assume any socket error means something bad. For now, just close the socket.
char buf[MAX_STRING];
- llwarns << "apr error " << err << " ("<< apr_strerror(err, buf, MAX_STRING) << ") sending data to vivox daemon." << llendl;
+ LL_WARNS("Voice") << "apr error " << err << " ("<< apr_strerror(err, buf, MAX_STRING) << ") sending data to vivox daemon." << LL_ENDL;
daemonDied();
}
}
@@ -964,7 +965,7 @@ void LLVoiceClient::connectorCreate()
if(savedLogLevel != "-1")
{
- llinfos << "creating connector with logging enabled" << llendl;
+ LL_DEBUGS("Voice") << "creating connector with logging enabled" << LL_ENDL;
loglevel = "10";
logpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "");
}
@@ -1013,15 +1014,9 @@ void LLVoiceClient::userAuthorized(const std::string& firstName, const std::stri
mAccountDisplayName += " ";
mAccountDisplayName += lastName;
- llinfos << "name \"" << mAccountDisplayName << "\" , ID " << agentID << llendl;
+ LL_INFOS("Voice") << "name \"" << mAccountDisplayName << "\" , ID " << agentID << LL_ENDL;
- std::string gridname = gGridName;
- LLString::toLower(gridname);
- if((gGridChoice == GRID_INFO_AGNI) ||
- ((gGridChoice == GRID_INFO_OTHER) && (gridname.find("agni") != std::string::npos)))
- {
- sConnectingToAgni = true;
- }
+ sConnectingToAgni = LLViewerLogin::getInstance()->isInProductionGrid();
// MBW -- XXX -- Enable this when the bhd.vivox.com server gets a real ssl cert.
if(sConnectingToAgni)
@@ -1064,13 +1059,13 @@ void LLVoiceClient::login(
if((getState() >= stateLoggingIn) && (getState() < stateLoggedOut))
{
// Already logged in. This is an internal error.
- llerrs << "called from wrong state." << llendl;
+ LL_ERRS("Voice") << "Can't login again. Called from wrong state." << LL_ENDL;
}
else if ( accountName != mAccountName )
{
//TODO: error?
- llinfos << "Wrong account name! " << accountName
- << " instead of " << mAccountName << llendl;
+ LL_WARNS("Voice") << "Wrong account name! " << accountName
+ << " instead of " << mAccountName << LL_ENDL;
}
else
{
@@ -1166,7 +1161,7 @@ const char *LLVoiceClientStatusObserver::status2string(LLVoiceClientStatusObserv
void LLVoiceClient::setState(state inState)
{
- llinfos << "entering state " << state2string(inState) << llendl;
+ LL_DEBUGS("Voice") << "entering state " << state2string(inState) << LL_ENDL;
mState = inState;
}
@@ -1187,7 +1182,7 @@ void LLVoiceClient::stateMachine()
if(!mConnected)
{
// if voice was turned off after the daemon was launched but before we could connect to it, we may need to issue a kill.
- llinfos << "Disabling voice before connection to daemon, terminating." << llendl;
+ LL_INFOS("Voice") << "Disabling voice before connection to daemon, terminating." << LL_ENDL;
killGateway();
}
@@ -1212,7 +1207,7 @@ void LLVoiceClient::stateMachine()
std::string regionName = region->getName();
std::string capURI = region->getCapability("ParcelVoiceInfoRequest");
-// llinfos << "Region name = \"" << regionName <<"\", " << "parcel local ID = " << parcelLocalID << llendl;
+ LL_DEBUGS("Voice") << "Region name = \"" << regionName <<"\", " << "parcel local ID = " << parcelLocalID << LL_ENDL;
// The region name starts out empty and gets filled in later.
// Also, the cap gets filled in a short time after the region cross, but a little too late for our purposes.
@@ -1276,7 +1271,7 @@ void LLVoiceClient::stateMachine()
args += " -ll ";
args += loglevel;
-// llinfos << "Args for SLVoice: " << args << llendl;
+ LL_DEBUGS("Voice") << "Args for SLVoice: " << args << LL_ENDL;
#if LL_WINDOWS
PROCESS_INFORMATION pinfo;
@@ -1348,7 +1343,7 @@ void LLVoiceClient::stateMachine()
}
else
{
- llinfos << exe_path << "not found." << llendl
+ LL_INFOS("Voice") << exe_path << "not found." << LL_ENDL
}
}
else
@@ -1375,7 +1370,7 @@ void LLVoiceClient::stateMachine()
break;
case stateDaemonLaunched:
-// llinfos << "Connecting to vivox daemon" << llendl;
+ LL_DEBUGS("Voice") << "Connecting to vivox daemon" << LL_ENDL;
if(mUpdateTimer.hasExpired())
{
mUpdateTimer.setTimerExpirySec(CONNECT_THROTTLE_SECONDS);
@@ -1532,7 +1527,7 @@ void LLVoiceClient::stateMachine()
if(mTuningMicVolumeDirty)
{
- llinfos << "setting tuning mic level to " << mTuningMicVolume << llendl;
+ LL_INFOS("Voice") << "setting tuning mic level to " << mTuningMicVolume << LL_ENDL;
stream
<< ""
<< "" << mTuningMicVolume << ""
@@ -1583,12 +1578,12 @@ void LLVoiceClient::stateMachine()
if(mLoginRetryCount > MAX_LOGIN_RETRIES)
{
- llinfos << "too many login retries, giving up." << llendl;
+ LL_WARNS("Voice") << "too many login retries, giving up." << LL_ENDL;
setState(stateLoginFailed);
}
else
{
- llinfos << "will retry login in " << LOGIN_RETRY_SECONDS << " seconds." << llendl;
+ LL_INFOS("Voice") << "will retry login in " << LOGIN_RETRY_SECONDS << " seconds." << LL_ENDL;
mUpdateTimer.start();
mUpdateTimer.setTimerExpirySec(LOGIN_RETRY_SECONDS);
setState(stateLoginRetryWait);
@@ -1848,7 +1843,7 @@ void LLVoiceClient::stateMachine()
case stateJoinSessionFailed:
// Transition to error state. Send out any notifications here.
- llwarns << "stateJoinSessionFailed: (" << mVivoxErrorStatusCode << "): " << mVivoxErrorStatusString << llendl;
+ LL_WARNS("Voice") << "stateJoinSessionFailed: (" << mVivoxErrorStatusCode << "): " << mVivoxErrorStatusString << LL_ENDL;
notifyStatusObservers(LLVoiceClientStatusObserver::ERROR_UNKNOWN);
setState(stateJoinSessionFailedWaiting);
break;
@@ -1868,8 +1863,7 @@ void LLVoiceClient::stateMachine()
case stateMicTuningNoLogin:
// *TODO: Implement me.
- llwarns << "stateMicTuningNoLogin not handled"
- << llendl;
+ LL_WARNS("Voice") << "stateMicTuningNoLogin not handled" << LL_ENDL;
break;
}
@@ -1938,7 +1932,7 @@ void LLVoiceClient::channelGetListSendMessage()
void LLVoiceClient::sessionCreateSendMessage()
{
- llinfos << "requesting join: " << mNextSessionURI << llendl;
+ LL_DEBUGS("Voice") << "requesting join: " << mNextSessionURI << LL_ENDL;
mSessionURI = mNextSessionURI;
mNonSpatialChannel = !mNextSessionSpatial;
@@ -1978,7 +1972,7 @@ void LLVoiceClient::sessionCreateSendMessage()
void LLVoiceClient::sessionConnectSendMessage()
{
- llinfos << "connecting to session handle: " << mNextSessionHandle << llendl;
+ LL_DEBUGS("Voice") << "connecting to session handle: " << mNextSessionHandle << LL_ENDL;
mSessionHandle = mNextSessionHandle;
mSessionURI = mNextP2PSessionURI;
@@ -2007,7 +2001,7 @@ void LLVoiceClient::sessionTerminate()
void LLVoiceClient::sessionTerminateSendMessage()
{
- llinfos << "leaving session: " << mSessionURI << llendl;
+ LL_DEBUGS("Voice") << "leaving session: " << mSessionURI << LL_ENDL;
switch(getState())
{
@@ -2026,7 +2020,7 @@ void LLVoiceClient::sessionTerminateSendMessage()
}
else
{
- llwarns << "called with no session handle" << llendl;
+ LL_WARNS("Voice") << "called with no session handle" << LL_ENDL;
setState(stateSessionTerminated);
}
break;
@@ -2036,14 +2030,14 @@ void LLVoiceClient::sessionTerminateSendMessage()
break;
default:
- llwarns << "called from unknown state" << llendl;
+ LL_WARNS("Voice") << "called from unknown state" << LL_ENDL;
break;
}
}
void LLVoiceClient::sessionTerminateByHandle(std::string &sessionHandle)
{
- llinfos << "Sending Session.Terminate with handle " << sessionHandle << llendl;
+ LL_DEBUGS("Voice") << "Sending Session.Terminate with handle " << sessionHandle << LL_ENDL;
std::ostringstream stream;
stream
@@ -2078,14 +2072,14 @@ void LLVoiceClient::getRenderDevicesSendMessage()
void LLVoiceClient::clearCaptureDevices()
{
// MBW -- XXX -- do something here
- llinfos << "called" << llendl;
+ LL_DEBUGS("Voice") << "called" << LL_ENDL;
mCaptureDevices.clear();
}
void LLVoiceClient::addCaptureDevice(const std::string& name)
{
// MBW -- XXX -- do something here
- llinfos << name << llendl;
+ LL_DEBUGS("Voice") << name << LL_ENDL;
mCaptureDevices.push_back(name);
}
@@ -2118,14 +2112,14 @@ void LLVoiceClient::setCaptureDevice(const std::string& name)
void LLVoiceClient::clearRenderDevices()
{
// MBW -- XXX -- do something here
- llinfos << "called" << llendl;
+ LL_DEBUGS("Voice") << "called" << LL_ENDL;
mRenderDevices.clear();
}
void LLVoiceClient::addRenderDevice(const std::string& name)
{
// MBW -- XXX -- do something here
- llinfos << name << llendl;
+ LL_DEBUGS("Voice") << name << LL_ENDL;
mRenderDevices.push_back(name);
}
@@ -2209,7 +2203,7 @@ void LLVoiceClient::tuningRenderStopSendMessage()
void LLVoiceClient::tuningCaptureStartSendMessage(int duration)
{
- llinfos << "sending CaptureAudioStart" << llendl;
+ LL_DEBUGS("Voice") << "sending CaptureAudioStart" << LL_ENDL;
std::ostringstream stream;
stream
@@ -2222,7 +2216,7 @@ void LLVoiceClient::tuningCaptureStartSendMessage(int duration)
void LLVoiceClient::tuningCaptureStopSendMessage()
{
- llinfos << "sending CaptureAudioStop" << llendl;
+ LL_DEBUGS("Voice") << "sending CaptureAudioStop" << LL_ENDL;
std::ostringstream stream;
stream
@@ -2295,7 +2289,7 @@ void LLVoiceClient::refreshDeviceLists(bool clearCurrentList)
void LLVoiceClient::daemonDied()
{
// The daemon died, so the connection is gone. Reset everything and start over.
- llwarns << "Connection to vivox daemon lost. Resetting state."<< llendl;
+ LL_WARNS("Voice") << "Connection to vivox daemon lost. Resetting state."<< LL_ENDL;
closeSocket();
removeAllParticipants();
@@ -2331,7 +2325,7 @@ void LLVoiceClient::sendPositionalUpdate(void)
u = mAvatarRot.getUpRow();
a = mAvatarRot.getFwdRow();
-// llinfos << "Sending speaker position " << mSpeakerPosition << llendl;
+ LL_DEBUGS("Voice") << "Sending speaker position " << mAvatarPosition << LL_ENDL;
stream
<< ""
@@ -2394,7 +2388,7 @@ void LLVoiceClient::sendPositionalUpdate(void)
u = earRot.getUpRow();
a = earRot.getFwdRow();
-// llinfos << "Sending listener position " << mListenerPosition << llendl;
+ LL_DEBUGS("Voice") << "Sending listener position " << earPosition << LL_ENDL;
stream
<< ""
@@ -2434,7 +2428,7 @@ void LLVoiceClient::sendPositionalUpdate(void)
// NOTE that the state of "PTT" is the inverse of "local mute".
// (i.e. when PTT is true, we send a mute command with "false", and vice versa)
-// llinfos << "Sending MuteLocalMic command with parameter " << (mPTT?"false":"true") << llendl;
+ LL_DEBUGS("Voice") << "Sending MuteLocalMic command with parameter " << (mPTT?"false":"true") << LL_ENDL;
stream << ""
<< "" << mConnectorHandle << ""
@@ -2455,7 +2449,7 @@ void LLVoiceClient::sendPositionalUpdate(void)
{
int volume = p->mOnMuteList?0:p->mUserVolume;
- llinfos << "Setting volume for avatar " << p->mAvatarID << " to " << volume << llendl;
+ LL_INFOS("Voice") << "Setting volume for avatar " << p->mAvatarID << " to " << volume << LL_ENDL;
// Send a mute/unumte command for the user (actually "volume for me").
stream << ""
@@ -2472,7 +2466,7 @@ void LLVoiceClient::sendPositionalUpdate(void)
if(mSpeakerMuteDirty)
{
const char *muteval = ((mSpeakerVolume == -100)?"true":"false");
- llinfos << "Setting speaker mute to " << muteval << llendl;
+ LL_INFOS("Voice") << "Setting speaker mute to " << muteval << LL_ENDL;
stream << ""
<< "" << mConnectorHandle << ""
@@ -2482,7 +2476,7 @@ void LLVoiceClient::sendPositionalUpdate(void)
if(mSpeakerVolumeDirty)
{
- llinfos << "Setting speaker volume to " << mSpeakerVolume << llendl;
+ LL_INFOS("Voice") << "Setting speaker volume to " << mSpeakerVolume << LL_ENDL;
stream << ""
<< "" << mConnectorHandle << ""
@@ -2492,7 +2486,7 @@ void LLVoiceClient::sendPositionalUpdate(void)
if(mMicVolumeDirty)
{
- llinfos << "Setting mic volume to " << mMicVolume << llendl;
+ LL_INFOS("Voice") << "Setting mic volume to " << mMicVolume << LL_ENDL;
stream << ""
<< "" << mConnectorHandle << ""
@@ -2529,7 +2523,7 @@ void LLVoiceClient::sendPositionalUpdate(void)
void LLVoiceClient::buildSetCaptureDevice(std::ostringstream &stream)
{
- llinfos << "Setting input device = \"" << mCaptureDevice << "\"" << llendl;
+ LL_DEBUGS("Voice") << "Setting input device = \"" << mCaptureDevice << "\"" << LL_ENDL;
stream
<< ""
@@ -2540,7 +2534,7 @@ void LLVoiceClient::buildSetCaptureDevice(std::ostringstream &stream)
void LLVoiceClient::buildSetRenderDevice(std::ostringstream &stream)
{
- llinfos << "Setting output device = \"" << mRenderDevice << "\"" << llendl;
+ LL_DEBUGS("Voice") << "Setting output device = \"" << mRenderDevice << "\"" << LL_ENDL;
stream
<< ""
@@ -2556,7 +2550,7 @@ void LLVoiceClient::connectorCreateResponse(int statusCode, std::string &statusS
{
if(statusCode != 0)
{
- llwarns << "Connector.Create response failure: " << statusString << llendl;
+ LL_WARNS("Voice") << "Connector.Create response failure: " << statusString << LL_ENDL;
setState(stateConnectorFailed);
}
else
@@ -2572,19 +2566,19 @@ void LLVoiceClient::connectorCreateResponse(int statusCode, std::string &statusS
void LLVoiceClient::loginResponse(int statusCode, std::string &statusString, std::string &accountHandle)
{
- llinfos << "Account.Login response (" << statusCode << "): " << statusString << llendl;
+ LL_DEBUGS("Voice") << "Account.Login response (" << statusCode << "): " << statusString << LL_ENDL;
// Status code of 20200 means "bad password". We may want to special-case that at some point.
if ( statusCode == 401 )
{
// Login failure which is probably caused by the delay after a user's password being updated.
- llinfos << "Account.Login response failure (" << statusCode << "): " << statusString << llendl;
+ LL_INFOS("Voice") << "Account.Login response failure (" << statusCode << "): " << statusString << LL_ENDL;
setState(stateLoginRetry);
}
else if(statusCode != 0)
{
- llwarns << "Account.Login response failure (" << statusCode << "): " << statusString << llendl;
+ LL_WARNS("Voice") << "Account.Login response failure (" << statusCode << "): " << statusString << LL_ENDL;
setState(stateLoginFailed);
}
else
@@ -2603,7 +2597,7 @@ void LLVoiceClient::channelGetListResponse(int statusCode, std::string &statusSt
{
if(statusCode != 0)
{
- llwarns << "Account.ChannelGetList response failure: " << statusString << llendl;
+ LL_WARNS("Voice") << "Account.ChannelGetList response failure: " << statusString << LL_ENDL;
switchChannel();
}
else
@@ -2613,12 +2607,12 @@ void LLVoiceClient::channelGetListResponse(int statusCode, std::string &statusSt
if(uri.empty())
{
// Lookup failed, can't join a channel for this area.
- llinfos << "failed to map channel name: " << mChannelName << llendl;
+ LL_INFOS("Voice") << "failed to map channel name: " << mChannelName << LL_ENDL;
}
else
{
// We have a sip URL for this area.
- llinfos << "mapped channel " << mChannelName << " to URI "<< uri << llendl;
+ LL_INFOS("Voice") << "mapped channel " << mChannelName << " to URI "<< uri << LL_ENDL;
}
// switchChannel with an empty uri string will do the right thing (leave channel and not rejoin)
@@ -2630,13 +2624,13 @@ void LLVoiceClient::sessionCreateResponse(int statusCode, std::string &statusStr
{
if(statusCode != 0)
{
- llwarns << "Session.Create response failure (" << statusCode << "): " << statusString << llendl;
+ LL_WARNS("Voice") << "Session.Create response failure (" << statusCode << "): " << statusString << LL_ENDL;
// if(statusCode == 1015)
// {
// if(getState() == stateJoiningSession)
// {
// // this happened during a real join. Going to sessionTerminated should cause a retry in appropriate cases.
-// llwarns << "session handle \"" << sessionHandle << "\", mSessionStateEventHandle \"" << mSessionStateEventHandle << "\""<< llendl;
+// LL_WARNS("Voice") << "session handle \"" << sessionHandle << "\", mSessionStateEventHandle \"" << mSessionStateEventHandle << "\""<< LL_ENDL;
// if(!sessionHandle.empty())
// {
// // This session is bad. Terminate it.
@@ -2658,7 +2652,7 @@ void LLVoiceClient::sessionCreateResponse(int statusCode, std::string &statusStr
// else
// {
// // We didn't think we were in the middle of a join. Don't change state.
-// llwarns << "Not in stateJoiningSession, ignoring" << llendl;
+// LL_WARNS("Voice") << "Not in stateJoiningSession, ignoring" << LL_ENDL;
// }
// }
// else
@@ -2670,7 +2664,7 @@ void LLVoiceClient::sessionCreateResponse(int statusCode, std::string &statusStr
}
else
{
- llinfos << "Session.Create response received (success), session handle is " << sessionHandle << llendl;
+ LL_DEBUGS("Voice") << "Session.Create response received (success), session handle is " << sessionHandle << LL_ENDL;
if(getState() == stateJoiningSession)
{
// This is also grabbed in the SessionStateChangeEvent handler, but it might be useful to have it early...
@@ -2688,10 +2682,10 @@ void LLVoiceClient::sessionConnectResponse(int statusCode, std::string &statusSt
{
if(statusCode != 0)
{
- llwarns << "Session.Connect response failure (" << statusCode << "): " << statusString << llendl;
+ LL_WARNS("Voice") << "Session.Connect response failure (" << statusCode << "): " << statusString << LL_ENDL;
// if(statusCode == 1015)
// {
-// llwarns << "terminating existing session" << llendl;
+// LL_WARNS("Voice") << "terminating existing session" << LL_ENDL;
// sessionTerminate();
// }
// else
@@ -2703,7 +2697,7 @@ void LLVoiceClient::sessionConnectResponse(int statusCode, std::string &statusSt
}
else
{
- llinfos << "Session.Connect response received (success)" << llendl;
+ LL_DEBUGS("Voice") << "Session.Connect response received (success)" << LL_ENDL;
}
}
@@ -2711,7 +2705,7 @@ void LLVoiceClient::sessionTerminateResponse(int statusCode, std::string &status
{
if(statusCode != 0)
{
- llwarns << "Session.Terminate response failure: (" << statusCode << "): " << statusString << llendl;
+ LL_WARNS("Voice") << "Session.Terminate response failure: (" << statusCode << "): " << statusString << LL_ENDL;
if(getState() == stateLeavingSession)
{
// This is probably "(404): Server reporting Failure. Not a member of this conference."
@@ -2726,7 +2720,7 @@ void LLVoiceClient::logoutResponse(int statusCode, std::string &statusString)
{
if(statusCode != 0)
{
- llwarns << "Account.Logout response failure: " << statusString << llendl;
+ LL_WARNS("Voice") << "Account.Logout response failure: " << statusString << LL_ENDL;
// MBW -- XXX -- Should this ever fail? do we care if it does?
}
@@ -2740,7 +2734,7 @@ void LLVoiceClient::connectorShutdownResponse(int statusCode, std::string &statu
{
if(statusCode != 0)
{
- llwarns << "Connector.InitiateShutdown response failure: " << statusString << llendl;
+ LL_WARNS("Voice") << "Connector.InitiateShutdown response failure: " << statusString << LL_ENDL;
// MBW -- XXX -- Should this ever fail? do we care if it does?
}
@@ -2764,7 +2758,7 @@ void LLVoiceClient::sessionStateChangeEvent(
switch(state)
{
case 4: // I see this when joining the session
- llinfos << "joined session " << uriString << ", name " << nameString << " handle " << mNextSessionHandle << llendl;
+ LL_INFOS("Voice") << "joined session " << uriString << ", name " << nameString << " handle " << mNextSessionHandle << LL_ENDL;
// Session create succeeded, move forward.
mSessionStateEventHandle = sessionHandle;
@@ -2777,23 +2771,23 @@ void LLVoiceClient::sessionStateChangeEvent(
setState(stateSessionJoined);
//RN: the uriString being returned by vivox here is actually your account uri, not the channel
// you are attempting to join, so ignore it
- //llinfos << "received URI " << uriString << "(previously " << mSessionURI << ")" << llendl;
+ //LL_DEBUGS("Voice") << "received URI " << uriString << "(previously " << mSessionURI << ")" << LL_ENDL;
//mSessionURI = uriString;
}
}
else if(sessionHandle == mNextSessionHandle)
{
-// llinfos << "received URI " << uriString << ", name " << nameString << " for next session (handle " << mNextSessionHandle << ")" << llendl;
+// LL_DEBUGS("Voice") << "received URI " << uriString << ", name " << nameString << " for next session (handle " << mNextSessionHandle << ")" << LL_ENDL;
}
else
{
- llwarns << "joining unknown session handle " << sessionHandle << ", URI " << uriString << ", name " << nameString << llendl;
+ LL_WARNS("Voice") << "joining unknown session handle " << sessionHandle << ", URI " << uriString << ", name " << nameString << LL_ENDL;
// MBW -- XXX -- Should we send a Session.Terminate here?
}
break;
case 5: // I see this when leaving the session
- llinfos << "left session " << uriString << ", name " << nameString << " handle " << mNextSessionHandle << llendl;
+ LL_INFOS("Voice") << "left session " << uriString << ", name " << nameString << " handle " << mNextSessionHandle << LL_ENDL;
// Set the session handle to the empty string. If we get back to stateJoiningSession, we'll want to wait for the new session handle.
if(sessionHandle == mSessionHandle)
@@ -2821,17 +2815,17 @@ void LLVoiceClient::sessionStateChangeEvent(
case stateJoinSessionFailed:
case stateJoinSessionFailedWaiting:
// normal transition
- llinfos << "left session " << sessionHandle << "in state " << state2string(getState()) << llendl;
+ LL_INFOS("Voice") << "left session " << sessionHandle << "in state " << state2string(getState()) << LL_ENDL;
setState(stateSessionTerminated);
break;
case stateSessionTerminated:
// this will happen sometimes -- there are cases where we send the terminate and then go straight to this state.
- llwarns << "left session " << sessionHandle << "in state " << state2string(getState()) << llendl;
+ LL_WARNS("Voice") << "left session " << sessionHandle << "in state " << state2string(getState()) << LL_ENDL;
break;
default:
- llwarns << "unexpected SessionStateChangeEvent (left session) in state " << state2string(getState()) << llendl;
+ LL_WARNS("Voice") << "unexpected SessionStateChangeEvent (left session) in state " << state2string(getState()) << LL_ENDL;
setState(stateSessionTerminated);
break;
}
@@ -2842,14 +2836,14 @@ void LLVoiceClient::sessionStateChangeEvent(
}
else
{
- llinfos << "leaving unknown session handle " << sessionHandle << ", URI " << uriString << ", name " << nameString << llendl;
+ LL_INFOS("Voice") << "leaving unknown session handle " << sessionHandle << ", URI " << uriString << ", name " << nameString << LL_ENDL;
}
mSessionStateEventHandle.clear();
mSessionStateEventURI.clear();
break;
default:
- llwarns << "unknown state: " << state << llendl;
+ LL_WARNS("Voice") << "unknown state: " << state << LL_ENDL;
break;
}
}
@@ -2860,7 +2854,7 @@ void LLVoiceClient::loginStateChangeEvent(
std::string &statusString,
int state)
{
- llinfos << "state is " << state << llendl;
+ LL_DEBUGS("Voice") << "state is " << state << LL_ENDL;
/*
According to Mike S., status codes for this event are:
login_state_logged_out=0,
@@ -2881,7 +2875,8 @@ void LLVoiceClient::loginStateChangeEvent(
break;
default:
-// llwarns << "unknown state: " << state << llendl;
+ //Used to be a commented out warning
+ LL_DEBUGS("Voice") << "unknown state: " << state << LL_ENDL;
break;
}
}
@@ -2893,13 +2888,13 @@ void LLVoiceClient::sessionNewEvent(
std::string &nameString,
std::string &uriString)
{
-// llinfos << "state is " << state << llendl;
+ LL_DEBUGS("Voice") << "state is " << state << LL_ENDL;
switch(state)
{
case 0:
{
- llinfos << "session handle = " << eventSessionHandle << ", name = " << nameString << ", uri = " << uriString << llendl;
+ LL_DEBUGS("Voice") << "session handle = " << eventSessionHandle << ", name = " << nameString << ", uri = " << uriString << LL_ENDL;
LLUUID caller_id;
if(IDFromName(nameString, caller_id))
@@ -2917,13 +2912,13 @@ void LLVoiceClient::sessionNewEvent(
}
else
{
- llwarns << "Could not generate caller id from uri " << uriString << llendl;
+ LL_WARNS("Voice") << "Could not generate caller id from uri " << uriString << LL_ENDL;
}
}
break;
default:
- llwarns << "unknown state: " << state << llendl;
+ LL_WARNS("Voice") << "unknown state: " << state << LL_ENDL;
break;
}
}
@@ -2938,7 +2933,7 @@ void LLVoiceClient::participantStateChangeEvent(
int participantType)
{
participantState *participant = NULL;
- llinfos << "state is " << state << llendl;
+ LL_DEBUGS("Voice") << "state is " << state << LL_ENDL;
switch(state)
{
@@ -2947,8 +2942,8 @@ void LLVoiceClient::participantStateChangeEvent(
if(participant)
{
participant->mName = nameString;
- llinfos << "added participant \"" << participant->mName
- << "\" (" << participant->mAvatarID << ")"<< llendl;
+ LL_DEBUGS("Voice") << "added participant \"" << participant->mName
+ << "\" (" << participant->mAvatarID << ")"<< LL_ENDL;
}
break;
case 9: // I see this when a participant leaves
@@ -2959,7 +2954,7 @@ void LLVoiceClient::participantStateChangeEvent(
}
break;
default:
-// llwarns << "unknown state: " << state << llendl;
+ LL_DEBUGS("Voice") << "unknown state: " << state << LL_ENDL;
break;
}
}
@@ -2989,13 +2984,13 @@ void LLVoiceClient::participantPropertiesEvent(
}
else
{
- llwarns << "unknown participant: " << uriString << llendl;
+ LL_WARNS("Voice") << "unknown participant: " << uriString << LL_ENDL;
}
}
void LLVoiceClient::auxAudioPropertiesEvent(F32 energy)
{
-// llinfos << "got energy " << energy << llendl;
+ LL_DEBUGS("Voice") << "got energy " << energy << LL_ENDL;
mTuningEnergy = energy;
}
@@ -3053,7 +3048,7 @@ LLVoiceClient::participantState *LLVoiceClient::addParticipant(const std::string
}
}
- llinfos << "participant \"" << result->mURI << "\" added." << llendl;
+ LL_DEBUGS("Voice") << "participant \"" << result->mURI << "\" added." << LL_ENDL;
}
return result;
@@ -3079,7 +3074,7 @@ void LLVoiceClient::removeParticipant(LLVoiceClient::participantState *participa
{
participantMap::iterator iter = mParticipantMap.find(participant->mURI);
- llinfos << "participant \"" << participant->mURI << "\" (" << participant->mAvatarID << ") removed." << llendl;
+ LL_DEBUGS("Voice") << "participant \"" << participant->mURI << "\" (" << participant->mAvatarID << ") removed." << LL_ENDL;
mParticipantMap.erase(iter);
delete participant;
@@ -3089,7 +3084,7 @@ void LLVoiceClient::removeParticipant(LLVoiceClient::participantState *participa
void LLVoiceClient::removeAllParticipants()
{
- llinfos << "called" << llendl;
+ LL_DEBUGS("Voice") << "called" << LL_ENDL;
while(!mParticipantMap.empty())
{
@@ -3172,7 +3167,7 @@ void LLVoiceClient::clearChannelMap(void)
void LLVoiceClient::addChannelMapEntry(std::string &name, std::string &uri)
{
-// llinfos << "Adding channel name mapping: " << name << " -> " << uri << llendl;
+ LL_DEBUGS("Voice") << "Adding channel name mapping: " << name << " -> " << uri << LL_ENDL;
mChannelMap.insert(channelMap::value_type(name, uri));
}
@@ -3195,7 +3190,7 @@ void LLVoiceClient::parcelChanged()
if(getState() >= stateLoggedIn)
{
// If the user is logged in, start a channel lookup.
- llinfos << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << llendl;
+ LL_DEBUGS("Voice") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << LL_ENDL;
std::string url = gAgent.getRegion()->getCapability("ParcelVoiceInfoRequest");
LLSD data;
@@ -3207,7 +3202,7 @@ void LLVoiceClient::parcelChanged()
else
{
// The transition to stateLoggedIn needs to kick this off again.
- llinfos << "not logged in yet, deferring" << llendl;
+ LL_INFOS("Voice") << "not logged in yet, deferring" << LL_ENDL;
}
}
@@ -3219,7 +3214,7 @@ void LLVoiceClient::switchChannel(
{
bool needsSwitch = false;
- llinfos << "called in state " << state2string(getState()) << " with uri \"" << uri << "\"" << llendl;
+ LL_DEBUGS("Voice") << "called in state " << state2string(getState()) << " with uri \"" << uri << "\"" << LL_ENDL;
switch(getState())
{
@@ -3258,12 +3253,12 @@ void LLVoiceClient::switchChannel(
if(uri.empty())
{
// Leave any channel we may be in
- llinfos << "leaving channel" << llendl;
+ LL_DEBUGS("Voice") << "leaving channel" << LL_ENDL;
notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_VOICE_DISABLED);
}
else
{
- llinfos << "switching to channel " << uri << llendl;
+ LL_DEBUGS("Voice") << "switching to channel " << uri << LL_ENDL;
}
if(getState() <= stateNoChannel)
@@ -3312,12 +3307,12 @@ void LLVoiceClient::setSpatialChannel(
mSpatialSessionURI = uri;
mAreaVoiceDisabled = mSpatialSessionURI.empty();
- llinfos << "got spatial channel uri: \"" << uri << "\"" << llendl;
+ LL_DEBUGS("Voice") << "got spatial channel uri: \"" << uri << "\"" << LL_ENDL;
if(mNonSpatialChannel || !mNextSessionSpatial)
{
// User is in a non-spatial chat or joining a non-spatial chat. Don't switch channels.
- llinfos << "in non-spatial chat, not switching channels" << llendl;
+ LL_INFOS("Voice") << "in non-spatial chat, not switching channels" << LL_ENDL;
}
else
{
@@ -3559,7 +3554,7 @@ void LLVoiceClient::leaveChannel(void)
{
if(getState() == stateRunning)
{
-// llinfos << "leaving channel for teleport/logout" << llendl;
+ LL_DEBUGS("Voice") << "leaving channel for teleport/logout" << LL_ENDL;
mChannelName.clear();
sessionTerminate();
}
@@ -3607,6 +3602,24 @@ bool LLVoiceClient::voiceEnabled()
return gSavedSettings.getBOOL("EnableVoiceChat") && !gSavedSettings.getBOOL("CmdLineDisableVoice");
}
+void LLVoiceClient::setLipSyncEnabled(BOOL enabled)
+{
+ mLipSyncEnabled = enabled;
+}
+
+BOOL LLVoiceClient::lipSyncEnabled()
+{
+
+ if ( mVoiceEnabled && stateDisabled != getState() )
+ {
+ return mLipSyncEnabled;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
void LLVoiceClient::setUsePTT(bool usePTT)
{
if(usePTT && !mUsePTT)
@@ -3650,7 +3663,7 @@ void LLVoiceClient::setEarLocation(S32 loc)
{
if(mEarLocation != loc)
{
- llinfos << "Setting mEarLocation to " << loc << llendl;
+ LL_DEBUGS("Voice") << "Setting mEarLocation to " << loc << LL_ENDL;
mEarLocation = loc;
mSpatialCoordsDirty = true;
@@ -3659,7 +3672,7 @@ void LLVoiceClient::setEarLocation(S32 loc)
void LLVoiceClient::setVoiceVolume(F32 volume)
{
-// llinfos << "volume is " << volume << llendl;
+ LL_DEBUGS("Voice") << "volume is " << volume << LL_ENDL;
// incoming volume has the range [0.0 ... 1.0], with 0.5 as the default.
// Map it as follows: 0.0 -> -100, 0.5 -> 24, 1.0 -> 50
@@ -3708,7 +3721,7 @@ void LLVoiceClient::setVivoxDebugServerName(std::string &serverName)
void LLVoiceClient::keyDown(KEY key, MASK mask)
{
-// llinfos << "key is " << LLKeyboard::stringFromKey(key) << llendl;
+ LL_DEBUGS("Voice") << "key is " << LLKeyboard::stringFromKey(key) << LL_ENDL;
if (gKeyboard->getKeyRepeated(key))
{
@@ -4002,7 +4015,7 @@ void LLVoiceClient::notifyStatusObservers(LLVoiceClientStatusObserver::EStatusTy
mVivoxErrorStatusCode = 0;
}
- llinfos << " " << LLVoiceClientStatusObserver::status2string(status) << ", session URI " << mSessionURI << llendl;
+ LL_DEBUGS("Voice") << " " << LLVoiceClientStatusObserver::status2string(status) << ", session URI " << mSessionURI << LL_ENDL;
for (status_observer_set_t::iterator it = mStatusObservers.begin();
it != mStatusObservers.end();
diff --git a/linden/indra/newview/llvoiceclient.h b/linden/indra/newview/llvoiceclient.h
index d12bfa8..d1609a8 100644
--- a/linden/indra/newview/llvoiceclient.h
+++ b/linden/indra/newview/llvoiceclient.h
@@ -210,6 +210,8 @@ class LLVoiceClient: public LLSingleton
void setMicGain(F32 volume);
void setUserVolume(const LLUUID& id, F32 volume); // set's volume for specified agent, from 0-1 (where .5 is nominal)
void setVivoxDebugServerName(std::string &serverName);
+ void setLipSyncEnabled(BOOL enabled);
+ BOOL lipSyncEnabled();
// PTT key triggering
void keyDown(KEY key, MASK mask);
@@ -516,6 +518,8 @@ class LLVoiceClient: public LLSingleton
LLTimer mUpdateTimer;
+ BOOL mLipSyncEnabled;
+
typedef std::set observer_set_t;
observer_set_t mObservers;
diff --git a/linden/indra/newview/llvoicevisualizer.cpp b/linden/indra/newview/llvoicevisualizer.cpp
index 6b2a3e6..ba16feb 100644
--- a/linden/indra/newview/llvoicevisualizer.cpp
+++ b/linden/indra/newview/llvoicevisualizer.cpp
@@ -45,7 +45,7 @@
#include "llviewerimage.h"
#include "llviewerimagelist.h"
#include "llvoiceclient.h"
-#include "llglimmediate.h"
+#include "llrender.h"
//brent's wave image
//29de489d-0491-fb00-7dab-f9e686d31e83
@@ -79,6 +79,35 @@ const F32 DEFAULT_MAXIMUM_GESTICULATION_AMPLITUDE = 1.0f;
const F32 ONE_HALF = 1.0f; // to clarify intent and reduce magic numbers in the code.
const LLVector3 WORLD_UPWARD_DIRECTION = LLVector3( 0.0f, 0.0f, 1.0f ); // Z is up in SL
+
+//------------------------------------------------------------------
+// handles parameter updates
+//------------------------------------------------------------------
+static bool handleVoiceVisualizerPrefsChanged(const LLSD& newvalue)
+{
+ // Note: Ignore the specific event value, we look up the ones we want
+ LLVoiceVisualizer::setPreferences();
+ return true;
+}
+
+//------------------------------------------------------------------
+// Initialize the statics
+//------------------------------------------------------------------
+bool LLVoiceVisualizer::sPrefsInitialized = false;
+BOOL LLVoiceVisualizer::sLipSyncEnabled = FALSE;
+F32* LLVoiceVisualizer::sOoh = NULL;
+F32* LLVoiceVisualizer::sAah = NULL;
+U32 LLVoiceVisualizer::sOohs = 0;
+U32 LLVoiceVisualizer::sAahs = 0;
+F32 LLVoiceVisualizer::sOohAahRate = 0.0f;
+F32* LLVoiceVisualizer::sOohPowerTransfer = NULL;
+U32 LLVoiceVisualizer::sOohPowerTransfers = 0;
+F32 LLVoiceVisualizer::sOohPowerTransfersf = 0.0f;
+F32* LLVoiceVisualizer::sAahPowerTransfer = NULL;
+U32 LLVoiceVisualizer::sAahPowerTransfers = 0;
+F32 LLVoiceVisualizer::sAahPowerTransfersf = 0.0f;
+
+
//-----------------------------------------------
// constructor
//-----------------------------------------------
@@ -87,6 +116,7 @@ LLVoiceVisualizer::LLVoiceVisualizer( const U8 type )
{
mCurrentTime = mTimer.getTotalSeconds();
mPreviousTime = mCurrentTime;
+ mStartTime = mCurrentTime;
mVoiceSourceWorldPosition = LLVector3( 0.0f, 0.0f, 0.0f );
mSpeakingAmplitude = 0.0f;
mCurrentlySpeaking = false;
@@ -105,7 +135,7 @@ LLVoiceVisualizer::LLVoiceVisualizer( const U8 type )
"29de489d-0491-fb00-7dab-f9e686d31e83.j2c",
"29de489d-0491-fb00-7dab-f9e686d31e83.j2c",
"29de489d-0491-fb00-7dab-f9e686d31e83.j2c",
- "29de489d-0491-fb00-7dab-f9e686d31e83.j2c",
+ "29de489d-0491-fb00-7dab-f9e686d31e83.j2c",
"29de489d-0491-fb00-7dab-f9e686d31e83.j2c"
};
@@ -117,7 +147,23 @@ LLVoiceVisualizer::LLVoiceVisualizer( const U8 type )
mSoundSymbol.mWaveOpacity [i] = 1.0f;
mSoundSymbol.mWaveExpansion [i] = 1.0f;
}
-
+
+ // The first instance loads the initial state from prefs.
+ if (!sPrefsInitialized)
+ {
+ setPreferences();
+
+ // Set up our listener to get updates on all prefs values we care about.
+ gSavedSettings.getControl("LipSyncEnabled")->getSignal()->connect(boost::bind(&handleVoiceVisualizerPrefsChanged, _1));
+ gSavedSettings.getControl("LipSyncOohAahRate")->getSignal()->connect(boost::bind(&handleVoiceVisualizerPrefsChanged, _1));
+ gSavedSettings.getControl("LipSyncOoh")->getSignal()->connect(boost::bind(&handleVoiceVisualizerPrefsChanged, _1));
+ gSavedSettings.getControl("LipSyncAah")->getSignal()->connect(boost::bind(&handleVoiceVisualizerPrefsChanged, _1));
+ gSavedSettings.getControl("LipSyncOohPowerTransfer")->getSignal()->connect(boost::bind(&handleVoiceVisualizerPrefsChanged, _1));
+ gSavedSettings.getControl("LipSyncAahPowerTransfer")->getSignal()->connect(boost::bind(&handleVoiceVisualizerPrefsChanged, _1));
+
+ sPrefsInitialized = true;
+ }
+
}//---------------------------------------------------
//---------------------------------------------------
@@ -144,6 +190,7 @@ void LLVoiceVisualizer::setVoiceEnabled( bool v )
//---------------------------------------------------
void LLVoiceVisualizer::setStartSpeaking()
{
+ mStartTime = mTimer.getTotalSeconds();
mCurrentlySpeaking = true;
mSoundSymbol.mActive = true;
@@ -176,6 +223,130 @@ void LLVoiceVisualizer::setSpeakingAmplitude( F32 a )
//---------------------------------------------------
+void LLVoiceVisualizer::setPreferences( )
+{
+ sLipSyncEnabled = gSavedSettings.getBOOL("LipSyncEnabled");
+ sOohAahRate = gSavedSettings.getF32("LipSyncOohAahRate");
+
+ std::string oohString = gSavedSettings.getString("LipSyncOoh");
+ lipStringToF32s (oohString, sOoh, sOohs);
+
+ std::string aahString = gSavedSettings.getString("LipSyncAah");
+ lipStringToF32s (aahString, sAah, sAahs);
+
+ std::string oohPowerString = gSavedSettings.getString("LipSyncOohPowerTransfer");
+ lipStringToF32s (oohPowerString, sOohPowerTransfer, sOohPowerTransfers);
+ sOohPowerTransfersf = (F32) sOohPowerTransfers;
+
+ std::string aahPowerString = gSavedSettings.getString("LipSyncAahPowerTransfer");
+ lipStringToF32s (aahPowerString, sAahPowerTransfer, sAahPowerTransfers);
+ sAahPowerTransfersf = (F32) sAahPowerTransfers;
+
+}//---------------------------------------------------
+
+
+//---------------------------------------------------
+// convert a string of digits to an array of floats.
+// the result for each digit is the value of the
+// digit multiplied by 0.11
+//---------------------------------------------------
+void LLVoiceVisualizer::lipStringToF32s ( std::string& in_string, F32*& out_F32s, U32& count_F32s )
+{
+ delete[] out_F32s; // get rid of the current array
+
+ count_F32s = in_string.length();
+ if (count_F32s == 0)
+ {
+ // we don't like zero length arrays
+
+ count_F32s = 1;
+ out_F32s = new F32[1];
+ out_F32s[0] = 0.0f;
+ }
+ else
+ {
+ out_F32s = new F32[count_F32s];
+
+ for (U32 i=0; i 9)
+ {
+ four_bits = 9;
+ }
+ out_F32s[i] = 0.11f * (F32) four_bits;
+ }
+ }
+
+}//---------------------------------------------------
+
+
+//--------------------------------------------------------------------------
+// find the amount to blend the ooh and aah mouth morphs
+//--------------------------------------------------------------------------
+void LLVoiceVisualizer::lipSyncOohAah( F32& ooh, F32& aah )
+{
+ if( ( sLipSyncEnabled == TRUE ) && mCurrentlySpeaking )
+ {
+ U32 transfer_index = (U32) (sOohPowerTransfersf * mSpeakingAmplitude);
+ if (transfer_index < 0)
+ {
+ transfer_index = 0;
+ }
+ if (transfer_index >= sOohPowerTransfers)
+ {
+ transfer_index = sOohPowerTransfers - 1;
+ }
+ F32 transfer_ooh = sOohPowerTransfer[transfer_index];
+
+ transfer_index = (U32) (sAahPowerTransfersf * mSpeakingAmplitude);
+ if (transfer_index < 0)
+ {
+ transfer_index = 0;
+ }
+ if (transfer_index >= sAahPowerTransfers)
+ {
+ transfer_index = sAahPowerTransfers - 1;
+ }
+ F32 transfer_aah = sAahPowerTransfer[transfer_index];
+
+ F64 current_time = mTimer.getTotalSeconds();
+ F64 elapsed_time = current_time - mStartTime;
+ U32 elapsed_frames = (U32) (elapsed_time * sOohAahRate);
+ U32 elapsed_oohs = elapsed_frames % sOohs;
+ U32 elapsed_aahs = elapsed_frames % sAahs;
+
+ ooh = transfer_ooh * sOoh[elapsed_oohs];
+ aah = transfer_aah * sAah[elapsed_aahs];
+
+ /*
+ llinfos << " elapsed frames " << elapsed_frames
+ << " ooh " << ooh
+ << " aah " << aah
+ << " transfer ooh" << transfer_ooh
+ << " transfer aah" << transfer_aah
+ << " start time " << mStartTime
+ << " current time " << current_time
+ << " elapsed time " << elapsed_time
+ << " elapsed oohs " << elapsed_oohs
+ << " elapsed aahs " << elapsed_aahs
+ << llendl;
+ */
+ }
+ else
+ {
+ ooh = 0.0f;
+ aah = 0.0f;
+ }
+
+}//---------------------------------------------------
+
+
+//---------------------------------------------------
// this method is inherited from HUD Effect
//---------------------------------------------------
void LLVoiceVisualizer::render()
diff --git a/linden/indra/newview/llvoicevisualizer.h b/linden/indra/newview/llvoicevisualizer.h
index 8b1636f..76eb282 100644
--- a/linden/indra/newview/llvoicevisualizer.h
+++ b/linden/indra/newview/llvoicevisualizer.h
@@ -90,7 +90,9 @@ class LLVoiceVisualizer : public LLHUDEffect
void setStopSpeaking(); // tell me when the av stops speaking
bool getCurrentlySpeaking(); // the get for the above set
VoiceGesticulationLevel getCurrentGesticulationLevel(); // based on voice amplitude, I'll give you the current "energy level" of avatar speech
-
+ static void setPreferences( );
+ static void lipStringToF32s ( std::string& in_string, F32*& out_F32s, U32& count_F32s ); // convert a string of digits to an array of floats
+ void lipSyncOohAah( F32& ooh, F32& aah );
void render(); // inherited from HUD Effect
void packData(LLMessageSystem *mesgsys); // inherited from HUD Effect
void unpackData(LLMessageSystem *mesgsys, S32 blocknum); // inherited from HUD Effect
@@ -124,6 +126,7 @@ class LLVoiceVisualizer : public LLHUDEffect
};
LLFrameTimer mTimer; // so I can ask the current time in seconds
+ F64 mStartTime; // time in seconds when speaking started
F64 mCurrentTime; // current time in seconds, captured every step
F64 mPreviousTime; // copy of "current time" from last frame
SoundSymbol mSoundSymbol; // the sound symbol that appears over the avatar's head
@@ -134,6 +137,24 @@ class LLVoiceVisualizer : public LLHUDEffect
F32 mMaxGesticulationAmplitude; // this is the upper-limit of the envelope of detectable gesticulation leves
F32 mMinGesticulationAmplitude; // this is the lower-limit of the envelope of detectable gesticulation leves
+ //---------------------------------------------------
+ // private static members
+ //---------------------------------------------------
+
+ static BOOL sLipSyncEnabled; // 0 disabled, 1 babble loop
+ static bool sPrefsInitialized; // the first instance will initialize the static members
+ static F32* sOoh; // the babble loop of amplitudes for the ooh morph
+ static F32* sAah; // the babble loop of amplitudes for the ooh morph
+ static U32 sOohs; // the number of entries in the ooh loop
+ static U32 sAahs; // the number of entries in the aah loop
+ static F32 sOohAahRate; // frames per second for the babble loop
+ static F32* sOohPowerTransfer; // the power transfer characteristics for the ooh amplitude
+ static U32 sOohPowerTransfers; // the number of entries in the ooh transfer characteristics
+ static F32 sOohPowerTransfersf; // the number of entries in the ooh transfer characteristics as a float
+ static F32* sAahPowerTransfer; // the power transfer characteristics for the aah amplitude
+ static U32 sAahPowerTransfers; // the number of entries in the aah transfer characteristics
+ static F32 sAahPowerTransfersf; // the number of entries in the aah transfer characteristics as a float
+
};//-----------------------------------------------------------------
// end of LLVoiceVisualizer class
//------------------------------------------------------------------
diff --git a/linden/indra/newview/llvosky.cpp b/linden/indra/newview/llvosky.cpp
index 8e60010..eae322e 100644
--- a/linden/indra/newview/llvosky.cpp
+++ b/linden/indra/newview/llvosky.cpp
@@ -194,11 +194,13 @@ inline void color_gamma_correct(LLColor3 &col)
S32 LLSkyTex::sComponents = 4;
S32 LLSkyTex::sResolution = 64;
-F32 LLSkyTex::sInterpVal = 0.f;
+F32 LLSkyTex::sInterpVal = 0.f;
S32 LLSkyTex::sCurrent = 0;
-LLSkyTex::LLSkyTex()
+LLSkyTex::LLSkyTex() :
+ mSkyData(NULL),
+ mSkyDirs(NULL)
{
}
diff --git a/linden/indra/newview/llvosky.h b/linden/indra/newview/llvosky.h
index 70aa3af..124b690 100644
--- a/linden/indra/newview/llvosky.h
+++ b/linden/indra/newview/llvosky.h
@@ -207,7 +207,7 @@ protected:
F32 mDiskRadius;
BOOL mDraw; // FALSE - do not draw.
F32 mHorizonVisibility; // number [0, 1] due to how horizon
- F32 mVisibility; // same but due to other objects being in frong.
+ F32 mVisibility; // same but due to other objects being in throng.
BOOL mVisible;
static F32 sInterpVal;
LLVector3 mQuadCorner[4];
@@ -217,10 +217,12 @@ protected:
public:
LLHeavenBody(const F32 rad) :
- mDirectionCached(LLVector3(0,0,0)), mDirection(LLVector3(0,0,0)),
- mDiskRadius(rad), mDraw(FALSE),
- mHorizonVisibility(1), mVisibility(1)
-
+ mDirectionCached(LLVector3(0,0,0)),
+ mDirection(LLVector3(0,0,0)),
+ mIntensity(0.f),
+ mDiskRadius(rad), mDraw(FALSE),
+ mHorizonVisibility(1.f), mVisibility(1.f),
+ mVisible(FALSE)
{
mColor.setToBlack();
mColorCached.setToBlack();
@@ -261,7 +263,6 @@ public:
BOOL isVisible() const { return mVisible; }
void setVisible(const BOOL v) { mVisible = v; }
-
const F32& getIntensity() const { return mIntensity; }
void setIntensity(const F32 c) { mIntensity = c; }
@@ -311,19 +312,19 @@ LL_FORCE_INLINE LLColor3 calc_air_sca_sea_level()
const LLColor3 gAirScaSeaLevel = calc_air_sca_sea_level();
const F32 AIR_SCA_INTENS = color_intens(gAirScaSeaLevel);
-const F32 AIR_SCA_AVG = AIR_SCA_INTENS / 3;
+const F32 AIR_SCA_AVG = AIR_SCA_INTENS / 3.f;
class LLHaze
{
public:
- LLHaze() : mG(0), mFalloff(1) {mSigSca.setToBlack();}
- LLHaze(const F32 g, const LLColor3& sca, const F32 fo = 2) :
- mG(g), mSigSca(0.25f/F_PI * sca), mFalloff(fo), mAbsCoef(0)
+ LLHaze() : mG(0), mFalloff(1), mAbsCoef(0.f) {mSigSca.setToBlack();}
+ LLHaze(const F32 g, const LLColor3& sca, const F32 fo = 2.f) :
+ mG(g), mSigSca(0.25f/F_PI * sca), mFalloff(fo), mAbsCoef(0.f)
{
mAbsCoef = color_intens(mSigSca) / AIR_SCA_INTENS;
}
- LLHaze(const F32 g, const F32 sca, const F32 fo = 2) : mG(g),
+ LLHaze(const F32 g, const F32 sca, const F32 fo = 2.f) : mG(g),
mSigSca(0.25f/F_PI * LLColor3(sca, sca, sca)), mFalloff(fo)
{
mAbsCoef = 0.01f * sca / AIR_SCA_AVG;
diff --git a/linden/indra/newview/llvosurfacepatch.cpp b/linden/indra/newview/llvosurfacepatch.cpp
index c0474f2..310a745 100644
--- a/linden/indra/newview/llvosurfacepatch.cpp
+++ b/linden/indra/newview/llvosurfacepatch.cpp
@@ -960,12 +960,12 @@ void LLTerrainPartition::getGeometry(LLSpatialGroup* group)
LLStrider colors;
LLStrider indices;
- buffer->getVertexStrider(vertices);
- buffer->getNormalStrider(normals);
- buffer->getTexCoordStrider(texcoords);
- buffer->getTexCoord2Strider(texcoords2);
- buffer->getColorStrider(colors);
- buffer->getIndexStrider(indices);
+ llassert_always(buffer->getVertexStrider(vertices));
+ llassert_always(buffer->getNormalStrider(normals));
+ llassert_always(buffer->getTexCoordStrider(texcoords));
+ llassert_always(buffer->getTexCoord2Strider(texcoords2));
+ llassert_always(buffer->getColorStrider(colors));
+ llassert_always(buffer->getIndexStrider(indices));
U32 indices_index = 0;
U32 index_offset = 0;
diff --git a/linden/indra/newview/llwatchdog.cpp b/linden/indra/newview/llwatchdog.cpp
new file mode 100644
index 0000000..1dd984e
--- /dev/null
+++ b/linden/indra/newview/llwatchdog.cpp
@@ -0,0 +1,222 @@
+/**
+ * @file llthreadwatchdog.cpp
+ * @brief The LLThreadWatchdog class definitions
+ *
+ * $LicenseInfo:firstyear=2007&license=viewergpl$
+ *
+ * Copyright (c) 2007-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+
+#include "llviewerprecompiledheaders.h"
+#include "llwatchdog.h"
+
+// This class runs the watchdog timing thread.
+class LLWatchdogTimerThread : public LLThread
+{
+public:
+ LLWatchdogTimerThread() :
+ LLThread("Watchdog"),
+ mSleepMsecs(0),
+ mStopping(false)
+ {
+ }
+
+ ~LLWatchdogTimerThread() {}
+
+ void setSleepTime(long ms) { mSleepMsecs = ms; }
+ void stop()
+ {
+ mStopping = true;
+ ms_sleep(1);
+ }
+
+ /* virtual */ void run()
+ {
+ while(!mStopping)
+ {
+ LLWatchdog::getInstance()->run();
+ ms_sleep(mSleepMsecs);
+ }
+ }
+
+private:
+ long mSleepMsecs;
+ bool mStopping;
+};
+
+// LLWatchdogEntry
+LLWatchdogEntry::LLWatchdogEntry()
+{
+}
+
+LLWatchdogEntry::~LLWatchdogEntry()
+{
+}
+
+void LLWatchdogEntry::start()
+{
+ LLWatchdog::getInstance()->add(this);
+}
+
+void LLWatchdogEntry::stop()
+{
+ LLWatchdog::getInstance()->remove(this);
+}
+
+// LLWatchdogTimeout
+LLWatchdogTimeout::LLWatchdogTimeout() :
+ mTimeout(0.0f)
+{
+}
+
+LLWatchdogTimeout::~LLWatchdogTimeout()
+{
+}
+
+bool LLWatchdogTimeout::isAlive() const
+{
+ return (mTimer.getStarted() && !mTimer.hasExpired());
+}
+
+void LLWatchdogTimeout::setTimeout(F32 d)
+{
+ mTimeout = d;
+}
+
+void LLWatchdogTimeout::start()
+{
+ // Order of operation is very impmortant here.
+ // After LLWatchdogEntry::start() is called
+ // LLWatchdogTimeout::isAlive() will be called asynchronously.
+ mTimer.start();
+ mTimer.setTimerExpirySec(mTimeout);
+ LLWatchdogEntry::start();
+}
+void LLWatchdogTimeout::stop()
+{
+ LLWatchdogEntry::stop();
+ mTimer.stop();
+}
+
+void LLWatchdogTimeout::ping()
+{
+ mTimer.setTimerExpirySec(mTimeout);
+}
+
+// LlWatchdog
+LLWatchdog::LLWatchdog() :
+ mSuspectsAccessMutex(NULL),
+ mTimer(NULL)
+{
+}
+
+LLWatchdog::~LLWatchdog()
+{
+}
+
+void LLWatchdog::add(LLWatchdogEntry* e)
+{
+ lockThread();
+ mSuspects.insert(e);
+ unlockThread();
+}
+
+void LLWatchdog::remove(LLWatchdogEntry* e)
+{
+ lockThread();
+ mSuspects.erase(e);
+ unlockThread();
+}
+
+void LLWatchdog::init()
+{
+ if(!mSuspectsAccessMutex && !mTimer)
+ {
+ mSuspectsAccessMutex = new LLMutex(NULL);
+ mTimer = new LLWatchdogTimerThread();
+ mTimer->setSleepTime(1000);
+ mTimer->start();
+ }
+}
+
+void LLWatchdog::cleanup()
+{
+ if(mTimer)
+ {
+ mTimer->stop();
+ delete mTimer;
+ }
+
+ if(mSuspectsAccessMutex)
+ {
+ delete mSuspectsAccessMutex;
+ }
+}
+
+void LLWatchdog::run()
+{
+ lockThread();
+
+ SuspectsRegistry::iterator result =
+ std::find_if(mSuspects.begin(),
+ mSuspects.end(),
+ std::not1(std::mem_fun(&LLWatchdogEntry::isAlive))
+ );
+
+ if(result != mSuspects.end())
+ {
+ // error!!!
+ if(mTimer)
+ {
+ mTimer->stop();
+ }
+
+ llinfos << "Watchdog detected error:" << llendl;
+#ifdef LL_WINDOWS
+ RaiseException(0,0,0,0);
+#else
+ raise(SIGQUIT);
+#endif
+ }
+
+ unlockThread();
+}
+
+void LLWatchdog::lockThread()
+{
+ if(mSuspectsAccessMutex != NULL)
+ {
+ mSuspectsAccessMutex->lock();
+ }
+}
+
+void LLWatchdog::unlockThread()
+{
+ if(mSuspectsAccessMutex != NULL)
+ {
+ mSuspectsAccessMutex->unlock();
+ }
+}
diff --git a/linden/indra/newview/llwatchdog.h b/linden/indra/newview/llwatchdog.h
new file mode 100644
index 0000000..96388bb
--- /dev/null
+++ b/linden/indra/newview/llwatchdog.h
@@ -0,0 +1,98 @@
+/**
+ * @file llthreadwatchdog.h
+ * @brief The LLThreadWatchdog class declaration
+ *
+ * $LicenseInfo:firstyear=2007&license=viewergpl$
+ *
+ * Copyright (c) 2007-2008, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLTHREADWATCHDOG_H
+#define LL_LLTHREADWATCHDOG_H
+
+#ifndef LL_TIMER_H
+ #include "lltimer.h"
+#endif
+
+// LLWatchdogEntry is the interface used by the tasks that
+// need to be watched.
+class LLWatchdogEntry
+{
+public:
+ LLWatchdogEntry();
+ virtual ~LLWatchdogEntry();
+
+ // isAlive is accessed by the watchdog thread.
+ // This may mean that resources used by
+ // isAlive and other method may need synchronization.
+ virtual bool isAlive() const = 0;
+ virtual void start();
+ virtual void stop();
+};
+
+class LLWatchdogTimeout : public LLWatchdogEntry
+{
+public:
+ LLWatchdogTimeout();
+ virtual ~LLWatchdogTimeout();
+
+ /* virtual */ bool isAlive() const;
+ /* virtual */ void start();
+ /* virtual */ void stop();
+
+ void setTimeout(F32 d);
+ void ping();
+
+private:
+ LLTimer mTimer;
+ F32 mTimeout;
+};
+
+class LLWatchdogTimerThread; // Defined in the cpp
+class LLWatchdog : public LLSingleton
+{
+public:
+ LLWatchdog();
+ ~LLWatchdog();
+
+ // Add an entry to the watchdog.
+ void add(LLWatchdogEntry* e);
+ void remove(LLWatchdogEntry* e);
+
+ void init();
+ void run();
+ void cleanup();
+
+private:
+ void lockThread();
+ void unlockThread();
+
+ typedef std::set SuspectsRegistry;
+ SuspectsRegistry mSuspects;
+ LLMutex* mSuspectsAccessMutex;
+ LLWatchdogTimerThread* mTimer;
+};
+
+#endif // LL_LLTHREADWATCHDOG_H
diff --git a/linden/indra/newview/llwaterparammanager.cpp b/linden/indra/newview/llwaterparammanager.cpp
index f121d46..fb09fd8 100644
--- a/linden/indra/newview/llwaterparammanager.cpp
+++ b/linden/indra/newview/llwaterparammanager.cpp
@@ -75,7 +75,8 @@ LLWaterParamManager::LLWaterParamManager() :
mBlurMultiplier(0.1f, "blurMultiplier"),
mWave1Dir(.5f, .5f, "wave1Dir"),
mWave2Dir(.5f, .5f, "wave2Dir"),
- mDensitySliderValue(1.0f)
+ mDensitySliderValue(1.0f),
+ mWaterFogKS(1.0f)
{
}
@@ -86,7 +87,7 @@ LLWaterParamManager::~LLWaterParamManager()
void LLWaterParamManager::loadAllPresets(const LLString& file_name)
{
LLString path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", ""));
- llinfos << "Loading water settings from " << path_name << llendl;
+ LL_INFOS2("AppInit", "Shaders") << "Loading water settings from " << path_name << LL_ENDL;
//mParamList.clear();
@@ -96,7 +97,7 @@ void LLWaterParamManager::loadAllPresets(const LLString& file_name)
std::string name;
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name, false);
- llinfos << "name: " << name << llendl;
+ LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL;
// if we have one
if(found)
@@ -111,7 +112,7 @@ void LLWaterParamManager::loadAllPresets(const LLString& file_name)
std::string water_name = unescaped_name.substr(0, unescaped_name.size() - 4);
LLString cur_path(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/water", name));
- llinfos << "Loading water from " << cur_path << llendl;
+ LL_DEBUGS2("AppInit", "Shaders") << "Loading water from " << cur_path << LL_ENDL;
std::ifstream water_xml(cur_path.c_str());
if (water_xml)
@@ -255,8 +256,8 @@ void LLWaterParamManager::update(LLViewerCamera * cam)
if(gPipeline.canUseVertexShaders())
{
//transform water plane to eye space
- glh::vec3f norm(0, 0, 1);
- glh::vec3f p(0, 0, gAgent.getRegion()->getWaterHeight()+0.1f);
+ glh::vec3f norm(0.f, 0.f, 1.f);
+ glh::vec3f p(0.f, 0.f, gAgent.getRegion()->getWaterHeight()+0.1f);
F32 modelView[16];
for (U32 i = 0; i < 16; i++)
@@ -406,7 +407,7 @@ F32 LLWaterParamManager::getFogDensity(void)
F32 fogDensity = mCurParams.getFloat("waterFogDensity", err);
// modify if we're underwater
- const F32 water_height = gAgent.getRegion()->getWaterHeight();
+ const F32 water_height = gAgent.getRegion() ? gAgent.getRegion()->getWaterHeight() : 0.f;
F32 camera_height = gAgent.getCameraPositionAgent().mV[2];
if(camera_height <= water_height)
{
diff --git a/linden/indra/newview/llwaterparammanager.h b/linden/indra/newview/llwaterparammanager.h
index ad40c12..6c9ce3e 100644
--- a/linden/indra/newview/llwaterparammanager.h
+++ b/linden/indra/newview/llwaterparammanager.h
@@ -315,18 +315,16 @@ public:
F32 mDensitySliderValue;
private:
- // our parameter manager singleton instance
- static LLWaterParamManager * sInstance;
-
-private:
-
LLVector4 mWaterPlane;
F32 mWaterFogKS;
+
+ // our parameter manager singleton instance
+ static LLWaterParamManager * sInstance;
};
inline void LLWaterParamManager::setDensitySliderValue(F32 val)
{
- val /= 10;
+ val /= 10.0f;
val = 1.0f - val;
val *= val * val;
// val *= val;
diff --git a/linden/indra/newview/llwearable.cpp b/linden/indra/newview/llwearable.cpp
index 9365eeb..6e8123a 100644
--- a/linden/indra/newview/llwearable.cpp
+++ b/linden/indra/newview/llwearable.cpp
@@ -185,7 +185,7 @@ const char* terse_F32_to_string( F32 f, char s[MAX_STRING] ) /* Flawfinder: ign
return r;
}
-BOOL LLWearable::exportFile( FILE* file )
+BOOL LLWearable::exportFile( LLFILE* file )
{
// header and version
if( fprintf( file, "LLWearable version %d\n", mDefinitionVersion ) < 0 )
@@ -266,7 +266,7 @@ BOOL LLWearable::exportFile( FILE* file )
-BOOL LLWearable::importFile( FILE* file )
+BOOL LLWearable::importFile( LLFILE* file )
{
// *NOTE: changing the type or size of this buffer will require
// changes in the fscanf() code below. You would be better off
@@ -852,7 +852,7 @@ void LLWearable::saveNewAsset()
mAssetID.toString(new_asset_id_string);
char filename[LL_MAX_PATH]; /* Flawfinder: ignore */
snprintf(filename, LL_MAX_PATH, "%s.wbl", gDirUtilp->getExpandedFilename(LL_PATH_CACHE,new_asset_id_string).c_str()); /* Flawfinder: ignore */
- FILE* fp = LLFile::fopen(filename, "wb"); /* Flawfinder: ignore */
+ LLFILE* fp = LLFile::fopen(filename, "wb"); /* Flawfinder: ignore */
BOOL successful_save = FALSE;
if(fp && exportFile(fp))
{
diff --git a/linden/indra/newview/llwearable.h b/linden/indra/newview/llwearable.h
index aa4b3dd..63243eb 100644
--- a/linden/indra/newview/llwearable.h
+++ b/linden/indra/newview/llwearable.h
@@ -78,8 +78,8 @@ public:
void removeFromAvatar( BOOL set_by_user ) { LLWearable::removeFromAvatar( mType, set_by_user ); }
static void removeFromAvatar( EWearableType type, BOOL set_by_user );
- BOOL exportFile(FILE* file);
- BOOL importFile(FILE* file);
+ BOOL exportFile(LLFILE* file);
+ BOOL importFile(LLFILE* file);
EWearableType getType() const { return mType; }
void setType( EWearableType type ) { mType = type; }
diff --git a/linden/indra/newview/llwearablelist.cpp b/linden/indra/newview/llwearablelist.cpp
index 01a2459..cabf20a 100644
--- a/linden/indra/newview/llwearablelist.cpp
+++ b/linden/indra/newview/llwearablelist.cpp
@@ -110,7 +110,7 @@ void LLWearableList::processGetAssetReply( const char* filename, const LLAssetID
if( status >= 0 )
{
// read the file
- FILE* fp = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/
+ LLFILE* fp = LLFile::fopen(filename, "rb"); /*Flawfinder: ignore*/
if( !fp )
{
llinfos << "Bad Wearable Asset: unable to open file: '" << filename << "'" << llendl;
diff --git a/linden/indra/newview/llwebbrowserctrl.cpp b/linden/indra/newview/llwebbrowserctrl.cpp
index 710b7e1..1d187cb 100644
--- a/linden/indra/newview/llwebbrowserctrl.cpp
+++ b/linden/indra/newview/llwebbrowserctrl.cpp
@@ -43,8 +43,9 @@
#include "llviewborder.h"
#include "llviewercontrol.h"
#include "llviewerwindow.h"
+#include "llnotify.h"
#include "llweb.h"
-#include "llglimmediate.h"
+#include "llrender.h"
// linden library includes
#include "llfocusmgr.h"
@@ -587,7 +588,7 @@ void LLWebBrowserCtrl::draw()
F32 max_v = ( F32 )mWebBrowserImage->getBrowserHeight() / ( F32 )mWebBrowserImage->getHeight();
// draw the browser
- gGL.blendFunc( GL_ONE, GL_ZERO );
+ gGL.setSceneBlendType(LLRender::BT_REPLACE);
gGL.begin( LLVertexBuffer::QUADS );
{
// render using web browser reported width and height, instead of trying to invert GL scale
@@ -604,7 +605,7 @@ void LLWebBrowserCtrl::draw()
gGL.vertex2i( mWebBrowserImage->getBrowserWidth(), 0 );
}
gGL.end();
- gGL.blendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
gGL.popMatrix();
@@ -762,6 +763,8 @@ void LLWebBrowserCtrl::onClickLinkNoFollow( const EventType& eventIn )
&& !mOpenAppSLURLs)
{
// block handling of this secondlife:///app/ URL
+ LLNotifyBox::showXml("UnableToOpenCommandURL");
+
return;
}
diff --git a/linden/indra/newview/llwebbrowserctrl.h b/linden/indra/newview/llwebbrowserctrl.h
index e1b5357..95757f1 100644
--- a/linden/indra/newview/llwebbrowserctrl.h
+++ b/linden/indra/newview/llwebbrowserctrl.h
@@ -47,11 +47,13 @@ class LLWebBrowserCtrlEvent
};
LLWebBrowserCtrlEvent( std::string stringValIn ) :
+ mIntVal(-1),
mStringVal( stringValIn )
{
};
LLWebBrowserCtrlEvent( std::string stringValIn, std::string stringValExIn ) :
+ mIntVal(-1),
mStringVal( stringValIn ),
mStringValEx( stringValExIn )
{
diff --git a/linden/indra/newview/llwindebug.cpp b/linden/indra/newview/llwindebug.cpp
index 1b52a14..aba637c 100644
--- a/linden/indra/newview/llwindebug.cpp
+++ b/linden/indra/newview/llwindebug.cpp
@@ -35,7 +35,6 @@
#include
#include
-#include "llappviewer.h"
#include "llwindebug.h"
#include "llviewercontrol.h"
#include "lldir.h"
@@ -106,6 +105,8 @@ MINIDUMPWRITEDUMP f_mdwp = NULL;
#undef UNICODE
+static LPTOP_LEVEL_EXCEPTION_FILTER gFilterFunc = NULL;
+
HMODULE hDbgHelp;
// Tool Help functions.
@@ -554,14 +555,13 @@ void LLMemoryReserve::release()
static LLMemoryReserve gEmergencyMemoryReserve;
// static
-BOOL LLWinDebug::setupExceptionHandler()
+void LLWinDebug::initExceptionHandler(LPTOP_LEVEL_EXCEPTION_FILTER filter_func)
{
- static BOOL s_first_run = TRUE;
+ static bool s_first_run = true;
// Load the dbghelp dll now, instead of waiting for the crash.
// Less potential for stack mangling
- BOOL ok = TRUE;
if (s_first_run)
{
// First, try loading from the directory that the app resides in.
@@ -576,15 +576,7 @@ BOOL LLWinDebug::setupExceptionHandler()
if (!hDll)
{
- llwarns << "Couldn't find dbghelp.dll!" << llendl;
-
- std::string msg = "Couldn't find dbghelp.dll at ";
- msg += local_dll_name;
- msg += "!\n";
-
- //write_debug(msg.c_str());
-
- ok = FALSE;
+ LL_WARNS("AppInit") << "Couldn't find dbghelp.dll!" << LL_ENDL;
}
else
{
@@ -592,18 +584,15 @@ BOOL LLWinDebug::setupExceptionHandler()
if (!f_mdwp)
{
- //write_debug("No MiniDumpWriteDump!\n");
FreeLibrary(hDll);
hDll = NULL;
- ok = FALSE;
}
}
gEmergencyMemoryReserve.reserve();
- }
- LPTOP_LEVEL_EXCEPTION_FILTER prev_filter;
- prev_filter = SetUnhandledExceptionFilter(LLWinDebug::handleException);
+ s_first_run = false;
+ }
// Try to get Tool Help library functions.
HMODULE hKernel32;
@@ -612,26 +601,44 @@ BOOL LLWinDebug::setupExceptionHandler()
Module32First_ = (MODULE32_FIRST)GetProcAddress(hKernel32, "Module32FirstW");
Module32Next_ = (MODULE32_NEST)GetProcAddress(hKernel32, "Module32NextW");
- if (s_first_run)
+ LPTOP_LEVEL_EXCEPTION_FILTER prev_filter;
+ prev_filter = SetUnhandledExceptionFilter(filter_func);
+
+ if(prev_filter != gFilterFunc)
{
- // We're fine, this is the first run.
- s_first_run = FALSE;
- return ok;
+ LL_WARNS("AppInit")
+ << "Replacing unknown exception (" << (void *)prev_filter << ") with (" << (void *)filter_func << ") !" << LL_ENDL;
}
- if (!prev_filter)
+
+ gFilterFunc = filter_func;
+}
+
+bool LLWinDebug::checkExceptionHandler()
+{
+ bool ok = true;
+ LPTOP_LEVEL_EXCEPTION_FILTER prev_filter;
+ prev_filter = SetUnhandledExceptionFilter(gFilterFunc);
+
+ if (prev_filter != gFilterFunc)
{
- llwarns << "Our exception handler (" << (void *)LLWinDebug::handleException << ") replaced with NULL!" << llendl;
- ok = FALSE;
+ LL_WARNS("AppInit") << "Our exception handler (" << (void *)gFilterFunc << ") replaced with " << prev_filter << "!" << LL_ENDL;
+ ok = false;
}
- if (prev_filter != LLWinDebug::handleException)
+
+ if (prev_filter == NULL)
{
- llwarns << "Our exception handler (" << (void *)LLWinDebug::handleException << ") replaced with " << prev_filter << "!" << llendl;
ok = FALSE;
+ if (gFilterFunc == NULL)
+ {
+ LL_WARNS("AppInit") << "Exception handler uninitialized." << LL_ENDL;
+ }
+ else
+ {
+ LL_WARNS("AppInit") << "Our exception handler (" << (void *)gFilterFunc << ") replaced with NULL!" << LL_ENDL;
+ }
}
return ok;
- // Internal builds don't mess with exception handling.
- //return TRUE;
}
void LLWinDebug::writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMATION *ExInfop, const char *filename)
@@ -644,7 +651,7 @@ void LLWinDebug::writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMAT
else
{
std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,
- filename);
+ filename);
HANDLE hFile = CreateFileA(dump_path.c_str(),
GENERIC_WRITE,
@@ -672,20 +679,26 @@ void LLWinDebug::writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMAT
}
// static
-LONG LLWinDebug::handleException(struct _EXCEPTION_POINTERS *exception_infop)
+void LLWinDebug::generateCrashStacks(struct _EXCEPTION_POINTERS *exception_infop)
{
- // *NOTE:Mani - This method is no longer the initial exception handler.
- // It is called from viewer_windows_exception_handler() and other places.
+ // *NOTE:Mani - This method is no longer the exception handler.
+ // Its called from viewer_windows_exception_handler() and other places.
//
// Let go of a bunch of reserved memory to give library calls etc
// a chance to execute normally in the case that we ran out of
// memory.
//
- gEmergencyMemoryReserve.release();
+ LLSD info;
+ std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,
+ "SecondLifeException");
+ std::string log_path = dump_path + ".log";
if (exception_infop)
{
+ // Since there is exception info... Release the hounds.
+ gEmergencyMemoryReserve.release();
+
if(gSavedSettings.getControl("SaveMinidump") != NULL && gSavedSettings.getBOOL("SaveMinidump"))
{
_MINIDUMP_EXCEPTION_INFORMATION ExInfo;
@@ -698,67 +711,34 @@ LONG LLWinDebug::handleException(struct _EXCEPTION_POINTERS *exception_infop)
writeDumpToFile((MINIDUMP_TYPE)(MiniDumpWithDataSegs | MiniDumpWithIndirectlyReferencedMemory), &ExInfo, "SecondLifePlus.dmp");
}
-
- std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,
- "SecondLifeException");
-
- std::string log_path = dump_path + ".log";
-
- LLSD info;
info = Get_Exception_Info(exception_infop);
+ }
+ LLSD threads;
+ std::vector thread_ids;
+ GetProcessThreadIDs(GetCurrentProcessId(), thread_ids);
- LLSD threads;
- std::vector thread_ids;
- GetProcessThreadIDs(GetCurrentProcessId(), thread_ids);
-
- for(std::vector::iterator th_itr = thread_ids.begin();
- th_itr != thread_ids.end();
- ++th_itr)
+ for(std::vector::iterator th_itr = thread_ids.begin();
+ th_itr != thread_ids.end();
+ ++th_itr)
+ {
+ LLSD thread_info;
+ if(*th_itr != GetCurrentThreadId())
{
- LLSD thread_info;
- if(*th_itr != GetCurrentThreadId())
- {
- GetThreadCallStack(*th_itr, thread_info);
- }
-
- if(thread_info)
- {
-
- threads[llformat("ID %d", *th_itr)] = thread_info;
- }
+ GetThreadCallStack(*th_itr, thread_info);
}
+ if(thread_info)
+ {
+ threads[llformat("ID %d", *th_itr)] = thread_info;
+ }
+ }
- info["Threads"] = threads;
-
- if (info)
- {
- std::ofstream out_file(log_path.c_str());
- LLSDSerialize::toPrettyXML(info, out_file);
- out_file.close();
- }
- }
- else
- {
- // We're calling this due to a network error, not due to an actual exception.
- // It doesn't realy matter what we return.
- return EXCEPTION_CONTINUE_SEARCH;
- }
-
- //handle viewer crash must be called here since
- //we don't return handling of the application
- //back to the process.
- LLAppViewer::handleViewerCrash();
+ info["Threads"] = threads;
- //
- // At this point, we always want to exit the app. There's no graceful
- // recovery for an unhandled exception.
- //
- // Just kill the process.
- LONG retval = EXCEPTION_EXECUTE_HANDLER;
-
- return retval;
+ std::ofstream out_file(log_path.c_str());
+ LLSDSerialize::toPrettyXML(info, out_file);
+ out_file.close();
}
#endif
diff --git a/linden/indra/newview/llwindebug.h b/linden/indra/newview/llwindebug.h
index b11cdf6..cf15fae 100644
--- a/linden/indra/newview/llwindebug.h
+++ b/linden/indra/newview/llwindebug.h
@@ -38,10 +38,36 @@
class LLWinDebug
{
public:
- static BOOL setupExceptionHandler();
- static LONG WINAPI handleException(struct _EXCEPTION_POINTERS *pExceptionInfo);
+
+ /**
+ * @brief initialize the llwindebug exception filter callback
+ *
+ * Hand a windows unhandled exception filter to LLWinDebug
+ * This method should only be called to change the
+ * exception filter used by llwindebug.
+ *
+ * Setting filter_func to NULL will clear any custom filters.
+ **/
+ static void initExceptionHandler(LPTOP_LEVEL_EXCEPTION_FILTER filter_func);
+
+ /**
+ * @brief check the status of the exception filter.
+ *
+ * Resets unhandled exception filter to the filter specified
+ * w/ initExceptionFilter).
+ * Returns false if the exception filter was modified.
+ *
+ * *NOTE:Mani In the past mozlib has been accused of
+ * overriding the exception filter. If the mozlib filter
+ * is required, perhaps we can chain calls from our
+ * filter to mozlib's.
+ **/
+ static bool checkExceptionHandler();
+
+ static void generateCrashStacks(struct _EXCEPTION_POINTERS *pExceptionInfo = NULL);
static void writeDumpToFile(MINIDUMP_TYPE type, MINIDUMP_EXCEPTION_INFORMATION *ExInfop, const char *filename);
+private:
};
#endif // LL_LLWINDEBUG_H
diff --git a/linden/indra/newview/llwlparammanager.cpp b/linden/indra/newview/llwlparammanager.cpp
index 9f59947..9f23b37 100644
--- a/linden/indra/newview/llwlparammanager.cpp
+++ b/linden/indra/newview/llwlparammanager.cpp
@@ -111,7 +111,7 @@ void LLWLParamManager::loadPresets(const LLString& file_name)
if(file_name != "")
{
LLString path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight", file_name));
- llinfos << "Loading WindLight settings from " << path_name << llendl;
+ LL_INFOS2("AppInit", "Shaders") << "Loading WindLight settings from " << path_name << LL_ENDL;
llifstream presetsXML(path_name.c_str());
@@ -137,7 +137,7 @@ void LLWLParamManager::loadPresets(const LLString& file_name)
else
{
LLString path_name(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", ""));
- llinfos << "Loading WindLight settings from " << path_name << llendl;
+ LL_INFOS2("AppInit", "Shaders") << "Loading WindLight settings from " << path_name << LL_ENDL;
//mParamList.clear();
@@ -147,7 +147,7 @@ void LLWLParamManager::loadPresets(const LLString& file_name)
std::string name;
found = gDirUtilp->getNextFileInDir(path_name, "*.xml", name, false);
- llinfos << "name: " << name << llendl;
+ LL_DEBUGS2("AppInit", "Shaders") << "name: " << name << LL_ENDL;
// if we have one
if(found)
@@ -162,7 +162,7 @@ void LLWLParamManager::loadPresets(const LLString& file_name)
std::string sky_name = unescaped_name.substr(0, unescaped_name.size() - 4);
LLString cur_path(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "windlight/skies", name));
- llinfos << "Loading sky from " << cur_path << llendl;
+ LL_DEBUGS2("AppInit", "Shaders") << "Loading sky from " << cur_path << LL_ENDL;
std::ifstream sky_xml(cur_path.c_str());
if (sky_xml)
@@ -299,7 +299,7 @@ void LLWLParamManager::propagateParameters(void)
LLVector4 sunDir;
LLVector4 moonDir;
- // set the sun direction from mSunAngle and mEastAngle
+ // set the sun direction from SunAngle and EastAngle
F32 sinTheta = sin(mCurParams.getEastAngle());
F32 cosTheta = cos(mCurParams.getEastAngle());
diff --git a/linden/indra/newview/llwlparammanager.h b/linden/indra/newview/llwlparammanager.h
index bfb84e9..72b888d 100644
--- a/linden/indra/newview/llwlparammanager.h
+++ b/linden/indra/newview/llwlparammanager.h
@@ -199,8 +199,6 @@ public:
public:
// helper variables
- F32 mSunAngle;
- F32 mEastAngle;
LLWLAnimator mAnimator;
/// actual direction of the sun
@@ -217,9 +215,6 @@ public:
// list of params and how they're cycled for days
LLWLDayCycle mDay;
- // length of the day in seconds
- F32 mLengthOfDay;
-
LLWLParamSet mCurParams;
/// Sun Delta Terrain tweak variables.
diff --git a/linden/indra/newview/llwlparamset.h b/linden/indra/newview/llwlparamset.h
index 6fa0bff..ed3453d 100644
--- a/linden/indra/newview/llwlparamset.h
+++ b/linden/indra/newview/llwlparamset.h
@@ -132,18 +132,10 @@ public:
/// get the star brightness value;
F32 getStarBrightness();
- /// set the star's brightness
- /// \param val brightness value
void setSunAngle(F32 val);
-
- /// get the star brightness value;
F32 getSunAngle();
- /// set the star's brightness
- /// \param val brightness value
void setEastAngle(F32 val);
-
- /// get the star brightness value;
F32 getEastAngle();
diff --git a/linden/indra/newview/llworld.cpp b/linden/indra/newview/llworld.cpp
index 8c95260..27d7513 100644
--- a/linden/indra/newview/llworld.cpp
+++ b/linden/indra/newview/llworld.cpp
@@ -83,22 +83,25 @@ const F32 LLWorld::mWidthInMeters = mWidth * mScale;
//
// allocate the stack
-LLWorld::LLWorld()
+LLWorld::LLWorld() :
+ mLandFarClip(DEFAULT_FAR_PLANE),
+ mLastPacketsIn(0),
+ mLastPacketsOut(0),
+ mLastPacketsLost(0),
+ mMinRegionX(0),
+ mMaxRegionX(0),
+ mMinRegionY(0),
+ mMaxRegionY(0),
+ mSpaceTimeUSec(0)
{
- mSpaceTimeUSec = 0;
- mLastPacketsIn = 0;
- mLastPacketsOut = 0;
- mLastPacketsLost = 0;
- mLandFarClip = DEFAULT_FAR_PLANE;
-
- if (gNoRender)
+ for (S32 i = 0; i < 8; i++)
{
- return;
+ mEdgeWaterObjects[i] = NULL;
}
- for (S32 i = 0; i < 8; i++)
+ if (gNoRender)
{
- mEdgeWaterObjects[i] = NULL;
+ return;
}
LLPointer raw = new LLImageRaw(1,1,4);
@@ -1112,6 +1115,10 @@ void process_region_handshake(LLMessageSystem* msg, void** user_data)
void send_agent_pause()
{
+ // *NOTE:Mani Pausing the mainloop timeout. Otherwise a long modal event may cause
+ // the thread monitor to timeout.
+ LLAppViewer::instance()->stopMainloopTimeout();
+
// Note: used to check for LLWorld initialization before it became a singleton.
// Rather than just remove this check I'm changing it to assure that the message
// system has been initialized. -MG
@@ -1167,6 +1174,8 @@ void send_agent_resume()
// Reset the FPS counter to avoid an invalid fps
LLViewerStats::getInstance()->mFPSStat.start();
+
+ LLAppViewer::instance()->startMainloopTimeout();
}
diff --git a/linden/indra/newview/llworldmap.cpp b/linden/indra/newview/llworldmap.cpp
index 28ae94a..231f5dc 100644
--- a/linden/indra/newview/llworldmap.cpp
+++ b/linden/indra/newview/llworldmap.cpp
@@ -160,6 +160,11 @@ void LLWorldMap::reset()
mNeighborMapWidth = 0;
mNeighborMapHeight = 0;
+
+ for (S32 i=0; imPopular.push_back(new_item);
- break;
- }
case MAP_ITEM_LAND_FOR_SALE: // land for sale
{
new_item.mToolTip = llformat("%d sq. m. L$%d", new_item.mExtra, new_item.mExtra2);
diff --git a/linden/indra/newview/llworldmap.h b/linden/indra/newview/llworldmap.h
index 041dfc0..3f3a8e9 100644
--- a/linden/indra/newview/llworldmap.h
+++ b/linden/indra/newview/llworldmap.h
@@ -191,7 +191,6 @@ public:
item_info_list_t mInfohubs;
item_info_list_t mPGEvents;
item_info_list_t mMatureEvents;
- item_info_list_t mPopular;
item_info_list_t mLandForSale;
item_info_list_t mClassifieds;
diff --git a/linden/indra/newview/llworldmapview.cpp b/linden/indra/newview/llworldmapview.cpp
index 1cc4921..a9e1061 100644
--- a/linden/indra/newview/llworldmapview.cpp
+++ b/linden/indra/newview/llworldmapview.cpp
@@ -38,7 +38,7 @@
#include "llmath.h" // clampf()
#include "llregionhandle.h"
#include "lleventflags.h"
-#include "llglimmediate.h"
+#include "llrender.h"
#include "llagent.h"
#include "llcallingcard.h"
@@ -85,7 +85,6 @@ LLUIImagePtr LLWorldMapView::sTrackCircleImage = NULL;
LLUIImagePtr LLWorldMapView::sTrackArrowImage = NULL;
LLUIImagePtr LLWorldMapView::sClassifiedsImage = NULL;
-LLUIImagePtr LLWorldMapView::sPopularImage = NULL;
LLUIImagePtr LLWorldMapView::sForSaleImage = NULL;
F32 LLWorldMapView::sThresholdA = 48.f;
@@ -111,22 +110,21 @@ F32 CONE_SIZE = 0.6f;
void LLWorldMapView::initClass()
{
- LLUUID image_id;
-
sAvatarYouSmallImage = LLUI::getUIImage("map_avatar_you_8.tga");
sAvatarSmallImage = LLUI::getUIImage("map_avatar_8.tga");
sAvatarLargeImage = LLUI::getUIImage("map_avatar_16.tga");
sAvatarAboveImage = LLUI::getUIImage("map_avatar_above_8.tga");
sAvatarBelowImage = LLUI::getUIImage("map_avatar_below_8.tga");
+
sHomeImage = LLUI::getUIImage("map_home.tga");
sTelehubImage = LLUI::getUIImage("map_telehub.tga");
sInfohubImage = LLUI::getUIImage("map_infohub.tga");
sEventImage = LLUI::getUIImage("map_event.tga");
sEventMatureImage = LLUI::getUIImage("map_event_mature.tga");
+
sTrackCircleImage = LLUI::getUIImage("map_track_16.tga");
sTrackArrowImage = LLUI::getUIImage("direction_arrow.tga");
sClassifiedsImage = LLUI::getUIImage("icon_top_pick.tga");
- sPopularImage = LLUI::getUIImage("icon_popular.tga");
sForSaleImage = LLUI::getUIImage("icon_for_sale.tga");
}
@@ -138,15 +136,16 @@ void LLWorldMapView::cleanupClass()
sAvatarLargeImage = NULL;
sAvatarAboveImage = NULL;
sAvatarBelowImage = NULL;
+
sTelehubImage = NULL;
sInfohubImage = NULL;
sHomeImage = NULL;
sEventImage = NULL;
sEventMatureImage = NULL;
+
sTrackCircleImage = NULL;
sTrackArrowImage = NULL;
sClassifiedsImage = NULL;
- sPopularImage = NULL;
sForSaleImage = NULL;
}
@@ -303,17 +302,17 @@ void LLWorldMapView::draw()
// Clear the background alpha to 0
gGL.flush();
- glColorMask(FALSE, FALSE, FALSE, TRUE);
- glAlphaFunc(GL_GEQUAL, 0.00f);
- gGL.blendFunc(GL_ONE, GL_ZERO);
+ gGL.setColorMask(false, true);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER_EQUAL, 0.f);
+ gGL.setSceneBlendType(LLRender::BT_REPLACE);
gGL.color4f(0.0f, 0.0f, 0.0f, 0.0f);
gl_rect_2d(0, height, width, 0);
}
gGL.flush();
- glAlphaFunc(GL_GEQUAL, 0.01f);
- glColorMask(TRUE, TRUE, TRUE, TRUE);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+ gGL.setColorMask(true, true);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
F32 layer_alpha = 1.f;
@@ -378,7 +377,7 @@ void LLWorldMapView::draw()
// Draw map image into RGB
//gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
gGL.flush();
- glColorMask(TRUE, TRUE, TRUE, FALSE);
+ gGL.setColorMask(true, false);
gGL.color4f(1.f, 1.f, 1.f, layer_alpha);
gGL.begin(LLVertexBuffer::QUADS);
@@ -394,7 +393,7 @@ void LLWorldMapView::draw()
// draw an alpha of 1 where the sims are visible
gGL.flush();
- glColorMask(FALSE, FALSE, FALSE, TRUE);
+ gGL.setColorMask(false, true);
gGL.color4f(1.f, 1.f, 1.f, 1.f);
gGL.begin(LLVertexBuffer::QUADS);
@@ -410,8 +409,8 @@ void LLWorldMapView::draw()
}
gGL.flush();
- glAlphaFunc(GL_GEQUAL, 0.01f);
- glColorMask(TRUE, TRUE, TRUE, TRUE);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+ gGL.setColorMask(true, true);
#if 1
F32 sim_alpha = 1.f;
@@ -534,7 +533,7 @@ void LLWorldMapView::draw()
LLGLSUIDefault gls_ui;
LLViewerImage::bindTexture(simimage);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
F32 alpha = sim_alpha * info->mAlpha;
gGL.color4f(1.f, 1.0f, 1.0f, alpha);
@@ -569,8 +568,8 @@ void LLWorldMapView::draw()
{
// draw an alpha of 1 where the sims are visible (except NULL sims)
gGL.flush();
- gGL.blendFunc(GL_ONE, GL_ZERO);
- glColorMask(FALSE, FALSE, FALSE, TRUE);
+ gGL.setSceneBlendType(LLRender::BT_REPLACE);
+ gGL.setColorMask(false, true);
gGL.color4f(1.f, 1.f, 1.f, 1.f);
LLGLSNoTexture gls_no_texture;
@@ -582,14 +581,14 @@ void LLWorldMapView::draw()
gGL.end();
gGL.flush();
- glColorMask(TRUE, TRUE, TRUE, TRUE);
+ gGL.setColorMask(true, true);
}
}
if (info->mAccess == SIM_ACCESS_DOWN)
{
// Draw a transparent red square over down sims
- gGL.blendFunc(GL_DST_ALPHA, GL_SRC_ALPHA);
+ gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_SOURCE_ALPHA);
gGL.color4f(0.2f, 0.0f, 0.0f, 0.4f);
LLGLSNoTexture gls_no_texture;
@@ -606,7 +605,7 @@ void LLWorldMapView::draw()
&& info->mAccess > SIM_ACCESS_PG
&& gAgent.isTeen())
{
- gGL.blendFunc(GL_DST_ALPHA, GL_ZERO);
+ gGL.blendFunc(LLRender::BF_DEST_ALPHA, LLRender::BF_ZERO);
LLGLSNoTexture gls_no_texture;
gGL.color3f(1.f, 0.f, 0.f);
@@ -667,14 +666,14 @@ void LLWorldMapView::draw()
LLGLSUIDefault gls_ui;
{
LLGLSNoTexture gls_no_texture;
- glAlphaFunc(GL_GEQUAL, 0.0f);
- gGL.blendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER_EQUAL, 0.f);
+ gGL.blendFunc(LLRender::BF_ONE_MINUS_DEST_ALPHA, LLRender::BF_DEST_ALPHA);
gGL.color4fv( mBackgroundColor.mV );
gl_rect_2d(0, height, width, 0);
}
- glAlphaFunc(GL_GEQUAL, 0.01f);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
// Infohubs
if (gSavedSettings.getBOOL("MapShowInfohubs")) //(gMapScale >= sThresholdB)
@@ -705,11 +704,6 @@ void LLWorldMapView::draw()
drawGenericItems(LLWorldMap::getInstance()->mClassifieds, sClassifiedsImage);
}
- if (gSavedSettings.getBOOL("MapShowPopular"))
- {
- drawGenericItems(LLWorldMap::getInstance()->mPopular, sPopularImage);
- }
-
if (gSavedSettings.getBOOL("MapShowEvents"))
{
drawEvents();
@@ -1533,10 +1527,6 @@ void LLWorldMapView::handleClick(S32 x, S32 y, MASK mask,
{
(*it).mSelected = FALSE;
}
- for (it = LLWorldMap::getInstance()->mPopular.begin(); it != LLWorldMap::getInstance()->mPopular.end(); ++it)
- {
- (*it).mSelected = FALSE;
- }
for (it = LLWorldMap::getInstance()->mLandForSale.begin(); it != LLWorldMap::getInstance()->mLandForSale.end(); ++it)
{
(*it).mSelected = FALSE;
@@ -1578,21 +1568,6 @@ void LLWorldMapView::handleClick(S32 x, S32 y, MASK mask,
}
}
- if (gSavedSettings.getBOOL("MapShowPopular"))
- {
- for (it = LLWorldMap::getInstance()->mPopular.begin(); it != LLWorldMap::getInstance()->mPopular.end(); ++it)
- {
- LLItemInfo& popular = *it;
-
- if (checkItemHit(x, y, popular, id, true))
- {
- *hit_type = MAP_ITEM_POPULAR;
- mItemPicked = TRUE;
- return;
- }
- }
- }
-
if (gSavedSettings.getBOOL("MapShowLandForSale"))
{
for (it = LLWorldMap::getInstance()->mLandForSale.begin(); it != LLWorldMap::getInstance()->mLandForSale.end(); ++it)
@@ -1796,12 +1771,6 @@ BOOL LLWorldMapView::handleDoubleClick( S32 x, S32 y, MASK mask )
LLFloaterDirectory::showEvents(event_id);
break;
}
- case MAP_ITEM_POPULAR:
- {
- gFloaterWorldMap->close();
- LLFloaterDirectory::showPopular(id);
- break;
- }
case MAP_ITEM_LAND_FOR_SALE:
{
gFloaterWorldMap->close();
diff --git a/linden/indra/newview/llworldmapview.h b/linden/indra/newview/llworldmapview.h
index 18626b5..079cd47 100644
--- a/linden/indra/newview/llworldmapview.h
+++ b/linden/indra/newview/llworldmapview.h
@@ -149,7 +149,6 @@ public:
static LLUIImagePtr sTrackCircleImage;
static LLUIImagePtr sTrackArrowImage;
static LLUIImagePtr sClassifiedsImage;
- static LLUIImagePtr sPopularImage;
static LLUIImagePtr sForSaleImage;
static F32 sThresholdA;
diff --git a/linden/indra/newview/llxmlrpctransaction.cpp b/linden/indra/newview/llxmlrpctransaction.cpp
index 7179104..9b49eb9 100644
--- a/linden/indra/newview/llxmlrpctransaction.cpp
+++ b/linden/indra/newview/llxmlrpctransaction.cpp
@@ -569,10 +569,10 @@ F64 LLXMLRPCTransaction::transferRate()
double rate_bits_per_sec = impl.mTransferInfo.mSpeedDownload * 8.0;
- llinfos << "Buffer size: " << impl.mResponseText.size() << " B" << llendl;
- llinfos << "Transfer size: " << impl.mTransferInfo.mSizeDownload << " B" << llendl;
- llinfos << "Transfer time: " << impl.mTransferInfo.mTotalTime << " s" << llendl;
- llinfos << "Transfer rate: " << rate_bits_per_sec / 1000.0 << " Kb/s" << llendl;
+ LL_INFOS("AppInit") << "Buffer size: " << impl.mResponseText.size() << " B" << LL_ENDL;
+ LL_DEBUGS("AppInit") << "Transfer size: " << impl.mTransferInfo.mSizeDownload << " B" << LL_ENDL;
+ LL_DEBUGS("AppInit") << "Transfer time: " << impl.mTransferInfo.mTotalTime << " s" << LL_ENDL;
+ LL_INFOS("AppInit") << "Transfer rate: " << rate_bits_per_sec / 1000.0 << " Kb/s" << LL_ENDL;
return rate_bits_per_sec;
}
diff --git a/linden/indra/newview/macview.xcodeproj/project.pbxproj b/linden/indra/newview/macview.xcodeproj/project.pbxproj
index 33a709c..c817b27 100644
--- a/linden/indra/newview/macview.xcodeproj/project.pbxproj
+++ b/linden/indra/newview/macview.xcodeproj/project.pbxproj
@@ -23,6 +23,7 @@
/* Begin PBXBuildFile section */
0633E5D209E341F500712406 /* llfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0633E5D009E341F500712406 /* llfile.cpp */; };
0633E5D509E3421500712406 /* llstreamtools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0633E5D309E3421500712406 /* llstreamtools.cpp */; };
+ 07167BBC0DCA8059003FE31D /* llrender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07167BBA0DCA8059003FE31D /* llrender.cpp */; };
1A02016F0B7A85DE00D5C589 /* llbase64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A02016D0B7A85DE00D5C589 /* llbase64.cpp */; };
1A0201850B7A861200D5C589 /* llblowfishcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A02017E0B7A861200D5C589 /* llblowfishcipher.cpp */; };
1A0201860B7A861200D5C589 /* llnullcipher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A0201810B7A861200D5C589 /* llnullcipher.cpp */; };
@@ -60,6 +61,9 @@
1AD394130CAB001B004BA76A /* llcommandhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD394120CAB001B004BA76A /* llcommandhandler.cpp */; };
1AD61F6B0AC09B1900507FB9 /* llimview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD61F6A0AC09B1900507FB9 /* llimview.cpp */; };
1ADE58940D7CCF6000183F7F /* llfloaterhud.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ADE58920D7CCF6000183F7F /* llfloaterhud.cpp */; };
+ 1AE0820F0DA708E900575141 /* llanimstatelabels.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE082090DA708E900575141 /* llanimstatelabels.cpp */; };
+ 1AE082100DA708E900575141 /* llstylemap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0820B0DA708E900575141 /* llstylemap.cpp */; };
+ 1AE082110DA708E900575141 /* lltrans.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0820D0DA708E900575141 /* lltrans.cpp */; };
1AE5D7120844FBD300278605 /* llwebbrowserctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE5D7100844FBD300278605 /* llwebbrowserctrl.cpp */; };
1AEF0A580B2DFE67003F107C /* llctrlselectioninterface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AEF0A560B2DFE67003F107C /* llctrlselectioninterface.cpp */; };
1AEF0A5B0B2DFE72003F107C /* llrootview.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AEF0A5A0B2DFE72003F107C /* llrootview.cpp */; };
@@ -557,7 +561,6 @@
A241CB7D07B3DE0D001A39E3 /* llviewerprecompiledheaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A241CB7B07B3DE0D001A39E3 /* llviewerprecompiledheaders.cpp */; };
A241CB9207B3E383001A39E3 /* llmessagethrottle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A241CB8E07B3E383001A39E3 /* llmessagethrottle.cpp */; };
A241CB9507B3E3A7001A39E3 /* llperlin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A241CB9407B3E3A7001A39E3 /* llperlin.cpp */; };
- A243B29A0C6769AC004DFF19 /* llglimmediate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A243B2980C6769AC004DFF19 /* llglimmediate.cpp */; };
A26560520C9F53CC004042A0 /* llfloaterhardwaresettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A26560500C9F53CC004042A0 /* llfloaterhardwaresettings.cpp */; };
A2A8C5480C649EE20001FEB2 /* llmultislider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2A8C5440C649EE20001FEB2 /* llmultislider.cpp */; };
A2A8C5490C649EE20001FEB2 /* llmultisliderctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A2A8C5460C649EE20001FEB2 /* llmultisliderctrl.cpp */; };
@@ -836,6 +839,8 @@
FDE8766409BEA3C700AF6316 /* libvorbisenc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FDE8765609BEA39600AF6316 /* libvorbisenc.a */; };
FDE8766509BEA3C700AF6316 /* libvorbisfile.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FDE8765709BEA39600AF6316 /* libvorbisfile.a */; };
FDE8766609BEA3C800AF6316 /* libxmlrpc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FDE8765809BEA39700AF6316 /* libxmlrpc.a */; };
+ FE065EA40D8B0EE60089E9F1 /* llwatchdog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE065EA10D8B0EE60089E9F1 /* llwatchdog.cpp */; };
+ FE065EA50D8B0EE60089E9F1 /* llwindebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE065EA30D8B0EE60089E9F1 /* llwindebug.cpp */; };
FE0AEE2D0D2D96D20097256A /* libllmozlib2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FE0AEE2C0D2D96D20097256A /* libllmozlib2.dylib */; };
FE0AEE4D0D2D9C6E0097256A /* llparcelselection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE0AEE4A0D2D9C6E0097256A /* llparcelselection.cpp */; };
FE42C3140D231D1A00D9F143 /* llcommandlineparser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE42C3120D231D1A00D9F143 /* llcommandlineparser.cpp */; };
@@ -988,6 +993,8 @@
0633E5D109E341F500712406 /* llfile.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfile.h; sourceTree = ""; };
0633E5D309E3421500712406 /* llstreamtools.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llstreamtools.cpp; sourceTree = ""; };
0633E5D409E3421500712406 /* llstreamtools.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llstreamtools.h; sourceTree = ""; };
+ 07167BBA0DCA8059003FE31D /* llrender.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = llrender.cpp; sourceTree = ""; };
+ 07167BBB0DCA8059003FE31D /* llrender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = llrender.h; sourceTree = ""; };
0867D6ABFE840B52C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; };
1A02016D0B7A85DE00D5C589 /* llbase64.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llbase64.cpp; sourceTree = ""; };
1A02016E0B7A85DE00D5C589 /* llbase64.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llbase64.h; sourceTree = ""; };
@@ -1075,6 +1082,12 @@
1AD61F6C0AC09B2600507FB9 /* llimview.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llimview.h; sourceTree = ""; };
1ADE58920D7CCF6000183F7F /* llfloaterhud.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = llfloaterhud.cpp; sourceTree = ""; };
1ADE58930D7CCF6000183F7F /* llfloaterhud.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = llfloaterhud.h; sourceTree = ""; };
+ 1AE082090DA708E900575141 /* llanimstatelabels.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = llanimstatelabels.cpp; sourceTree = ""; };
+ 1AE0820A0DA708E900575141 /* llanimstatelabels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = llanimstatelabels.h; sourceTree = ""; };
+ 1AE0820B0DA708E900575141 /* llstylemap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = llstylemap.cpp; sourceTree = ""; };
+ 1AE0820C0DA708E900575141 /* llstylemap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = llstylemap.h; sourceTree = ""; };
+ 1AE0820D0DA708E900575141 /* lltrans.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lltrans.cpp; sourceTree = ""; };
+ 1AE0820E0DA708E900575141 /* lltrans.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lltrans.h; sourceTree = ""; };
1AE5D70F0844FBD200278605 /* llwebbrowserctrl.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llwebbrowserctrl.h; sourceTree = ""; };
1AE5D7100844FBD300278605 /* llwebbrowserctrl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llwebbrowserctrl.cpp; sourceTree = ""; };
1AEF0A560B2DFE67003F107C /* llctrlselectioninterface.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llctrlselectioninterface.cpp; sourceTree = ""; };
@@ -2113,8 +2126,6 @@
A241CB8E07B3E383001A39E3 /* llmessagethrottle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llmessagethrottle.cpp; sourceTree = ""; };
A241CB8F07B3E383001A39E3 /* llmessagethrottle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llmessagethrottle.h; sourceTree = ""; };
A241CB9407B3E3A7001A39E3 /* llperlin.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llperlin.cpp; sourceTree = ""; };
- A243B2980C6769AC004DFF19 /* llglimmediate.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llglimmediate.cpp; sourceTree = ""; };
- A243B2990C6769AC004DFF19 /* llglimmediate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llglimmediate.h; sourceTree = ""; };
A26560500C9F53CC004042A0 /* llfloaterhardwaresettings.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = llfloaterhardwaresettings.cpp; sourceTree = ""; };
A26560510C9F53CC004042A0 /* llfloaterhardwaresettings.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llfloaterhardwaresettings.h; sourceTree = ""; };
A29852A10BC6BC630005FA09 /* llhtmlhelp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = llhtmlhelp.h; sourceTree = ""; };
@@ -2396,6 +2407,9 @@
FDE8765609BEA39600AF6316 /* libvorbisenc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libvorbisenc.a; sourceTree = BUILT_PRODUCTS_DIR; };
FDE8765709BEA39600AF6316 /* libvorbisfile.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libvorbisfile.a; sourceTree = BUILT_PRODUCTS_DIR; };
FDE8765809BEA39700AF6316 /* libxmlrpc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libxmlrpc.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ FE065EA10D8B0EE60089E9F1 /* llwatchdog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = llwatchdog.cpp; sourceTree = ""; };
+ FE065EA30D8B0EE60089E9F1 /* llwindebug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = llwindebug.cpp; sourceTree = ""; };
+ FE065EA60D8B0F170089E9F1 /* llwatchdog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = llwatchdog.h; sourceTree = ""; };
FE0AEE2C0D2D96D20097256A /* libllmozlib2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libllmozlib2.dylib; path = "../../libraries/universal-darwin/lib_debug/libllmozlib2.dylib"; sourceTree = SOURCE_ROOT; };
FE0AEE480D2D9C6E0097256A /* lllcd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lllcd.cpp; sourceTree = SOURCE_ROOT; };
FE0AEE490D2D9C6E0097256A /* lllcd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lllcd.h; sourceTree = SOURCE_ROOT; };
@@ -2654,10 +2668,19 @@
children = (
AA38F8F00D8A3687003B39F9 /* llfloaterjoystick.cpp */,
AA38F8F10D8A3687003B39F9 /* llfloaterjoystick.h */,
+ 1AE082090DA708E900575141 /* llanimstatelabels.cpp */,
+ 1AE0820A0DA708E900575141 /* llanimstatelabels.h */,
+ 1AE0820B0DA708E900575141 /* llstylemap.cpp */,
+ 1AE0820C0DA708E900575141 /* llstylemap.h */,
+ 1AE0820D0DA708E900575141 /* lltrans.cpp */,
+ 1AE0820E0DA708E900575141 /* lltrans.h */,
1ADE58920D7CCF6000183F7F /* llfloaterhud.cpp */,
1ADE58930D7CCF6000183F7F /* llfloaterhud.h */,
D1BB623B0D91BBEB00001516 /* llfloatervoicedevicesettings.cpp */,
D1BB623C0D91BBEC00001516 /* llfloatervoicedevicesettings.h */,
+ FE065EA60D8B0F170089E9F1 /* llwatchdog.h */,
+ FE065EA10D8B0EE60089E9F1 /* llwatchdog.cpp */,
+ FE065EA30D8B0EE60089E9F1 /* llwindebug.cpp */,
FE0AEE480D2D9C6E0097256A /* lllcd.cpp */,
FE0AEE490D2D9C6E0097256A /* lllcd.h */,
FE0AEE4A0D2D9C6E0097256A /* llparcelselection.cpp */,
@@ -4235,8 +4258,8 @@
D628314D0B4F3FA100F8830F /* llrender */ = {
isa = PBXGroup;
children = (
- A243B2980C6769AC004DFF19 /* llglimmediate.cpp */,
- A243B2990C6769AC004DFF19 /* llglimmediate.h */,
+ 07167BBA0DCA8059003FE31D /* llrender.cpp */,
+ 07167BBB0DCA8059003FE31D /* llrender.h */,
A30273550B3A13D800704420 /* llvertexbuffer.cpp */,
A30273560B3A13D800704420 /* llvertexbuffer.h */,
D628315B0B4F3FA100F8830F /* llfont.cpp */,
@@ -5018,7 +5041,7 @@
A2A8C5680C649F490001FEB2 /* llwldaycycle.cpp in Sources */,
A2A8C5690C649F490001FEB2 /* llwlparammanager.cpp in Sources */,
A2A8C56A0C649F490001FEB2 /* llwlparamset.cpp in Sources */,
- A243B29A0C6769AC004DFF19 /* llglimmediate.cpp in Sources */,
+ 07167BBC0DCA8059003FE31D /* llrender.cpp in Sources */,
1CBB67D80C7CCCB2007DAAAE /* llfloaterwater.cpp in Sources */,
1CBB67D90C7CCCB2007DAAAE /* llwaterparammanager.cpp in Sources */,
1CBB67DA0C7CCCB2007DAAAE /* llwaterparamset.cpp in Sources */,
@@ -5027,10 +5050,15 @@
A26560520C9F53CC004042A0 /* llfloaterhardwaresettings.cpp in Sources */,
D1CA83CE0D62634400C61743 /* llfloaterstats.cpp in Sources */,
1ADE58940D7CCF6000183F7F /* llfloaterhud.cpp in Sources */,
+ FE065EA40D8B0EE60089E9F1 /* llwatchdog.cpp in Sources */,
+ FE065EA50D8B0EE60089E9F1 /* llwindebug.cpp in Sources */,
CB0873B60D62226B009600F8 /* lldelayedgestureerror.cpp in Sources */,
1A531BFC0D81056E00DEB305 /* llfloatercamera.cpp in Sources */,
D1BB623D0D91BBEC00001516 /* llfloatervoicedevicesettings.cpp in Sources */,
AA38F8F20D8A3687003B39F9 /* llfloaterjoystick.cpp in Sources */,
+ 1AE0820F0DA708E900575141 /* llanimstatelabels.cpp in Sources */,
+ 1AE082100DA708E900575141 /* llstylemap.cpp in Sources */,
+ 1AE082110DA708E900575141 /* lltrans.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/linden/indra/newview/newview.vcproj b/linden/indra/newview/newview.vcproj
index 3fe72e6..a378434 100644
--- a/linden/indra/newview/newview.vcproj
+++ b/linden/indra/newview/newview.vcproj
@@ -295,6 +295,9 @@
RelativePath=".\llagentpilot.cpp">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1437,6 +1441,10 @@
>
+
+
@@ -1549,6 +1557,10 @@
>
+
+
@@ -1905,6 +1917,10 @@
>
+
+
@@ -1995,6 +2011,10 @@
>
+
+
@@ -2679,6 +2699,10 @@
>
+
+
@@ -3031,6 +3055,10 @@
>
+
+
@@ -3151,6 +3179,10 @@
>
+
+
@@ -3423,6 +3455,10 @@
>
+
+
diff --git a/linden/indra/newview/newview_vc9.vcproj b/linden/indra/newview/newview_vc9.vcproj
index 40851cb..6b693b5 100644
--- a/linden/indra/newview/newview_vc9.vcproj
+++ b/linden/indra/newview/newview_vc9.vcproj
@@ -406,6 +406,10 @@
>
+
+
@@ -1422,6 +1426,10 @@
>
+
+
@@ -1534,6 +1542,10 @@
>
+
+
@@ -1890,6 +1902,10 @@
>
+
+
@@ -1980,6 +1996,10 @@
>
+
+
@@ -2664,6 +2684,10 @@
>
+
+
@@ -3016,6 +3040,10 @@
>
+
+
@@ -3136,6 +3164,10 @@
>
+
+
@@ -3408,6 +3440,10 @@
>
+
+
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp
index 5ec3310..20fd5a7 100644
--- a/linden/indra/newview/pipeline.cpp
+++ b/linden/indra/newview/pipeline.cpp
@@ -50,7 +50,7 @@
#include "v3color.h"
#include "llui.h"
#include "llglheaders.h"
-#include "llglimmediate.h"
+#include "llrender.h"
// newview includes
#include "llagent.h"
@@ -125,6 +125,7 @@ extern S32 gBoxFrame;
extern BOOL gRenderLightGlows;
extern BOOL gHideSelectedObjects;
extern BOOL gDisplaySwapBuffers;
+extern BOOL gDebugGL;
// hack counter for rendering a fixed number of frames after toggling
// fullscreen to work around DEV-5361
@@ -134,6 +135,7 @@ BOOL gAvatarBacklight = FALSE;
BOOL gRenderForSelect = FALSE;
+BOOL gDebugPipeline = FALSE;
LLPipeline gPipeline;
const LLMatrix4* gGLLastMatrix = NULL;
@@ -504,11 +506,7 @@ void LLPipeline::createGLBuffers()
res = 128;
mCubeBuffer = new LLCubeMap();
mCubeBuffer->initGL();
- glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, mCubeBuffer->getGLName());
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ mCubeBuffer->setReflection();
for (U32 i = 0; i < 6; i++)
{
@@ -1178,7 +1176,7 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
LLGLDisable test(GL_ALPHA_TEST);
LLViewerImage::unbindTexture(0, GL_TEXTURE_2D);
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
+ gGL.setColorMask(false, false);
LLGLDepthTest depth(GL_TRUE, GL_FALSE);
for (LLWorld::region_list_t::iterator iter = LLWorld::getInstance()->getRegionList().begin();
@@ -1236,7 +1234,7 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl
sCull->pushDrawable(gSky.mVOGroundp->mDrawable);
}
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
+ gGL.setColorMask(true, false);
glPopMatrix();
if (to_texture)
@@ -1313,11 +1311,11 @@ void LLPipeline::doOcclusion(LLCamera& camera)
LLVertexBuffer::unbind();
if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_OCCLUSION))
{
- glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE);
+ gGL.setColorMask(true, false, false, false);
}
else
{
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
+ gGL.setColorMask(false, false);
}
LLGLDisable blend(GL_BLEND);
LLGLDisable test(GL_ALPHA_TEST);
@@ -1334,7 +1332,7 @@ void LLPipeline::doOcclusion(LLCamera& camera)
}
}
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
+ gGL.setColorMask(true, false);
glFlush();
}
@@ -2262,11 +2260,9 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
LLVertexBuffer::unbind();
// Do verification of GL state
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
-#endif
if (mRenderDebugMask & RENDER_DEBUG_VERIFY)
{
if (!verify())
@@ -2384,19 +2380,18 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
}
poolp->endRenderPass(i);
LLVertexBuffer::unbind();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
-# if LL_DEBUG_GL
- GLint depth;
- glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
- if (depth > 3)
+ if (gDebugGL || gDebugPipeline)
{
- llerrs << "GL matrix stack corrupted!" << llendl;
+ GLint depth;
+ glGetIntegerv(GL_MODELVIEW_STACK_DEPTH, &depth);
+ if (depth > 3)
+ {
+ llerrs << "GL matrix stack corrupted!" << llendl;
+ }
+ LLGLState::checkStates();
+ LLGLState::checkTextureChannels();
+ LLGLState::checkClientArrays();
}
- LLGLState::checkStates();
- LLGLState::checkTextureChannels();
- LLGLState::checkClientArrays();
-# endif
-#endif
}
}
else
@@ -2417,11 +2412,9 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
}
LLVertexBuffer::unbind();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
-#endif
gGLLastMatrix = NULL;
glLoadMatrixd(gGLModelView);
@@ -2436,12 +2429,10 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
stop_glerror();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
- LLGLState::checkStates();
- LLGLState::checkTextureChannels();
- LLGLState::checkClientArrays();
-#endif
-
+ LLGLState::checkStates();
+ LLGLState::checkTextureChannels();
+ LLGLState::checkClientArrays();
+
if (!sReflectionRender)
{
renderHighlights();
@@ -2475,11 +2466,9 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
LLVertexBuffer::unbind();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
-#endif
}
void LLPipeline::renderGeomDeferred()
@@ -2514,7 +2503,7 @@ void LLPipeline::renderDebug()
gGLLastMatrix = NULL;
glLoadMatrixd(gGLModelView);
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
+ gGL.setColorMask(true, false);
// Debug stuff.
for (LLWorld::region_list_t::iterator iter = LLWorld::getInstance()->getRegionList().begin();
@@ -2585,7 +2574,7 @@ void LLPipeline::renderForSelect(std::set& objects)
{
assertInitialized();
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_FALSE);
+ gGL.setColorMask(true, false);
gPipeline.resetDrawOrders();
for (std::set::iterator iter = objects.begin(); iter != objects.end(); ++iter)
@@ -2607,12 +2596,11 @@ void LLPipeline::renderForSelect(std::set& objects)
LLVertexBuffer::unbind();
//for each drawpool
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
U32 last_type = 0;
-#endif
+
for (pool_set_t::iterator iter = mPools.begin(); iter != mPools.end(); ++iter)
{
LLDrawPool *poolp = *iter;
@@ -2624,7 +2612,6 @@ void LLPipeline::renderForSelect(std::set& objects)
gGLLastMatrix = NULL;
glLoadMatrixd(gGLModelView);
-#ifndef LL_RELEASE_FOR_DOWNLOAD
if (poolp->getType() != last_type)
{
last_type = poolp->getType();
@@ -2632,32 +2619,21 @@ void LLPipeline::renderForSelect(std::set& objects)
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
}
-#endif
}
}
LLGLEnable alpha_test(GL_ALPHA_TEST);
if (gPickTransparent)
{
- glAlphaFunc(GL_GEQUAL, 0.0f);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER_EQUAL, 0.f);
}
else
{
- glAlphaFunc(GL_GREATER, 0.2f);
+ gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.2f);
}
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_MODULATE);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PRIMARY_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_ARB, GL_PRIMARY_COLOR_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA_ARB, GL_SRC_ALPHA);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_VERT_COLOR);
+ gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA);
U32 prim_mask = LLVertexBuffer::MAP_VERTEX |
LLVertexBuffer::MAP_TEXCOORD;
@@ -2758,12 +2734,11 @@ void LLPipeline::renderForSelect(std::set& objects)
glViewport(gGLViewport[0], gGLViewport[1], gGLViewport[2], gGLViewport[3]);
}
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
LLVertexBuffer::unbind();
- LLVertexBuffer::unbind();
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ gGL.setColorMask(true, true);
}
void LLPipeline::renderFaceForUVSelect(LLFace* facep)
@@ -4118,11 +4093,9 @@ void apply_cube_face_rotation(U32 face)
}
void LLPipeline::generateReflectionMap(LLCubeMap* cube_map, LLCamera& cube_cam)
{
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
-#endif
assertInitialized();
@@ -4140,10 +4113,7 @@ void LLPipeline::generateReflectionMap(LLCubeMap* cube_map, LLCamera& cube_cam)
glGetTexLevelParameteriv(GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, 0, GL_TEXTURE_WIDTH, &width);
if (width != res)
{
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ cube_map->setReflection();
for (U32 i = 0; i < 6; i++)
{
@@ -4224,9 +4194,9 @@ void LLPipeline::generateReflectionMap(LLCubeMap* cube_map, LLCamera& cube_cam)
gPipeline.stateSort(cube_cam, result);
glClearColor(0,0,0,0);
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
+ gGL.setColorMask(true, true);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_FALSE);
+ gGL.setColorMask(true, false);
stop_glerror();
gPipeline.renderGeom(cube_cam);
}
@@ -4254,12 +4224,9 @@ void LLPipeline::generateReflectionMap(LLCubeMap* cube_map, LLCamera& cube_cam)
LLPipeline::sSkipUpdate = FALSE;
LLPipeline::sReflectionRender = FALSE;
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
-#endif
-
}
//send cube map vertices and texture coordinates
@@ -4336,18 +4303,16 @@ void validate_framebuffer_object()
void LLPipeline::blurReflectionMap(LLCubeMap* cube_in, LLCubeMap* cube_out)
{
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
-#endif
assertInitialized();
U32 res = (U32) gSavedSettings.getS32("RenderReflectionRes");
enableLightsFullbright(LLColor4::white);
LLGLDepthTest depth(GL_FALSE);
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ gGL.setColorMask(true, true);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
@@ -4361,10 +4326,7 @@ void LLPipeline::blurReflectionMap(LLCubeMap* cube_in, LLCubeMap* cube_out)
glGetTexLevelParameteriv(GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, 0, GL_TEXTURE_WIDTH, &width);
if (width != res)
{
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ cube_out->setReflection();
for (U32 i = 0; i < 6; i++)
{
@@ -4391,7 +4353,7 @@ void LLPipeline::blurReflectionMap(LLCubeMap* cube_in, LLCubeMap* cube_out)
stop_glerror();
glViewport(0,0,res, res);
- gGL.blendFunc(GL_ONE, GL_ONE);
+ gGL.setSceneBlendType(LLRender::BT_ADD);
cube_in->enableTexture(0);
//3-axis blur
for (U32 j = 0; j < 3; j++)
@@ -4421,7 +4383,7 @@ void LLPipeline::blurReflectionMap(LLCubeMap* cube_in, LLCubeMap* cube_out)
gl_cube_face[i],
j < 2 ? mBlurCubeTexture[j] : cube_out->getGLName(), 0);
validate_framebuffer_object();
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
+ gGL.setColorMask(true, true);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
apply_cube_face_rotation(i);
@@ -4441,7 +4403,7 @@ void LLPipeline::blurReflectionMap(LLCubeMap* cube_in, LLCubeMap* cube_out)
glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, 0);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_FALSE);
+ gGL.setColorMask(true, false);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
@@ -4449,13 +4411,11 @@ void LLPipeline::blurReflectionMap(LLCubeMap* cube_in, LLCubeMap* cube_out)
cube_in->disableTexture();
gViewerWindow->setupViewport();
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
-#endif
}
void LLPipeline::bindScreenToTexture()
@@ -4471,10 +4431,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot)
return;
}
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
-#endif
assertInitialized();
@@ -4494,7 +4452,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot)
tc2 /= (F32) res_mod;
}
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ gGL.setColorMask(true, true);
LLFastTimer ftm(LLFastTimer::FTM_RENDER_BLOOM);
gGL.color4f(1,1,1,1);
@@ -4513,7 +4471,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot)
LLGLDisable test(GL_ALPHA_TEST);
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ gGL.setColorMask(true, true);
glClearColor(0,0,0,0);
if (for_snapshot)
@@ -4525,7 +4483,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot)
//glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
//LLGLDisable blend(GL_BLEND);
LLGLEnable blend(GL_BLEND);
- gGL.blendFunc(GL_ONE, GL_ONE);
+ gGL.setSceneBlendType(LLRender::BT_ADD);
tc2.setVec(1,1);
gGL.begin(LLVertexBuffer::TRIANGLE_STRIP);
gGL.color4f(1,1,1,1);
@@ -4543,7 +4501,7 @@ void LLPipeline::renderBloom(BOOL for_snapshot)
gGL.end();
gGL.flush();
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
gGL.flush();
@@ -4575,8 +4533,8 @@ void LLPipeline::renderBloom(BOOL for_snapshot)
gGlowExtractProgram.uniform1f("warmthAmount", warmthAmount);
LLGLEnable blend_on(GL_BLEND);
LLGLEnable test(GL_ALPHA_TEST);
- glAlphaFunc(GL_GREATER, 0.f);
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE);
+ gGL.setAlphaRejectSettings(LLRender::CF_DEFAULT);
+ gGL.setSceneBlendType(LLRender::BT_ADD_WITH_ALPHA);
LLViewerImage::unbindTexture(0, GL_TEXTURE_2D);
glDisable(GL_TEXTURE_2D);
@@ -4785,26 +4743,17 @@ void LLPipeline::renderBloom(BOOL for_snapshot)
LLGLDisable blend(GL_BLEND);
-
//tex unit 0
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_REPLACE);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
+ gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_COLOR);
mGlow[1].bindTexture();
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, uv0);
- glActiveTextureARB(GL_TEXTURE1_ARB);
+ gGL.getTexUnit(1)->activate();
glEnable(GL_TEXTURE_RECTANGLE_ARB);
//tex unit 1
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_ADD);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE);
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
+ gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR);
glClientActiveTextureARB(GL_TEXTURE1_ARB);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
@@ -4819,23 +4768,23 @@ void LLPipeline::renderBloom(BOOL for_snapshot)
glDisable(GL_TEXTURE_RECTANGLE_ARB);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT);
glClientActiveTextureARB(GL_TEXTURE0_ARB);
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ gGL.getTexUnit(0)->activate();
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+ gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT);
}
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
+ LLVertexBuffer::unbind();
+
LLGLState::checkStates();
LLGLState::checkTextureChannels();
-#endif
}
@@ -4867,11 +4816,9 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
{
LLVertexBuffer::unbind();
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
-#endif
LLCamera camera = camera_in;
camera.setFar(camera.getFar()*0.87654321f);
@@ -4916,11 +4863,11 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
{ //generate planar reflection map
LLViewerImage::unbindTexture(0, GL_TEXTURE_2D);
glClearColor(0,0,0,0);
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
+ gGL.setColorMask(true, true);
mWaterRef.bindTarget();
mWaterRef.getViewport(gGLViewport);
mWaterRef.clear();
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_FALSE);
+ gGL.setColorMask(true, false);
stop_glerror();
@@ -5022,11 +4969,11 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
LLViewerImage::unbindTexture(0, GL_TEXTURE_2D);
LLColor4& col = LLDrawPoolWater::sWaterFogColor;
glClearColor(col.mV[0], col.mV[1], col.mV[2], 0.f);
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
+ gGL.setColorMask(true, true);
mWaterDis.bindTarget();
mWaterDis.getViewport(gGLViewport);
mWaterDis.clear();
- glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_FALSE);
+ gGL.setColorMask(true, false);
if (!LLPipeline::sUnderWaterRender || LLDrawPoolWater::sNeedsReflectionUpdate)
{
@@ -5060,11 +5007,9 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
LLViewerCamera::getInstance()->setUserClipPlane(LLPlane(-pnorm, -pd));
LLPipeline::sUseOcclusion = occlusion;
-#ifndef LL_RELEASE_FOR_DOWNLOAD
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
-#endif
}
}
@@ -5203,7 +5148,7 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
glh_set_current_modelview(mat);
glClearColor(0.0f,0.0f,0.0f,0.0f);
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ gGL.setColorMask(true, true);
glStencilMask(0xFFFFFFFF);
glClearStencil(0);
@@ -5250,14 +5195,14 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
if (muted)
{
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ gGL.setColorMask(true, true);
}
else
{
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE);
+ gGL.setColorMask(false, true);
}
- gGL.blendFunc(GL_ONE, GL_ONE);
+ gGL.setSceneBlendType(LLRender::BT_ADD);
LLImageGL::unbindTexture(0, GL_TEXTURE_2D);
LLGLDepthTest depth(GL_FALSE, GL_FALSE);
@@ -5273,7 +5218,7 @@ void LLPipeline::generateImpostor(LLVOAvatar* avatar)
gGL.flush();
- gGL.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
diff --git a/linden/indra/newview/pipeline.h b/linden/indra/newview/pipeline.h
index 9896a4a..bd857c2 100644
--- a/linden/indra/newview/pipeline.h
+++ b/linden/indra/newview/pipeline.h
@@ -550,6 +550,7 @@ void render_bbox(const LLVector3 &min, const LLVector3 &max);
extern LLPipeline gPipeline;
extern BOOL gRenderForSelect;
+extern BOOL gDebugPipeline;
extern const LLMatrix4* gGLLastMatrix;
#endif
diff --git a/linden/indra/newview/releasenotes.txt b/linden/indra/newview/releasenotes.txt
index b6b38d8..12cd9fb 100644
--- a/linden/indra/newview/releasenotes.txt
+++ b/linden/indra/newview/releasenotes.txt
@@ -1,3 +1,119 @@
+Release Notes for Second Life 1.20(7) May 16th, 2008
+=====================================
+
+New features and changes:
+* Pasting multiline clipboard content into Chat will show a Paragraph symbol at newlines
+* Moved "Set Window Size" options from File menu into Preferences > Graphics
+* New users are rendered as a cloud, rather than naked, before they choose a gender
+* Directly interacting with a muted resident will unmute them, with a note logged in the Chat history (VWR-1735)
+* Fly button is now shown as disabled when you are sitting
+* Group Info > Notices tab explains the storage limits of 200 notices and 14 days
+* Added OpenGL monitoring via Advanced menu > Rendering > Debug GL option to turn on extra rendering error checking and help reproduce crashes
+* Added beta support for basic voice lipsync for voice visualization (VWR-4794) - via Advanced menu > Character
+* Changed resident names to be interactive in Chat/IM:
+** Clicking on resident names in Local Chat will open their Profile page
+** Clicking on resident names in a Group IM will open an individual IM
+
+* Added four texture constants for referencing in llSetLinkTexture in scripts:
+** TEXTURE_BLANK, TEXTURE_DEFAULT, TEXTURE_PLYWOOD and TEXTURE_TRANSPARENT
+** Note: Scripts using these constants will run in all Second Life viewers, however previous versions of the viewer will not be able to edit and recompile scripts using the new TEXTURE_BLANK constant; older versions trying to compile such a script will report "(XX,YY) : ERROR : Name not defined within scope."
+
+* Thread monitoring to catch freezes
+** A new thread monitor will detect when the viewer application frozen for a period greater than 10 seconds and possibly force a crash with detailed logs
+
+* Improved internationalization support:
+** Make 'System Default' language option work on Linux and Windows.
+** Make unicode system font support good on Linux
+
+* Improvements to Search
+** Search > Popular Places is replaced by a Search > Showcase tab that points to the website Showcase
+** Search > Places and Search > Groups use web-based search
+** Classified ads have a drop-down menu to indicate Mature or Not Mature content
+
+Changes:
+* VWR-4794: Basic voice lipsync for voice visualization
+* VWR-4204: Clicking on names in Chat/Group IM history should open Profile page or IM
+* VWR-463: Blank is a pre-defined texture in client, but not in LSL
+* Updated library version for openssl
+* New users are shown as a cloud rather than naked until they choose a gender.
+* Move "Set Window Size" options from File menu into Preferences > Graphics
+* Make clothing-still-downloading dialog into an ignorable alert dialog
+* Internationalize additional hard-coded viewer strings to a strings.xml file
+* Search > Popular Places is replaced by a Search > Showcase tab that points to the website Showcase
+* Convert Search > Places tab to use HTML search
+* Convert Search > Group tab to use HTML search
+* Search: Require Mature/Not Mature in Classifieds
+* Make strict GL debugging toggleable on-the-fly via Advanced menu > Rendering > Debug GL option - turns on extra rendering error checking and help reproduce crashes
+
+Fixes:
+* Fixed: VWR-104: Unused class LLVertexProgramGL should be removed
+* Fixed: VWR-2778: System skirt textures turn invisible on wearing
+* Fixed: VWR-2272: Fly button doesn't work while sitting
+* Fixed: VWR-2404: Lossless texture compression on small textures is not lossless
+* Fixed: VWR-5807: Wild rotations of linkset while using the editor in Local Ruler Mode via CTRL key
+* Fixed: VWR-6056: Animation viewer does not play animations on upload.
+* Fixed: VWR-6399: llMapDestination should still show teleport map -- Teleport / Map screen changes in 1.20 RC0 need to be undone
+* Fixed: VWR-4860: WindLight: Planar texturing renders incorrectly in 1.19.0 (79674)
+* Fixed: VWR-5963: LLImageGL::setClamp may affect random texture (making repeating textures on objects non-repeating)
+* Fixed: VWR-7061: Trivial UI grammar error in the title of the "Script Warning/Error" window
+* Fixed: VWR-6186: Second Life is leaking Objective-C objects at startup
+* Fixed: VWR-3598: Non-group owned objects appear to belong to the group of the last selected object, no matter the owner/group.
+* Fixed: SVC-1241: Dead code in lscript_execute.cpp
+* Fixed: VWR-4057: Multi-line chat display bug - first character in line missing
+* Fixed: VWR-3857: Script (LSL) editor shows non Latin 1 characters as square boxes
+* Fixed: VWR-2275: Linux 1.18.3 Won't Link
+* Fixed: VWR-3813: gtk_check_version() API changed to return const gchar * - causes gcc ERROR
+* Fixed: llrender.cpp export
+* Fixed: Create secondlife:///app/ URL to open my groups panel
+* Fixed: Create secondlife:///app/ URL to open create groups dialog
+* Fixed: Display a message if LLWebBrowserCtrl blocks a secondlife:///app/* url
+* Fixed: Abstract common glTexParameter calls
+* Fixed: Orientation Island HUD select language texture is wrong for English in 1.20
+* Fixed: Double-clicking border of communicate window makes window unrecoverable
+* Fixed: Command line parser bug parsing "--multiple true" at beginning of a command line.
+* Fixed: --loginuri is not being handled correctly
+* Fixed: Grid selection drop-down on login screen does not take priority over -loginuri when selection is first opened
+* Fixed: crash in LLMediaImplQuickTime::load
+* Fixed: crash on LLViewerParcelMedia::update
+* Fixed: Pop-up menu width should try to accomodate the longest menu item (within reason)
+* Fixed: VWR-1735: Directly interacting with a muted resident should unmute them
+* Fixed: VWR-2142: Parcel voice icon doesn't reflect disabled status if voice isn't used
+* Fixed: VWR-5853: Double-Clicking on vertical edge of Inventory/Gesture window destroys the floating window.
+* Fixed: VWR-2448: Snapshot Preview tool should respect 'Quiet Snapshots to Disk'
+* Fixed: Can't change values with debug settings floater
+* Fixed: Focus > Zoom button can't be re-selected
+* Fixed: Debug Permissions displays overlap
+* Fixed: Objects with no group tagging show group tags of previously clicked items
+* Fixed: stop bundling libexpat with the linux viewer
+* Partial Fix: Pasting multiline clipboard content into chat loses newlines
+
+Localization Fixes:
+* Fixed: VWR-7168: A typo in base (en-us) version of mime_types.xml
+* Fixed: VWR-7153: An typo in en-us version of alerts.xml file makes an text of unlocalizable
+* Fixed: VWR-7087: Japanese "About Second Life..." file includes an invalid UTF-8 character
+
+Release Notes for Second Life 1.20(6) May 7th, 2008
+=====================================
+Changes:
+* Changed the reference in Group Information window > Notices tab to 14 days instead of 30
+* Removed menu option Advanced > Character > Show Collision Plane
+
+Fixes:
+* Fixed: VWR-6389: Runtime Library error after quitting Second Life
+* Fixed: VWR-4580: Property lines are visible through avatar, objects and through ground
+* Fixed: VWR-6896: Crash when selecting Advanced > Rendering > Info Displays > Lights (and other Info Displays)
+* Fixed: VWR-7042: Incorrect tooltip for "Use built-in web browser" option
+* Fixed: the spinners are broken in the snapshot UI when upload a snapshot
+* Fixed: Create tool's last 11 shapes are not the proper height ("sphere" looks like an "egg")
+* Fixed: Typographical error in Transfer permissions alert dialog
+* Fixed: Crash selecting Edit > Land Owners with Basic Shaders disabled
+* Fixed: crash on LLFloaterWorldMap::buildLandmarkIDLists
+* Fixed: 3dConnexion device does not default to enabled with 1.20 RC 5
+* Fixed: Settings in the Joystick Configuration window reset to defaults on each launch when a SpaceNavigator is connected
+
+Localization Fixes:
+* Fixed: XML resizing to repair truncated text in 1.20 localizations
+
Release Notes for Second Life 1.20(5) May 1st, 2008
=====================================
Changes:
@@ -219,3 +335,140 @@ Source changes:
* Fixed: g++ 4 viewer compile issues
* Dead code removal createLegacyWearableFromAvatar
+
+Release Notes for Second Life 1.19.0(4) February 28th, 2008
+=====================================
+New features and changes:
+* Voice
+** Voice Chat is now enabled by default to allow Residents to hear other Residents.
+** A microphone is required to speak to other Residents.
+** Push-to-Talk is the default mode for transmitting voice.
+** These settings can be modified via the Voice Chat tab of the Preferences dialog.
+
+* Age Verification:
+** The user interface for parcel and estate access has been clarified and improved.
+** Added the ability to restrict access to parcels and estates to age verified adults.
+** Removed the ability to *ban* access to Residents who have provided payment info or who have used payment info. We continue to support the ability to *allow* access to only those who have provided payment info.
+
+* Crash Reporter
+** The crash reporting mechanism has been improved. Following a crash, more useful information will be sent and reports should now take less than 10 seconds.
+
+* VWR-210: Voice Support on Linux (EXPERIMENTAL) - see README-linux-voice.txt
+
+* Other changes:
+** Change alert message that pops up when you set Busy
+** Add "Teleporting from SLURL to SLURL" to the chat history to provide quick and dirty "back" links
+** Print the name of the missing gesture in the error message
+** Remove "New Account..." and "Preferences" buttons from login screen for 1.19.0
+
+Fixes:
+* SVC-930: Prims set for sale - prices are incorrectly set when multiple prims taken to inventory and rezzed
+* SVC-1125: New Search: Beacons aren't shown when teleporting to regions with "Allow Direct Teleport" disabled
+* VWR-1125: Clicking Title Bar While Mouselook'd Repositions SL Window
+* VWR-1137: Inventory names out of sync after renaming via Properties window
+* VWR-1145: Unable To Connect help not available
+* VWR-1162: Land for sale includes L$1 parcels that are not actually for sale
+* VWR-1350: Color settings do not appear to be applied to LSL default text
+* VWR-1475: OpenJPEG always uploads single layer lossless images
+* VWR-1590: Keyboard changes inventory selection after right-click
+* VWR-1627: Classified metrics are reset to 0 when the ad is updated
+* VWR-1651: Add ability to open a partners profile whilst viewing an avatar's profile
+* VWR-1774: Some avatar positions result in no Z-axis arrow when editing attachments
+* VWR-1873: Typos in en-us locale file
+* VWR-1919: Remove texture UUID information from UI unless full-perm
+* VWR-2030: Avatar only turns half-way in Appearance Mode
+* VWR-2142: Parcel voice icon doesn't reflect disabled status if voice isn't used
+* VWR-2256: Mac updater directory permission issues
+* VWR-2367: Wrong handling of maximum length of Group Notice message
+* VWR-2404: lossless texture compression on small textures not lossless
+* VWR-2410: noise dot appear in chat window when clien running long with chatting.
+* VWR-2411: Possible crash in pipeline.cpp
+* VWR-2412: Possible crash drawpoolwater
+* VWR-2421: ATI Radeon HD 2900 XT + Second Life = "Couldn't match GPU to a class","Setting GPU Class to Class0"
+* VWR-2483: the macviewer.xcodeprj file doesn't create stripped binaries on Deployment or Universal
+* VWR-250: Preedit (composition) strings are shown poorly when typing Japanese text on Windows
+* VWR-2550: Scuplty vertex coordinates are size/256 meters too small on the positive faces
+* VWR-2614: gActiveChannelSpeakerMgr not deleted at end of program in viewer.cpp
+* VWR-2617: Adds LLSD support to flex/light/sculpt params for primitives
+* VWR-2652: Changes needed to compile viewer against lastest libopenjpeg2000
+* VWR-2684: Minor leak in floaters using layoutstacks
+* VWR-2722: Muting an object with pie menu only mutes the prim you select, not entire linkset
+* VWR-2847: Wrong hover text in Japanese UI
+* VWR-2854: Some sculpted prims render as balls on close zoom, which look fine in older clients
+* VWR-2867: Eyes rotate unnaturally around their X axis. Clockwise/Counter-Clockwise
+* VWR-289: URLs for video media streaming need to be URL-encoded or stream doesn't work
+* VWR-2959: Windows (Visual Studio) solution file refers to a non-existing project "build_all"
+* VWR-3088: Unchecking "Automatic Appearance Camera Movement" no longer has any effect
+* VWR-3206: OpenJPEG svn478 causes slviewer to crash
+* VWR-3428: Checking a users profile while editing a linked set causes viewer crash
+* VWR-3458: Mouse cursor background is opaque white instead of transparent on big endian systems
+* VWR-3558: llLoadURL cannot be muted
+* VWR-356: Move delete to the bottom of context menus, separated by spacer
+* VWR-3748: Builds fail on 1.18.6 RC if not using MOZLIB due to missing #if LL_LIBXUL_ENABLED in 3 places in indra/newview/llpanellogin.cpp
+* VWR-3948: Underlayers no longer removable by pie menu in Windlight, release candidates
+* VWR-412: Object editing arrows hidden but clickable on objects you can't edit.
+* dialogs have extra vertical space
+* Photo Album: name in Properties cut off some Japanese characters
+* New gestures do not appear active in inventory
+* Make parcel name in menu "look" active
+* "Wear" pie option shows up for many objects even if resident does not own and cannot wear them.
+* Textures on no-transfer objects can be transferred
+* Deleted gestures still work
+* Inventory description out of sync after renaming via Properties window
+* Show private estate tiles when World Map is zoomed out
+* Properties description not updated when preview description updated
+* Buying object contents broken
+* Improve window opening behavior, ensuring it is mostly on screen
+* No-modify objects can be modified through Open pane
+* Inventory names out of sync after renaming via Properties
+* Japanese IME mode should be set and postiion of any input windows fixed for non-Japanese fields
+* ctrl-shift-w doesn't work if no windows have focus
+* Avatar falling in place - Alliez Mysterio
+* Linux crash reporter does not run on next execution after forcing an infinite loop and forcefully exiting
+* hitting enter should immediately set the value of a field
+* Inventory Folder Loading state not clearly indicated
+* Add warning dialog to the Land Sale process to warn against selling land to Anyone
+* Legacy flossexception link needs to be fixed in source
+* make link from client log in window to "Forgot Password" page
+* Remove button under estate managers list enables after estate manager clicks in the list
+* Changing search field should cancel current selection
+* Estate tab within Tools / Region Estate has wrong settings for enable of Restrict Access upon initialization
+* llEscapeURL and llUnescapeURL caps output to 255 characters
+* XUI LoadFromXML function doesn't work
+* Sanitize floater sizing behavior when SL window is made very small
+* Animation won't stop if avatar teleports while animated
+* Can't paste name of object into View > Mute List > Mute object by name
+* pressing ctrl-F10 then Escape causes keyboard to be unresponsive
+* Make SL viewer updater show a progress bar so that people know how long to wait
+* Can't double-click on groups in profile after changing your active title
+* Getting multiple copies of texture dragged onto prim
+* blue dialog's 'next' widget steals focus
+* Audio should be encoded for upload at a 'good enough' quality rather than a user-selected bitrate
+* multiple preview windows open for a single texture/snapshot saved inside a note card
+* Enhance Viewer to support new Age Verification feature
+* Rename crash setting to cause crash logger to come up for all residents
+* Change crash logger "Remember this choice" function to default to on
+* Rework Ban tab of floater_about_land
+* Windows IME positioning fixed
+* Viewer crashes in assert when playing Sword Strike animation
+* Unable to set 'Group Access' for land that is also 'Public Access' (Was VWR-3667)
+* Disable QuickTime when the installed version is less than version with RTSP exploit
+* Korean viewer crashes on startup
+* Move fullscreen message from login screen to viewer prefs
+* linux client doesn't recognise that a viewer is already running (slurl crapout)
+* Search results window displays "s..." and "n..." instead of "searching..." and "none found"
+* QuickTime disabled message can not be ignored
+* Crash on login page when using Logitech LCD Keyboard
+* SEC-17 Ability to Access Sculpted Prim Textures from Database without owning actual sculpt texture, allowing for people to "steal" sculpts.
+* info window does not pop up when transitioning from a Havok1 to Havok4 region
+* Repoint Report Bug... Viewer link to Pjira
+* Upload Animation window: Button missing in Stopped window state
+
+Source changes:
+* Upgrade Win32 libvorbis to v1.2
+* VWR-2881: Bundled Mesa libs are not GPL compatible
+* upgrade in-tree Linux GL headers to Mesa 7.x
+* upgrade in-tree Win32 GL headers to version without SGI Free B license
+* Rebuild and/or update libraries to use statically linked libs.
+* Remove llfloaterhtmlhelp.cpp / h and floater_html_help.xml
+
diff --git a/linden/indra/newview/res/newViewRes.rc b/linden/indra/newview/res/newViewRes.rc
index 6254613..099d5dc 100644
--- a/linden/indra/newview/res/newViewRes.rc
+++ b/linden/indra/newview/res/newViewRes.rc
@@ -231,8 +231,8 @@ TOOLMEDIAOPEN CURSOR "toolmediaopen.cur"
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,19,1,4
- PRODUCTVERSION 1,19,1,4
+ FILEVERSION 1,20,6,86975
+ PRODUCTVERSION 1,20,6,86975
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -249,12 +249,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Linden Lab"
VALUE "FileDescription", "Second Life"
- VALUE "FileVersion", "1.19.1.4"
+ VALUE "FileVersion", "1.20.6.86975"
VALUE "InternalName", "Second Life"
VALUE "LegalCopyright", "Copyright 2001-2008, Linden Research, Inc."
VALUE "OriginalFilename", "SecondLife.exe"
VALUE "ProductName", "Second Life"
- VALUE "ProductVersion", "1.19.1.4"
+ VALUE "ProductVersion", "1.20.6.86975"
END
END
BLOCK "VarFileInfo"
diff --git a/linden/indra/newview/skins/textures/textures.xml b/linden/indra/newview/skins/textures/textures.xml
index 6e7553f..4dbbdf0 100644
--- a/linden/indra/newview/skins/textures/textures.xml
+++ b/linden/indra/newview/skins/textures/textures.xml
@@ -106,6 +106,7 @@
+
@@ -121,7 +122,6 @@
-
@@ -179,7 +179,7 @@
-
+
diff --git a/linden/indra/newview/skins/xui/de/floater_html.xml b/linden/indra/newview/skins/xui/de/floater_html.xml
index f5c69ce..7e97d4f 100644
--- a/linden/indra/newview/skins/xui/de/floater_html.xml
+++ b/linden/indra/newview/skins/xui/de/floater_html.xml
@@ -5,4 +5,7 @@
+
+ http://de.secondlife.com
+
diff --git a/linden/indra/newview/skins/xui/de/mime_types.xml b/linden/indra/newview/skins/xui/de/mime_types.xml
index d5153d0..03fd660 100644
--- a/linden/indra/newview/skins/xui/de/mime_types.xml
+++ b/linden/indra/newview/skins/xui/de/mime_types.xml
@@ -78,7 +78,7 @@
-
diff --git a/linden/indra/newview/skins/xui/de/panel_group_invite.xml b/linden/indra/newview/skins/xui/de/panel_group_invite.xml
index e762567..0ad1aeb 100644
--- a/linden/indra/newview/skins/xui/de/panel_group_invite.xml
+++ b/linden/indra/newview/skins/xui/de/panel_group_invite.xml
@@ -1,10 +1,5 @@
-
- Sie können mehrere Einwohner zu Ihrer
-Gruppe einladen. Klicken Sie auf
-'Personenauswahl öffnen'.
-
Sie können mehrere Einwohner zu Ihrer
Gruppe einladen. Klicken Sie auf
diff --git a/linden/indra/newview/skins/xui/de/panel_group_notices.xml b/linden/indra/newview/skins/xui/de/panel_group_notices.xml
index 0488851..9a819eb 100644
--- a/linden/indra/newview/skins/xui/de/panel_group_notices.xml
+++ b/linden/indra/newview/skins/xui/de/panel_group_notices.xml
@@ -16,7 +16,7 @@ gesendet. Mitteilungen können unter
Gruppenmitteilungsarchiv
- Mitteilungen werden 30 Tage lang aufbewahrt. Klicken
+ Mitteilungen werden 14 Tage lang aufbewahrt. Klicken
Sie auf eine Mitteilung, um sie anzuzeigen. Klicken Sie
auf 'Aktualisieren', um neue Mitteilungen zu suchen.
diff --git a/linden/indra/newview/skins/xui/de/panel_preferences_graphics1.xml b/linden/indra/newview/skins/xui/de/panel_preferences_graphics1.xml
index ff48982..c251a50 100644
--- a/linden/indra/newview/skins/xui/de/panel_preferences_graphics1.xml
+++ b/linden/indra/newview/skins/xui/de/panel_preferences_graphics1.xml
@@ -17,6 +17,8 @@
Wenn deaktiviert, schaltet die Anzeige bei Anmeldung auf Vollbild um.
+
+
Anzeigeauflösung:
diff --git a/linden/indra/newview/skins/xui/de/panel_preferences_web.xml b/linden/indra/newview/skins/xui/de/panel_preferences_web.xml
index b746097..af493e6 100644
--- a/linden/indra/newview/skins/xui/de/panel_preferences_web.xml
+++ b/linden/indra/newview/skins/xui/de/panel_preferences_web.xml
@@ -1,8 +1,7 @@
-
-
+
+
Externen Browser verwenden (Firefox, Safari, Internet Explorer)
diff --git a/linden/indra/newview/skins/xui/en-us/alerts.xml b/linden/indra/newview/skins/xui/en-us/alerts.xml
index 39d1728..e3d0dbf 100644
--- a/linden/indra/newview/skins/xui/en-us/alerts.xml
+++ b/linden/indra/newview/skins/xui/en-us/alerts.xml
@@ -1032,7 +1032,7 @@ If you continue to have problems, please visit: http://www.secondlife.com/suppor
MINSPECS
Do you wish to visit [_URL] for more information?
-
+
Ignore unsupported hardware
+
+
+Does this classified contain Mature content?
+
+
+
+
+
+
+
+Does this group contain Mature content?
+
+
+
+
+
Do you really want to restart this region in 2 minutes?
@@ -4951,5 +4980,10 @@ Would you like to visit the Second Life website to set this up?
https://secondlife.com/account/
+
+
+ The string [STRING_NAME] is missing from strings.xml
+
+
diff --git a/linden/indra/newview/skins/xui/en-us/floater_directory.xml b/linden/indra/newview/skins/xui/en-us/floater_directory.xml
index 7714d67..43f255c 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_directory.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_directory.xml
@@ -65,7 +65,8 @@
http://secondlife.com/app/search/notfound.html
-
+ "http://secondlife.com/app/search/index.php?"
+
@@ -272,50 +273,37 @@
mouse_opaque="true" name="< Prev" right="258" width="80" />
-
- Searching...
-
-
- None Found.
-
-
-
-
-
-
- These are the most popular places in the world, as measured by traffic,
-the amount of time people spend there.
-
-
-
-
-
-
-
-
-
+ Searching...
+ None Found.
+
+
+
+
+
+ Loading...
+ Done
+ http://secondlife.com/app/search/notfound.html
+ "http://secondlife.com/app/showcase/index.php?"
+
@@ -397,93 +385,72 @@ To buy direct, visit the land and click on the place name in the title bar.
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="4"
mouse_opaque="true" name="result_text" v_pad="0" width="328" />
-
-
- Searching...
-
-
- None Found.
-
-
-
-
- Find:
-
-
- Searching...
+ None Found.
+
+
+
+
+
-
-
- Any Category
-
-
- Linden Location
-
-
- Adult
-
-
- Arts & Culture
-
-
- Business
-
-
- Educational
-
-
- Gaming
-
-
- Hangout
-
-
- Newcomer Friendly
-
-
- Parks & Nature
-
-
- Residential
-
-
- Shopping
-
-
- Other
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ Loading...
+ Done
+ http://secondlife.com/app/search/notfound.html
+ "http://secondlife.com/app/search/index_places.php?"
+
+
@@ -495,128 +462,99 @@ To buy direct, visit the land and click on the place name in the title bar.
-
-
- Find:
-
-
+
-
-
-
-
-
-
+
+
+
+
-
-
- Searching...
-
-
- None Found.
-
-
-
-
- Find:
-
-
-
- Searching...
+ None Found.
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
- Searching...
-
-
- None Found.
-
-
-
-
- Find:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ label="Include Mature content"
+ left_delta="133"
+ name="mature_check"
+ width="156" />
+
+
+ Loading...
+ Done
+ http://secondlife.com/app/search/notfound.html
+ "http://secondlife.com/app/search/index_groups.php?"
+
diff --git a/linden/indra/newview/skins/xui/en-us/floater_im.xml b/linden/indra/newview/skins/xui/en-us/floater_im.xml
index caf54e3..11c839c 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_im.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_im.xml
@@ -16,6 +16,10 @@
Click the [BUTTON NAME] button to accept/connect to this voice chat.
+
+ [FIRST] [LAST] is muted.
+
+
Error making request, please try again later.
diff --git a/linden/indra/newview/skins/xui/en-us/floater_joystick.xml b/linden/indra/newview/skins/xui/en-us/floater_joystick.xml
index 18f39dd..126bc7b 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_joystick.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_joystick.xml
@@ -67,7 +67,7 @@
Y Dead Zone
-
+
Z Dead Zone
diff --git a/linden/indra/newview/skins/xui/en-us/floater_script_debug.xml b/linden/indra/newview/skins/xui/en-us/floater_script_debug.xml
index f9d555d..2abd503 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_script_debug.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_script_debug.xml
@@ -2,7 +2,7 @@
-
File size: [SIZE] KB
-
-
@@ -142,7 +142,7 @@
name="keep_open_check" />
-
unknown
diff --git a/linden/indra/newview/skins/xui/en-us/floater_world_map.xml b/linden/indra/newview/skins/xui/en-us/floater_world_map.xml
index 4e26986..0ebab6f 100644
--- a/linden/indra/newview/skins/xui/en-us/floater_world_map.xml
+++ b/linden/indra/newview/skins/xui/en-us/floater_world_map.xml
@@ -98,51 +98,39 @@
font="SansSerifSmall" height="16" initial_value="false" label=""
left_delta="70" mouse_opaque="true" name="telehubchk" width="55" />
-
- Popular
-
-
-
Land For Sale
-
-
Events
-
-
Events (M)
-
-
-
@@ -509,6 +481,7 @@
+
-
+
Image
diff --git a/linden/indra/newview/skins/xui/en-us/notify.xml b/linden/indra/newview/skins/xui/en-us/notify.xml
index f0ba148..02aa57c 100644
--- a/linden/indra/newview/skins/xui/en-us/notify.xml
+++ b/linden/indra/newview/skins/xui/en-us/notify.xml
@@ -914,6 +914,21 @@ Click Accept to join the call or Decline to decline the invitation. Click Mute t
Mute
+
+
+ [FIRST] [LAST] was sent an instant message and has been automatically unmuted.
+
+
+
+
+ [FIRST] [LAST] was given money and has been automatically unmuted.
+
+
+
+
+ [FIRST] [LAST] was offered inventory and has been automatically unmuted.
+
+
[NAME] has joined a Voice Chat call with the group [GROUP].
@@ -1029,4 +1044,9 @@ Click Accept to join the chat or Decline to decline the invitation. Click Mute t
The region you have entered is running a different simulator version. Click this message for details.
+
+
+ The URL you clicked cannot be opened from this web browser.
+
+
diff --git a/linden/indra/newview/skins/xui/en-us/panel_avatar_classified.xml b/linden/indra/newview/skins/xui/en-us/panel_avatar_classified.xml
index 001d6d6..d378cb9 100644
--- a/linden/indra/newview/skins/xui/en-us/panel_avatar_classified.xml
+++ b/linden/indra/newview/skins/xui/en-us/panel_avatar_classified.xml
@@ -22,8 +22,18 @@
name="classified_map_btn" width="80" />
-
+
+
+ - Select Mature -
+
+
+ Mature Content
+
+
+ Not Mature Content
+
+
-
-
+
+
+ - Select Mature -
+
+
+ Mature Content
+
+
+ Not Mature Content
+
+
+
diff --git a/linden/indra/newview/skins/xui/en-us/panel_group_general.xml b/linden/indra/newview/skins/xui/en-us/panel_group_general.xml
index 7332cdf..8103363 100644
--- a/linden/indra/newview/skins/xui/en-us/panel_group_general.xml
+++ b/linden/indra/newview/skins/xui/en-us/panel_group_general.xml
@@ -83,11 +83,6 @@ Hover your mouse over the options for more help.
initial_value="true" label="Show in search" left="4" mouse_opaque="true"
name="show_in_group_list" radio_style="false"
tool_tip="Let people see this group in search results." width="95" />
-
+
+
+ - Select Mature -
+
+
+ Mature Content
+
+
+ Not Mature Content
+
+
+
diff --git a/linden/indra/newview/skins/xui/en-us/panel_group_notices.xml b/linden/indra/newview/skins/xui/en-us/panel_group_notices.xml
index 7f0c0f7..0e5e84d 100644
--- a/linden/indra/newview/skins/xui/en-us/panel_group_notices.xml
+++ b/linden/indra/newview/skins/xui/en-us/panel_group_notices.xml
@@ -24,8 +24,9 @@ the General tab.
bottom_delta="-20" drop_shadow_visible="true" font="SansSerifSmall"
h_pad="0" halign="left" height="16" left_delta="0" mouse_opaque="true"
name="lbl2" v_pad="0" width="436">
- Notices are kept for 30 days. Click the notice below you wish to view.
+ Notices are kept for 14 days. Click the notice below you wish to view.
Click the 'Refresh' button to check if new notices have been received.
+Notice lists are limited to 200 notices per group on a daily basis.
+ Window Size:
+
+
+
+ 640x480
+
+
+ 800x600
+
+
+ 720x480 (NTSC)
+
+
+ 768x576 (PAL)
+
+
+ 1024x768
+
+
+
+
Display Resolution:
-
Aspect Ratio:
-
@@ -47,7 +73,7 @@
16:9 (Widescreen)
-
diff --git a/linden/indra/newview/skins/xui/en-us/panel_preferences_web.xml b/linden/indra/newview/skins/xui/en-us/panel_preferences_web.xml
index a32ca56..4d84e32 100644
--- a/linden/indra/newview/skins/xui/en-us/panel_preferences_web.xml
+++ b/linden/indra/newview/skins/xui/en-us/panel_preferences_web.xml
@@ -3,13 +3,13 @@
height="408" label="Web" left="102" mouse_opaque="true" name="web"
width="517">
-
+ name="use_external_browser" width="480">
+
Use external web browser (Firefox, Safari, Internet Explorer)
-
+
Use built-in web browser
diff --git a/linden/indra/newview/skins/xui/en-us/panel_region_general.xml b/linden/indra/newview/skins/xui/en-us/panel_region_general.xml
index fa12fca..af3cecf 100644
--- a/linden/indra/newview/skins/xui/en-us/panel_region_general.xml
+++ b/linden/indra/newview/skins/xui/en-us/panel_region_general.xml
@@ -9,6 +9,14 @@
name="region_text" width="400">
unknown
+
+ Version:
+
+
+ unknown
+
-
diff --git a/linden/indra/newview/skins/xui/en-us/strings.xml b/linden/indra/newview/skins/xui/en-us/strings.xml
new file mode 100644
index 0000000..9952d56
--- /dev/null
+++ b/linden/indra/newview/skins/xui/en-us/strings.xml
@@ -0,0 +1,166 @@
+
+
+
+
+
+ Logging in. [APP_NAME] may appear frozen. Please wait.
+ Authenticating
+ Performing account maintenance...
+ Previous login attempt failed. Logging in, attempt [NUMBER]
+ Loading world...
+ Initializing embedded web browser...
+ Verifying cache files (can take 60-90 seconds)...
+ Processing Response...
+ Initializing World...
+ Decoding images...
+ Initializing QuickTime...
+ QuickTime not found - unable to initialize.
+ QuickTime initialized successfully.
+ Waiting for region handshake...
+ Connecting to region...
+ Downloading clothing...
+
+
+
+
+ Person
+ (no name)
+ Owner:
+ Public
+ (Group)
+ Script
+ Physics
+ Touch
+ L$
+ Drop Inventory
+ Phantom
+ Temporary
+ (Right-click for menu)
+ Free to copy
+ For Sale: L$[AMOUNT]
+ For Sale: [MESSAGE]
+ Group Build
+ No Build
+ Group Build
+ Not Safe
+ No Fly
+ Group Scripts
+ No Scripts
+
+ Land:
+
+
+
+ Retrieving...
+
+
+ Loading...
+
+
+
+
+ (nobody)
+
+
+ (waiting)
+
+
+ (hippos)
+
+
+ (none)
+
+
+ No error
+ Asset request: failed
+ Asset request: non-existent file
+ Asset request: asset not found in database
+ End of file
+ Cannot open file
+ File not found
+ File transfer timeout
+ Circuit gone
+ Unknown status
+
+
+ (Editing Appearance)
+ Away
+ Busy
+ Muted
+
+
+ Afraid
+ Angry
+ Away
+ Backflip
+ Belly Laugh
+ BigSmile
+ Blow Kiss
+ Bored
+ Bow
+ Clap
+ Court Bow
+ Cry
+ Dance 1
+ Dance 2
+ Dance 3
+ Dance 4
+ Dance 5
+ Dance 6
+ Dance 7
+ Dance 8
+ Disdain
+ Drink
+ Embarrassed
+ Finger Wag
+ Fist Pump
+ Floating Yoga
+ Frown
+ Impatient
+ Jump For Joy
+ Kiss My Butt
+ Kiss
+ Laugh
+ Muscle Beach
+ No (Unhappy)
+ No
+ Nya-nya-nya
+ One-Two Punch
+ Open Mouth
+ Peace
+ Point at Other
+ Point at Self
+ Punch Left
+ Punch Right
+ RPS count
+ RPS paper
+ RPS rock
+ RPS scissors
+ Repulsed
+ Roundhouse Kick
+ Sad
+ Salute
+ Shout
+ Shrug
+ Smile
+ Smoke Idle
+ Smoke Inhale
+ Smoke Throw Down
+ Surprise
+ Sword Strike
+ Tantrum
+ TongueOut
+ Wave
+ Whisper
+ Whistle
+ Wink
+ Wink (Hollywood)
+ Worry
+ Yes (Happy)
+ Yes
+
+
+
diff --git a/linden/indra/newview/skins/xui/es/panel_group_notices.xml b/linden/indra/newview/skins/xui/es/panel_group_notices.xml
index 86b8d2c..62d884d 100644
--- a/linden/indra/newview/skins/xui/es/panel_group_notices.xml
+++ b/linden/indra/newview/skins/xui/es/panel_group_notices.xml
@@ -16,7 +16,7 @@ pestaña General.
Archivo de avisos de grupo
- Avisos son mantenidos por 30 días. Haga clic en el aviso abajo se desea verlo.
+ Avisos son mantenidos por 14 días. Haga clic en el aviso abajo se desea verlo.
Haga clic en el botón 'Actualizar lista' si nuevos avisos fueron recibidos.
diff --git a/linden/indra/newview/skins/xui/fr/panel_group_notices.xml b/linden/indra/newview/skins/xui/fr/panel_group_notices.xml
index 6643107..a266155 100644
--- a/linden/indra/newview/skins/xui/fr/panel_group_notices.xml
+++ b/linden/indra/newview/skins/xui/fr/panel_group_notices.xml
@@ -16,7 +16,7 @@ l'onglet Général.
Archive des Notifications du Groupe
- Les Notifications sont conservées pendant 30 jours. Cliquez sur la notification que vous souhaitez afficher.
+ Les Notifications sont conservées pendant 14 jours. Cliquez sur la notification que vous souhaitez afficher.
Cliquez sur 'Actualiser' pour afficher les nouvelles notifications.
diff --git a/linden/indra/newview/skins/xui/ja/floater_about.xml b/linden/indra/newview/skins/xui/ja/floater_about.xml
index 0567010..75983b5 100644
--- a/linden/indra/newview/skins/xui/ja/floater_about.xml
+++ b/linden/indra/newview/skins/xui/ja/floater_about.xml
@@ -26,7 +26,7 @@ zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler.
Voice chat Audio coding:Polycom(R) Siren14(TM) (ITU-T Rec.G.722.1 Annex C)
-Happiness is a warm puppy. (しあわせはcあったかい子犬)-- チャールズ・M・シュルツ
+Happiness is a warm puppy. (しあわせはあったかい子犬)-- チャールズ・M・シュルツ
[POSITION]中
diff --git a/linden/indra/newview/skins/xui/ja/floater_html.xml b/linden/indra/newview/skins/xui/ja/floater_html.xml
index 1cb5384..6e1e7a0 100644
--- a/linden/indra/newview/skins/xui/ja/floater_html.xml
+++ b/linden/indra/newview/skins/xui/ja/floater_html.xml
@@ -5,4 +5,7 @@
+
+ http://jp.secondlife.com
+
diff --git a/linden/indra/newview/skins/xui/ja/floater_joystick.xml b/linden/indra/newview/skins/xui/ja/floater_joystick.xml
index 517b9dd..baef61c 100644
--- a/linden/indra/newview/skins/xui/ja/floater_joystick.xml
+++ b/linden/indra/newview/skins/xui/ja/floater_joystick.xml
@@ -3,65 +3,116 @@
-
+
-
-
+
+
制御モード:
- アバター
- 造る
- フライ・カメラ
-
+ アバター
+ 造る
+ フライ・カメラ
+
Xスケール
-
+
+
+
+
+
Yスケール
-
+
+
+
+
+
Zスケール
-
+
+
+
+
+
ピッチ・スケール
-
+
+
+
+
+
ヨー・スケール
-
+
+
+
+
+
ロール・スケール
-
+
+
+
+
Xデッド・ゾーン
-
+
+
+
+
+
Yデッド・ゾーン
-
+
+
+
+
+
Zデッド・ゾーン
-
+
+
+
+
+
ピッチ・デッド・ゾーン
-
+
+
+
+
+
ヨー・デッド・ゾーン
-
+
+
+
+
+
ロール・デッド・ゾーン
+
+
+
羽毛
-
+
+
+
+
ズーム・スケール
-
+
+
ズーム・デッド・ゾーン
-
+
+