summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/CMakeLists.txt8
-rw-r--r--indra/cmake/00-Common.cmake22
-rw-r--r--indra/cmake/APR.cmake9
-rw-r--r--indra/cmake/Audio.cmake9
-rw-r--r--indra/cmake/Boost.cmake24
-rw-r--r--indra/cmake/CEFPlugin.cmake39
-rw-r--r--indra/cmake/CMakeLists.txt1
-rw-r--r--indra/cmake/CURL.cmake84
-rw-r--r--indra/cmake/FMODSTUDIO.cmake109
-rw-r--r--indra/cmake/FreeType.cmake8
-rw-r--r--indra/cmake/GLEXT.cmake7
-rw-r--r--indra/cmake/GLH.cmake3
-rw-r--r--indra/cmake/GLM.cmake7
-rw-r--r--indra/cmake/GStreamer10Plugin.cmake2
-rw-r--r--indra/cmake/Hunspell.cmake2
-rw-r--r--indra/cmake/LLCoreHttp.cmake2
-rw-r--r--indra/cmake/LLPrimitive.cmake118
-rw-r--r--indra/cmake/LLWindow.cmake4
-rw-r--r--indra/cmake/LibVLCPlugin.cmake47
-rw-r--r--indra/cmake/LibraryInstall.cmake13
-rw-r--r--indra/cmake/Linking.cmake2
-rw-r--r--indra/cmake/Lualibs.cmake2
-rw-r--r--indra/cmake/Meshoptimizer.cmake46
-rw-r--r--indra/cmake/Mikktspace.cmake2
-rw-r--r--indra/cmake/NDOF.cmake30
-rw-r--r--indra/cmake/OPENAL.cmake11
-rw-r--r--indra/cmake/OpenJPEG.cmake44
-rw-r--r--indra/cmake/OpenSSL.cmake177
-rw-r--r--indra/cmake/Prebuilt.cmake60
-rw-r--r--indra/cmake/SDL2.cmake9
-rw-r--r--indra/cmake/UI.cmake6
-rw-r--r--indra/cmake/UnixInstall.cmake18
-rw-r--r--indra/cmake/Variables.cmake5
-rw-r--r--indra/cmake/ViewerMiscLibs.cmake10
-rw-r--r--indra/cmake/VulkanGltf.cmake2
-rw-r--r--indra/cmake/WebRTC.cmake69
-rw-r--r--indra/cmake/ZLIBNG.cmake6
-rw-r--r--indra/cmake/xxHash.cmake7
-rw-r--r--indra/llappearance/CMakeLists.txt2
-rw-r--r--indra/llappearance/lltexlayer.cpp2
-rw-r--r--indra/llaudio/CMakeLists.txt17
-rw-r--r--indra/llaudio/llaudioengine_fmodstudio.cpp756
-rw-r--r--indra/llaudio/llaudioengine_fmodstudio.h131
-rw-r--r--indra/llaudio/lllistener_fmodstudio.cpp136
-rw-r--r--indra/llaudio/lllistener_fmodstudio.h65
-rw-r--r--indra/llaudio/llstreamingaudio_fmodstudio.cpp481
-rw-r--r--indra/llaudio/llstreamingaudio_fmodstudio.h76
-rw-r--r--indra/llcharacter/CMakeLists.txt2
-rw-r--r--indra/llcommon/CMakeLists.txt44
-rw-r--r--indra/llcommon/hbxxh.cpp4
-rw-r--r--indra/llcommon/llapr.h1
-rw-r--r--indra/llcommon/llfasttimer.cpp2
-rw-r--r--indra/llcommon/llfasttimer.h18
-rw-r--r--indra/llcommon/llmemory.h8
-rw-r--r--indra/llcommon/llpreprocessor.h6
-rw-r--r--indra/llcommon/llprocess.cpp14
-rw-r--r--indra/llcommon/llprocess.h7
-rw-r--r--indra/llcommon/llprocessor.cpp99
-rw-r--r--indra/llcommon/llsdutil.cpp2
-rw-r--r--indra/llcommon/llstring.h1
-rw-r--r--indra/llcommon/llsys.cpp24
-rw-r--r--indra/llcommon/llsys.h2
-rw-r--r--indra/llcommon/lltimer.cpp6
-rw-r--r--indra/llcommon/lluuid.cpp4
-rw-r--r--indra/llcommon/stdtypes.h7
-rw-r--r--indra/llcorehttp/CMakeLists.txt4
-rw-r--r--indra/llcrashlogger/CMakeLists.txt2
-rw-r--r--indra/llfilesystem/CMakeLists.txt10
-rw-r--r--indra/llfilesystem/lldir.cpp4
-rw-r--r--indra/llfilesystem/lldir_linux.cpp12
-rw-r--r--indra/llfilesystem/lldir_linux.h2
-rw-r--r--indra/llfilesystem/lldir_mac.cpp2
-rw-r--r--indra/llimage/CMakeLists.txt16
-rw-r--r--indra/llimage/llimagejpeg.cpp8
-rw-r--r--indra/llimagej2coj/CMakeLists.txt4
-rw-r--r--indra/llimagej2coj/llimagej2coj.cpp6
-rw-r--r--indra/llinventory/CMakeLists.txt2
-rw-r--r--indra/llinventory/llsettingsbase.cpp1
-rw-r--r--indra/llinventory/llsettingssky.cpp1
-rw-r--r--indra/llinventory/llsettingswater.cpp1
-rw-r--r--indra/llmath/CMakeLists.txt10
-rw-r--r--indra/llmath/llsimdmath.h6
-rw-r--r--indra/llmath/llvolume.cpp4
-rw-r--r--indra/llmeshoptimizer/CMakeLists.txt4
-rw-r--r--indra/llmessage/CMakeLists.txt15
-rw-r--r--indra/llplugin/CMakeLists.txt1
-rw-r--r--indra/llplugin/llpluginclassmedia.cpp12
-rw-r--r--indra/llplugin/llpluginclassmedia.h4
-rw-r--r--indra/llplugin/llpluginsharedmemory.cpp4
-rw-r--r--indra/llplugin/slplugin/CMakeLists.txt15
-rw-r--r--indra/llplugin/slplugin/slplugin.cpp6
-rw-r--r--indra/llprimitive/CMakeLists.txt22
-rw-r--r--indra/llprimitive/lldaeloader.h2
-rw-r--r--indra/llprimitive/llgltfmaterial.h1
-rw-r--r--indra/llprimitive/llmodel.h2
-rw-r--r--indra/llprimitive/llprimitive.cpp4
-rw-r--r--indra/llprimitive/llprimtexturelist.cpp4
-rw-r--r--indra/llprimitive/llprimtexturelist.h2
-rw-r--r--indra/llrender/CMakeLists.txt1
-rw-r--r--indra/llrender/llcubemap.cpp2
-rw-r--r--indra/llrender/llcubemaparray.cpp2
-rw-r--r--indra/llrender/llfontfreetypesvg.cpp8
-rw-r--r--indra/llrender/llgl.cpp33
-rw-r--r--indra/llrender/llglheaders.h9
-rw-r--r--indra/llrender/llglslshader.cpp44
-rw-r--r--indra/llrender/llglstates.h2
-rw-r--r--indra/llrender/llimagegl.cpp121
-rw-r--r--indra/llrender/llrender.cpp22
-rw-r--r--indra/llrender/llrender.h7
-rw-r--r--indra/llrender/llrender2dutils.cpp2
-rw-r--r--indra/llrender/llrendertarget.cpp10
-rw-r--r--indra/llui/CMakeLists.txt2
-rw-r--r--indra/llwebrtc/CMakeLists.txt17
-rw-r--r--indra/llwebrtc/llwebrtc.cpp2
-rw-r--r--indra/llwebrtc/llwebrtc_impl.h8
-rw-r--r--indra/llwindow/CMakeLists.txt9
-rw-r--r--indra/llwindow/llkeyboardsdl.cpp12
-rw-r--r--indra/llwindow/llkeyboardsdl.h3
-rw-r--r--indra/llwindow/llwindowmacosx.cpp1
-rw-r--r--indra/llwindow/llwindowsdl.cpp4
-rw-r--r--indra/llwindow/llwindowsdl.h4
-rw-r--r--indra/llxml/CMakeLists.txt3
-rw-r--r--indra/llxml/llxmlnode.cpp3
-rw-r--r--indra/media_plugins/CMakeLists.txt7
-rw-r--r--indra/media_plugins/base/CMakeLists.txt1
-rw-r--r--indra/media_plugins/base/media_plugin_base.cpp4
-rw-r--r--indra/media_plugins/base/media_plugin_base.h2
-rw-r--r--indra/media_plugins/cef/CMakeLists.txt69
-rw-r--r--indra/media_plugins/gstreamer10/CMakeLists.txt21
-rw-r--r--indra/media_plugins/libvlc/CMakeLists.txt52
-rw-r--r--indra/media_plugins/libvlc/media_plugin_libvlc.cpp21
-rw-r--r--indra/newview/CMakeLists.txt256
-rw-r--r--indra/newview/English.lproj/InfoPlist.strings6
-rw-r--r--indra/newview/FixBundle.cmake.in717
-rw-r--r--indra/newview/FixPackage.cmake.in716
-rw-r--r--indra/newview/Info-SecondLife.plist6
-rw-r--r--indra/newview/PKGBUILD.in14
-rw-r--r--indra/newview/SecondLife.nibbin12345 -> 11888 bytes
-rw-r--r--indra/newview/SecondLife.xib14
-rw-r--r--indra/newview/ViewerInstall.cmake139
-rw-r--r--indra/newview/app_settings/camera/Rear.xml10
-rw-r--r--indra/newview/app_settings/commands.xml17
-rw-r--r--indra/newview/app_settings/settings.xml406
-rw-r--r--indra/newview/app_settings/settings_per_account.xml11
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl4
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl6
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/globalF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/pbrterrainUtilF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class1/interface/gaussianF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class3/environment/waterF.glsl12
-rw-r--r--indra/newview/app_settings/toolbars.xml17
-rw-r--r--indra/newview/character/attentions.xml4
-rw-r--r--indra/newview/featuretable_mac.txt23
-rw-r--r--indra/newview/gltf/asset.cpp2
-rw-r--r--indra/newview/gltf/primitive.cpp4
-rw-r--r--indra/newview/gltfscenemanager.cpp2
-rw-r--r--indra/newview/icons/hicolor/128x128/apps/megapahit.pngbin0 -> 24892 bytes
-rw-r--r--indra/newview/icons/hicolor/256x256/apps/megapahit.pngbin0 -> 75995 bytes
-rw-r--r--indra/newview/icons/hicolor/48x48/apps/megapahit.pngbin0 -> 8417 bytes
-rw-r--r--indra/newview/icons/hicolor/512x512/apps/megapahit.pngbin0 -> 299152 bytes
-rw-r--r--indra/newview/icons/hicolor/64x64/apps/megapahit.pngbin0 -> 10635 bytes
-rw-r--r--indra/newview/icons/hicolor/96x96/apps/megapahit.pngbin0 -> 16573 bytes
-rwxr-xr-xindra/newview/installers/darwin/dmg-cleanup.applescript46
-rw-r--r--indra/newview/installers/darwin/release-dmg/_VolumeIcon.icnsbin2108870 -> 470085 bytes
-rw-r--r--indra/newview/installers/darwin/release-dmg/background.jpgbin62112 -> 59956 bytes
-rw-r--r--indra/newview/licenses-linux.txt646
-rw-r--r--indra/newview/licenses-mac.txt327
-rwxr-xr-xindra/newview/linux_tools/launch_url.sh1
-rwxr-xr-xindra/newview/linux_tools/megapahit.desktop10
-rw-r--r--indra/newview/llagentcamera.cpp4
-rw-r--r--indra/newview/llappviewer.cpp51
-rw-r--r--indra/newview/llappviewerlinux.cpp9
-rw-r--r--indra/newview/llattachmentsmgr.cpp25
-rw-r--r--indra/newview/llattachmentsmgr.h3
-rw-r--r--indra/newview/llavatarlist.cpp65
-rw-r--r--indra/newview/llavatarlist.h6
-rw-r--r--indra/newview/llavatarlistitem.cpp40
-rw-r--r--indra/newview/llavatarlistitem.h8
-rw-r--r--indra/newview/llchathistory.cpp5
-rw-r--r--indra/newview/lldirpicker.cpp4
-rw-r--r--indra/newview/lldirpicker.h2
-rw-r--r--indra/newview/lldrawpool.cpp2
-rw-r--r--indra/newview/lldrawpoolterrain.cpp26
-rw-r--r--indra/newview/llenvironment.h2
-rw-r--r--indra/newview/llface.cpp10
-rw-r--r--indra/newview/llfasttimerview.cpp2
-rw-r--r--indra/newview/llfeaturemanager.cpp9
-rw-r--r--indra/newview/llfilepicker.cpp4
-rw-r--r--indra/newview/llfloatercamera.cpp25
-rw-r--r--indra/newview/llfloatercamera.h6
-rw-r--r--indra/newview/llfloaterpreferencesgraphicsadvanced.h1
-rw-r--r--indra/newview/llfloatertos.cpp2
-rw-r--r--indra/newview/llfloateruipreview.cpp1
-rw-r--r--indra/newview/llheroprobemanager.cpp2
-rw-r--r--indra/newview/llimview.cpp2
-rw-r--r--indra/newview/llinventorybridge.cpp2
-rw-r--r--indra/newview/llinventorygallerymenu.cpp24
-rw-r--r--indra/newview/llinventorygallerymenu.h3
-rw-r--r--indra/newview/llinventorypanel.cpp7
-rw-r--r--indra/newview/llinventorypanel.h1
-rw-r--r--indra/newview/llmaniprotate.cpp2
-rw-r--r--indra/newview/llmodelpreview.cpp16
-rw-r--r--indra/newview/llpanelpeople.cpp2
-rw-r--r--indra/newview/llpanelpeoplemenus.cpp2
-rw-r--r--indra/newview/llpanelprofile.cpp5
-rw-r--r--indra/newview/llpreviewgesture.cpp12
-rw-r--r--indra/newview/llprogressview.cpp21
-rw-r--r--indra/newview/llreflectionmapmanager.cpp10
-rw-r--r--indra/newview/llselectmgr.cpp4
-rw-r--r--indra/newview/llspatialpartition.cpp18
-rw-r--r--indra/newview/llstartup.cpp28
-rw-r--r--indra/newview/llstatusbar.cpp21
-rw-r--r--indra/newview/llstatusbar.h4
-rw-r--r--indra/newview/lltracker.cpp6
-rw-r--r--indra/newview/llversioninfo.cpp4
-rw-r--r--indra/newview/llviewercamera.cpp2
-rw-r--r--indra/newview/llviewerdisplay.cpp2
-rw-r--r--indra/newview/llviewerfloaterreg.cpp4
-rw-r--r--indra/newview/llviewerjointattachment.cpp44
-rw-r--r--indra/newview/llviewerjointmesh.cpp4
-rw-r--r--indra/newview/llviewermedia.cpp18
-rw-r--r--indra/newview/llviewermedia_streamingaudio.cpp18
-rw-r--r--indra/newview/llviewermedia_streamingaudio.h2
-rw-r--r--indra/newview/llviewermenu.cpp120
-rw-r--r--indra/newview/llviewermenu.h1
-rw-r--r--indra/newview/llvieweroctree.cpp10
-rw-r--r--indra/newview/llviewertexturelist.cpp12
-rw-r--r--indra/newview/llviewerwindow.cpp2
-rw-r--r--indra/newview/llvoavatar.cpp61
-rw-r--r--indra/newview/llvoiceclient.cpp118
-rw-r--r--indra/newview/llvoicevivox.cpp11
-rw-r--r--indra/newview/llvoicevivox.h2
-rw-r--r--indra/newview/llworldmipmap.cpp17
-rw-r--r--indra/newview/mpfloatertuning.cpp97
-rw-r--r--indra/newview/mpfloatertuning.h48
-rw-r--r--indra/newview/pipeline.cpp54
-rw-r--r--indra/newview/res-sdl/arrow.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/arrowcop.BMPbin3126 -> 4234 bytes
-rw-r--r--indra/newview/res-sdl/arrowcopmulti.BMPbin3126 -> 4234 bytes
-rw-r--r--indra/newview/res-sdl/arrowdrag.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/circleandline.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/hand.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/ibeam.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/llarrow.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/llarrowdrag.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/llarrowdragmulti.BMPbin3126 -> 4234 bytes
-rw-r--r--indra/newview/res-sdl/llarrowlocked.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/llgrablocked.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/llno.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/llnolocked.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/lltoolgrab.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/lltoolrotate.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/lltoolscale.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/lltooltranslate.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/sizeall.BMPbin630 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/sizenesw.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/sizens.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/sizenwse.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/sizewe.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/toolbuy.BMPbin3126 -> 4234 bytes
-rw-r--r--indra/newview/res-sdl/toolmediaopen.BMPbin3128 -> 4234 bytes
-rw-r--r--indra/newview/res-sdl/toolopen.BMPbin3126 -> 4234 bytes
-rw-r--r--indra/newview/res-sdl/toolpause.BMPbin3128 -> 4234 bytes
-rw-r--r--indra/newview/res-sdl/toolpickobject.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/toolpickobject2.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/toolpickobject3.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/toolplay.BMPbin3128 -> 4234 bytes
-rw-r--r--indra/newview/res-sdl/toolsit.BMPbin3126 -> 4234 bytes
-rw-r--r--indra/newview/res-sdl/wait.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/res-sdl/working.BMPbin2102 -> 2186 bytes
-rw-r--r--indra/newview/secondlife.icnsbin180809 -> 313471 bytes
-rw-r--r--indra/newview/skins/default/colors.xml42
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Center.pngbin10689 -> 5117 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.pngbin407 -> 5134 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Center.pngbin1714 -> 5113 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.pngbin328 -> 5060 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.pngbin353 -> 5138 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_Down_On.pngbin50907 -> 6254 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.pngbin321 -> 5102 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_Left_On.pngbin51806 -> 6441 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_Right_On.pngbin50161 -> 6213 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.pngbin430 -> 5237 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.pngbin427 -> 5200 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/Movement_Up_On.pngbin51965 -> 6493 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.pngbin557 -> 5160 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.pngbin663 -> 5270 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/VoicePTT_On.pngbin451 -> 5022 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/WellButton_Lit.pngbin309 -> 5762 bytes
-rw-r--r--indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.pngbin309 -> 5762 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Cone_Selected.pngbin576 -> 4891 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Cube_Selected.pngbin477 -> 4797 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Cylinder_Selected.pngbin443 -> 4759 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Grass_Selected.pngbin757 -> 5098 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.pngbin531 -> 4855 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.pngbin463 -> 4775 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.pngbin696 -> 5010 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Prism_Selected.pngbin485 -> 4804 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Pyramid_Selected.pngbin594 -> 4912 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Ring_Selected.pngbin738 -> 5061 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Sphere_Selected.pngbin1003 -> 5329 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.pngbin558 -> 4888 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Torus_Selected.pngbin825 -> 5139 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Tree_Selected.pngbin839 -> 5158 bytes
-rw-r--r--indra/newview/skins/default/textures/build/Object_Tube_Selected.pngbin552 -> 4871 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Accordion_Selected.pngbin228 -> 4778 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/TabTop_Left_Off.pngbin339 -> 6072 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/TabTop_Left_Selected.pngbin458 -> 5452 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/TabTop_Middle_Off.pngbin258 -> 5999 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.pngbin367 -> 5357 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/TabTop_Right_Off.pngbin357 -> 5638 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/TabTop_Right_Selected.pngbin474 -> 5483 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Toolbar_Left_Off.pngbin306 -> 4894 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Toolbar_Left_Over.pngbin310 -> 4903 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.pngbin380 -> 5394 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.pngbin224 -> 4812 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.pngbin228 -> 4818 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.pngbin296 -> 5301 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Toolbar_Right_Off.pngbin302 -> 4917 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Toolbar_Right_Over.pngbin297 -> 4921 bytes
-rw-r--r--indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.pngbin377 -> 5419 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Icon_Attachment_Large.pngbin1436 -> 1593 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Icon_Attachment_Small.pngbin1383 -> 1383 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Info_Over.pngbin520 -> 5810 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Inv_Shape.pngbin0 -> 693 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Inv_SysClosed.pngbin656 -> 4558 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Inv_SysOpen.pngbin766 -> 4649 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/MP_Logo.pngbin0 -> 4838 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/MusicNote.pngbin0 -> 764 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Disabled.pngbin2032 -> 5520 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Off.pngbin2063 -> 5495 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_On.pngbin1977 -> 5570 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_On_Over.pngbin1963 -> 5556 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Over.pngbin2048 -> 5274 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Press.pngbin2196 -> 5563 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.pngbin2041 -> 5529 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.pngbin1977 -> 5483 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.pngbin2036 -> 5486 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.pngbin2128 -> 5557 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.pngbin2197 -> 5593 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.pngbin2077 -> 5526 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Selected.pngbin2074 -> 5596 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.pngbin2084 -> 5554 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.pngbin1963 -> 5576 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.pngbin2122 -> 5628 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Permission_Ungranted.pngbin0 -> 834 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/SL_Logo.pngbin1515 -> 5631 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/Sync_Enabled.pngbin1052 -> 4636 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.pngbin847 -> 5160 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.pngbin963 -> 5270 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/VoicePTT_On.pngbin669 -> 5022 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/add_icon.pngbin727 -> 691 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/back_arrow_off.pngbin1223 -> 5862 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/back_arrow_over.pngbin1256 -> 6119 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/back_arrow_press.pngbin1417 -> 6223 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/check_mark.pngbin1227 -> 5179 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/copy_clipboard.pngbin831 -> 811 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/delete_icon.pngbin829 -> 809 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/file_upload.pngbin660 -> 640 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/hand.pngbin1183 -> 5338 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/multi_folder_mode.pngbin349 -> 329 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/paste_clipboard.pngbin828 -> 792 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/profile_badge_beta.pngbin664 -> 644 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/profile_badge_beta_lifetime.pngbin661 -> 641 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/profile_badge_lifetime.pngbin816 -> 780 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/profile_badge_linden.pngbin1101 -> 1065 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/profile_badge_pplus_lifetime.pngbin800 -> 780 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/profile_badge_premium_lifetime.pngbin797 -> 777 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/remove_icon.pngbin741 -> 705 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/see_me_online.pngbin645 -> 4672 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/see_on_map.pngbin950 -> 4987 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/see_them_on_map.pngbin0 -> 4998 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/see_them_online.pngbin0 -> 4810 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/single_folder_back.pngbin643 -> 607 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/single_folder_forward.pngbin644 -> 608 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/single_folder_mode.pngbin356 -> 320 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/single_folder_up.pngbin581 -> 545 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/snapshot_icon.pngbin737 -> 717 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/texture_icon.pngbin385 -> 349 bytes
-rw-r--r--indra/newview/skins/default/textures/icons/thumbnail_fallback_icon.pngbin2220 -> 2203 bytes
-rw-r--r--indra/newview/skins/default/textures/model_wizard/progress_light.pngbin464 -> 4870 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/BuyArrow_Over.pngbin294 -> 4935 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/BuyArrow_Press.pngbin294 -> 4937 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/Favorite_Star_Active.pngbin704 -> 5485 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/Favorite_Star_Over.pngbin445 -> 5241 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/NavBar_BG.pngbin195 -> 6334 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.pngbin231 -> 5658 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.pngbin218 -> 5130 bytes
-rw-r--r--indra/newview/skins/default/textures/navbar/Row_Selection.pngbin231 -> 4774 bytes
-rw-r--r--indra/newview/skins/default/textures/textures.xml14
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/favorite_folder.pngbin0 -> 572 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/highlighting_selected.pngbin615 -> 5149 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/resync_animations.pngbin0 -> 3627 bytes
-rw-r--r--indra/newview/skins/default/textures/toolbar_icons/twitter.pngbin16051 -> 5696 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Arrow_Small_Down.pngbin0 -> 478 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.pngbin1563 -> 6281 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.pngbin1600 -> 6344 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.pngbin1809 -> 6410 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.pngbin1449 -> 6107 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.pngbin1478 -> 6229 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.pngbin1697 -> 6352 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.pngbin1267 -> 5876 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.pngbin1305 -> 6013 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.pngbin1475 -> 6063 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ComboButton_On.pngbin843 -> 5055 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ComboButton_Selected.pngbin630 -> 5846 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.pngbin603 -> 5630 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/DropDown_On.pngbin869 -> 5195 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/DropDown_Press.pngbin702 -> 5736 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.pngbin66143 -> 68647 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.pngbin56654 -> 130520 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ListItem_Over.pngbin443 -> 4786 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ListItem_Select.pngbin460 -> 4795 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.pngbin912 -> 6543 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/ProgressBar.pngbin414 -> 4577 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Off.pngbin579 -> 4809 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_On.pngbin835 -> 5298 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_On_Selected.pngbin998 -> 5134 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Over.pngbin589 -> 4815 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Press.pngbin614 -> 5134 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Selected.pngbin614 -> 5134 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.pngbin835 -> 5298 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.pngbin998 -> 5134 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.pngbin812 -> 4956 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.pngbin797 -> 4941 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.pngbin920 -> 5048 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.pngbin613 -> 4856 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.pngbin728 -> 4960 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.pngbin947 -> 5070 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.pngbin811 -> 4976 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.pngbin947 -> 5069 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Stepper_Down_Off.pngbin477 -> 4901 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Stepper_Down_Press.pngbin502 -> 6120 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Stepper_Up_Off.pngbin482 -> 4909 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/Stepper_Up_Press.pngbin521 -> 6143 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/TextField_Active.pngbin435 -> 4359 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/TextField_Disabled.pngbin436 -> 4356 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/TextField_Off.pngbin434 -> 4359 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/buy_off.pngbin520 -> 4845 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/buy_over.pngbin541 -> 4856 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/buy_press.pngbin588 -> 4909 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/track_control_sphere.pngbin7537 -> 10854 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Inspector_I.pngbin547 -> 5812 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Resize_Corner.pngbin358 -> 4457 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Window_Background.pngbin508 -> 6780 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Window_Foreground.pngbin517 -> 6900 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Window_NoTitle_Background.pngbin425 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.pngbin424 -> 0 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/add_payment_image_center.pngbin32262 -> 36083 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/add_payment_image_left.pngbin30551 -> 34181 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/add_payment_image_right.pngbin30121 -> 33753 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/first_login_image.jpgbin104529 -> 398853 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/login_mp_logo.pngbin0 -> 23425 bytes
-rw-r--r--indra/newview/skins/default/textures/windows/login_mp_logo_small.pngbin0 -> 17032 bytes
-rw-r--r--indra/newview/skins/default/textures/world/NoEntryLines.pngbin1265 -> 4829 bytes
-rw-r--r--indra/newview/skins/default/textures/world/NoEntryPassLines.pngbin1267 -> 5263 bytes
-rw-r--r--indra/newview/skins/default/xui/da/language_settings.xml1
-rw-r--r--indra/newview/skins/default/xui/da/strings.xml4
-rw-r--r--indra/newview/skins/default/xui/de/language_settings.xml1
-rw-r--r--indra/newview/skins/default/xui/de/strings.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_about.xml133
-rw-r--r--indra/newview/skins/default/xui/en/floater_camera.xml113
-rw-r--r--indra/newview/skins/default/xui/en/floater_gesture.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_im_session.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_live_material_editor.xml4
-rw-r--r--indra/newview/skins/default/xui/en/floater_map.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_mp_performance.xml100
-rw-r--r--indra/newview/skins/default/xui/en/floater_my_environments.xml6
-rw-r--r--indra/newview/skins/default/xui/en/floater_script.xml3
-rw-r--r--indra/newview/skins/default/xui/en/floater_tools.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_world_map.xml8
-rw-r--r--indra/newview/skins/default/xui/en/language_settings.xml1
-rw-r--r--indra/newview/skins/default/xui/en/menu_gallery_inventory.xml10
-rw-r--r--indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_inventory.xml7
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_nearby.xml10
-rw-r--r--indra/newview/skins/default/xui/en/menu_profile_other.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_profile_self.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_viewer.xml23
-rw-r--r--indra/newview/skins/default/xui/en/mime_types_linux.xml30
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml12
-rw-r--r--indra/newview/skins/default/xui/en/panel_avatar_list_item.xml26
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_alpha.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_eyes.xml10
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_gloves.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_hair.xml10
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_jacket.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_pants.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_physics.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_shape.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_shirt.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_shoes.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_skin.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_skirt.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_socks.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_tattoo.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_underpants.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_undershirt.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_universal.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_edit_wearable.xml6
-rw-r--r--indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_landmark_info.xml12
-rw-r--r--indra/newview/skins/default/xui/en/panel_login.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_login_first.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_navigation_bar.xml12
-rw-r--r--indra/newview/skins/default/xui/en/panel_notify_textbox.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfit_edit.xml10
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfit_gallery.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_inventory.xml18
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_list.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_outfits_wearing.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_people.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_place_profile.xml9
-rw-r--r--indra/newview/skins/default/xui/en/panel_places.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_sound.xml114
-rw-r--r--indra/newview/skins/default/xui/en/panel_progress.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_status_bar.xml15
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_appearance.xml6
-rw-r--r--indra/newview/skins/default/xui/en/sidepanel_task_info.xml4
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml10
-rw-r--r--indra/newview/skins/default/xui/en/widgets/toolbar.xml4
-rw-r--r--indra/newview/skins/default/xui/es/language_settings.xml1
-rw-r--r--indra/newview/skins/default/xui/es/strings.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/language_settings.xml1
-rw-r--r--indra/newview/skins/default/xui/fr/strings.xml6
-rw-r--r--indra/newview/skins/default/xui/it/language_settings.xml1
-rw-r--r--indra/newview/skins/default/xui/it/strings.xml6
-rw-r--r--indra/newview/skins/default/xui/ja/language_settings.xml3
-rw-r--r--indra/newview/skins/default/xui/ja/strings.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/language_settings.xml1
-rw-r--r--indra/newview/skins/default/xui/pt/language_settings.xml1
-rw-r--r--indra/newview/skins/default/xui/pt/strings.xml4
-rw-r--r--indra/newview/skins/default/xui/ru/strings.xml4
-rw-r--r--indra/newview/skins/default/xui/tr/strings.xml4
-rw-r--r--indra/viewer_components/login/CMakeLists.txt14
537 files changed, 7971 insertions, 1248 deletions
diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index 62ed631e06..fb3f44bc76 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -24,6 +24,10 @@ if( USE_CONAN )
set( USE_AUTOBUILD_3P OFF )
conan_basic_setup(TARGETS NO_OUTPUT_DIRS)
add_compile_definitions(LL_USESYSTEMLIBS USE_CONAN NO_AUTOBUILD_3P)
+elseif( USESYSTEMLIBS )
+ set( USE_CONAN OFF )
+ set( USE_AUTOBUILD_3P OFF )
+ add_compile_definitions(LL_USESYSTEMLIBS)
else()
set( USE_CONAN OFF )
set( USE_AUTOBUILD_3P ON )
@@ -57,7 +61,9 @@ add_subdirectory(${LIBS_OPEN_PREFIX}llmessage)
add_subdirectory(${LIBS_OPEN_PREFIX}llprimitive)
add_subdirectory(${LIBS_OPEN_PREFIX}llrender)
add_subdirectory(${LIBS_OPEN_PREFIX}llfilesystem)
+if (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
add_subdirectory(${LIBS_OPEN_PREFIX}llwebrtc)
+endif (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
add_subdirectory(${LIBS_OPEN_PREFIX}llwindow)
add_subdirectory(${LIBS_OPEN_PREFIX}llxml)
@@ -115,7 +121,7 @@ else (USE_BUGSPLAT)
endif (USE_BUGSPLAT)
add_subdirectory(${VIEWER_PREFIX}newview)
-add_dependencies(viewer secondlife-bin)
+add_dependencies(viewer ${VIEWER_BINARY_NAME})
add_subdirectory(${VIEWER_PREFIX}doxygen EXCLUDE_FROM_ALL)
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index fc18ffebb5..bdeff9a8df 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -33,9 +33,13 @@ add_compile_definitions( ADDRESS_SIZE=${ADDRESS_SIZE})
# -- which we do. Without one or the other, we get a ton of Boost warnings.
add_compile_definitions(BOOST_BIND_GLOBAL_PLACEHOLDERS)
+if(CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+add_compile_definitions(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES=1 GLM_FORCE_NEON=1)
+else(CMAKE_OSX_ARCHITECTURES MATCHES arm64)
# Force enable SSE2 instructions in GLM per the manual
# https://github.com/g-truc/glm/blob/master/manual.md#section2_10
add_compile_definitions(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES=1 GLM_FORCE_SSE2=1)
+endif(CMAKE_OSX_ARCHITECTURES MATCHES arm64)
# Configure crash reporting
set(RELEASE_CRASH_REPORTING OFF CACHE BOOL "Enable use of crash reporting in release builds")
@@ -54,7 +58,7 @@ set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release" CACHE STRING "Supported b
# Platform-specific compilation flags.
-if (WINDOWS)
+if (NOT CMAKE_CXX_COMPILER_ID MATCHES GNU AND WINDOWS)
# Don't build DLLs.
set(BUILD_SHARED_LIBS OFF)
@@ -110,9 +114,9 @@ if (WINDOWS)
string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
endif()
-endif (WINDOWS)
+endif (NOT CMAKE_CXX_COMPILER_ID MATCHES GNU AND WINDOWS)
-if (LINUX)
+if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
set( CMAKE_BUILD_WITH_INSTALL_RPATH TRUE )
set( CMAKE_INSTALL_RPATH $ORIGIN $ORIGIN/../lib )
set(CMAKE_EXE_LINKER_FLAGS "-Wl,--exclude-libs,ALL")
@@ -130,7 +134,7 @@ if (LINUX)
add_compile_definitions(
_REENTRANT
- APPID=secondlife
+ APPID=megapahit
LL_IGNORE_SIGCHLD
)
@@ -144,6 +148,10 @@ if (LINUX)
add_compile_definitions( _FORTIFY_SOURCE=2 )
endif()
+ if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ add_compile_definitions(EXTERNAL_TOS)
+ endif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+
add_compile_options(
-fexceptions
-fno-math-errno
@@ -152,8 +160,10 @@ if (LINUX)
-msse2
-mfpmath=sse
-pthread
- -fvisibility=hidden
)
+ if (NOT BUILD_SHARED_LIBS)
+ add_compile_options(-fvisibility=hidden)
+ endif (NOT BUILD_SHARED_LIBS)
add_link_options(
-Wl,--no-keep-memory
@@ -171,7 +181,7 @@ if (LINUX)
-lm
)
endif()
-endif (LINUX)
+endif (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
if (DARWIN)
# Warnings should be fatal -- thanks, Nicky Perian, for spotting reversed default
diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake
index 97b316c4c7..506f792570 100644
--- a/indra/cmake/APR.cmake
+++ b/indra/cmake/APR.cmake
@@ -5,6 +5,15 @@ include_guard()
add_library( ll::apr INTERFACE IMPORTED )
+if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ include(FindPkgConfig)
+ pkg_check_modules(Apr REQUIRED apr-1 apr-util-1)
+ target_include_directories(ll::apr SYSTEM INTERFACE ${Apr_INCLUDE_DIRS})
+ target_link_directories(ll::apr INTERFACE ${Apr_LIBRARY_DIRS})
+ target_link_libraries(ll::apr INTERFACE ${Apr_LIBRARIES})
+ return ()
+endif ()
+
use_system_binary( apr apr-util )
use_prebuilt_binary(apr_suite)
diff --git a/indra/cmake/Audio.cmake b/indra/cmake/Audio.cmake
index 6de33af314..9d92c5a65d 100644
--- a/indra/cmake/Audio.cmake
+++ b/indra/cmake/Audio.cmake
@@ -5,6 +5,15 @@ include(Prebuilt)
include_guard()
add_library( ll::vorbis INTERFACE IMPORTED )
+if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ include(FindPkgConfig)
+ pkg_check_modules(Vorbis REQUIRED ogg vorbis vorbisenc vorbisfile)
+ target_include_directories(ll::vorbis SYSTEM INTERFACE ${Vorbis_INCLUDE_DIRS})
+ target_link_directories(ll::vorbis INTERFACE ${Vorbis_LIBRARY_DIRS})
+ target_link_libraries(ll::vorbis INTERFACE ${Vorbis_LIBRARIES})
+ return ()
+endif ()
+
use_system_binary(vorbis)
use_prebuilt_binary(ogg_vorbis)
target_include_directories( ll::vorbis SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include )
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index 57f44dae59..26c0843300 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -8,6 +8,30 @@ if( USE_CONAN )
target_link_libraries( ll::boost INTERFACE CONAN_PKG::boost )
target_compile_definitions( ll::boost INTERFACE BOOST_ALLOW_DEPRECATED_HEADERS BOOST_BIND_GLOBAL_PLACEHOLDERS )
return()
+elseif( NOT USE_AUTOBUILD_3P )
+ if (WINDOWS)
+ set(sfx -mt)
+ target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/x86_64-w64-mingw32/include)
+ target_link_directories( ll::boost INTERFACE /opt/local/x86_64-w64-mingw32/lib)
+ elseif (DARWIN)
+ set(sfx -mt)
+ target_include_directories( ll::boost SYSTEM INTERFACE /opt/local/libexec/boost/1.81/include)
+ target_link_directories( ll::boost INTERFACE /opt/local/libexec/boost/1.81/lib)
+ else (WINDOWS)
+ find_package( Boost REQUIRED )
+ endif (WINDOWS)
+ target_link_libraries( ll::boost INTERFACE
+ boost_context${sfx}
+ boost_fiber${sfx}
+ boost_filesystem${sfx}
+ boost_program_options${sfx}
+ boost_regex${sfx}
+ boost_system${sfx}
+ boost_thread${sfx}
+ boost_url${sfx}
+ )
+ target_compile_definitions( ll::boost INTERFACE BOOST_BIND_GLOBAL_PLACEHOLDERS )
+ return()
endif()
use_prebuilt_binary(boost)
diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake
index 555d2aebbf..119a41f570 100644
--- a/indra/cmake/CEFPlugin.cmake
+++ b/indra/cmake/CEFPlugin.cmake
@@ -5,7 +5,46 @@ include(Prebuilt)
include_guard()
add_library( ll::cef INTERFACE IMPORTED )
+if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070244.tar.bz2)
+ file(DOWNLOAD
+ https://megapahit.net/downloads/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070244.tar.bz2
+ ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070244.tar.bz2
+ SHOW_PROGRESS
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070244.tar.bz2)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070244.tar.bz2
+ DESTINATION ${LIBS_PREBUILT_DIR}
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
+elseif (CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070158.tar.bz2)
+ file(DOWNLOAD
+ https://megapahit.net/downloads/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070158.tar.bz2
+ ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070158.tar.bz2
+ SHOW_PROGRESS
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070158.tar.bz2)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/dullahan-1.14.0.202312131437_118.7.1_g99817d2_chromium-118.0.5993.119-darwin64-242070158.tar.bz2
+ DESTINATION ${LIBS_PREBUILT_DIR}
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/dullahan_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/dullahan_installed OR NOT ${dullahan_installed} EQUAL 0)
+else (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
use_prebuilt_binary(dullahan)
+ if (${LINUX_DISTRO} MATCHES fedora)
+ execute_process(
+ COMMAND patchelf --remove-rpath bin/release/dullahan_host
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}
+ )
+ endif (${LINUX_DISTRO} MATCHES fedora)
+endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+
target_include_directories( ll::cef SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/cef)
if (WINDOWS)
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index 9017fc2fb4..dbc6693bf7 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -22,6 +22,7 @@ set(cmake_SOURCE_FILES
DragDrop.cmake
EXPAT.cmake
FindAutobuild.cmake
+ FMODSTUDIO.cmake
FreeType.cmake
GLEXT.cmake
GLH.cmake
diff --git a/indra/cmake/CURL.cmake b/indra/cmake/CURL.cmake
index eea0a2da62..b85de3b845 100644
--- a/indra/cmake/CURL.cmake
+++ b/indra/cmake/CURL.cmake
@@ -5,9 +5,91 @@ include(Linking)
include_guard()
add_library( ll::libcurl INTERFACE IMPORTED )
+if (NOT USESYSTEMLIBS)
use_system_binary(libcurl)
+endif (NOT USESYSTEMLIBS)
+if (DARWIN OR LINUX OR NOT USESYSTEMLIBS)
use_prebuilt_binary(curl)
-if (WINDOWS)
+ if (DARWIN)
+ execute_process(
+ COMMAND lipo -archs libcurl.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ OUTPUT_VARIABLE curl_archs
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if (NOT ${curl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ execute_process(
+ COMMAND lipo
+ libcurl.a
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libcurl.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ endif (NOT ${curl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ endif (DARWIN)
+elseif (CMAKE_SYSTEM_NAME MATCHES FreeBSD AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/curl_installed OR NOT ${curl_installed} EQUAL 0))
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz)
+ file(DOWNLOAD
+ https://github.com/secondlife/3p-curl/archive/refs/tags/v7.54.1-r1.tar.gz
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curl.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlbuild.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlrules.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/curlver.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/easy.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/mprintf.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/multi.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/stdcheaders.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/system.h
+ ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/include/curl/typecheck-gcc.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/curl
+ )
+ file(
+ COPY
+ ${LIBS_PREBUILT_DIR}/lib/release/libcrypto.a
+ ${LIBS_PREBUILT_DIR}/lib/release/libssl.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib
+ )
+ message("We need to temporarily have OpenSSL3 header directory and libraries renamed just until the libcurl building process with OpenSSL1.1 now is finished.")
+ execute_process(COMMAND sudo mv /usr/include/openssl /usr/include/openssl3)
+ execute_process(COMMAND sudo mv /usr/lib/libcrypto.a /usr/lib/libcrypto.a.3)
+ execute_process(COMMAND sudo mv /usr/lib/libcrypto.so /usr/lib/libcrypto.so.3)
+ execute_process(COMMAND sudo mv /usr/lib/libssl.a /usr/lib/libssl.a.3)
+ execute_process(COMMAND sudo mv /usr/lib/libssl.so /usr/lib/libssl.so.3)
+ execute_process(
+ COMMAND ./configure --disable-alt-svc --disable-dict --disable-doh --disable-file --disable-gopher --disable-headers-api --disable-hsts --disable-imap --disable-ldap --disable-ldaps --disable-libcurl-option --disable-manual --disable-mqtt --disable-ntlm --disable-ntlm-wb --disable-pop3 --disable-rtsp --disable-shared --disable-smb --disable-smtp --disable-sspi --disable-telnet --disable-tftp --disable-tls-srp --disable-unix-sockets --disable-verbose --disable-versioned-symbols --enable-threaded-resolver --with-ssl=${LIBS_PREBUILT_DIR} --without-libidn2 --without-libpsl --without-libssh2
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl
+ )
+ execute_process(
+ COMMAND make -j${MAKE_JOBS}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl
+ RESULT_VARIABLE curl_installed
+ )
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-curl-7.54.1-r1/curl/lib/.libs/libcurl.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ execute_process(COMMAND sudo mv /usr/include/openssl3 /usr/include/openssl)
+ execute_process(COMMAND sudo mv /usr/lib/libcrypto.a.3 /usr/lib/libcrypto.a)
+ execute_process(COMMAND sudo mv /usr/lib/libcrypto.so.3 /usr/lib/libcrypto.so)
+ execute_process(COMMAND sudo mv /usr/lib/libssl.a.3 /usr/lib/libssl.a)
+ execute_process(COMMAND sudo mv /usr/lib/libssl.so.3 /usr/lib/libssl.so)
+ message("OpenSSL3 header directory and library names have been restored.")
+ file(REMOVE
+ ${LIBS_PREBUILT_DIR}/lib/libcrypto.a
+ ${LIBS_PREBUILT_DIR}/lib/libssl.a
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/curl_installed "${curl_installed}")
+endif (DARWIN OR LINUX OR NOT USESYSTEMLIBS)
+if (WINDOWS AND NOT USESYSTEMLIBS)
target_link_libraries(ll::libcurl INTERFACE
${ARCH_PREBUILT_DIRS_RELEASE}/libcurl.lib
ll::openssl
diff --git a/indra/cmake/FMODSTUDIO.cmake b/indra/cmake/FMODSTUDIO.cmake
new file mode 100644
index 0000000000..313ee2cde7
--- /dev/null
+++ b/indra/cmake/FMODSTUDIO.cmake
@@ -0,0 +1,109 @@
+# -*- cmake -*-
+
+include_guard()
+
+# FMODSTUDIO can be set when launching the make using the argument -DUSE_FMODSTUDIO:BOOL=ON
+# When building using proprietary binaries though (i.e. having access to LL private servers),
+# we always build with FMODSTUDIO.
+if (INSTALL_PROPRIETARY)
+ set(USE_FMODSTUDIO ON CACHE BOOL "Using FMODSTUDIO sound library.")
+endif (INSTALL_PROPRIETARY)
+
+# ND: To streamline arguments passed, switch from FMODSTUDIO to USE_FMODSTUDIO
+# To not break all old build scripts convert old arguments but warn about it
+if(FMODSTUDIO)
+ message( WARNING "Use of the FMODSTUDIO argument is deprecated, please switch to USE_FMODSTUDIO")
+ set(USE_FMODSTUDIO ${FMODSTUDIO})
+endif()
+
+if (USE_FMODSTUDIO)
+ add_library( ll::fmodstudio INTERFACE IMPORTED )
+ target_compile_definitions( ll::fmodstudio INTERFACE LL_FMODSTUDIO=1)
+
+ if (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR)
+ # If the path have been specified in the arguments, use that
+
+ target_link_libraries(ll::fmodstudio INTERFACE ${FMODSTUDIO_LIBRARY})
+ target_include_directories( ll::fmodstudio SYSTEM INTERFACE ${FMODSTUDIO_INCLUDE_DIR})
+ else (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR)
+ # If not, we're going to try to get the package listed in autobuild.xml
+ # Note: if you're not using INSTALL_PROPRIETARY, the package URL should be local (file:/// URL)
+ # as accessing the private LL location will fail if you don't have the credential
+ include(Prebuilt)
+ if (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0))
+ file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release)
+ if (DARWIN)
+ execute_process(
+ COMMAND hdiutil attach -noverify fmodstudioapi20223mac-installer.dmg
+ WORKING_DIRECTORY $ENV{HOME}/Downloads
+ )
+ file(
+ COPY
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod.hpp
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_codec.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_common.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_dsp.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_dsp_effects.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_errors.h
+ /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core/inc/fmod_output.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/fmodstudio
+ )
+ execute_process(
+ COMMAND lipo
+ lib/libfmod.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output ${LIBS_PREBUILT_DIR}/lib/release/libfmod.dylib
+ WORKING_DIRECTORY /Volumes/FMOD\ Programmers\ API\ Mac/FMOD\ Programmers\ API/api/core
+ )
+ execute_process(
+ COMMAND hdiutil detach FMOD\ Programmers\ API\ Mac
+ WORKING_DIRECTORY /Volumes
+ RESULT_VARIABLE fmodstudio_installed
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "${fmodstudio_installed}")
+ else (DARWIN)
+ file(ARCHIVE_EXTRACT
+ INPUT $ENV{HOME}/Downloads/fmodstudioapi20223linux.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod.hpp
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_codec.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_common.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_dsp.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_dsp_effects.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_errors.h
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/inc/fmod_output.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/fmodstudio
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13
+ ${CMAKE_BINARY_DIR}/fmodstudioapi20223linux/api/core/lib/${CMAKE_SYSTEM_PROCESSOR}/libfmod.so.13.23
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ FOLLOW_SYMLINK_CHAIN
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/fmodstudio_installed "0")
+ endif (DARWIN)
+ else (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0))
+ use_prebuilt_binary(fmodstudio)
+ endif (USESYSTEMLIBS AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/fmodstudio_installed OR NOT ${fmodstudio_installed} EQUAL 0))
+ if (WINDOWS)
+ target_link_libraries( ll::fmodstudio INTERFACE fmod_vc)
+ elseif (DARWIN)
+ #despite files being called libfmod.dylib, we are searching for fmod
+ target_link_libraries( ll::fmodstudio INTERFACE fmod)
+ elseif (LINUX)
+ target_link_libraries( ll::fmodstudio INTERFACE fmod)
+ endif (WINDOWS)
+
+ target_include_directories( ll::fmodstudio SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/fmodstudio)
+ endif (FMODSTUDIO_LIBRARY AND FMODSTUDIO_INCLUDE_DIR)
+else()
+ set( USE_FMODSTUDIO "OFF")
+endif ()
+
diff --git a/indra/cmake/FreeType.cmake b/indra/cmake/FreeType.cmake
index 47ac96f793..e531a9e508 100644
--- a/indra/cmake/FreeType.cmake
+++ b/indra/cmake/FreeType.cmake
@@ -5,6 +5,14 @@ include(Linking)
include_guard()
add_library( ll::freetype INTERFACE IMPORTED )
+if (USESYSTEMLIBS)
+ include(FindPkgConfig)
+ pkg_check_modules(Freetype REQUIRED freetype2)
+ target_include_directories( ll::freetype SYSTEM INTERFACE ${Freetype_INCLUDE_DIRS} )
+ target_link_directories( ll::freetype INTERFACE ${Freetype_LIBRARY_DIRS} )
+ target_link_libraries( ll::freetype INTERFACE ${Freetype_LIBRARIES} )
+ return ()
+endif (USESYSTEMLIBS)
use_system_binary(freetype)
use_prebuilt_binary(freetype)
target_include_directories( ll::freetype SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/freetype2/)
diff --git a/indra/cmake/GLEXT.cmake b/indra/cmake/GLEXT.cmake
index a780966f0c..ea349237d3 100644
--- a/indra/cmake/GLEXT.cmake
+++ b/indra/cmake/GLEXT.cmake
@@ -3,7 +3,10 @@ include(Prebuilt)
include(GLH)
add_library( ll::glext INTERFACE IMPORTED )
-use_system_binary(glext)
-use_prebuilt_binary(glext)
+if (USESYSTEMLIBS)
+ return ()
+endif ()
+use_system_binary(glext)
+use_prebuilt_binary(glext)
diff --git a/indra/cmake/GLH.cmake b/indra/cmake/GLH.cmake
index 0cefc3543a..648a08454b 100644
--- a/indra/cmake/GLH.cmake
+++ b/indra/cmake/GLH.cmake
@@ -2,6 +2,9 @@
include(Prebuilt)
add_library( ll::glh_linear INTERFACE IMPORTED )
+target_include_directories( ll::glh_linear SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
+if (NOT USESYSTEMLIBS)
use_system_binary( glh_linear )
+endif (NOT USESYSTEMLIBS)
use_prebuilt_binary(glh_linear)
diff --git a/indra/cmake/GLM.cmake b/indra/cmake/GLM.cmake
index 84b155f6c5..451b7292cb 100644
--- a/indra/cmake/GLM.cmake
+++ b/indra/cmake/GLM.cmake
@@ -3,5 +3,12 @@ include(Prebuilt)
add_library( ll::glm INTERFACE IMPORTED )
+if (NOT USESYSTEMLIBS)
use_system_binary( glm )
+elseif (NOT LINUX)
+ find_package( glm REQUIRED )
+endif (NOT USESYSTEMLIBS)
+
+if (LINUX OR USESYSTEMLIBS)
use_prebuilt_binary(glm)
+endif (LINUX OR USESYSTEMLIBS)
diff --git a/indra/cmake/GStreamer10Plugin.cmake b/indra/cmake/GStreamer10Plugin.cmake
index da2e33d04d..160844ef68 100644
--- a/indra/cmake/GStreamer10Plugin.cmake
+++ b/indra/cmake/GStreamer10Plugin.cmake
@@ -7,7 +7,7 @@ include(GLIB)
add_library( ll::gstreamer10 INTERFACE IMPORTED )
-if (LINUX)
+if (LINUX OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
include(FindPkgConfig)
pkg_check_modules(GSTREAMER10 REQUIRED gstreamer-1.0)
diff --git a/indra/cmake/Hunspell.cmake b/indra/cmake/Hunspell.cmake
index 129679febd..5fa22120e6 100644
--- a/indra/cmake/Hunspell.cmake
+++ b/indra/cmake/Hunspell.cmake
@@ -3,7 +3,9 @@ include(Linking)
include(Prebuilt)
include_guard()
+if (USE_AUTOBUILD_3P OR USE_CONAN)
use_prebuilt_binary(dictionaries)
+endif ()
add_library( ll::hunspell INTERFACE IMPORTED )
use_system_binary(hunspell)
diff --git a/indra/cmake/LLCoreHttp.cmake b/indra/cmake/LLCoreHttp.cmake
index 22ed5fef9c..5464e4d327 100644
--- a/indra/cmake/LLCoreHttp.cmake
+++ b/indra/cmake/LLCoreHttp.cmake
@@ -1,5 +1,5 @@
# -*- cmake -*-
-include(CURL)
include(OpenSSL)
+include(CURL)
include(NGHTTP2)
diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake
index d0a52ffb63..39c07e3377 100644
--- a/indra/cmake/LLPrimitive.cmake
+++ b/indra/cmake/LLPrimitive.cmake
@@ -18,6 +18,119 @@ if( USE_CONAN )
"${CONAN_INCLUDE_DIRS_COLLADADOM}/collada-dom/1.4/" )
endif()
+if( USESYSTEMLIBS )
+ if( WINDOWS )
+ include(FindPkgConfig)
+ pkg_check_modules(Colladadom REQUIRED collada-dom-141)
+ target_compile_definitions( ll::colladadom INTERFACE COLLADA_DOM_SUPPORT141 )
+ target_include_directories( ll::colladadom SYSTEM INTERFACE ${Colladadom_INCLUDE_DIRS} )
+ target_link_directories( ll::colladadom INTERFACE ${Colladadom_LIBRARY_DIRS} )
+ target_link_libraries( ll::colladadom INTERFACE ${Colladadom_LIBRARIES} )
+ return ()
+ elseif( LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD )
+ # Build of the collada-dom for Linux and FreeBSD is done in
+ # indra/llprimitive/CMakeLists.txt
+ return ()
+ else( WINDOWS )
+ include(FindPkgConfig)
+ pkg_check_modules(Minizip REQUIRED minizip)
+ pkg_check_modules(Libxml2 REQUIRED libxml-2.0)
+ pkg_check_modules(Libpcrecpp libpcrecpp)
+ target_link_libraries( ll::minizip-ng INTERFACE ${Minizip_LIBRARIES} )
+ target_link_libraries( ll::libxml INTERFACE ${Libxml2_LIBRARIES} )
+ if( ${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0 )
+ if( NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz )
+ file(DOWNLOAD
+ https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r4.tar.gz
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz
+ )
+ endif( NOT EXISTS ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz )
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/collada/1.4)
+ if( DARWIN )
+ try_compile(COLLADADOM_RESULT
+ PROJECT colladadom
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4
+ BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4
+ TARGET collada14dom
+ CMAKE_FLAGS
+ -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS}
+ "-DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS} -L${Minizip_LIBRARY_DIRS}exec/boost/1.81/lib"
+ -Dlibpcrecpp_LIBRARIES:STRING=pcrecpp
+ -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES}
+ -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem-mt
+ -DBoost_SYSTEM_LIBRARY:STRING=boost_system-mt
+ -Dlibpcrecpp_CFLAGS_OTHERS:STRING=-I${Libpcrecpp_INCLUDE_DIRS}
+ -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS}
+ -DBoost_CFLAGS:STRING=-I${Libpcrecpp_LIBRARY_DIRS}exec/boost/1.81/include
+ -DOPT_COLLADA14:BOOL=ON
+ -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:FILEPATH=${LIBS_PREBUILT_DIR}/include/collada
+ -DCOLLADA_DOM_SOVERSION:STRING=0
+ -DCOLLADA_DOM_VERSION:STRING=2.3-r4
+ OUTPUT_VARIABLE colladadom_installed
+ )
+ if( ${COLLADADOM_RESULT} )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.2.3-r4.dylib
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.0.dylib
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.dylib
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ FOLLOW_SYMLINK_CHAIN
+ )
+ endif( ${COLLADADOM_RESULT} )
+ else( DARWIN )
+ execute_process(
+ COMMAND sed -i "" -e "s/SHARED/STATIC/g" 1.4/CMakeLists.txt
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src
+ )
+ try_compile(COLLADADOM_RESULT
+ PROJECT colladadom
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4
+ BINARY_DIR ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4
+ TARGET collada14dom
+ CMAKE_FLAGS
+ -DCMAKE_CXX_FLAGS:STRING=-I${Minizip_INCLUDE_DIRS}
+ -DCMAKE_SHARED_LINKER_FLAGS:STRING=-L${Minizip_LIBRARY_DIRS}
+ -Dlibpcrecpp_LIBRARIES:STRING=pcrecpp
+ -DZLIB_LIBRARIES:STRING=${Libxml2_LIBRARIES}
+ -DBoost_FILESYSTEM_LIBRARY:STRING=boost_filesystem
+ -DBoost_SYSTEM_LIBRARY:STRING=boost_system
+ -Dlibpcrecpp_CFLAGS_OTHERS:STRING=-I${Libpcrecpp_INCLUDE_DIRS}
+ -DEXTRA_COMPILE_FLAGS:STRING=-I${Libxml2_INCLUDE_DIRS}
+ -DOPT_COLLADA14:BOOL=ON
+ -DCOLLADA_DOM_INCLUDE_INSTALL_DIR:FILEPATH=${LIBS_PREBUILT_DIR}/include/collada
+ -DCOLLADA_DOM_SOVERSION:STRING=0
+ -DCOLLADA_DOM_VERSION:STRING=2.3-r4
+ OUTPUT_VARIABLE colladadom_installed
+ )
+ if( ${COLLADADOM_RESULT} )
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/src/1.4/libcollada14dom.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ endif( ${COLLADADOM_RESULT} )
+ endif( DARWIN )
+ if( ${COLLADADOM_RESULT} )
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/collada/1.4)
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/1.4
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/1.5
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/dae
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/dae.h
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/dom.h
+ ${CMAKE_BINARY_DIR}/3p-colladadom-2.3-r4/include/modules
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/collada
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/colladadom_installed "${colladadom_installed}")
+ endif( ${COLLADADOM_RESULT} )
+ endif( ${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/colladadom_installed OR NOT ${colladadom_installed} EQUAL 0 )
+ endif( WINDOWS )
+else( USESYSTEMLIBS )
use_system_binary( colladadom )
use_prebuilt_binary(colladadom)
@@ -35,6 +148,7 @@ if (WINDOWS)
else()
target_link_libraries( ll::libxml INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libxml2.a)
endif()
+endif( USESYSTEMLIBS )
target_include_directories( ll::colladadom SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include/collada
@@ -44,6 +158,6 @@ if (WINDOWS)
target_link_libraries(ll::colladadom INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libcollada14dom23-s.lib ll::libxml ll::minizip-ng )
elseif (DARWIN)
target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng)
-elseif (LINUX)
- target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng)
+else ()
+ target_link_libraries(ll::colladadom INTERFACE collada14dom ll::boost ll::libxml ll::minizip-ng ${Libpcrecpp_LIBRARIES})
endif()
diff --git a/indra/cmake/LLWindow.cmake b/indra/cmake/LLWindow.cmake
index a5791f1bef..7792bee355 100644
--- a/indra/cmake/LLWindow.cmake
+++ b/indra/cmake/LLWindow.cmake
@@ -7,7 +7,7 @@ include(SDL2)
include_guard()
-if (LINUX)
+if (NOT (WINDOWS OR DARWIN))
# linux uses SDL2 for window and keyboard
target_compile_definitions( ll::SDL2 INTERFACE LL_USE_SDL_KEYBOARD=1 )
-endif (LINUX)
+endif (NOT (WINDOWS OR DARWIN))
diff --git a/indra/cmake/LibVLCPlugin.cmake b/indra/cmake/LibVLCPlugin.cmake
index 599ce02844..779576a485 100644
--- a/indra/cmake/LibVLCPlugin.cmake
+++ b/indra/cmake/LibVLCPlugin.cmake
@@ -5,9 +5,56 @@ include(Prebuilt)
include_guard()
add_library( ll::libvlc INTERFACE IMPORTED )
+if (USESYSTEMLIBS)
+ if (DARWIN)
+ if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg)
+ file(DOWNLOAD
+ https://get.videolan.org/vlc/3.0.21/macosx/vlc-3.0.21-arm64.dmg
+ ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-arm64.dmg)
+ file(WRITE ${PREBUILD_TRACKING_DIR}/vlc_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
+ execute_process(
+ COMMAND hdiutil attach -noverify vlc-3.0.21-arm64.dmg
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ )
+ else (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg)
+ file(DOWNLOAD
+ https://get.videolan.org/vlc/3.0.21/macosx/vlc-3.0.21-intel64.dmg
+ ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/vlc-3.0.21-intel64.dmg)
+ file(WRITE ${PREBUILD_TRACKING_DIR}/vlc_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/vlc_installed OR NOT ${vlc_installed} EQUAL 0)
+ execute_process(
+ COMMAND hdiutil attach -noverify vlc-3.0.21-intel64.dmg
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ )
+ endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ target_include_directories( ll::libvlc SYSTEM INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/include)
+ target_link_directories( ll::libvlc INTERFACE /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib)
+ target_link_libraries( ll::libvlc INTERFACE vlc vlccore )
+ else (DARWIN)
+ include(FindPkgConfig)
+ pkg_check_modules(Libvlc REQUIRED libvlc vlc-plugin)
+ target_include_directories( ll::libvlc SYSTEM INTERFACE ${Libvlc_INCLUDE_DIRS} )
+ target_link_directories( ll::libvlc INTERFACE ${Libvlc_LIBRARY_DIRS} )
+ target_link_libraries( ll::libvlc INTERFACE ${Libvlc_LIBRARIES} )
+ endif (DARWIN)
+ set(LIBVLCPLUGIN ON CACHE BOOL
+ "LIBVLCPLUGIN support for the llplugin/llmedia test apps.")
+ return()
+else (USESYSTEMLIBS)
+
use_prebuilt_binary(vlc-bin)
set(LIBVLCPLUGIN ON CACHE BOOL
"LIBVLCPLUGIN support for the llplugin/llmedia test apps.")
+endif (USESYSTEMLIBS)
if (WINDOWS)
target_link_libraries( ll::libvlc INTERFACE
diff --git a/indra/cmake/LibraryInstall.cmake b/indra/cmake/LibraryInstall.cmake
new file mode 100644
index 0000000000..e98d71f044
--- /dev/null
+++ b/indra/cmake/LibraryInstall.cmake
@@ -0,0 +1,13 @@
+list(REMOVE_ITEM ${PROJECT_NAME}_HEADER_FILES CMakeLists.txt)
+#install(FILES ${${PROJECT_NAME}_HEADER_FILES}
+# DESTINATION include/${PROJECT_NAME})
+if (BUILD_SHARED_LIBS)
+ if (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ set(_LIB lib/${ARCH}-linux-gnu)
+ elseif (EXISTS /lib64 AND NOT ${LINUX_DISTRO} MATCHES arch)
+ set(_LIB lib64)
+ else ()
+ set(_LIB lib)
+ endif ()
+ install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB})
+endif ()
diff --git a/indra/cmake/Linking.cmake b/indra/cmake/Linking.cmake
index 2bdf0a8aa1..815e7479d0 100644
--- a/indra/cmake/Linking.cmake
+++ b/indra/cmake/Linking.cmake
@@ -67,7 +67,7 @@ elseif (WINDOWS)
rpcrt4.lib
legacy_stdio_definitions
)
-else()
+elseif (DARWIN)
include(CMakeFindFrameworks)
find_library(COREFOUNDATION_LIBRARY CoreFoundation)
find_library(CARBON_LIBRARY Carbon)
diff --git a/indra/cmake/Lualibs.cmake b/indra/cmake/Lualibs.cmake
index d66305a8e5..e1a7794a34 100644
--- a/indra/cmake/Lualibs.cmake
+++ b/indra/cmake/Lualibs.cmake
@@ -6,7 +6,7 @@ include(Prebuilt)
add_library( ll::lualibs INTERFACE IMPORTED )
-use_system_binary( lualibs )
+#use_system_binary( lualibs )
use_prebuilt_binary(luau)
diff --git a/indra/cmake/Meshoptimizer.cmake b/indra/cmake/Meshoptimizer.cmake
index 6983a5895a..e1bfe10e93 100644
--- a/indra/cmake/Meshoptimizer.cmake
+++ b/indra/cmake/Meshoptimizer.cmake
@@ -6,15 +6,51 @@ include(Prebuilt)
include_guard()
add_library( ll::meshoptimizer INTERFACE IMPORTED )
+if (NOT USESYSTEMLIBS)
use_system_binary(meshoptimizer)
+elseif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES ubuntu) OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+ find_package(meshoptimizer)
+ target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer)
+ return ()
+endif (NOT USESYSTEMLIBS)
+
+if (LINUX OR NOT USESYSTEMLIBS)
use_prebuilt_binary(meshoptimizer)
+elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed OR NOT ${meshoptimizer_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz)
+ file(DOWNLOAD
+ https://github.com/zeux/meshoptimizer/archive/refs/tags/v0.21.tar.gz
+ ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/meshoptimizer-0.21.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ try_compile(MESHOPTIMIZER_RESULT
+ PROJECT meshoptimizer
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
+ BINARY_DIR ${CMAKE_BINARY_DIR}/meshoptimizer-0.21
+ TARGET meshoptimizer
+ OUTPUT_VARIABLE meshoptimizer_installed
+ )
+ if (${MESHOPTIMIZER_RESULT})
+ file(
+ COPY ${CMAKE_BINARY_DIR}/meshoptimizer-0.21/src/meshoptimizer.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/meshoptimizer
+ )
+ file(
+ COPY ${CMAKE_BINARY_DIR}/meshoptimizer-0.21/libmeshoptimizer.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/meshoptimizer_installed "${meshoptimizer_installed}")
+ endif (${MESHOPTIMIZER_RESULT})
+endif (LINUX OR NOT USESYSTEMLIBS)
-if (WINDOWS)
+if (NOT USESYSTEMLIBS AND WINDOWS)
target_link_libraries( ll::meshoptimizer INTERFACE meshoptimizer.lib)
-elseif (LINUX)
- target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a)
-elseif (DARWIN)
+else (NOT USESYSTEMLIBS AND WINDOWS)
target_link_libraries( ll::meshoptimizer INTERFACE libmeshoptimizer.a)
-endif (WINDOWS)
+endif (NOT USESYSTEMLIBS AND WINDOWS)
target_include_directories( ll::meshoptimizer SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/meshoptimizer)
diff --git a/indra/cmake/Mikktspace.cmake b/indra/cmake/Mikktspace.cmake
index 9fd2becba4..c73321e313 100644
--- a/indra/cmake/Mikktspace.cmake
+++ b/indra/cmake/Mikktspace.cmake
@@ -1,6 +1,4 @@
# -*- cmake -*-
include(Prebuilt)
-if (NOT USESYSTEMLIBS)
use_prebuilt_binary(mikktspace)
-endif (NOT USESYSTEMLIBS)
diff --git a/indra/cmake/NDOF.cmake b/indra/cmake/NDOF.cmake
index db9c8b1780..b75bb2509d 100644
--- a/indra/cmake/NDOF.cmake
+++ b/indra/cmake/NDOF.cmake
@@ -8,7 +8,37 @@ add_library( ll::ndof INTERFACE IMPORTED )
if (NDOF)
if (WINDOWS OR DARWIN)
+ if (NOT USESYSTEMLIBS)
use_prebuilt_binary(libndofdev)
+ elseif (DARWIN AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/libndofdev_installed OR NOT ${libndofdev_installed} EQUAL 0))
+ file(DOWNLOAD
+ https://github.com/secondlife/3p-libndofdev/archive/refs/tags/v0.1.8e9edc7.tar.gz
+ ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7.tar.gz
+ )
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ try_compile(LIBNDOFDEV_RESULT
+ PROJECT libndofdev
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev
+ BINARY_DIR ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev
+ TARGET ndofdev
+ CMAKE_FLAGS -DCMAKE_C_FLAGS:STRING=-DTARGET_OS_MAC\ -Wno-int-conversion
+ OUTPUT_VARIABLE libndofdev_installed
+ )
+ if (${LIBNDOFDEV_RESULT})
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev/src/ndofdev_external.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include
+ )
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-libndofdev-0.1.8e9edc7/libndofdev/src/libndofdev.dylib
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/libndofdev_installed "${libndofdev_installed}")
+ endif (${LIBNDOFDEV_RESULT})
+ endif (NOT USESYSTEMLIBS)
elseif (LINUX)
use_prebuilt_binary(open-libndofdev)
endif (WINDOWS OR DARWIN)
diff --git a/indra/cmake/OPENAL.cmake b/indra/cmake/OPENAL.cmake
index 355907bcf5..2895b1fcf7 100644
--- a/indra/cmake/OPENAL.cmake
+++ b/indra/cmake/OPENAL.cmake
@@ -14,6 +14,17 @@ endif()
if (USE_OPENAL)
add_library( ll::openal INTERFACE IMPORTED )
+
+ if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1)
+ include(FindPkgConfig)
+ pkg_check_modules(Openal REQUIRED freealut)
+ target_include_directories(ll::openal SYSTEM INTERFACE ${Openal_INCLUDE_DIRS})
+ target_link_directories(ll::openal INTERFACE ${Openal_LIBRARY_DIRS})
+ target_link_libraries(ll::openal INTERFACE ${Openal_LIBRARIES})
+ return ()
+ endif ()
+
target_include_directories( ll::openal SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/AL")
target_compile_definitions( ll::openal INTERFACE LL_OPENAL=1)
use_prebuilt_binary(openal)
diff --git a/indra/cmake/OpenJPEG.cmake b/indra/cmake/OpenJPEG.cmake
index c4aab2e9e5..463e4365ce 100644
--- a/indra/cmake/OpenJPEG.cmake
+++ b/indra/cmake/OpenJPEG.cmake
@@ -4,8 +4,50 @@ include(Prebuilt)
include_guard()
add_library( ll::openjpeg INTERFACE IMPORTED )
+if (NOT USESYSTEMLIBS)
use_system_binary(openjpeg)
+endif (NOT USESYSTEMLIBS)
+if (LINUX OR NOT USESYSTEMLIBS)
use_prebuilt_binary(openjpeg)
+elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openjpeg_installed OR NOT ${openjpeg_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz)
+ file(DOWNLOAD
+ https://github.com/secondlife/3p-openjpeg/archive/refs/tags/v2.5.0.ea12248.tar.gz
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ try_compile(OPENJPEG_RESULT
+ PROJECT OPENJPEG
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg
+ BINARY_DIR ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg
+ TARGET openjp2
+ CMAKE_FLAGS
+ -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON
+ OUTPUT_VARIABLE openjpeg_installed
+ )
+ if (${OPENJPEG_RESULT})
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/cio.h
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/event.h
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/openjpeg.h
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/opj_config.h
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/opj_config_private.h
+ ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/src/lib/openjp2/opj_stdint.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/openjpeg
+ )
+ file(
+ COPY ${CMAKE_BINARY_DIR}/3p-openjpeg-2.5.0.ea12248/openjpeg/bin/libopenjp2.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/openjpeg_installed "${openjpeg_installed}")
+ endif (${OPENJPEG_RESULT})
+endif (LINUX OR NOT USESYSTEMLIBS)
target_link_libraries(ll::openjpeg INTERFACE openjp2 )
-target_include_directories( ll::openjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/openjpeg)
+target_include_directories( ll::openjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
diff --git a/indra/cmake/OpenSSL.cmake b/indra/cmake/OpenSSL.cmake
index 67a84e14af..c6481c89e9 100644
--- a/indra/cmake/OpenSSL.cmake
+++ b/indra/cmake/OpenSSL.cmake
@@ -5,14 +5,187 @@ include(Linking)
include_guard()
add_library( ll::openssl INTERFACE IMPORTED )
+if (NOT USESYSTEMLIBS)
use_system_binary(openssl)
+endif (NOT USESYSTEMLIBS)
+if (DARWIN OR LINUX OR NOT USESYSTEMLIBS)
use_prebuilt_binary(openssl)
-if (WINDOWS)
+ if (DARWIN)
+ execute_process(
+ COMMAND lipo -archs libcrypto.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ OUTPUT_VARIABLE crypto_archs
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if (NOT ${crypto_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ execute_process(
+ COMMAND lipo
+ libcrypto.a
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libcrypto.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ endif (NOT ${crypto_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ execute_process(
+ COMMAND lipo -archs libssl.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ OUTPUT_VARIABLE ssl_archs
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if (NOT ${ssl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ execute_process(
+ COMMAND lipo
+ libssl.a
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libssl.a
+ WORKING_DIRECTORY ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ endif (NOT ${ssl_archs} STREQUAL ${CMAKE_OSX_ARCHITECTURES})
+ endif (DARWIN)
+elseif (CMAKE_SYSTEM_NAME MATCHES FreeBSD AND (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/openssl_installed OR NOT ${openssl_installed} EQUAL 0))
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz)
+ file(DOWNLOAD
+ https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1w.tar.gz
+ ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/OpenSSL_1_1_1w.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ execute_process(
+ COMMAND ./config no-shared
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w
+ )
+ execute_process(
+ COMMAND make -j${MAKE_JOBS}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w
+ RESULT_VARIABLE openssl_installed
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/aes.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1_mac.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1err.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asn1t.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/async.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/asyncerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bio.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bioerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/blowfish.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bn.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/bnerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/buffer.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/buffererr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/camellia.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cast.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cmac.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cms.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cmserr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/comp.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/comperr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/conf.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/conf_api.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/conferr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/crypto.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cryptoerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ct.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/cterr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/des.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dh.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dherr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dsa.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dsaerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/dtls1.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/e_os2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ebcdic.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ec.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ecdh.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ecdsa.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ecerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/engine.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/engineerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/err.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/evp.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/evperr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/hmac.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/idea.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/kdf.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/kdferr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/lhash.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/md2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/md4.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/md5.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/mdc2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/modes.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/obj_mac.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/objects.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/objectserr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ocsp.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ocsperr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/opensslconf.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/opensslv.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ossl_typ.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pem.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pem2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pemerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs12.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs12err.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs7.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/pkcs7err.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rand.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rand_drbg.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/randerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rc2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rc4.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rc5.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ripemd.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rsa.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/rsaerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/safestack.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/seed.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/sha.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/srp.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/srtp.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ssl.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ssl2.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ssl3.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/sslerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/stack.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/store.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/storeerr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/symhacks.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/tls1.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ts.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/tserr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/txt_db.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/ui.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/uierr.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/whrlpool.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509_vfy.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509err.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509v3.h
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/include/openssl/x509v3err.h
+ DESTINATION ${LIBS_PREBUILT_DIR}/include/openssl
+ )
+ file(
+ COPY
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/libcrypto.a
+ ${CMAKE_BINARY_DIR}/openssl-OpenSSL_1_1_1w/libssl.a
+ DESTINATION ${LIBS_PREBUILT_DIR}/lib/release
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/openssl_installed "${openssl_installed}")
+endif (DARWIN OR LINUX OR NOT USESYSTEMLIBS)
+if (WINDOWS AND NOT USESYSTEMLIBS)
target_link_libraries(ll::openssl INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.lib ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.lib Crypt32.lib)
elseif (LINUX)
target_link_libraries(ll::openssl INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libssl.a ${ARCH_PREBUILT_DIRS_RELEASE}/libcrypto.a dl)
else()
target_link_libraries(ll::openssl INTERFACE ssl crypto)
-endif (WINDOWS)
+endif (WINDOWS AND NOT USESYSTEMLIBS)
+if (NOT (WINDOWS AND USESYSTEMLIBS))
target_include_directories( ll::openssl SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
+endif (NOT (WINDOWS AND USESYSTEMLIBS))
diff --git a/indra/cmake/Prebuilt.cmake b/indra/cmake/Prebuilt.cmake
index c040090ea3..6f8faf635a 100644
--- a/indra/cmake/Prebuilt.cmake
+++ b/indra/cmake/Prebuilt.cmake
@@ -41,6 +41,38 @@ macro (use_prebuilt_binary _binary)
${_binary} ")
endif(DEBUG_PREBUILT)
message(STATUS "Installing ${_binary}...")
+ if(USESYSTEMLIBS)
+ execute_process(COMMAND xmllint
+ --xpath
+ "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'common')]/text()" autobuild.xml
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/..
+ OUTPUT_VARIABLE package_url
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ if ("${package_url}" STREQUAL "")
+ string(TOLOWER ${CMAKE_SYSTEM_NAME} system_name)
+ if (${system_name} MATCHES freebsd)
+ set(system_name "linux")
+ endif (${system_name} MATCHES freebsd)
+ execute_process(COMMAND xmllint
+ --xpath
+ "//map/map/map/map/map/map/string[contains(text(),'${_binary}')][contains(text(),'${system_name}')]/text()" autobuild.xml
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/..
+ OUTPUT_VARIABLE package_url
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+ endif ("${package_url}" STREQUAL "")
+ string(REGEX REPLACE "^https?://(megapahit.net/downloads|github.com/secondlife|automated-builds-secondlife-com.s3.amazonaws.com/ct2).*/" "" package_name ${package_url})
+ file(DOWNLOAD
+ ${package_url}
+ ${CMAKE_BINARY_DIR}/${package_name}
+ )
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/${package_name}
+ DESTINATION ${AUTOBUILD_INSTALL_DIR}
+ )
+ set(${_binary}_installed 0)
+ else(USESYSTEMLIBS)
execute_process(COMMAND "${AUTOBUILD_EXECUTABLE}"
install
-A${ADDRESS_SIZE}
@@ -50,6 +82,7 @@ macro (use_prebuilt_binary _binary)
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE ${_binary}_installed
)
+ endif(USESYSTEMLIBS)
file(WRITE ${PREBUILD_TRACKING_DIR}/${_binary}_installed "${${_binary}_installed}")
endif(${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/${_binary}_installed OR NOT ${${_binary}_installed} EQUAL 0)
@@ -70,6 +103,33 @@ macro ( use_system_binary package )
endif()
endforeach()
return()
+ elseif( NOT USE_AUTOBUILD_3P )
+ include(FindPkgConfig)
+ pkg_check_modules(${package} ${package})
+ if( ${package}_FOUND )
+ target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} )
+ else()
+ pkg_check_modules(${package} lib${package})
+ if( ${package}_FOUND )
+ target_link_directories( ll::${package} INTERFACE ${${package}_LIBRARY_DIRS} )
+ else()
+ find_package( ${package} REQUIRED )
+ endif()
+ endif()
+ target_include_directories( ll::${package} SYSTEM INTERFACE ${${package}_INCLUDE_DIRS} )
+ target_link_libraries( ll::${package} INTERFACE ${${package}_LIBRARIES} )
+ return()
endif()
endmacro()
+find_package(Patch)
+
+# Download the third party software archive and patch it.
+macro(prepare_thirdparty url filename dirname patch hash)
+ file(DOWNLOAD ${url} ${filename} EXPECTED_HASH SHA512=${hash})
+ file(ARCHIVE_EXTRACT INPUT ${filename}
+ DESTINATION ${CMAKE_SOURCE_DIR}/../..)
+ execute_process(COMMAND ${Patch_EXECUTABLE} "-p1" "-i"
+ ${CMAKE_SOURCE_DIR}/../patches/${patch}
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../../${dirname})
+endmacro()
diff --git a/indra/cmake/SDL2.cmake b/indra/cmake/SDL2.cmake
index 87195ed108..2fa29241a3 100644
--- a/indra/cmake/SDL2.cmake
+++ b/indra/cmake/SDL2.cmake
@@ -7,6 +7,15 @@ include_guard()
add_library( ll::SDL2 INTERFACE IMPORTED )
+if (USESYSTEMLIBS AND NOT (WINDOWS OR DARWIN))
+ include(FindPkgConfig)
+ pkg_check_modules(Sdl2 REQUIRED sdl2)
+ target_include_directories(ll::SDL2 SYSTEM INTERFACE ${Sdl2_INCLUDE_DIRS})
+ target_link_directories(ll::SDL2 INTERFACE ${Sdl2_LIBRARY_DIRS})
+ target_link_libraries(ll::SDL2 INTERFACE ${Sdl2_LIBRARIES})
+ return ()
+endif (USESYSTEMLIBS AND NOT (WINDOWS OR DARWIN))
+
use_system_binary( SDL2 )
use_prebuilt_binary( SDL2 )
diff --git a/indra/cmake/UI.cmake b/indra/cmake/UI.cmake
index 595f394af4..f70c3b8ec6 100644
--- a/indra/cmake/UI.cmake
+++ b/indra/cmake/UI.cmake
@@ -5,7 +5,7 @@ include(GLIB)
add_library( ll::uilibraries INTERFACE IMPORTED )
-if (LINUX)
+if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
target_compile_definitions(ll::uilibraries INTERFACE LL_X11=1 )
if( USE_CONAN )
@@ -36,7 +36,7 @@ if (LINUX)
ll::gio
)
-endif (LINUX)
+endif (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
if( WINDOWS )
target_link_libraries( ll::uilibraries INTERFACE
opengl32
@@ -54,6 +54,8 @@ if( WINDOWS )
)
endif()
+if (NOT USESYSTEMLIBS)
target_include_directories( ll::uilibraries SYSTEM INTERFACE
${LIBS_PREBUILT_DIR}/include
)
+endif ()
diff --git a/indra/cmake/UnixInstall.cmake b/indra/cmake/UnixInstall.cmake
index 139be0a008..0751e1caa5 100644
--- a/indra/cmake/UnixInstall.cmake
+++ b/indra/cmake/UnixInstall.cmake
@@ -6,14 +6,21 @@ set(INSTALL OFF CACHE BOOL
"Generate install target.")
if (INSTALL)
+ if (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+ set(INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX} CACHE PATH
+ "Top-level installation directory.")
+ else (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
set(INSTALL_PREFIX /usr CACHE PATH
"Top-level installation directory.")
+ endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
- if (EXISTS /lib64)
+ if (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ set(_LIB lib/${ARCH}-linux-gnu)
+ elseif (EXISTS /lib64 AND NOT ${LINUX_DISTRO} MATCHES arch)
set(_LIB lib64)
- else (EXISTS /lib64)
+ else (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
set(_LIB lib)
- endif (EXISTS /lib64)
+ endif (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
set(INSTALL_LIBRARY_DIR ${INSTALL_PREFIX}/${_LIB} CACHE PATH
"Installation directory for read-only shared files.")
@@ -25,7 +32,10 @@ if (INSTALL)
CACHE PATH
"Installation directory for binaries.")
- set(APP_SHARE_DIR ${INSTALL_SHARE_DIR}/secondlife-${viewer_VERSION}
+ set(APP_SHARE_DIR ${INSTALL_SHARE_DIR}/${VIEWER_BINARY_NAME}
CACHE PATH
"Installation directory for read-only data files.")
+ set(APP_LIBEXEC_DIR ${INSTALL_PREFIX}/libexec/${VIEWER_BINARY_NAME}
+ CACHE PATH
+ "Installation directory for non-manual executables.")
endif (INSTALL)
diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake
index 5dfad25577..0b15328421 100644
--- a/indra/cmake/Variables.cmake
+++ b/indra/cmake/Variables.cmake
@@ -101,12 +101,15 @@ else (ADDRESS_SIZE EQUAL 32)
endif()
endif (ADDRESS_SIZE EQUAL 32)
+cmake_host_system_information(RESULT MAKE_JOBS QUERY NUMBER_OF_LOGICAL_CORES)
+
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(WINDOWS ON BOOL FORCE)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(LINUX ON BOOl FORCE)
+ cmake_host_system_information(RESULT LINUX_DISTRO QUERY DISTRIB_ID)
if (ADDRESS_SIZE EQUAL 32)
set(DEB_ARCHITECTURE i386)
@@ -202,7 +205,7 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "")
set(CMAKE_XCODE_ATTRIBUTE_DISABLE_MANUAL_TARGET_ORDER_BUILD_WARNING YES)
set(CMAKE_XCODE_ATTRIBUTE_GCC_WARN_64_TO_32_BIT_CONVERSION NO)
- set(CMAKE_OSX_ARCHITECTURES "${ARCH}")
+ #set(CMAKE_OSX_ARCHITECTURES "${ARCH}")
string(REPLACE "i686" "i386" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")
string(REPLACE "AMD64" "x86_64" CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}")
endif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
diff --git a/indra/cmake/ViewerMiscLibs.cmake b/indra/cmake/ViewerMiscLibs.cmake
index 2cb11994fc..13f5ebf862 100644
--- a/indra/cmake/ViewerMiscLibs.cmake
+++ b/indra/cmake/ViewerMiscLibs.cmake
@@ -1,19 +1,23 @@
# -*- cmake -*-
include(Prebuilt)
-if (LINUX)
+if (NOT (WINDOWS OR DARWIN))
add_library( ll::fontconfig INTERFACE IMPORTED )
find_package(Fontconfig REQUIRED)
target_link_libraries( ll::fontconfig INTERFACE Fontconfig::Fontconfig )
-endif (LINUX)
+endif (NOT (WINDOWS OR DARWIN))
-if( NOT USE_CONAN )
+if( USE_AUTOBUILD_3P )
use_prebuilt_binary(libhunspell)
endif()
+if (NOT USESYSTEMLIBS)
use_prebuilt_binary(slvoice)
+endif (NOT USESYSTEMLIBS)
+if ((${LINUX_DISTRO} MATCHES debian OR WINDOWS OR DARWIN) OR NOT USESYSTEMLIBS)
use_prebuilt_binary(nanosvg)
+endif ((${LINUX_DISTRO} MATCHES debian OR WINDOWS OR DARWIN) OR NOT USESYSTEMLIBS)
use_prebuilt_binary(viewer-fonts)
use_prebuilt_binary(emoji_shortcodes)
diff --git a/indra/cmake/VulkanGltf.cmake b/indra/cmake/VulkanGltf.cmake
index 94541d5307..d7083a33c9 100644
--- a/indra/cmake/VulkanGltf.cmake
+++ b/indra/cmake/VulkanGltf.cmake
@@ -1,5 +1,7 @@
# -*- cmake -*-
include(Prebuilt)
+if (NOT USESYSTEMLIBS)
use_prebuilt_binary(vulkan_gltf)
+endif ()
diff --git a/indra/cmake/WebRTC.cmake b/indra/cmake/WebRTC.cmake
index 230522a40a..3491a511f5 100644
--- a/indra/cmake/WebRTC.cmake
+++ b/indra/cmake/WebRTC.cmake
@@ -6,7 +6,76 @@ include_guard()
add_library( ll::webrtc INTERFACE IMPORTED )
target_include_directories( ll::webrtc SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/webrtc" "${LIBS_PREBUILT_DIR}/include/webrtc/third_party/abseil-cpp")
+if (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES arch) OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
use_prebuilt_binary(webrtc)
+elseif (NOT (WINDOWS OR CMAKE_SYSTEM_NAME MATCHES FreeBSD))
+ target_compile_definitions(ll::webrtc INTERFACE CM_WEBRTC=1)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0)
+ if (DARWIN)
+ set(WEBRTC_PLATFORM macos-arm64)
+ else (DARWIN)
+ set(WEBRTC_PLATFORM linux-x64)
+ endif (DARWIN)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz)
+ file(DOWNLOAD
+ https://github.com/crow-misia/libwebrtc-bin/releases/download/114.5735.6.1/libwebrtc-${WEBRTC_PLATFORM}.tar.xz
+ ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz
+ SHOW_PROGRESS
+ )
+ endif (NOT EXISTS ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz)
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/libwebrtc-${WEBRTC_PLATFORM}.tar.xz
+ DESTINATION ${LIBS_PREBUILT_DIR}
+ )
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/include/webrtc)
+ file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/webrtc)
+ foreach(directory
+ api
+ audio
+ base
+ build
+ buildtools
+ call
+ common_audio
+ common_video
+ examples
+ logging
+ media
+ modules
+ net
+ p2p
+ pc
+ rtc_base
+ rtc_tools
+ sdk
+ stats
+ system_wrappers
+ test
+ testing
+ third_party
+ tools
+ video
+ )
+ file(RENAME
+ ${LIBS_PREBUILT_DIR}/include/${directory}
+ ${LIBS_PREBUILT_DIR}/include/webrtc/${directory}
+ )
+ endforeach()
+ file(RENAME
+ ${LIBS_PREBUILT_DIR}/lib/libwebrtc.a
+ ${LIBS_PREBUILT_DIR}/lib/release/libwebrtc.a
+ )
+ if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework)
+ file(RENAME
+ ${LIBS_PREBUILT_DIR}/Frameworks/WebRTC.xcframework/${WEBRTC_PLATFORM}/WebRTC.framework
+ ${LIBS_PREBUILT_DIR}/lib/release/WebRTC.framework
+ )
+ file(REMOVE_RECURSE ${LIBS_PREBUILT_DIR}/Frameworks)
+ endif (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ file(WRITE ${PREBUILD_TRACKING_DIR}/webrtc_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/webrtc_installed OR NOT ${webrtc_installed} EQUAL 0)
+endif (${LINUX_DISTRO} MATCHES debian OR (${LINUX_DISTRO} MATCHES arch) OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
if (WINDOWS)
target_link_libraries( ll::webrtc INTERFACE webrtc.lib )
diff --git a/indra/cmake/ZLIBNG.cmake b/indra/cmake/ZLIBNG.cmake
index d7b920da26..5aa54b0152 100644
--- a/indra/cmake/ZLIBNG.cmake
+++ b/indra/cmake/ZLIBNG.cmake
@@ -8,6 +8,12 @@ add_library( ll::zlib-ng INTERFACE IMPORTED )
if(USE_CONAN )
target_link_libraries( ll::zlib-ng INTERFACE CONAN_PKG::zlib )
return()
+elseif(NOT USE_AUTOBUILD_3P)
+ pkg_check_modules(Zlib REQUIRED zlib)
+ target_include_directories( ll::zlib-ng SYSTEM INTERFACE ${Zlib_INCLUDE_DIRS})
+ target_link_directories( ll::zlib-ng INTERFACE ${Zlib_LIBRARY_DIRS} )
+ target_link_libraries( ll::zlib-ng INTERFACE ${Zlib_LIBRARIES})
+ return()
endif()
use_prebuilt_binary(zlib-ng)
diff --git a/indra/cmake/xxHash.cmake b/indra/cmake/xxHash.cmake
index a7c1cba62c..2dcab005ba 100644
--- a/indra/cmake/xxHash.cmake
+++ b/indra/cmake/xxHash.cmake
@@ -5,4 +5,11 @@ endif (XXHASH_CMAKE_INCLUDED)
set (XXHASH_CMAKE_INCLUDED TRUE)
include(Prebuilt)
+
+if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ include(FindPkgConfig)
+ pkg_check_modules(Xxhash REQUIRED libxxhash)
+ return ()
+endif ()
+
use_prebuilt_binary(xxhash)
diff --git a/indra/llappearance/CMakeLists.txt b/indra/llappearance/CMakeLists.txt
index c510d01e3a..7a156252fd 100644
--- a/indra/llappearance/CMakeLists.txt
+++ b/indra/llappearance/CMakeLists.txt
@@ -84,3 +84,5 @@ if (BUILD_HEADLESS)
llcommon
)
endif (BUILD_HEADLESS)
+
+include(LibraryInstall)
diff --git a/indra/llappearance/lltexlayer.cpp b/indra/llappearance/lltexlayer.cpp
index aa48a2d621..e368ace35e 100644
--- a/indra/llappearance/lltexlayer.cpp
+++ b/indra/llappearance/lltexlayer.cpp
@@ -1443,7 +1443,9 @@ void LLTexLayer::renderMorphMasks(S32 x, S32 y, S32 width, S32 height, const LLC
gGL.getTexUnit(0)->bindManual(LLTexUnit::TT_TEXTURE, 0);
}
+#if GL_VERSION_1_1
glGetTexImage(LLTexUnit::getInternalType(LLTexUnit::TT_TEXTURE), 0, GL_RGBA, GL_UNSIGNED_BYTE, temp);
+#endif
U8* alpha_cursor = alpha_data;
U8* pixel = temp;
diff --git a/indra/llaudio/CMakeLists.txt b/indra/llaudio/CMakeLists.txt
index 9278d3c488..f36da83c69 100644
--- a/indra/llaudio/CMakeLists.txt
+++ b/indra/llaudio/CMakeLists.txt
@@ -4,6 +4,7 @@ project(llaudio)
include(00-Common)
include(LLAudio)
+include(FMODSTUDIO)
include(OPENAL)
include(LLCommon)
@@ -24,6 +25,20 @@ set(llaudio_HEADER_FILES
llwindgen.h
)
+if (TARGET ll::fmodstudio)
+ list(APPEND llaudio_SOURCE_FILES
+ llaudioengine_fmodstudio.cpp
+ lllistener_fmodstudio.cpp
+ llstreamingaudio_fmodstudio.cpp
+ )
+
+ list(APPEND llaudio_HEADER_FILES
+ llaudioengine_fmodstudio.h
+ lllistener_fmodstudio.h
+ llstreamingaudio_fmodstudio.h
+ )
+endif ()
+
if (TARGET ll::openal)
list(APPEND llaudio_SOURCE_FILES
llaudioengine_openal.cpp
@@ -54,3 +69,5 @@ endif()
if( TARGET ll::fmodstudio )
target_link_libraries( llaudio ll::fmodstudio )
endif()
+
+include(LibraryInstall)
diff --git a/indra/llaudio/llaudioengine_fmodstudio.cpp b/indra/llaudio/llaudioengine_fmodstudio.cpp
new file mode 100644
index 0000000000..b4e8407083
--- /dev/null
+++ b/indra/llaudio/llaudioengine_fmodstudio.cpp
@@ -0,0 +1,756 @@
+/**
+ * @file audioengine_fmodstudio.cpp
+ * @brief Implementation of LLAudioEngine class abstracting the audio
+ * support as a FMODSTUDIO implementation
+ *
+ * $LicenseInfo:firstyear=2020&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2020, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "llstreamingaudio.h"
+#include "llstreamingaudio_fmodstudio.h"
+
+#include "llaudioengine_fmodstudio.h"
+#include "lllistener_fmodstudio.h"
+
+#include "llerror.h"
+#include "llmath.h"
+#include "llrand.h"
+
+#include "fmodstudio/fmod.hpp"
+#include "fmodstudio/fmod_errors.h"
+#include "lldir.h"
+#include "llapr.h"
+
+#include "sound_ids.h"
+
+FMOD_RESULT F_CALLBACK windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels);
+
+FMOD::ChannelGroup *LLAudioEngine_FMODSTUDIO::mChannelGroups[LLAudioEngine::AUDIO_TYPE_COUNT] = {0};
+
+LLAudioEngine_FMODSTUDIO::LLAudioEngine_FMODSTUDIO(bool enable_profiler)
+: mInited(false),
+ mWindGen(NULL),
+ mWindDSP(NULL),
+ mSystem(NULL),
+ mEnableProfiler(enable_profiler),
+ mWindDSPDesc(NULL)
+{
+}
+
+
+LLAudioEngine_FMODSTUDIO::~LLAudioEngine_FMODSTUDIO()
+{
+ // mWindDSPDesc, mWindGen and mWindDSP get cleaned up on cleanupWind in LLAudioEngine::shutdown()
+ // mSystem gets cleaned up at shutdown()
+}
+
+
+static inline bool Check_FMOD_Error(FMOD_RESULT result, const char *string)
+{
+ if (result == FMOD_OK)
+ return false;
+ LL_DEBUGS("FMOD") << string << " Error: " << FMOD_ErrorString(result) << LL_ENDL;
+ return true;
+}
+
+bool LLAudioEngine_FMODSTUDIO::init(void* userdata, const std::string &app_title)
+{
+ U32 version;
+ FMOD_RESULT result;
+
+ LL_DEBUGS("AppInit") << "LLAudioEngine_FMODSTUDIO::init() initializing FMOD" << LL_ENDL;
+
+ result = FMOD::System_Create(&mSystem);
+ if (Check_FMOD_Error(result, "FMOD::System_Create"))
+ return false;
+
+ //will call LLAudioEngine_FMODSTUDIO::allocateListener, which needs a valid mSystem pointer.
+ LLAudioEngine::init(userdata, app_title);
+
+ result = mSystem->getVersion(&version);
+ Check_FMOD_Error(result, "FMOD::System::getVersion");
+
+ if (version < FMOD_VERSION)
+ {
+ LL_WARNS("AppInit") << "FMOD Studio version mismatch, actual: " << version
+ << " expected:" << FMOD_VERSION << LL_ENDL;
+ }
+
+ // In this case, all sounds, PLUS wind and stream will be software.
+ result = mSystem->setSoftwareChannels(LL_MAX_AUDIO_CHANNELS + 2);
+ Check_FMOD_Error(result, "FMOD::System::setSoftwareChannels");
+
+ FMOD_ADVANCEDSETTINGS settings;
+ memset(&settings, 0, sizeof(settings));
+ settings.cbSize = sizeof(FMOD_ADVANCEDSETTINGS);
+ settings.resamplerMethod = FMOD_DSP_RESAMPLER_LINEAR;
+
+ result = mSystem->setAdvancedSettings(&settings);
+ Check_FMOD_Error(result, "FMOD::System::setAdvancedSettings");
+
+ // FMOD_INIT_THREAD_UNSAFE Disables thread safety for API calls.
+ // Only use this if FMOD is being called from a single thread, and if Studio API is not being used.
+ U32 fmod_flags = FMOD_INIT_NORMAL | FMOD_INIT_3D_RIGHTHANDED | FMOD_INIT_THREAD_UNSAFE;
+ if (mEnableProfiler)
+ {
+ fmod_flags |= FMOD_INIT_PROFILE_ENABLE;
+ }
+
+#if LL_LINUX
+ bool audio_ok = false;
+
+ if (!audio_ok)
+ {
+ const char* env_string = getenv("LL_BAD_FMOD_PULSEAUDIO");
+ if (NULL == env_string)
+ {
+ LL_DEBUGS("AppInit") << "Trying PulseAudio audio output..." << LL_ENDL;
+ if (mSystem->setOutput(FMOD_OUTPUTTYPE_PULSEAUDIO) == FMOD_OK &&
+ (result = mSystem->init(LL_MAX_AUDIO_CHANNELS + 2, fmod_flags, const_cast<char*>(app_title.c_str()))) == FMOD_OK)
+ {
+ LL_DEBUGS("AppInit") << "PulseAudio output initialized OKAY" << LL_ENDL;
+ audio_ok = true;
+ }
+ else
+ {
+ Check_FMOD_Error(result, "PulseAudio audio output FAILED to initialize");
+ }
+ }
+ else
+ {
+ LL_DEBUGS("AppInit") << "PulseAudio audio output SKIPPED" << LL_ENDL;
+ }
+ }
+ if (!audio_ok)
+ {
+ const char* env_string = getenv("LL_BAD_FMOD_ALSA");
+ if (NULL == env_string)
+ {
+ LL_DEBUGS("AppInit") << "Trying ALSA audio output..." << LL_ENDL;
+ if (mSystem->setOutput(FMOD_OUTPUTTYPE_ALSA) == FMOD_OK &&
+ (result = mSystem->init(LL_MAX_AUDIO_CHANNELS + 2, fmod_flags, 0)) == FMOD_OK)
+ {
+ LL_DEBUGS("AppInit") << "ALSA audio output initialized OKAY" << LL_ENDL;
+ audio_ok = true;
+ }
+ else
+ {
+ Check_FMOD_Error(result, "ALSA audio output FAILED to initialize");
+ }
+ }
+ else
+ {
+ LL_DEBUGS("AppInit") << "ALSA audio output SKIPPED" << LL_ENDL;
+ }
+ }
+ if (!audio_ok)
+ {
+ LL_WARNS("AppInit") << "Overall audio init failure." << LL_ENDL;
+ return false;
+ }
+
+ // We're interested in logging which output method we
+ // ended up with, for QA purposes.
+ FMOD_OUTPUTTYPE output_type;
+ mSystem->getOutput(&output_type);
+ switch (output_type)
+ {
+ case FMOD_OUTPUTTYPE_NOSOUND:
+ LL_INFOS("AppInit") << "Audio output: NoSound" << LL_ENDL; break;
+ case FMOD_OUTPUTTYPE_PULSEAUDIO:
+ LL_INFOS("AppInit") << "Audio output: PulseAudio" << LL_ENDL; break;
+ case FMOD_OUTPUTTYPE_ALSA:
+ LL_INFOS("AppInit") << "Audio output: ALSA" << LL_ENDL; break;
+ default:
+ LL_INFOS("AppInit") << "Audio output: Unknown!" << LL_ENDL; break;
+ };
+#else // LL_LINUX
+
+ // initialize the FMOD engine
+ // number of channel in this case looks to be identiacal to number of max simultaneously
+ // playing objects and we can set practically any number
+ result = mSystem->init(LL_MAX_AUDIO_CHANNELS + 2, fmod_flags, 0);
+ if (Check_FMOD_Error(result, "Error initializing FMOD Studio with default settins, retrying with other format"))
+ {
+ result = mSystem->setSoftwareFormat(44100, FMOD_SPEAKERMODE_STEREO, 0/*- ignore*/);
+ if (Check_FMOD_Error(result, "Error setting sotware format. Can't init."))
+ {
+ return false;
+ }
+ result = mSystem->init(LL_MAX_AUDIO_CHANNELS + 2, fmod_flags, 0);
+ }
+ if (Check_FMOD_Error(result, "Error initializing FMOD Studio"))
+ {
+ // If it fails here and (result == FMOD_ERR_OUTPUT_CREATEBUFFER),
+ // we can retry with other settings
+ return false;
+ }
+#endif
+
+ LL_INFOS("AppInit") << "LLAudioEngine_FMODSTUDIO::init() FMOD Studio initialized correctly" << LL_ENDL;
+
+ int r_numbuffers, r_samplerate, r_channels;
+ unsigned int r_bufferlength;
+ char r_name[512];
+ int latency = 100;
+ mSystem->getDSPBufferSize(&r_bufferlength, &r_numbuffers);
+ LL_INFOS("AppInit") << "LLAudioEngine_FMODSTUDIO::init(): r_bufferlength=" << r_bufferlength << " bytes" << LL_ENDL;
+ LL_INFOS("AppInit") << "LLAudioEngine_FMODSTUDIO::init(): r_numbuffers=" << r_numbuffers << LL_ENDL;
+
+ mSystem->getDriverInfo(0, r_name, 511, NULL, &r_samplerate, NULL, &r_channels);
+ r_name[511] = '\0';
+ LL_INFOS("AppInit") << "LLAudioEngine_FMODSTUDIO::init(): r_name=\"" << r_name << "\"" << LL_ENDL;
+
+ if (r_samplerate != 0)
+ latency = (int)(1000.0f * r_bufferlength * r_numbuffers / r_samplerate);
+ LL_INFOS("AppInit") << "LLAudioEngine_FMODSTUDIO::init(): latency=" << latency << "ms" << LL_ENDL;
+
+ mInited = true;
+
+ LL_INFOS("AppInit") << "LLAudioEngine_FMODSTUDIO::init(): initialization complete." << LL_ENDL;
+
+ return true;
+}
+
+
+std::string LLAudioEngine_FMODSTUDIO::getDriverName(bool verbose)
+{
+ llassert_always(mSystem);
+ if (verbose)
+ {
+ U32 version;
+ if (!Check_FMOD_Error(mSystem->getVersion(&version), "FMOD::System::getVersion"))
+ {
+ return llformat("FMOD Studio %1x.%02x.%02x (Firelight Technologies Pty Ltd)", version >> 16, version >> 8 & 0x000000FF, version & 0x000000FF);
+ }
+ }
+ return "FMOD STUDIO";
+}
+
+
+// create our favourite FMOD-native streaming audio implementation
+LLStreamingAudioInterface *LLAudioEngine_FMODSTUDIO::createDefaultStreamingAudioImpl() const
+{
+ return new LLStreamingAudio_FMODSTUDIO(mSystem);
+}
+
+
+void LLAudioEngine_FMODSTUDIO::allocateListener(void)
+{
+ mListenerp = (LLListener *) new LLListener_FMODSTUDIO(mSystem);
+ if (!mListenerp)
+ {
+ LL_WARNS("FMOD") << "Listener creation failed" << LL_ENDL;
+ }
+}
+
+
+void LLAudioEngine_FMODSTUDIO::shutdown()
+{
+ stopInternetStream();
+
+ LL_INFOS("FMOD") << "About to LLAudioEngine::shutdown()" << LL_ENDL;
+ LLAudioEngine::shutdown();
+
+ LL_INFOS("FMOD") << "LLAudioEngine_FMODSTUDIO::shutdown() closing FMOD Studio" << LL_ENDL;
+ if (mSystem)
+ {
+ mSystem->close();
+ mSystem->release();
+ }
+ LL_INFOS("FMOD") << "LLAudioEngine_FMODSTUDIO::shutdown() done closing FMOD Studio" << LL_ENDL;
+
+ delete mListenerp;
+ mListenerp = NULL;
+}
+
+
+LLAudioBuffer * LLAudioEngine_FMODSTUDIO::createBuffer()
+{
+ return new LLAudioBufferFMODSTUDIO(mSystem);
+}
+
+
+LLAudioChannel * LLAudioEngine_FMODSTUDIO::createChannel()
+{
+ return new LLAudioChannelFMODSTUDIO(mSystem);
+}
+
+bool LLAudioEngine_FMODSTUDIO::initWind()
+{
+ mNextWindUpdate = 0.0;
+
+ if (!mWindDSPDesc)
+ {
+ mWindDSPDesc = new FMOD_DSP_DESCRIPTION();
+ }
+
+ if (!mWindDSP)
+ {
+ memset(mWindDSPDesc, 0, sizeof(*mWindDSPDesc)); //Set everything to zero
+ strncpy(mWindDSPDesc->name, "Wind Unit", sizeof(mWindDSPDesc->name));
+ mWindDSPDesc->pluginsdkversion = FMOD_PLUGIN_SDK_VERSION;
+ mWindDSPDesc->read = &windCallback; // Assign callback - may be called from arbitrary threads
+ if (Check_FMOD_Error(mSystem->createDSP(mWindDSPDesc, &mWindDSP), "FMOD::createDSP"))
+ return false;
+
+ if (mWindGen)
+ delete mWindGen;
+
+ int frequency = 44100;
+
+ FMOD_SPEAKERMODE mode;
+ if (Check_FMOD_Error(mSystem->getSoftwareFormat(&frequency, &mode, nullptr), "FMOD::System::getSoftwareFormat"))
+ {
+ cleanupWind();
+ return false;
+ }
+
+ mWindGen = new LLWindGen<MIXBUFFERFORMAT>((U32)frequency);
+
+ if (Check_FMOD_Error(mWindDSP->setUserData((void*)mWindGen), "FMOD::DSP::setUserData"))
+ {
+ cleanupWind();
+ return false;
+ }
+ if (Check_FMOD_Error(mWindDSP->setChannelFormat(FMOD_CHANNELMASK_STEREO, 2, mode), "FMOD::DSP::setChannelFormat"))
+ {
+ cleanupWind();
+ return false;
+ }
+ }
+
+ // *TODO: Should this guard against multiple plays?
+ if (Check_FMOD_Error(mSystem->playDSP(mWindDSP, nullptr, false, nullptr), "FMOD::System::playDSP"))
+ {
+ cleanupWind();
+ return false;
+ }
+ return true;
+}
+
+
+void LLAudioEngine_FMODSTUDIO::cleanupWind()
+{
+ if (mWindDSP)
+ {
+ FMOD::ChannelGroup* master_group = NULL;
+ if (!Check_FMOD_Error(mSystem->getMasterChannelGroup(&master_group), "FMOD::System::getMasterChannelGroup")
+ && master_group)
+ {
+ master_group->removeDSP(mWindDSP);
+ }
+ mWindDSP->release();
+ mWindDSP = NULL;
+ }
+
+ delete mWindDSPDesc;
+ mWindDSPDesc = NULL;
+
+ delete mWindGen;
+ mWindGen = NULL;
+}
+
+
+//-----------------------------------------------------------------------
+void LLAudioEngine_FMODSTUDIO::updateWind(LLVector3 wind_vec, F32 camera_height_above_water)
+{
+ LLVector3 wind_pos;
+ F64 pitch;
+ F64 center_freq;
+
+ if (!mEnableWind)
+ {
+ return;
+ }
+
+ if (mWindUpdateTimer.checkExpirationAndReset(LL_WIND_UPDATE_INTERVAL))
+ {
+
+ // wind comes in as Linden coordinate (+X = forward, +Y = left, +Z = up)
+ // need to convert this to the conventional orientation DS3D and OpenAL use
+ // where +X = right, +Y = up, +Z = backwards
+
+ wind_vec.setVec(-wind_vec.mV[1], wind_vec.mV[2], -wind_vec.mV[0]);
+
+ // cerr << "Wind update" << endl;
+
+ pitch = 1.0 + mapWindVecToPitch(wind_vec);
+ center_freq = 80.0 * pow(pitch, 2.5*(mapWindVecToGain(wind_vec) + 1.0));
+
+ mWindGen->mTargetFreq = (F32)center_freq;
+ mWindGen->mTargetGain = (F32)mapWindVecToGain(wind_vec) * mMaxWindGain;
+ mWindGen->mTargetPanGainR = (F32)mapWindVecToPan(wind_vec);
+ }
+}
+
+//-----------------------------------------------------------------------
+void LLAudioEngine_FMODSTUDIO::setInternalGain(F32 gain)
+{
+ if (!mInited)
+ {
+ return;
+ }
+
+ gain = llclamp(gain, 0.0f, 1.0f);
+
+ FMOD::ChannelGroup* master_group = NULL;
+ if (!Check_FMOD_Error(mSystem->getMasterChannelGroup(&master_group), "FMOD::System::getMasterChannelGroup")
+ && master_group)
+ {
+ master_group->setVolume(gain);
+ }
+
+ LLStreamingAudioInterface *saimpl = getStreamingAudioImpl();
+ if (saimpl)
+ {
+ // fmod likes its streaming audio channel gain re-asserted after
+ // master volume change.
+ saimpl->setGain(saimpl->getGain());
+ }
+}
+
+//
+// LLAudioChannelFMODSTUDIO implementation
+//
+
+LLAudioChannelFMODSTUDIO::LLAudioChannelFMODSTUDIO(FMOD::System *system) : LLAudioChannel(), mSystemp(system), mChannelp(NULL), mLastSamplePos(0)
+{
+}
+
+
+LLAudioChannelFMODSTUDIO::~LLAudioChannelFMODSTUDIO()
+{
+ cleanup();
+}
+
+bool LLAudioChannelFMODSTUDIO::updateBuffer()
+{
+ if (!mCurrentSourcep)
+ {
+ // This channel isn't associated with any source, nothing
+ // to be updated
+ return false;
+ }
+
+ if (LLAudioChannel::updateBuffer())
+ {
+ // Base class update returned true, which means that we need to actually
+ // set up the channel for a different buffer.
+
+ LLAudioBufferFMODSTUDIO *bufferp = (LLAudioBufferFMODSTUDIO *)mCurrentSourcep->getCurrentBuffer();
+
+ // Grab the FMOD sample associated with the buffer
+ FMOD::Sound *soundp = bufferp->getSound();
+ if (!soundp)
+ {
+ // This is bad, there should ALWAYS be a sound associated with a legit
+ // buffer.
+ LL_ERRS() << "No FMOD sound!" << LL_ENDL;
+ return false;
+ }
+
+
+ // Actually play the sound. Start it off paused so we can do all the necessary
+ // setup.
+ if (!mChannelp)
+ {
+ FMOD_RESULT result = getSystem()->playSound(soundp, NULL /*free channel?*/, true, &mChannelp);
+ Check_FMOD_Error(result, "FMOD::System::playSound");
+ }
+
+ // Setting up channel mChannelID
+ }
+
+ // If we have a source for the channel, we need to update its gain.
+ if (mCurrentSourcep)
+ {
+ // SJB: warnings can spam and hurt framerate, disabling
+ //FMOD_RESULT result;
+
+ mChannelp->setVolume(getSecondaryGain() * mCurrentSourcep->getGain());
+ //Check_FMOD_Error(result, "FMOD::Channel::setVolume");
+
+ mChannelp->setMode(mCurrentSourcep->isLoop() ? FMOD_LOOP_NORMAL : FMOD_LOOP_OFF);
+ /*if(Check_FMOD_Error(result, "FMOD::Channel::setMode"))
+ {
+ S32 index;
+ mChannelp->getIndex(&index);
+ LL_WARNS() << "Channel " << index << "Source ID: " << mCurrentSourcep->getID()
+ << " at " << mCurrentSourcep->getPositionGlobal() << LL_ENDL;
+ }*/
+ }
+
+ return true;
+}
+
+
+void LLAudioChannelFMODSTUDIO::update3DPosition()
+{
+ if (!mChannelp)
+ {
+ // We're not actually a live channel (i.e., we're not playing back anything)
+ return;
+ }
+
+ LLAudioBufferFMODSTUDIO *bufferp = (LLAudioBufferFMODSTUDIO *)mCurrentBufferp;
+ if (!bufferp)
+ {
+ // We don't have a buffer associated with us (should really have been picked up
+ // by the above if.
+ return;
+ }
+
+ if (mCurrentSourcep->isForcedPriority())
+ {
+ // Prioritized UI and preview sounds don't need to do any positional updates.
+ set3DMode(false);
+ }
+ else
+ {
+ // Localized sound. Update the position and velocity of the sound.
+ set3DMode(true);
+
+ LLVector3 float_pos;
+ float_pos.setVec(mCurrentSourcep->getPositionGlobal());
+ FMOD_RESULT result = mChannelp->set3DAttributes((FMOD_VECTOR*)float_pos.mV, (FMOD_VECTOR*)mCurrentSourcep->getVelocity().mV);
+ Check_FMOD_Error(result, "FMOD::Channel::set3DAttributes");
+ }
+}
+
+
+void LLAudioChannelFMODSTUDIO::updateLoop()
+{
+ if (!mChannelp)
+ {
+ // May want to clear up the loop/sample counters.
+ return;
+ }
+
+ //
+ // Hack: We keep track of whether we looped or not by seeing when the
+ // sample position looks like it's going backwards. Not reliable; may
+ // yield false negatives.
+ //
+ U32 cur_pos;
+ mChannelp->getPosition(&cur_pos, FMOD_TIMEUNIT_PCMBYTES);
+
+ if (cur_pos < (U32)mLastSamplePos)
+ {
+ mLoopedThisFrame = true;
+ }
+ mLastSamplePos = cur_pos;
+}
+
+
+void LLAudioChannelFMODSTUDIO::cleanup()
+{
+ if (!mChannelp)
+ {
+ // Aborting cleanup with no channel handle.
+ return;
+ }
+
+ //Cleaning up channel mChannelID
+ Check_FMOD_Error(mChannelp->stop(), "FMOD::Channel::stop");
+
+ mCurrentBufferp = NULL;
+ mChannelp = NULL;
+}
+
+
+void LLAudioChannelFMODSTUDIO::play()
+{
+ if (!mChannelp)
+ {
+ LL_WARNS() << "Playing without a channel handle, aborting" << LL_ENDL;
+ return;
+ }
+
+ Check_FMOD_Error(mChannelp->setPaused(false), "FMOD::Channel::pause");
+
+ getSource()->setPlayedOnce(true);
+
+ if (LLAudioEngine_FMODSTUDIO::mChannelGroups[getSource()->getType()])
+ mChannelp->setChannelGroup(LLAudioEngine_FMODSTUDIO::mChannelGroups[getSource()->getType()]);
+}
+
+
+void LLAudioChannelFMODSTUDIO::playSynced(LLAudioChannel *channelp)
+{
+ LLAudioChannelFMODSTUDIO *fmod_channelp = (LLAudioChannelFMODSTUDIO*)channelp;
+ if (!(fmod_channelp->mChannelp && mChannelp))
+ {
+ // Don't have channels allocated to both the master and the slave
+ return;
+ }
+
+ U32 cur_pos;
+ if (Check_FMOD_Error(mChannelp->getPosition(&cur_pos, FMOD_TIMEUNIT_PCMBYTES), "Unable to retrieve current position"))
+ return;
+
+ cur_pos %= mCurrentBufferp->getLength();
+
+ // Try to match the position of our sync master
+ Check_FMOD_Error(mChannelp->setPosition(cur_pos, FMOD_TIMEUNIT_PCMBYTES), "Unable to set current position");
+
+ // Start us playing
+ play();
+}
+
+
+bool LLAudioChannelFMODSTUDIO::isPlaying()
+{
+ if (!mChannelp)
+ {
+ return false;
+ }
+
+ bool paused, playing;
+ mChannelp->getPaused(&paused);
+ mChannelp->isPlaying(&playing);
+ return !paused && playing;
+}
+
+
+//
+// LLAudioChannelFMODSTUDIO implementation
+//
+
+
+LLAudioBufferFMODSTUDIO::LLAudioBufferFMODSTUDIO(FMOD::System *system) : mSystemp(system), mSoundp(NULL)
+{
+}
+
+
+LLAudioBufferFMODSTUDIO::~LLAudioBufferFMODSTUDIO()
+{
+ if (mSoundp)
+ {
+ mSoundp->release();
+ mSoundp = NULL;
+ }
+}
+
+
+bool LLAudioBufferFMODSTUDIO::loadWAV(const std::string& filename)
+{
+ // Try to open a wav file from disk. This will eventually go away, as we don't
+ // really want to block doing this.
+ if (filename.empty())
+ {
+ // invalid filename, abort.
+ return false;
+ }
+
+ if (!gDirUtilp->fileExists(filename))
+ {
+ // File not found, abort.
+ return false;
+ }
+
+ if (mSoundp)
+ {
+ // If there's already something loaded in this buffer, clean it up.
+ mSoundp->release();
+ mSoundp = NULL;
+ }
+
+ FMOD_MODE base_mode = FMOD_LOOP_NORMAL;
+ FMOD_CREATESOUNDEXINFO exinfo;
+ memset(&exinfo, 0, sizeof(exinfo));
+ exinfo.cbsize = sizeof(exinfo);
+ exinfo.suggestedsoundtype = FMOD_SOUND_TYPE_WAV; //Hint to speed up loading.
+ // Load up the wav file into an fmod sample (since 1.05 fmod studio expects everything in UTF-8)
+ FMOD_RESULT result = getSystem()->createSound(filename.c_str(), base_mode, &exinfo, &mSoundp);
+
+ if (result != FMOD_OK)
+ {
+ // We failed to load the file for some reason.
+ LL_WARNS() << "Could not load data '" << filename << "': " << FMOD_ErrorString(result) << LL_ENDL;
+
+ //
+ // If we EVER want to load wav files provided by end users, we need
+ // to rethink this!
+ //
+ // file is probably corrupt - remove it.
+ LLFile::remove(filename);
+ return false;
+ }
+
+ // Everything went well, return true
+ return true;
+}
+
+
+U32 LLAudioBufferFMODSTUDIO::getLength()
+{
+ if (!mSoundp)
+ {
+ return 0;
+ }
+
+ U32 length;
+ mSoundp->getLength(&length, FMOD_TIMEUNIT_PCMBYTES);
+ return length;
+}
+
+
+void LLAudioChannelFMODSTUDIO::set3DMode(bool use3d)
+{
+ FMOD_MODE current_mode;
+ if (mChannelp->getMode(&current_mode) != FMOD_OK)
+ return;
+ FMOD_MODE new_mode = current_mode;
+ new_mode &= ~(use3d ? FMOD_2D : FMOD_3D);
+ new_mode |= use3d ? FMOD_3D : FMOD_2D;
+
+ if (current_mode != new_mode)
+ {
+ mChannelp->setMode(new_mode);
+ }
+}
+
+// *NOTE: This is almost certainly being called on the mixer thread,
+// not the main thread. May have implications for callees or audio
+// engine shutdown.
+
+FMOD_RESULT F_CALLBACK windCallback(FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int *outchannels)
+{
+ // inbuffer = fmod's original mixbuffer.
+ // outbuffer = the buffer passed from the previous DSP unit.
+ // length = length in samples at this mix time.
+
+ LLWindGen<LLAudioEngine_FMODSTUDIO::MIXBUFFERFORMAT> *windgen = NULL;
+ FMOD::DSP *thisdsp = (FMOD::DSP *)dsp_state->instance;
+
+ thisdsp->getUserData((void **)&windgen);
+
+ if (windgen)
+ {
+ windgen->windGenerate((LLAudioEngine_FMODSTUDIO::MIXBUFFERFORMAT *)outbuffer, length);
+ }
+
+ return FMOD_OK;
+}
diff --git a/indra/llaudio/llaudioengine_fmodstudio.h b/indra/llaudio/llaudioengine_fmodstudio.h
new file mode 100644
index 0000000000..eb346e0466
--- /dev/null
+++ b/indra/llaudio/llaudioengine_fmodstudio.h
@@ -0,0 +1,131 @@
+/**
+ * @file audioengine_fmodstudio.h
+ * @brief Definition of LLAudioEngine class abstracting the audio
+ * support as a FMODSTUDIO implementation
+ *
+ * $LicenseInfo:firstyear=2020&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2020, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_AUDIOENGINE_FMODSTUDIO_H
+#define LL_AUDIOENGINE_FMODSTUDIO_H
+
+#include "llaudioengine.h"
+#include "llwindgen.h"
+
+//Stubs
+class LLAudioStreamManagerFMODSTUDIO;
+namespace FMOD
+{
+ class System;
+ class Channel;
+ class ChannelGroup;
+ class Sound;
+ class DSP;
+}
+typedef struct FMOD_DSP_DESCRIPTION FMOD_DSP_DESCRIPTION;
+
+//Interfaces
+class LLAudioEngine_FMODSTUDIO : public LLAudioEngine
+{
+public:
+ LLAudioEngine_FMODSTUDIO(bool enable_profiler);
+ virtual ~LLAudioEngine_FMODSTUDIO();
+
+ // initialization/startup/shutdown
+ virtual bool init(void *user_data, const std::string &app_title);
+ virtual std::string getDriverName(bool verbose);
+ virtual LLStreamingAudioInterface* createDefaultStreamingAudioImpl() const;
+ virtual void allocateListener();
+
+ virtual void shutdown();
+
+ /*virtual*/ bool initWind();
+ /*virtual*/ void cleanupWind();
+
+ /*virtual*/void updateWind(LLVector3 direction, F32 camera_height_above_water);
+
+ typedef F32 MIXBUFFERFORMAT;
+
+ FMOD::System *getSystem() const {return mSystem;}
+protected:
+ /*virtual*/ LLAudioBuffer *createBuffer(); // Get a free buffer, or flush an existing one if you have to.
+ /*virtual*/ LLAudioChannel *createChannel(); // Create a new audio channel.
+
+ /*virtual*/ void setInternalGain(F32 gain);
+
+ bool mInited;
+
+ LLWindGen<MIXBUFFERFORMAT> *mWindGen;
+
+ FMOD_DSP_DESCRIPTION *mWindDSPDesc;
+ FMOD::DSP *mWindDSP;
+ FMOD::System *mSystem;
+ bool mEnableProfiler;
+
+public:
+ static FMOD::ChannelGroup *mChannelGroups[LLAudioEngine::AUDIO_TYPE_COUNT];
+};
+
+
+class LLAudioChannelFMODSTUDIO : public LLAudioChannel
+{
+public:
+ LLAudioChannelFMODSTUDIO(FMOD::System *audioengine);
+ virtual ~LLAudioChannelFMODSTUDIO();
+
+protected:
+ /*virtual*/ void play();
+ /*virtual*/ void playSynced(LLAudioChannel *channelp);
+ /*virtual*/ void cleanup();
+ /*virtual*/ bool isPlaying();
+
+ /*virtual*/ bool updateBuffer();
+ /*virtual*/ void update3DPosition();
+ /*virtual*/ void updateLoop();
+
+ void set3DMode(bool use3d);
+protected:
+ FMOD::System *getSystem() const {return mSystemp;}
+ FMOD::System *mSystemp;
+ FMOD::Channel *mChannelp;
+ S32 mLastSamplePos;
+};
+
+
+class LLAudioBufferFMODSTUDIO : public LLAudioBuffer
+{
+public:
+ LLAudioBufferFMODSTUDIO(FMOD::System *audioengine);
+ virtual ~LLAudioBufferFMODSTUDIO();
+
+ /*virtual*/ bool loadWAV(const std::string& filename);
+ /*virtual*/ U32 getLength();
+ friend class LLAudioChannelFMODSTUDIO;
+protected:
+ FMOD::System *getSystem() const {return mSystemp;}
+ FMOD::System *mSystemp;
+ FMOD::Sound *getSound() const{ return mSoundp; }
+ FMOD::Sound *mSoundp;
+};
+
+
+#endif // LL_AUDIOENGINE_FMODSTUDIO_H
diff --git a/indra/llaudio/lllistener_fmodstudio.cpp b/indra/llaudio/lllistener_fmodstudio.cpp
new file mode 100644
index 0000000000..9dc55eec79
--- /dev/null
+++ b/indra/llaudio/lllistener_fmodstudio.cpp
@@ -0,0 +1,136 @@
+/**
+ * @file listener_fmodstudio.cpp
+ * @brief Implementation of LISTENER class abstracting the audio
+ * support as a FMODSTUDIO implementation
+ *
+ * $LicenseInfo:firstyear=2020&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2020, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+#include "llaudioengine.h"
+#include "lllistener_fmodstudio.h"
+#include "fmodstudio/fmod.hpp"
+
+//-----------------------------------------------------------------------
+// constructor
+//-----------------------------------------------------------------------
+LLListener_FMODSTUDIO::LLListener_FMODSTUDIO(FMOD::System *system)
+{
+ mSystem = system;
+ init();
+}
+
+//-----------------------------------------------------------------------
+LLListener_FMODSTUDIO::~LLListener_FMODSTUDIO()
+{
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODSTUDIO::init(void)
+{
+ // do inherited
+ LLListener::init();
+ mDopplerFactor = 1.0f;
+ mRolloffFactor = 1.0f;
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODSTUDIO::translate(LLVector3 offset)
+{
+ LLListener::translate(offset);
+
+ mSystem->set3DListenerAttributes(0, (FMOD_VECTOR*)mPosition.mV, NULL, (FMOD_VECTOR*)mListenAt.mV, (FMOD_VECTOR*)mListenUp.mV);
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODSTUDIO::setPosition(LLVector3 pos)
+{
+ LLListener::setPosition(pos);
+
+ mSystem->set3DListenerAttributes(0, (FMOD_VECTOR*)mPosition.mV, NULL, (FMOD_VECTOR*)mListenAt.mV, (FMOD_VECTOR*)mListenUp.mV);
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODSTUDIO::setVelocity(LLVector3 vel)
+{
+ LLListener::setVelocity(vel);
+
+ mSystem->set3DListenerAttributes(0, NULL, (FMOD_VECTOR*)mVelocity.mV, (FMOD_VECTOR*)mListenAt.mV, (FMOD_VECTOR*)mListenUp.mV);
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODSTUDIO::orient(LLVector3 up, LLVector3 at)
+{
+ LLListener::orient(up, at);
+
+ // at = -at; by default Fmod studio is 'left-handed' but we are providing
+ // flag FMOD_INIT_3D_RIGHTHANDED so no correction are needed
+
+ mSystem->set3DListenerAttributes(0, NULL, NULL, (FMOD_VECTOR*)at.mV, (FMOD_VECTOR*)up.mV);
+}
+
+//-----------------------------------------------------------------------
+void LLListener_FMODSTUDIO::commitDeferredChanges()
+{
+ if (!mSystem)
+ {
+ return;
+ }
+
+ mSystem->update();
+}
+
+
+void LLListener_FMODSTUDIO::setRolloffFactor(F32 factor)
+{
+ //An internal FMOD optimization skips 3D updates if there have not been changes to the 3D sound environment.
+ // (this was true for FMODex, looks to be still true for FMOD STUDIO, but needs a recheck)
+ //Sadly, a change in rolloff is not accounted for, thus we must touch the listener properties as well.
+ //In short: Changing the position ticks a dirtyflag inside fmod, which makes it not skip 3D processing next update call.
+ if (mRolloffFactor != factor)
+ {
+ LLVector3 pos = mPosition - LLVector3(0.f, 0.f, .1f);
+ mSystem->set3DListenerAttributes(0, (FMOD_VECTOR*)pos.mV, NULL, NULL, NULL);
+ mSystem->set3DListenerAttributes(0, (FMOD_VECTOR*)mPosition.mV, NULL, NULL, NULL);
+ }
+ mRolloffFactor = factor;
+ mSystem->set3DSettings(mDopplerFactor, 1.f, mRolloffFactor);
+}
+
+
+F32 LLListener_FMODSTUDIO::getRolloffFactor()
+{
+ return mRolloffFactor;
+}
+
+
+void LLListener_FMODSTUDIO::setDopplerFactor(F32 factor)
+{
+ mDopplerFactor = factor;
+ mSystem->set3DSettings(mDopplerFactor, 1.f, mRolloffFactor);
+}
+
+
+F32 LLListener_FMODSTUDIO::getDopplerFactor()
+{
+ return mDopplerFactor;
+}
diff --git a/indra/llaudio/lllistener_fmodstudio.h b/indra/llaudio/lllistener_fmodstudio.h
new file mode 100644
index 0000000000..5287cbedc6
--- /dev/null
+++ b/indra/llaudio/lllistener_fmodstudio.h
@@ -0,0 +1,65 @@
+/**
+ * @file listener_fmodstudio.h
+ * @brief Description of LISTENER class abstracting the audio support
+ * as an FMOD 3D implementation
+ *
+ * $LicenseInfo:firstyear=2020&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2020, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LISTENER_FMODSTUDIO_H
+#define LL_LISTENER_FMODSTUDIO_H
+
+#include "lllistener.h"
+
+//Stubs
+namespace FMOD
+{
+ class System;
+}
+
+//Interfaces
+class LLListener_FMODSTUDIO : public LLListener
+{
+public:
+ LLListener_FMODSTUDIO(FMOD::System *system);
+ virtual ~LLListener_FMODSTUDIO();
+ virtual void init();
+
+ virtual void translate(LLVector3 offset);
+ virtual void setPosition(LLVector3 pos);
+ virtual void setVelocity(LLVector3 vel);
+ virtual void orient(LLVector3 up, LLVector3 at);
+ virtual void commitDeferredChanges();
+
+ virtual void setDopplerFactor(F32 factor);
+ virtual F32 getDopplerFactor();
+ virtual void setRolloffFactor(F32 factor);
+ virtual F32 getRolloffFactor();
+protected:
+ FMOD::System *mSystem;
+ F32 mDopplerFactor;
+ F32 mRolloffFactor;
+};
+
+#endif
+
+
diff --git a/indra/llaudio/llstreamingaudio_fmodstudio.cpp b/indra/llaudio/llstreamingaudio_fmodstudio.cpp
new file mode 100644
index 0000000000..22fc86c0cd
--- /dev/null
+++ b/indra/llaudio/llstreamingaudio_fmodstudio.cpp
@@ -0,0 +1,481 @@
+/**
+ * @file streamingaudio_fmodstudio.cpp
+ * @brief LLStreamingAudio_FMODSTUDIO implementation
+ *
+ * $LicenseInfo:firstyear=2020&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2020, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#include "linden_common.h"
+
+#include "llmath.h"
+
+#include "fmodstudio/fmod.hpp"
+#include "fmodstudio/fmod_errors.h"
+
+#include "llstreamingaudio_fmodstudio.h"
+
+
+class LLAudioStreamManagerFMODSTUDIO
+{
+public:
+ LLAudioStreamManagerFMODSTUDIO(FMOD::System *system, const std::string& url);
+ FMOD::Channel* startStream();
+ bool stopStream(); // Returns true if the stream was successfully stopped.
+ bool ready();
+
+ const std::string& getURL() { return mInternetStreamURL; }
+
+ FMOD_OPENSTATE getOpenState(unsigned int* percentbuffered = NULL, bool* starving = NULL, bool* diskbusy = NULL);
+protected:
+ FMOD::System* mSystem;
+ FMOD::Channel* mStreamChannel;
+ FMOD::Sound* mInternetStream;
+ bool mReady;
+
+ std::string mInternetStreamURL;
+};
+
+
+
+//---------------------------------------------------------------------------
+// Internet Streaming
+//---------------------------------------------------------------------------
+LLStreamingAudio_FMODSTUDIO::LLStreamingAudio_FMODSTUDIO(FMOD::System *system) :
+mSystem(system),
+mCurrentInternetStreamp(NULL),
+mFMODInternetStreamChannelp(NULL),
+mGain(1.0f),
+mRetryCount(0)
+{
+ // Number of milliseconds of audio to buffer for the audio card.
+ // Must be larger than the usual Second Life frame stutter time.
+ const U32 buffer_seconds = 10; //sec
+ const U32 estimated_bitrate = 128; //kbit/sec
+ FMOD_RESULT result = mSystem->setStreamBufferSize(estimated_bitrate * buffer_seconds * 128/*bytes/kbit*/, FMOD_TIMEUNIT_RAWBYTES);
+ if (result != FMOD_OK)
+ {
+ LL_WARNS("FMOD") << "setStreamBufferSize error: " << FMOD_ErrorString(result) << LL_ENDL;
+ }
+
+ // Here's where we set the size of the network buffer and some buffering
+ // parameters. In this case we want a network buffer of 16k, we want it
+ // to prebuffer 40% of that when we first connect, and we want it
+ // to rebuffer 80% of that whenever we encounter a buffer underrun.
+
+ // Leave the net buffer properties at the default.
+ //FSOUND_Stream_Net_SetBufferProperties(20000, 40, 80);
+}
+
+
+LLStreamingAudio_FMODSTUDIO::~LLStreamingAudio_FMODSTUDIO()
+{
+ if (mCurrentInternetStreamp)
+ {
+ // Isn't supposed to hapen, stream should be clear by now,
+ // and if it does, we are likely going to crash.
+ LL_WARNS("FMOD") << "mCurrentInternetStreamp not null on shutdown!" << LL_ENDL;
+ stop();
+ }
+
+ // Kill dead internet streams, if possible
+ killDeadStreams();
+
+ if (!mDeadStreams.empty())
+ {
+ // LLStreamingAudio_FMODSTUDIO was inited on startup
+ // and should be destroyed on shutdown, it should
+ // wait for streams to die to not cause crashes or
+ // leaks.
+ // Ideally we need to wait on some kind of callback
+ // to release() streams correctly, but 200 ms should
+ // be enough and we can't wait forever.
+ LL_INFOS("FMOD") << "Waiting for " << (S32)mDeadStreams.size() << " streams to stop" << LL_ENDL;
+ for (S32 i = 0; i < 20; i++)
+ {
+ const U32 ms_delay = 10;
+ ms_sleep(ms_delay); // rude, but not many options here
+ killDeadStreams();
+ if (mDeadStreams.empty())
+ {
+ LL_INFOS("FMOD") << "All streams stopped after " << (S32)((i + 1) * ms_delay) << "ms" << LL_ENDL;
+ break;
+ }
+ }
+ }
+
+ if (!mDeadStreams.empty())
+ {
+ LL_WARNS("FMOD") << "Failed to kill some audio streams" << LL_ENDL;
+ }
+}
+
+void LLStreamingAudio_FMODSTUDIO::killDeadStreams()
+{
+ std::list<LLAudioStreamManagerFMODSTUDIO *>::iterator iter;
+ for (iter = mDeadStreams.begin(); iter != mDeadStreams.end();)
+ {
+ LLAudioStreamManagerFMODSTUDIO *streamp = *iter;
+ if (streamp->stopStream())
+ {
+ LL_INFOS("FMOD") << "Closed dead stream" << LL_ENDL;
+ delete streamp;
+ iter = mDeadStreams.erase(iter);
+ }
+ else
+ {
+ iter++;
+ }
+ }
+}
+
+void LLStreamingAudio_FMODSTUDIO::start(const std::string& url)
+{
+ //if (!mInited)
+ //{
+ // LL_WARNS() << "startInternetStream before audio initialized" << LL_ENDL;
+ // return;
+ //}
+
+ // "stop" stream but don't clear url, etc. in case url == mInternetStreamURL
+ stop();
+
+ if (!url.empty())
+ {
+ LL_INFOS("FMOD") << "Starting internet stream: " << url << LL_ENDL;
+ mCurrentInternetStreamp = new LLAudioStreamManagerFMODSTUDIO(mSystem, url);
+ mURL = url;
+ }
+ else
+ {
+ LL_INFOS("FMOD") << "Set internet stream to null" << LL_ENDL;
+ mURL.clear();
+ }
+
+ mRetryCount = 0;
+}
+
+
+void LLStreamingAudio_FMODSTUDIO::update()
+{
+ // Kill dead internet streams, if possible
+ killDeadStreams();
+
+ // Don't do anything if there are no streams playing
+ if (!mCurrentInternetStreamp)
+ {
+ return;
+ }
+
+ unsigned int progress;
+ bool starving;
+ bool diskbusy;
+ FMOD_OPENSTATE open_state = mCurrentInternetStreamp->getOpenState(&progress, &starving, &diskbusy);
+
+ if (open_state == FMOD_OPENSTATE_READY)
+ {
+ // Stream is live
+
+ // start the stream if it's ready
+ if (!mFMODInternetStreamChannelp &&
+ (mFMODInternetStreamChannelp = mCurrentInternetStreamp->startStream()))
+ {
+ // Reset volume to previously set volume
+ setGain(getGain());
+ mFMODInternetStreamChannelp->setPaused(false);
+ }
+ mRetryCount = 0;
+ }
+ else if (open_state == FMOD_OPENSTATE_ERROR)
+ {
+ LL_INFOS("FMOD") << "State: FMOD_OPENSTATE_ERROR"
+ << " Progress: " << U32(progress)
+ << " Starving: " << S32(starving)
+ << " Diskbusy: " << S32(diskbusy) << LL_ENDL;
+ if (mRetryCount < 2)
+ {
+ // Retry
+ std::string url = mURL;
+ stop(); // might drop mURL, drops mCurrentInternetStreamp
+
+ mRetryCount++;
+
+ if (!url.empty())
+ {
+ LL_INFOS("FMOD") << "Restarting internet stream: " << url << ", attempt " << (mRetryCount + 1) << LL_ENDL;
+ mCurrentInternetStreamp = new LLAudioStreamManagerFMODSTUDIO(mSystem, url);
+ mURL = url;
+ }
+ }
+ else
+ {
+ stop();
+ }
+ return;
+ }
+
+ if (mFMODInternetStreamChannelp)
+ {
+ FMOD::Sound *sound = NULL;
+
+ if (mFMODInternetStreamChannelp->getCurrentSound(&sound) == FMOD_OK && sound)
+ {
+ FMOD_TAG tag;
+ S32 tagcount, dirtytagcount;
+
+ if (sound->getNumTags(&tagcount, &dirtytagcount) == FMOD_OK && dirtytagcount)
+ {
+ for (S32 i = 0; i < tagcount; ++i)
+ {
+ if (sound->getTag(NULL, i, &tag) != FMOD_OK)
+ continue;
+
+ if (tag.type == FMOD_TAGTYPE_FMOD)
+ {
+ if (!strcmp(tag.name, "Sample Rate Change"))
+ {
+ LL_INFOS("FMOD") << "Stream forced changing sample rate to " << *((float *)tag.data) << LL_ENDL;
+ mFMODInternetStreamChannelp->setFrequency(*((float *)tag.data));
+ }
+ continue;
+ }
+ }
+ }
+
+ if (starving)
+ {
+ bool paused = false;
+ mFMODInternetStreamChannelp->getPaused(&paused);
+ if (!paused)
+ {
+ LL_INFOS("FMOD") << "Stream starvation detected! Pausing stream until buffer nearly full." << LL_ENDL;
+ LL_INFOS("FMOD") << " (diskbusy=" << diskbusy << ")" << LL_ENDL;
+ LL_INFOS("FMOD") << " (progress=" << progress << ")" << LL_ENDL;
+ mFMODInternetStreamChannelp->setPaused(true);
+ }
+ }
+ else if (progress > 80)
+ {
+ mFMODInternetStreamChannelp->setPaused(false);
+ }
+ }
+ }
+}
+
+void LLStreamingAudio_FMODSTUDIO::stop()
+{
+ if (mFMODInternetStreamChannelp)
+ {
+ mFMODInternetStreamChannelp->setPaused(true);
+ mFMODInternetStreamChannelp->setPriority(0);
+ mFMODInternetStreamChannelp = NULL;
+ }
+
+ if (mCurrentInternetStreamp)
+ {
+ LL_INFOS("FMOD") << "Stopping internet stream: " << mCurrentInternetStreamp->getURL() << LL_ENDL;
+ if (mCurrentInternetStreamp->stopStream())
+ {
+ delete mCurrentInternetStreamp;
+ }
+ else
+ {
+ LL_WARNS("FMOD") << "Pushing stream to dead list: " << mCurrentInternetStreamp->getURL() << LL_ENDL;
+ mDeadStreams.push_back(mCurrentInternetStreamp);
+ }
+ mCurrentInternetStreamp = NULL;
+ //mURL.clear();
+ }
+}
+
+void LLStreamingAudio_FMODSTUDIO::pause(int pauseopt)
+{
+ if (pauseopt < 0)
+ {
+ pauseopt = mCurrentInternetStreamp ? 1 : 0;
+ }
+
+ if (pauseopt)
+ {
+ if (mCurrentInternetStreamp)
+ {
+ LL_INFOS("FMOD") << "Pausing internet stream" << LL_ENDL;
+ stop();
+ }
+ }
+ else
+ {
+ start(getURL());
+ }
+}
+
+
+// A stream is "playing" if it has been requested to start. That
+// doesn't necessarily mean audio is coming out of the speakers.
+int LLStreamingAudio_FMODSTUDIO::isPlaying()
+{
+ if (mCurrentInternetStreamp)
+ {
+ return 1; // Active and playing
+ }
+ else if (!mURL.empty())
+ {
+ return 2; // "Paused"
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+
+F32 LLStreamingAudio_FMODSTUDIO::getGain()
+{
+ return mGain;
+}
+
+
+std::string LLStreamingAudio_FMODSTUDIO::getURL()
+{
+ return mURL;
+}
+
+
+void LLStreamingAudio_FMODSTUDIO::setGain(F32 vol)
+{
+ mGain = vol;
+
+ if (mFMODInternetStreamChannelp)
+ {
+ vol = llclamp(vol * vol, 0.f, 1.f); //should vol be squared here?
+
+ mFMODInternetStreamChannelp->setVolume(vol);
+ }
+}
+
+///////////////////////////////////////////////////////
+// manager of possibly-multiple internet audio streams
+
+LLAudioStreamManagerFMODSTUDIO::LLAudioStreamManagerFMODSTUDIO(FMOD::System *system, const std::string& url) :
+mSystem(system),
+mStreamChannel(NULL),
+mInternetStream(NULL),
+mReady(false)
+{
+ mInternetStreamURL = url;
+
+ FMOD_RESULT result = mSystem->createStream(url.c_str(), FMOD_2D | FMOD_NONBLOCKING | FMOD_IGNORETAGS, 0, &mInternetStream);
+
+ if (result != FMOD_OK)
+ {
+ LL_WARNS("FMOD") << "Couldn't open fmod stream, error "
+ << FMOD_ErrorString(result)
+ << LL_ENDL;
+ mReady = false;
+ return;
+ }
+
+ mReady = true;
+}
+
+FMOD::Channel *LLAudioStreamManagerFMODSTUDIO::startStream()
+{
+ // We need a live and opened stream before we try and play it.
+ if (!mInternetStream || getOpenState() != FMOD_OPENSTATE_READY)
+ {
+ LL_WARNS("FMOD") << "No internet stream to start playing!" << LL_ENDL;
+ return NULL;
+ }
+
+ if (mStreamChannel)
+ return mStreamChannel; //Already have a channel for this stream.
+
+ FMOD_RESULT result = mSystem->playSound(mInternetStream, NULL, true, &mStreamChannel);
+ if (result != FMOD_OK)
+ {
+ LL_WARNS("FMOD") << FMOD_ErrorString(result) << LL_ENDL;
+ }
+ return mStreamChannel;
+}
+
+bool LLAudioStreamManagerFMODSTUDIO::stopStream()
+{
+ if (mInternetStream)
+ {
+
+
+ bool close = true;
+ switch (getOpenState())
+ {
+ case FMOD_OPENSTATE_CONNECTING:
+ close = false;
+ break;
+ default:
+ close = true;
+ }
+
+ if (close)
+ {
+ mInternetStream->release();
+ mStreamChannel = NULL;
+ mInternetStream = NULL;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
+ return true;
+ }
+}
+
+FMOD_OPENSTATE LLAudioStreamManagerFMODSTUDIO::getOpenState(unsigned int* percentbuffered, bool* starving, bool* diskbusy)
+{
+ FMOD_OPENSTATE state;
+ FMOD_RESULT result = mInternetStream->getOpenState(&state, percentbuffered, starving, diskbusy);
+ if (result != FMOD_OK)
+ {
+ LL_WARNS("FMOD") << FMOD_ErrorString(result) << LL_ENDL;
+ }
+ return state;
+}
+
+void LLStreamingAudio_FMODSTUDIO::setBufferSizes(U32 streambuffertime, U32 decodebuffertime)
+{
+ FMOD_RESULT result = mSystem->setStreamBufferSize(streambuffertime / 1000 * 128 * 128, FMOD_TIMEUNIT_RAWBYTES);
+ if (result != FMOD_OK)
+ {
+ LL_WARNS("FMOD") << "setStreamBufferSize error: " << FMOD_ErrorString(result) << LL_ENDL;
+ return;
+ }
+ FMOD_ADVANCEDSETTINGS settings;
+ memset(&settings, 0, sizeof(settings));
+ settings.cbSize = sizeof(settings);
+ settings.defaultDecodeBufferSize = decodebuffertime;//ms
+ result = mSystem->setAdvancedSettings(&settings);
+ if (result != FMOD_OK)
+ {
+ LL_WARNS("FMOD") << "setAdvancedSettings error: " << FMOD_ErrorString(result) << LL_ENDL;
+ }
+}
diff --git a/indra/llaudio/llstreamingaudio_fmodstudio.h b/indra/llaudio/llstreamingaudio_fmodstudio.h
new file mode 100644
index 0000000000..2127841809
--- /dev/null
+++ b/indra/llaudio/llstreamingaudio_fmodstudio.h
@@ -0,0 +1,76 @@
+/**
+ * @file streamingaudio_fmodstudio.h
+ * @brief Definition of LLStreamingAudio_FMODSTUDIO implementation
+ *
+ * $LicenseInfo:firstyear=2020&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2020, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_STREAMINGAUDIO_FMODSTUDIO_H
+#define LL_STREAMINGAUDIO_FMODSTUDIO_H
+
+#include "stdtypes.h" // from llcommon
+
+#include "llstreamingaudio.h"
+#include "lltimer.h"
+
+//Stubs
+class LLAudioStreamManagerFMODSTUDIO;
+namespace FMOD
+{
+ class System;
+ class Channel;
+}
+
+//Interfaces
+class LLStreamingAudio_FMODSTUDIO : public LLStreamingAudioInterface
+{
+public:
+ LLStreamingAudio_FMODSTUDIO(FMOD::System *system);
+ /*virtual*/ ~LLStreamingAudio_FMODSTUDIO();
+
+ /*virtual*/ void start(const std::string& url);
+ /*virtual*/ void stop();
+ /*virtual*/ void pause(S32 pause);
+ /*virtual*/ void update();
+ /*virtual*/ S32 isPlaying();
+ /*virtual*/ void setGain(F32 vol);
+ /*virtual*/ F32 getGain();
+ /*virtual*/ std::string getURL();
+
+ /*virtual*/ bool supportsAdjustableBufferSizes(){return true;}
+ /*virtual*/ void setBufferSizes(U32 streambuffertime, U32 decodebuffertime);
+private:
+ void killDeadStreams();
+
+ FMOD::System *mSystem;
+
+ LLAudioStreamManagerFMODSTUDIO *mCurrentInternetStreamp;
+ FMOD::Channel *mFMODInternetStreamChannelp;
+ std::list<LLAudioStreamManagerFMODSTUDIO *> mDeadStreams;
+
+ std::string mURL;
+ F32 mGain;
+ S32 mRetryCount;
+};
+
+
+#endif // LL_STREAMINGAUDIO_FMODSTUDIO_H
diff --git a/indra/llcharacter/CMakeLists.txt b/indra/llcharacter/CMakeLists.txt
index bc45eb474a..7c158c4ff9 100644
--- a/indra/llcharacter/CMakeLists.txt
+++ b/indra/llcharacter/CMakeLists.txt
@@ -70,3 +70,5 @@ target_link_libraries(
llfilesystem
llxml
)
+
+include(LibraryInstall)
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index aa8810f00b..1e3f8bec5d 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -8,9 +8,12 @@ include(bugsplat)
include(Linking)
include(Boost)
include(LLSharedLibs)
+if (USE_AUTOBUILD_3P OR USE_CONAN)
include(Copy3rdPartyLibs)
+endif ()
include(ZLIBNG)
include(Tracy)
+include(Lualibs)
set(llcommon_SOURCE_FILES
@@ -193,6 +196,7 @@ set(llcommon_HEADER_FILES
llliveappconfig.h
lllivefile.h
llmainthreadtask.h
+ llmake.h
llmd5.h
llmemory.h
llmemorystream.h
@@ -294,12 +298,52 @@ target_link_libraries(
ll::boost
ll::oslibraries
ll::tracy
+ ll::lualibs
)
target_include_directories(llcommon INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(llcommon PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
+if (CMAKE_OSX_ARCHITECTURES MATCHES arm64)
+ if (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/sse2neon_installed OR NOT ${sse2neon_installed} EQUAL 0)
+ file(MAKE_DIRECTORY ${LIBS_PREBUILT_DIR}/include/sse2neon)
+ if (NOT EXISTS ${LIBS_PREBUILT_DIR}/include/sse2neon/sse2neon.h)
+ file(DOWNLOAD
+ https://raw.githubusercontent.com/DLTcollab/sse2neon/master/sse2neon.h
+ ${LIBS_PREBUILT_DIR}/include/sse2neon/sse2neon.h
+ )
+ endif (NOT EXISTS ${LIBS_PREBUILT_DIR}/include/sse2neon/sse2neon.h)
+ file(WRITE ${PREBUILD_TRACKING_DIR}/sse2neon_installed "0")
+ endif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/sse2neon_installed OR NOT ${sse2neon_installed} EQUAL 0)
+ target_include_directories(llcommon PUBLIC ${LIBS_PREBUILT_DIR}/include/sse2neon)
+endif ()
+
+if (USE_AUTOBUILD_3P OR USE_CONAN)
add_dependencies(llcommon stage_third_party_libs)
+else ()
+ target_compile_options(${PROJECT_NAME} PUBLIC -Wno-deprecated-declarations)
+ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ set_source_files_properties(
+ llapp.cpp
+ llsdutil.cpp
+ PROPERTIES COMPILE_FLAGS -Wno-stringop-truncation)
+ set_source_files_properties(
+ llevent.cpp
+ llfasttimer.cpp
+ PROPERTIES COMPILE_FLAGS -Wno-nonnull)
+ set_source_files_properties(
+ llsdserialize.cpp
+ llsingleton.cpp
+ llstreamtools.cpp
+ lluri.cpp
+ PROPERTIES COMPILE_FLAGS -Wno-restrict)
+ elseif (LINUX AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ set_source_files_properties(llsys.cpp PROPERTIES
+ COMPILE_FLAGS -Wno-unused-but-set-variable)
+ endif()
+endif ()
+
+include(LibraryInstall)
if (LL_TESTS)
include(LLAddBuildTest)
diff --git a/indra/llcommon/hbxxh.cpp b/indra/llcommon/hbxxh.cpp
index 41d797a7e3..8ccf8dfcbe 100644
--- a/indra/llcommon/hbxxh.cpp
+++ b/indra/llcommon/hbxxh.cpp
@@ -34,7 +34,11 @@
// in your build, in which case the latter would be used instead. For ARM64
// builds, this would also automatically enable NEON vectorization.
#define XXH_INLINE_ALL
+#if LL_USESYSTEMLIBS
+#include <xxhash.h>
+#else
#include "xxhash/xxhash.h"
+#endif
#include "hbxxh.h"
diff --git a/indra/llcommon/llapr.h b/indra/llcommon/llapr.h
index ff5c8c6a33..206753d073 100644
--- a/indra/llcommon/llapr.h
+++ b/indra/llcommon/llapr.h
@@ -43,6 +43,7 @@
#include "llstring.h"
#include "mutex.h"
+#include <memory>
struct apr_dso_handle_t;
/**
diff --git a/indra/llcommon/llfasttimer.cpp b/indra/llcommon/llfasttimer.cpp
index 722743f453..7ceb57336e 100644
--- a/indra/llcommon/llfasttimer.cpp
+++ b/indra/llcommon/llfasttimer.cpp
@@ -43,7 +43,7 @@
#if LL_WINDOWS
#include "lltimer.h"
-#elif LL_LINUX
+#elif LL_LINUX || __FreeBSD__
#include <sys/time.h>
#include <sched.h>
#include "lltimer.h"
diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h
index 09fcf8a1af..a69a03e419 100644
--- a/indra/llcommon/llfasttimer.h
+++ b/indra/llcommon/llfasttimer.h
@@ -127,8 +127,22 @@ public:
#endif
+#if (LL_DARWIN && defined(__arm64__))
-#if (LL_LINUX) && !(defined(__i386__) || defined(__amd64__))
+ static U32 getCPUClockCount64()
+ {
+ U64 t = clock_gettime_nsec_np(CLOCK_UPTIME_RAW);
+ return t/1000;
+ }
+
+ static U64 getCPUClockCount32()
+ {
+ return (U32) (getCPUClockCount64() >> 8);
+ }
+
+#endif
+
+#if (LL_LINUX && !(defined(__i386__) || defined(__amd64__)))
//
// Linux implementation of CPU clock - non-x86.
// This is accurate but SLOW! Only use out of desperation.
@@ -159,7 +173,7 @@ public:
#endif // (LL_LINUX) && !(defined(__i386__) || defined(__amd64__))
-#if (LL_LINUX || LL_DARWIN) && (defined(__i386__) || defined(__amd64__))
+#if (LL_LINUX || LL_DARWIN || __FreeBSD__) && (defined(__i386__) || defined(__amd64__))
//
// Mac+Linux FAST x86 implementation of CPU clock
static U32 getCPUClockCount32()
diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h
index 80cfe554c4..671ebc38e2 100644
--- a/indra/llcommon/llmemory.h
+++ b/indra/llcommon/llmemory.h
@@ -52,7 +52,7 @@ class LLMutex ;
#define LL_DEFAULT_HEAP_ALIGN 8
#elif LL_DARWIN
#define LL_DEFAULT_HEAP_ALIGN 16
-#elif LL_LINUX
+#elif LL_LINUX || __FreeBSD__
#define LL_DEFAULT_HEAP_ALIGN 8
#endif
@@ -71,7 +71,11 @@ LL_COMMON_API void ll_assert_aligned_func(uintptr_t ptr,U32 alignment);
#define ll_assert_aligned(ptr,alignment)
#endif
+#if defined(__i386__) || defined(__x86_64__)
#include <xmmintrin.h>
+#else
+#include <sse2neon.h>
+#endif
template <typename T> T* LL_NEXT_ALIGNED_ADDRESS(T* address)
{
@@ -85,7 +89,7 @@ template <typename T> T* LL_NEXT_ALIGNED_ADDRESS_64(T* address)
(uintptr_t(address) + 0x3F) & ~0x3F);
}
-#if LL_LINUX || LL_DARWIN
+#if LL_LINUX || LL_DARWIN || __FreeBSD__
#define LL_ALIGN_PREFIX(x)
#define LL_ALIGN_POSTFIX(x) __attribute__((aligned(x)))
diff --git a/indra/llcommon/llpreprocessor.h b/indra/llcommon/llpreprocessor.h
index b499a9ce10..e9f07f6fdf 100644
--- a/indra/llcommon/llpreprocessor.h
+++ b/indra/llcommon/llpreprocessor.h
@@ -32,9 +32,11 @@
#ifdef LL_LINUX
#define __ENABLE_WSTRING
#include <endian.h>
+#elif defined(__FreeBSD__)
+#include <sys/endian.h>
#endif // LL_LINUX
-#if (defined(LL_WINDOWS) || (defined(LL_LINUX) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || (defined(LL_DARWIN) && defined(__LITTLE_ENDIAN__)))
+#if (defined(LL_WINDOWS) || (defined(LL_LINUX) && (__BYTE_ORDER == __LITTLE_ENDIAN)) || (defined(LL_DARWIN) && defined(__LITTLE_ENDIAN__)) || (defined(__FreeBSD__) && (_BYTE_ORDER == _LITTLE_ENDIAN)))
#define LL_LITTLE_ENDIAN 1
#else
#define LL_BIG_ENDIAN 1
@@ -77,7 +79,7 @@
#endif
// Deal with minor differences on Unixy OSes.
-#if LL_DARWIN || LL_LINUX
+#if LL_DARWIN || LL_LINUX || __FreeBSD__
// Different name, same functionality.
#define stricmp strcasecmp
#define strnicmp strncasecmp
diff --git a/indra/llcommon/llprocess.cpp b/indra/llcommon/llprocess.cpp
index 912e596c3f..40ef0ddf9b 100644
--- a/indra/llcommon/llprocess.cpp
+++ b/indra/llcommon/llprocess.cpp
@@ -691,10 +691,22 @@ LLProcess::LLProcess(const LLSDOrParams& params):
// terminate with a null pointer
argv.push_back(NULL);
+ // create an env vector for the child process
+ std::vector<const char*> envv;
+
+ // Add environment value assignments. See above remarks about c_str().
+ for (const std::string& env : params.envs)
+ {
+ envv.push_back(env.c_str());
+ }
+
+ // terminate with a null pointer
+ envv.push_back(NULL);
+
// Launch! The NULL would be the environment block, if we were passing
// one. Hand-expand chkapr() macro so we can fill in the actual command
// string instead of the variable names.
- if (ll_apr_warn_status(apr_proc_create(&mProcess, argv[0], &argv[0], NULL, procattr,
+ if (ll_apr_warn_status(apr_proc_create(&mProcess, argv[0], &argv[0], &envv[0], procattr,
mPool)))
{
LLTHROW(LLProcessError(STRINGIZE(params << " failed")));
diff --git a/indra/llcommon/llprocess.h b/indra/llcommon/llprocess.h
index cc2d6566fc..52b5e0f562 100644
--- a/indra/llcommon/llprocess.h
+++ b/indra/llcommon/llprocess.h
@@ -38,7 +38,7 @@
#if LL_WINDOWS
#include "llwin32headers.h" // for HANDLE
-#elif LL_LINUX
+#elif LL_LINUX || __FreeBSD__
#if defined(Status)
#undef Status
#endif
@@ -163,6 +163,7 @@ public:
Params():
executable("executable"),
args("args"),
+ envs("envs"),
cwd("cwd"),
autokill("autokill", true),
attached("attached", true),
@@ -180,6 +181,10 @@ public:
* argument while assembling the command line.
*/
Multiple<std::string> args;
+ /**
+ * zero or more additional command-line environment values.
+ */
+ Multiple<std::string> envs;
/// current working directory, if need it changed
Optional<std::string> cwd;
/// implicitly kill child process on termination of parent, whether
diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp
index 0264cf792b..58ed54fcf7 100644
--- a/indra/llcommon/llprocessor.cpp
+++ b/indra/llcommon/llprocessor.cpp
@@ -750,12 +750,14 @@ private:
: "0" (level))
#endif
+#if __i386__ || __x86_64__
unsigned int eax, ebx, ecx, edx;
__cpuid(0x1, eax, ebx, ecx, edx);
if(feature_infos[0] != (S32)edx)
{
LL_WARNS() << "machdep.cpu.feature_bits doesn't match expected cpuid result!" << LL_ENDL;
}
+#endif // __i386__ || __x86_64__
#endif // LL_RELEASE_FOR_DOWNLOAD
@@ -800,6 +802,100 @@ private:
}
};
+#elif __FreeBSD__
+
+#include <sys/sysctl.h>
+class LLProcessorInfoFreeBSDImpl : public LLProcessorInfoImpl
+{
+public:
+ LLProcessorInfoFreeBSDImpl()
+ {
+ size_t len = 0;
+ using std::string;
+
+ char cpu_brand_string[0x40];
+ len = sizeof cpu_brand_string;
+ memset(cpu_brand_string, '\0', len);
+ sysctlbyname("hw.model", (void *)cpu_brand_string, &len,
+ NULL, 0);
+ cpu_brand_string[0x3f] = '\0';
+ setInfo(eBrandName, cpu_brand_string);
+
+ uint64_t cpu_frequency = 0;
+ len = sizeof cpu_frequency;
+ sysctlbyname("hw.clockrate", (void *)&cpu_frequency, &len,
+ NULL, 0);
+ setInfo(eFrequency, (F64)cpu_frequency);
+
+ auto dmesgboot = LLFile::fopen("/var/run/dmesg.boot", "rb");
+ std::ostringstream s;
+ if (dmesgboot) {
+ char line[MAX_STRING];
+ memset(line, 0, MAX_STRING);
+ while (fgets(line, MAX_STRING, dmesgboot)) {
+ line[strlen(line) - 1] = ' ';
+ s << line;
+ s << std::endl;
+ }
+ fclose(dmesgboot);
+ s << std::endl;
+ }
+
+ auto dmesgboot_str = s.str();
+ int decimal;
+
+ auto idx1 = dmesgboot_str.find_first_of("\"") + 1;
+ auto idx2 = (idx1 != string::npos)
+ ? dmesgboot_str.find_first_of("\"", idx1)
+ : string::npos;
+ auto vendor = dmesgboot_str.substr(idx1, idx2 - idx1);
+ if (vendor.length() > 0) setInfo(eVendor, vendor.c_str());
+
+ idx1 = dmesgboot_str.find_first_of("=", idx2);
+ idx1 = dmesgboot_str.find_first_of("=", idx1 + 1) + 3;
+ idx2 = dmesgboot_str.find_first_of(" ", idx1);
+ auto family = dmesgboot_str.substr(idx1, idx2 - idx1);
+ std::istringstream(family) >> std::hex >> decimal;
+ setInfo(eFamily, decimal);
+ setInfo(eFamilyName, compute_CPUFamilyName(vendor.c_str(),
+ decimal, 0));
+
+ idx1 = dmesgboot_str.find_first_of("=", idx2) + 3;
+ idx2 = dmesgboot_str.find_first_of(" ", idx1);
+ auto model = dmesgboot_str.substr(idx1, idx2 - idx1);
+ std::istringstream(model) >> std::hex >> decimal;
+ setInfo(eModel, decimal);
+
+ idx1 = dmesgboot_str.find_first_of("=", idx2) + 1;
+ idx2 = dmesgboot_str.find_first_of("\n", idx1);
+ auto stepping = dmesgboot_str.substr(idx1, idx2 - idx1);
+ setInfo(eStepping, std::stoi(stepping));
+
+ if (dmesgboot_str.find(",SSE,") != string::npos)
+ setExtension(cpu_feature_names[eSSE_Ext]);
+
+ if (dmesgboot_str.find(",SSE2,") != string::npos)
+ setExtension(cpu_feature_names[eSSE2_Ext]);
+
+ if (dmesgboot_str.find("<SSE3,") != string::npos)
+ setExtension(cpu_feature_names[eSSE3_Features]);
+
+ if (dmesgboot_str.find(",SSSE3,") != string::npos)
+ setExtension(cpu_feature_names[eSSE3S_Features]);
+
+ if (dmesgboot_str.find(",SSE4.1,") != string::npos)
+ setExtension(cpu_feature_names[eSSE4_1_Features]);
+
+ if (dmesgboot_str.find(",SSE4.2,") != string::npos)
+ setExtension(cpu_feature_names[eSSE4_2_Features]);
+
+ if (dmesgboot_str.find(",SSE4A,") != string::npos)
+ setExtension(cpu_feature_names[eSSE4a_Features]);
+ }
+
+ virtual ~LLProcessorInfoFreeBSDImpl() {}
+};
+
#elif LL_LINUX
// *NOTE:Mani - eww, macros! srry.
@@ -1009,6 +1105,9 @@ LLProcessorInfo::LLProcessorInfo() : mImpl(NULL)
#elif LL_DARWIN
static LLProcessorInfoDarwinImpl the_impl;
mImpl = &the_impl;
+#elif __FreeBSD__
+ static LLProcessorInfoFreeBSDImpl the_impl;
+ mImpl = &the_impl;
#else
static LLProcessorInfoLinuxImpl the_impl;
mImpl = &the_impl;
diff --git a/indra/llcommon/llsdutil.cpp b/indra/llcommon/llsdutil.cpp
index fda47c7a87..9fa27cee78 100644
--- a/indra/llcommon/llsdutil.cpp
+++ b/indra/llcommon/llsdutil.cpp
@@ -35,7 +35,7 @@
# include "llwin32headers.h" // for htonl
#elif LL_LINUX
# include <netinet/in.h>
-#elif LL_DARWIN
+#elif LL_DARWIN || __FreeBSD__
# include <arpa/inet.h>
#endif
diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h
index b15a85cb2a..f1699ea3c0 100644
--- a/indra/llcommon/llstring.h
+++ b/indra/llcommon/llstring.h
@@ -56,6 +56,7 @@ class LLSD;
#if LL_DARWIN || LL_LINUX
// Template specialization of char_traits for U16s. Only necessary on Mac and Linux (exists on Windows already)
#include <cstring>
+#include <memory>
namespace std
{
diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 7e69ddf6fc..a26df395c4 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -83,8 +83,13 @@ using namespace llsd;
# include <sys/sysinfo.h>
# include <stdexcept>
const char MEMINFO_FILE[] = "/proc/meminfo";
+#ifdef __GNU__
# include <gnu/libc-version.h>
#endif
+#elif __FreeBSD__
+# include <sys/sysctl.h>
+# include <sys/utsname.h>
+#endif
LLCPUInfo gSysCPU;
LLMemoryInfo gSysMemory;
@@ -340,6 +345,8 @@ LLOSInfo::LLOSInfo() :
mOSString = mOSStringSimple;
}
+#ifdef __GNU__
+
const char OS_VERSION_MATCH_EXPRESSION[] = "([0-9]+)\\.([0-9]+)(\\.([0-9]+))?";
boost::regex os_version_parse(OS_VERSION_MATCH_EXPRESSION);
boost::smatch matched;
@@ -403,6 +410,8 @@ LLOSInfo::LLOSInfo() :
LL_WARNS("AppInit") << "glibc version '" << glibc_version << "' cannot be parsed to three numbers; using all zeros" << LL_ENDL;
}
+#endif // __GNU__
+
#else
struct utsname un;
@@ -429,6 +438,13 @@ LLOSInfo::LLOSInfo() :
if (simple.length() > 0)
mOSStringSimple = simple;
}
+ else if (ostype == "FreeBSD")
+ {
+ // Only care about major and minor FreeBSD versions, truncate at first '-'
+ std::string simple = mOSStringSimple.substr(0, mOSStringSimple.find_first_of("-", 0));
+ if (simple.length() > 0)
+ mOSStringSimple = simple;
+ }
}
else
{
@@ -754,13 +770,17 @@ static U32Kilobytes LLMemoryAdjustKBResult(U32Kilobytes inKB)
}
#endif
-#if LL_DARWIN
+#if LL_DARWIN || __FreeBSD__
// static
U32Kilobytes LLMemoryInfo::getHardwareMemSize()
{
// This might work on Linux as well. Someone check...
uint64_t phys = 0;
+#if LL_DARWIN
int mib[2] = { CTL_HW, HW_MEMSIZE };
+#else
+ int mib[2] = { CTL_HW, HW_PHYSMEM };
+#endif
size_t len = sizeof(phys);
sysctl(mib, 2, &phys, &len, NULL, 0);
@@ -774,7 +794,7 @@ U32Kilobytes LLMemoryInfo::getPhysicalMemoryKB() const
#if LL_WINDOWS
return LLMemoryAdjustKBResult(U32Kilobytes(mStatsMap["Total Physical KB"].asInteger()));
-#elif LL_DARWIN
+#elif LL_DARWIN || __FreeBSD__
return getHardwareMemSize();
#elif LL_LINUX
diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h
index 827b0dc048..c8ff4dd98a 100644
--- a/indra/llcommon/llsys.h
+++ b/indra/llcommon/llsys.h
@@ -130,7 +130,7 @@ public:
void stream(std::ostream& s) const; ///< output text info to s
U32Kilobytes getPhysicalMemoryKB() const;
-#if LL_DARWIN
+#if LL_DARWIN || __FreeBSD__
static U32Kilobytes getHardwareMemSize(); // Because some Mac linkers won't let us reference extern gSysMemory from a different lib.
#endif
diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp
index f36d223100..4e15ae29a9 100644
--- a/indra/llcommon/lltimer.cpp
+++ b/indra/llcommon/lltimer.cpp
@@ -35,7 +35,7 @@
#if LL_WINDOWS
# include "llwin32headers.h"
-#elif LL_LINUX || LL_DARWIN
+#elif LL_LINUX || LL_DARWIN || __FreeBSD__
# include <errno.h>
# include <sys/time.h>
#else
@@ -115,7 +115,7 @@ void ms_sleep(U32 ms)
#endif
-#elif LL_LINUX || LL_DARWIN
+#elif LL_LINUX || LL_DARWIN || __FreeBSD__
static void _sleep_loop(struct timespec& thiswait)
{
struct timespec nextwait;
@@ -233,7 +233,7 @@ F64 calc_clock_frequency()
#endif // LL_WINDOWS
-#if LL_LINUX || LL_DARWIN
+#if LL_LINUX || LL_DARWIN || __FreeBSD__
// Both Linux and Mac use gettimeofday for accurate time
F64 calc_clock_frequency()
{
diff --git a/indra/llcommon/lluuid.cpp b/indra/llcommon/lluuid.cpp
index b9bd27aa17..6d7cf473f5 100644
--- a/indra/llcommon/lluuid.cpp
+++ b/indra/llcommon/lluuid.cpp
@@ -520,7 +520,7 @@ S32 LLUUID::getNodeID(unsigned char* node_id)
#include <net/if.h>
#include <net/if_types.h>
#include <net/if_dl.h>
-#include <net/route.h>
+//#include <net/route.h>
#include <ifaddrs.h>
// static
@@ -604,7 +604,7 @@ S32 LLUUID::getNodeID(unsigned char* node_id)
#define HAVE_NETINET_IN_H
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
-#if !LL_DARWIN
+#if !LL_DARWIN && !__FreeBSD__
#include <linux/sockios.h>
#endif
#endif
diff --git a/indra/llcommon/stdtypes.h b/indra/llcommon/stdtypes.h
index 28e50b3d21..b40a718593 100644
--- a/indra/llcommon/stdtypes.h
+++ b/indra/llcommon/stdtypes.h
@@ -29,6 +29,7 @@
#include <cassert>
#include <cfloat>
#include <climits>
+#include <cstddef>
#include <limits>
#include <type_traits>
@@ -71,7 +72,7 @@ typedef unsigned __int64 U64;
#else
typedef long long int S64;
typedef long long unsigned int U64;
-#if LL_DARWIN || LL_LINUX
+#if LL_DARWIN || LL_LINUX || __FreeBSD__
#define S64L(a) (a##LL)
#define U64L(a) (a##ULL)
#endif
@@ -113,6 +114,10 @@ typedef U32 TPACKETID;
#define FALSE (0)
#endif
+#if __FreeBSD__
+#undef NULL
+#endif
+
#ifndef NULL
#define NULL (0)
#endif
diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt
index b141171516..ab3a86b37e 100644
--- a/indra/llcorehttp/CMakeLists.txt
+++ b/indra/llcorehttp/CMakeLists.txt
@@ -8,7 +8,9 @@ include(OpenSSL)
include(NGHTTP2)
include(ZLIBNG)
include(LLCoreHttp)
+if (LL_TESTS)
include(LLAddBuildTest)
+endif ()
include(LLCommon)
include(bugsplat)
@@ -91,6 +93,8 @@ target_include_directories( llcorehttp INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
# lead to circular dependencies (or in case of cmake, the first project declaring it's dependencies wins)
target_include_directories( llcorehttp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../llmessage)
+include(LibraryInstall)
+
# tests
set(LLCOREHTTP_TESTS ON CACHE BOOL
"Build and run llcorehttp integration tests specifically")
diff --git a/indra/llcrashlogger/CMakeLists.txt b/indra/llcrashlogger/CMakeLists.txt
index 6ac73c0d32..3506a35c1e 100644
--- a/indra/llcrashlogger/CMakeLists.txt
+++ b/indra/llcrashlogger/CMakeLists.txt
@@ -21,3 +21,5 @@ list(APPEND llcrashlogger_SOURCE_FILES ${llcrashlogger_HEADER_FILES})
add_library(llcrashlogger ${llcrashlogger_SOURCE_FILES})
target_link_libraries( llcrashlogger llcommon llmessage llcorehttp llxml llfilesystem )
+
+include(LibraryInstall)
diff --git a/indra/llfilesystem/CMakeLists.txt b/indra/llfilesystem/CMakeLists.txt
index 9f24f75eab..8d85f739b3 100644
--- a/indra/llfilesystem/CMakeLists.txt
+++ b/indra/llfilesystem/CMakeLists.txt
@@ -4,6 +4,9 @@ project(llfilesystem)
include(00-Common)
include(LLCommon)
+if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+ include(UnixInstall)
+endif (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
set(llfilesystem_SOURCE_FILES
lldir.cpp
@@ -30,17 +33,17 @@ if (DARWIN)
LIST(APPEND llfilesystem_HEADER_FILES lldir_mac.h)
endif (DARWIN)
-if (LINUX)
+if (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
LIST(APPEND llfilesystem_SOURCE_FILES lldir_linux.cpp)
LIST(APPEND llfilesystem_HEADER_FILES lldir_linux.h)
if (INSTALL)
set_source_files_properties(lldir_linux.cpp
PROPERTIES COMPILE_FLAGS
- "-DAPP_RO_DATA_DIR=\\\"${APP_SHARE_DIR}\\\""
+ "-DAPP_RO_DATA_DIR=\\\"${APP_SHARE_DIR}\\\" -DAPP_LIBEXEC_DIR=\\\"${APP_LIBEXEC_DIR}\\\" -DAPP_PLUGIN_DIR=\\\"${INSTALL_LIBRARY_DIR}\\\""
)
endif (INSTALL)
-endif (LINUX)
+endif (LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD)
if (WINDOWS)
LIST(APPEND llfilesystem_SOURCE_FILES lldir_win32.cpp)
@@ -55,6 +58,7 @@ target_link_libraries(llfilesystem
llcommon
)
target_include_directories( llfilesystem INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
+include(LibraryInstall)
# Add tests
if (LL_TESTS)
diff --git a/indra/llfilesystem/lldir.cpp b/indra/llfilesystem/lldir.cpp
index 2818aaf86c..0abcfd9247 100644
--- a/indra/llfilesystem/lldir.cpp
+++ b/indra/llfilesystem/lldir.cpp
@@ -386,7 +386,7 @@ std::string LLDir::buildSLOSCacheDir() const
}
else
{
- res = add(getOSCacheDir(), "SecondLife");
+ res = add(getOSCacheDir(), "Megapahit");
}
return res;
}
@@ -695,7 +695,7 @@ void LLDir::walkSearchSkinDirs(const std::string& subdir,
const std::string& filename,
const FUNCTION& function) const
{
- for (const std::string& skindir : mSearchSkinDirs)
+ for (std::string skindir : mSearchSkinDirs)
{
std::string subdir_path(add(skindir, subdir));
for (const std::string& subsubdir : subsubdirs)
diff --git a/indra/llfilesystem/lldir_linux.cpp b/indra/llfilesystem/lldir_linux.cpp
index b13b42c954..69cfedebc7 100644
--- a/indra/llfilesystem/lldir_linux.cpp
+++ b/indra/llfilesystem/lldir_linux.cpp
@@ -83,7 +83,11 @@ LLDir_Linux::LLDir_Linux()
mExecutableFilename = "";
mExecutablePathAndName = "";
+#ifdef APP_LIBEXEC_DIR
+ mExecutableDir = APP_LIBEXEC_DIR;
+#else
mExecutableDir = tmp_str;
+#endif
mWorkingDir = tmp_str;
#ifdef APP_RO_DATA_DIR
mAppRODataDir = APP_RO_DATA_DIR;
@@ -123,7 +127,7 @@ LLDir_Linux::LLDir_Linux()
if ((path_end = strrchr(tmp_str,'/')))
{
*path_end = '\0';
- mExecutableDir = tmp_str;
+ //mExecutableDir = tmp_str;
mWorkingDir = tmp_str;
mExecutableFilename = path_end+1;
}
@@ -133,7 +137,11 @@ LLDir_Linux::LLDir_Linux()
}
}
+#ifdef APP_PLUGIN_DIR
+ mLLPluginDir = APP_PLUGIN_DIR;
+#else
mLLPluginDir = mExecutableDir + mDirDelimiter + "llplugin";
+#endif
// *TODO: don't use /tmp, use $HOME/.secondlife/tmp or something.
mTempDir = "/tmp";
@@ -205,7 +213,7 @@ void LLDir_Linux::initAppDirs(const std::string &app_name,
LL_WARNS() << "Couldn't create LL_PATH_CACHE dir " << getExpandedFilename(LL_PATH_CACHE,"") << LL_ENDL;
}
- mCAFile = getExpandedFilename(LL_PATH_EXECUTABLE, "ca-bundle.crt");
+ mCAFile = add(mAppRODataDir, "ca-bundle.crt");
}
U32 LLDir_Linux::countFilesInDir(const std::string &dirname, const std::string &mask)
diff --git a/indra/llfilesystem/lldir_linux.h b/indra/llfilesystem/lldir_linux.h
index bd031bd7bb..f9b0427ccd 100644
--- a/indra/llfilesystem/lldir_linux.h
+++ b/indra/llfilesystem/lldir_linux.h
@@ -24,7 +24,7 @@
* $/LicenseInfo$
*/
-#if !LL_LINUX
+#if !LL_LINUX && !__FreeBSD__
#error This header must not be included when compiling for any target other than Linux. Consider including lldir.h instead.
#endif // !LL_LINUX
diff --git a/indra/llfilesystem/lldir_mac.cpp b/indra/llfilesystem/lldir_mac.cpp
index b9be75c528..b25c654e31 100644
--- a/indra/llfilesystem/lldir_mac.cpp
+++ b/indra/llfilesystem/lldir_mac.cpp
@@ -64,7 +64,7 @@ LLDir_Mac::LLDir_Mac()
{
mDirDelimiter = "/";
- const std::string secondLifeString = "SecondLife";
+ const std::string secondLifeString = "Megapahit";
std::string executablepathstr = getSystemExecutableFolder();
diff --git a/indra/llimage/CMakeLists.txt b/indra/llimage/CMakeLists.txt
index cc75c463bc..f55d9fdf5e 100644
--- a/indra/llimage/CMakeLists.txt
+++ b/indra/llimage/CMakeLists.txt
@@ -8,9 +8,13 @@ include(LLImage)
include(JPEG)
include(LLKDU)
include(ZLIBNG)
+if (LL_TESTS)
include(LLAddBuildTest)
+endif ()
include(bugsplat)
+if (LL_TESTS)
include(Tut)
+endif ()
set(llimage_SOURCE_FILES
llimagebmp.cpp
@@ -63,6 +67,18 @@ target_link_libraries(llimage
ll::libjpeg
)
+if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ set_source_files_properties(llimageworker.cpp PROPERTIES COMPILE_FLAGS -Wno-int-in-bool-context)
+ set_source_files_properties(
+ llimage.cpp
+ llimagefilter.cpp
+ PROPERTIES COMPILE_FLAGS -Wno-stringop-overflow)
+ endif()
+endif ()
+
+include(LibraryInstall)
+
# Add tests
if (LL_TESTS)
SET(llimage_TEST_SOURCE_FILES
diff --git a/indra/llimage/llimagejpeg.cpp b/indra/llimage/llimagejpeg.cpp
index 0e7ec365d4..dd3efb3459 100644
--- a/indra/llimage/llimagejpeg.cpp
+++ b/indra/llimage/llimagejpeg.cpp
@@ -79,11 +79,13 @@ bool LLImageJPEG::updateData()
//try/catch will crash on Mac and Linux if LLImageJPEG::errorExit throws an error
//so as instead, we use setjmp/longjmp to avoid this crash, which is the best we can get. --bao
//
+#if !(LL_DARWIN && defined(__arm64__))
if(setjmp(sSetjmpBuffer))
{
jpeg_destroy_decompress(&cinfo);
return false;
}
+#endif
try
{
// Now we can initialize the JPEG decompression object.
@@ -223,11 +225,13 @@ bool LLImageJPEG::decode(LLImageRaw* raw_image, F32 decode_time)
//try/catch will crash on Mac and Linux if LLImageJPEG::errorExit throws an error
//so as instead, we use setjmp/longjmp to avoid this crash, which is the best we can get. --bao
//
+#if !(LL_DARWIN && defined(__arm64__))
if(setjmp(sSetjmpBuffer))
{
jpeg_destroy_decompress(&cinfo);
return true; // done
}
+#endif
try
{
// Now we can initialize the JPEG decompression object.
@@ -433,7 +437,9 @@ void LLImageJPEG::errorExit( j_common_ptr cinfo )
jpeg_destroy(cinfo);
// Return control to the setjmp point
+#if !(LL_DARWIN && defined(__arm64__))
longjmp(sSetjmpBuffer, 1) ;
+#endif
}
// Decide whether to emit a trace or warning message.
@@ -545,6 +551,7 @@ bool LLImageJPEG::encode( const LLImageRaw* raw_image, F32 encode_time )
//try/catch will crash on Mac and Linux if LLImageJPEG::errorExit throws an error
//so as instead, we use setjmp/longjmp to avoid this crash, which is the best we can get. --bao
//
+#if !(LL_DARWIN && defined(__arm64__))
if( setjmp(sSetjmpBuffer) )
{
// If we get here, the JPEG code has signaled an error.
@@ -555,6 +562,7 @@ bool LLImageJPEG::encode( const LLImageRaw* raw_image, F32 encode_time )
mOutputBufferSize = 0;
return false;
}
+#endif
try
{
diff --git a/indra/llimagej2coj/CMakeLists.txt b/indra/llimagej2coj/CMakeLists.txt
index 93e85668dd..5a2aac9e84 100644
--- a/indra/llimagej2coj/CMakeLists.txt
+++ b/indra/llimagej2coj/CMakeLists.txt
@@ -21,9 +21,11 @@ list(APPEND llimagej2coj_SOURCE_FILES ${llimagej2coj_HEADER_FILES})
add_library (llimagej2coj ${llimagej2coj_SOURCE_FILES})
+include_directories( ${CMAKE_SOURCE_DIR}/llimage )
target_link_libraries( llimagej2coj
llcommon
- llimage
+ #llimage
ll::openjpeg
)
+include(LibraryInstall)
diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp
index d8f17561b3..218cfefb28 100644
--- a/indra/llimagej2coj/llimagej2coj.cpp
+++ b/indra/llimagej2coj/llimagej2coj.cpp
@@ -28,9 +28,9 @@
#include "llimagej2coj.h"
// this is defined so that we get static linking.
-#include "openjpeg.h"
-#include "event.h"
-#include "cio.h"
+#include <openjpeg/openjpeg.h>
+#include <openjpeg/event.h>
+#include <openjpeg/cio.h>
#include "owning_ptr.h"
#include <string>
diff --git a/indra/llinventory/CMakeLists.txt b/indra/llinventory/CMakeLists.txt
index 93a586759f..88a2c33ae0 100644
--- a/indra/llinventory/CMakeLists.txt
+++ b/indra/llinventory/CMakeLists.txt
@@ -59,6 +59,8 @@ add_library (llinventory ${llinventory_SOURCE_FILES})
target_link_libraries( llinventory llcommon llmath llmessage llxml )
target_include_directories( llinventory INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
+include(LibraryInstall)
+
#add unit tests
if (LL_TESTS)
INCLUDE(LLAddBuildTest)
diff --git a/indra/llinventory/llsettingsbase.cpp b/indra/llinventory/llsettingsbase.cpp
index 0ee71de3a1..41162963f2 100644
--- a/indra/llinventory/llsettingsbase.cpp
+++ b/indra/llinventory/llsettingsbase.cpp
@@ -472,6 +472,7 @@ bool LLSettingsBase::validate()
LLSD LLSettingsBase::settingValidation(LLSD &settings, validation_list_t &validations, bool partial)
{
+ using boost::placeholders::_1, boost::placeholders::_2;
static Validator validateName(SETTING_NAME, false, LLSD::TypeString, boost::bind(&Validator::verifyStringLength, _1, _2, 63));
static Validator validateId(SETTING_ID, false, LLSD::TypeUUID);
static Validator validateHash(SETTING_HASH, false, LLSD::TypeInteger);
diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp
index ce6244d038..03beebd9e1 100644
--- a/indra/llinventory/llsettingssky.cpp
+++ b/indra/llinventory/llsettingssky.cpp
@@ -150,6 +150,7 @@ const F32 LLSettingsSky::DOME_RADIUS(15000.f);
namespace
{
+ using boost::placeholders::_1, boost::placeholders::_2;
LLSettingsSky::validation_list_t legacyHazeValidationList()
{
diff --git a/indra/llinventory/llsettingswater.cpp b/indra/llinventory/llsettingswater.cpp
index b30dbfeac2..191129d725 100644
--- a/indra/llinventory/llsettingswater.cpp
+++ b/indra/llinventory/llsettingswater.cpp
@@ -318,6 +318,7 @@ LLSettingsWater::validation_list_t LLSettingsWater::validationList()
if (validation.empty())
{
+ using boost::placeholders::_1, boost::placeholders::_2;
validation.push_back(Validator(SETTING_BLUR_MULTIPLIER, true, LLSD::TypeReal,
boost::bind(&Validator::verifyFloatRange, _1, _2, llsd::array(-0.5f, 0.5f))));
validation.push_back(Validator(SETTING_FOG_COLOR, true, LLSD::TypeArray,
diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt
index 801d3fe63e..fb911e3445 100644
--- a/indra/llmath/CMakeLists.txt
+++ b/indra/llmath/CMakeLists.txt
@@ -57,6 +57,7 @@ set(llmath_HEADER_FILES
llmath.h
llmatrix3a.h
llmatrix3a.inl
+ llmatrix4a.h
llmodularmath.h
lloctree.h
llperlin.h
@@ -95,11 +96,20 @@ set(llmath_HEADER_FILES
list(APPEND llmath_SOURCE_FILES ${llmath_HEADER_FILES})
+include_directories(${LIBS_PREBUILT_DIR}/include)
+
add_library (llmath ${llmath_SOURCE_FILES})
target_link_libraries(llmath llcommon llmeshoptimizer)
target_include_directories( llmath INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
+if (USESYSTEMLIBS AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ set_source_files_properties(llcalc.cpp PROPERTIES
+ COMPILE_FLAGS -Wno-dangling-pointer)
+endif ()
+
+include(LibraryInstall)
+
# Add tests
if (LL_TESTS)
include(LLAddBuildTest)
diff --git a/indra/llmath/llsimdmath.h b/indra/llmath/llsimdmath.h
index 592bb124c2..b9e86614f8 100644
--- a/indra/llmath/llsimdmath.h
+++ b/indra/llmath/llsimdmath.h
@@ -35,7 +35,7 @@
// because some versions of VS complain about '__SSE2__'
//#if ( ( LL_DARWIN || LL_LINUX ) && !(__SSE2__) ) || ( LL_WINDOWS && ( _M_IX86_FP < 2 && ADDRESS_SIZE == 32 ) )
#if ( ( LL_DARWIN || LL_LINUX ) )
- #if !(__SSE2__)
+ #if !(__SSE2__ || __ARM_NEON)
#error SSE2 not enabled. LLVector4a and related class will not compile.
#endif
#elif ( LL_WINDOWS && ( _M_IX86_FP < 2 && ADDRESS_SIZE == 32 ) )
@@ -46,8 +46,12 @@
#include <stdint.h>
#endif
+#if defined(__i386__) || defined(__x86_64__)
#include <xmmintrin.h>
#include <emmintrin.h>
+#else
+#include <sse2neon.h>
+#endif
#include "llmemory.h"
#include "llsimdtypes.h"
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index 00a56edf68..8688c66534 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -55,7 +55,11 @@
#include "mikktspace/mikktspace.hh"
+#if LL_USESYSTEMLIBS
+#include <meshoptimizer.h>
+#else
#include "meshoptimizer/meshoptimizer.h"
+#endif
#define DEBUG_SILHOUETTE_BINORMALS 0
#define DEBUG_SILHOUETTE_NORMALS 0 // TomY: Use this to display normals using the silhouette
diff --git a/indra/llmeshoptimizer/CMakeLists.txt b/indra/llmeshoptimizer/CMakeLists.txt
index dfac44c296..100e4448cb 100644
--- a/indra/llmeshoptimizer/CMakeLists.txt
+++ b/indra/llmeshoptimizer/CMakeLists.txt
@@ -25,10 +25,12 @@ list(APPEND llmeshoptimizer_SOURCE_FILES ${llmeshoptimizer_HEADER_FILES})
add_library (llmeshoptimizer ${llmeshoptimizer_SOURCE_FILES})
target_include_directories( llmeshoptimizer INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${CMAKE_SOURCE_DIR}/llmath)
target_link_libraries(llmeshoptimizer
llcommon
- llmath
ll::meshoptimizer)
+include(LibraryInstall)
+
# Add tests
diff --git a/indra/llmessage/CMakeLists.txt b/indra/llmessage/CMakeLists.txt
index b2757a7306..110759a59c 100644
--- a/indra/llmessage/CMakeLists.txt
+++ b/indra/llmessage/CMakeLists.txt
@@ -3,12 +3,15 @@
project(llmessage)
include(00-Common)
+if (LL_TESTS)
include(LLAddBuildTest)
+endif ()
include(LLCommon)
include(LLCoreHttp)
+if (LL_TESTS)
include(LLAddBuildTest)
-include(Python)
include(Tut)
+endif ()
include(Python)
set(llmessage_SOURCE_FILES
@@ -128,6 +131,7 @@ set(llmessage_HEADER_FILES
llmessagebuilder.h
llmessageconfig.h
llmessagereader.h
+ llmessagesenderinterface.h
llmessagetemplate.h
llmessagetemplateparser.h
llmessagethrottle.h
@@ -194,6 +198,15 @@ target_link_libraries(
)
target_include_directories( llmessage INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
+if (NOT (USE_AUTOBUILD_3P OR USE_CONAN))
+ if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ set_source_files_properties(llnamevalue.cpp PROPERTIES
+ COMPILE_FLAGS -Wno-stringop-truncation)
+ endif()
+endif ()
+
+include(LibraryInstall)
+
# tests
if (LL_TESTS)
SET(llmessage_TEST_SOURCE_FILES
diff --git a/indra/llplugin/CMakeLists.txt b/indra/llplugin/CMakeLists.txt
index 005426acde..7fa5c957b6 100644
--- a/indra/llplugin/CMakeLists.txt
+++ b/indra/llplugin/CMakeLists.txt
@@ -38,3 +38,4 @@ target_include_directories( llplugin INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries( llplugin llcommon llmath llrender llmessage )
add_subdirectory(slplugin)
+include(LibraryInstall)
diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp
index 0527c76a2a..17f403e8e8 100644
--- a/indra/llplugin/llpluginclassmedia.cpp
+++ b/indra/llplugin/llpluginclassmedia.cpp
@@ -33,7 +33,9 @@
#include "llpluginmessageclasses.h"
#include "llcontrol.h"
+#if LL_DARWIN || LL_LINUX || __FreeBSD__
extern LLControlGroup gSavedSettings;
+#endif
#if LL_DARWIN
extern bool gHiDPISupport;
#endif
@@ -934,8 +936,10 @@ void LLPluginClassMedia::setUserDataPath(const std::string &user_data_path_cache
message.setValue("username", username); // cef shares cache between users but creates user-based contexts
message.setValue("cef_log_file", user_data_path_cef_log);
+#if LL_DARWIN || LL_LINUX || __FreeBSD__
bool cef_verbose_log = gSavedSettings.getBOOL("CefVerboseLog");
message.setValueBoolean("cef_verbose_log", cef_verbose_log);
+#endif
sendMessage(message);
}
@@ -1207,6 +1211,14 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message)
mMediaName = message.getValue("name");
mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_NAME_CHANGED);
}
+ else if(message_name == "title_text")
+ {
+ mMediaTitle = message.getValue("title");
+ }
+ else if(message_name == "nowplaying_text")
+ {
+ mMediaNowPlaying = message.getValue("nowplaying");
+ }
else if(message_name == "pick_file")
{
mIsMultipleFilePick = message.getValueBoolean("multiple_files");
diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h
index 5d2f3bbb79..80862284ff 100644
--- a/indra/llplugin/llpluginclassmedia.h
+++ b/indra/llplugin/llpluginclassmedia.h
@@ -311,6 +311,8 @@ public:
const std::string& getMediaName() const { return mMediaName; };
+ const std::string& getMediaTitle() const { return mMediaTitle; };
+ const std::string& getMediaNowPlaying() const { return mMediaNowPlaying; };
std::string getMediaDescription() const { return mMediaDescription; };
// Crash the plugin. If you use this outside of a testbed, you will be punished.
@@ -428,6 +430,8 @@ protected:
bool mCanPaste;
std::string mMediaName;
+ std::string mMediaTitle;
+ std::string mMediaNowPlaying;
std::string mMediaDescription;
LLColor4 mBackgroundColor;
diff --git a/indra/llplugin/llpluginsharedmemory.cpp b/indra/llplugin/llpluginsharedmemory.cpp
index 28a0f0bf4e..955c9f90d7 100644
--- a/indra/llplugin/llpluginsharedmemory.cpp
+++ b/indra/llplugin/llpluginsharedmemory.cpp
@@ -45,8 +45,12 @@
#define USE_WIN32_SHARED_MEMORY 1
#elif LL_DARWIN
#define USE_SHM_OPEN_SHARED_MEMORY 1
+#elif _POSIX_SHARED_MEMORY_OBJECTS == -1
+ #define USE_APR_SHARED_MEMORY 1
#elif LL_LINUX
#define USE_SHM_OPEN_SHARED_MEMORY 1
+#elif __FreeBSD__
+ #define USE_SHM_OPEN_SHARED_MEMORY 1
#endif
diff --git a/indra/llplugin/slplugin/CMakeLists.txt b/indra/llplugin/slplugin/CMakeLists.txt
index 0ea6495eac..3ad6d10336 100644
--- a/indra/llplugin/slplugin/CMakeLists.txt
+++ b/indra/llplugin/slplugin/CMakeLists.txt
@@ -56,10 +56,23 @@ if (DARWIN)
COMMAND mkdir
ARGS
-p
- ${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/SLPlugin.app/Contents/Resources
+ ${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/SLPlugin.app/Contents/Frameworks
)
endif (DARWIN)
+if (BUILD_SHARED_LIBS)
+ set_target_properties(SLPlugin PROPERTIES LINK_FLAGS_RELEASE
+ "${LINK_FLAGS_RELEASE} -Wl,--allow-shlib-undefined")
+endif ()
+
+if (INSTALL)
+ if (DARWIN)
+ install(TARGETS ${PROJECT_NAME} DESTINATION .)
+ else (DARWIN)
+ install(TARGETS ${PROJECT_NAME} DESTINATION libexec/${VIEWER_BINARY_NAME})
+ endif (DARWIN)
+endif (INSTALL)
+
if (LL_TESTS)
ll_deploy_sharedlibs_command(SLPlugin)
endif (LL_TESTS)
diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp
index 81a27cf2e5..ae26b9d452 100644
--- a/indra/llplugin/slplugin/slplugin.cpp
+++ b/indra/llplugin/slplugin/slplugin.cpp
@@ -46,7 +46,7 @@ using namespace std;
#include "slplugin-objc.h"
#endif
-#if LL_DARWIN || LL_LINUX
+#if LL_DARWIN || LL_LINUX || __FreeBSD__
#include <signal.h>
#endif
@@ -64,7 +64,7 @@ using namespace std;
Now that SLPlugin is a bundled app on the Mac, this is no longer necessary (it can just use a regular Info.plist file), but I'm leaving this comment in for posterity.
*/
-#if LL_DARWIN || LL_LINUX
+#if LL_DARWIN || LL_LINUX || __FreeBSD__
// Signal handlers to make crashes not show an OS dialog...
static void crash_handler(int sig)
{
@@ -163,7 +163,7 @@ int main(int argc, char **argv)
// display a crash message if something bad happens. The host app will
// see the missing heartbeat and log appropriately.
initExceptionHandler();
-#elif LL_DARWIN || LL_LINUX
+#elif LL_DARWIN || LL_LINUX || __FreeBSD__
if(argc < 2)
{
LL_ERRS("slplugin") << "usage: " << argv[0] << " launcher_port" << LL_ENDL;
diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt
index 3d8e02cb16..e9f9e06e1f 100644
--- a/indra/llprimitive/CMakeLists.txt
+++ b/indra/llprimitive/CMakeLists.txt
@@ -3,6 +3,7 @@
project(llprimitive)
include(00-Common)
+include(Prebuilt)
include(LLCommon)
include(LLCoreHttp)
include(LLPhysicsExtensions)
@@ -10,6 +11,25 @@ include(LLPrimitive)
include(GLM)
include(TinyGLTF)
+if(LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD )
+ prepare_thirdparty(
+ "https://github.com/secondlife/3p-colladadom/archive/refs/tags/v2.3-r7.tar.gz"
+ "colladadom-v2.3-r7.tar.gz"
+ "3p-colladadom-2.3-r7"
+ "collada-dom-v2.3-r7.patch"
+ "0d7a13531eb0de8c617b48af90c3b5b22c2a0b566069d1a0c36f9602dbfeb9ebab1516556e6dda34645d63354c3c6539375d7e5b8c0b36baba11312d18a3c705"
+ )
+ set(OPT_COLLADA14 TRUE)
+ add_subdirectory(
+ "${CMAKE_SOURCE_DIR}/../../3p-colladadom-2.3-r7" "colladadom")
+ target_include_directories(
+ ll::colladadom INTERFACE
+ ${colladadom_SOURCE_DIR}/include
+ ${colladadom_SOURCE_DIR}/include/1.4
+ )
+ target_link_libraries( ll::colladadom INTERFACE collada14dom )
+endif(LINUX OR CMAKE_SYSTEM_NAME MATCHES FreeBSD )
+
set(llprimitive_SOURCE_FILES
lldaeloader.cpp
llgltfloader.cpp
@@ -72,6 +92,8 @@ target_link_libraries(llprimitive
ll::glm
)
+include(LibraryInstall)
+
#add unit tests
if (LL_TESTS)
INCLUDE(LLAddBuildTest)
diff --git a/indra/llprimitive/lldaeloader.h b/indra/llprimitive/lldaeloader.h
index 4531e03474..c6e5ea42fc 100644
--- a/indra/llprimitive/lldaeloader.h
+++ b/indra/llprimitive/lldaeloader.h
@@ -29,6 +29,7 @@
#include "llmodelloader.h"
+#ifndef LL_USESYSTEMLIBS
class DAE;
class daeElement;
class domProfile_COMMON;
@@ -38,6 +39,7 @@ class domTranslate;
class domController;
class domSkin;
class domMesh;
+#endif
class LLDAELoader : public LLModelLoader
{
diff --git a/indra/llprimitive/llgltfmaterial.h b/indra/llprimitive/llgltfmaterial.h
index 10df4c8ee1..b89853c9fd 100644
--- a/indra/llprimitive/llgltfmaterial.h
+++ b/indra/llprimitive/llgltfmaterial.h
@@ -36,6 +36,7 @@
#include <array>
#include <string>
+#include <array>
#include <map>
namespace tinygltf
diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h
index c89037a2d2..af5bbf2da8 100644
--- a/indra/llprimitive/llmodel.h
+++ b/indra/llprimitive/llmodel.h
@@ -35,8 +35,10 @@
#include <boost/align/aligned_allocator.hpp>
+#ifndef LL_USESYSTEMLIBS
class daeElement;
class domMesh;
+#endif
#define MAX_MODEL_FACES 8
diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp
index c5d6076b98..c116f69a6d 100644
--- a/indra/llprimitive/llprimitive.cpp
+++ b/indra/llprimitive/llprimitive.cpp
@@ -274,7 +274,7 @@ void LLPrimitive::setAllTETextures(const LLUUID &tex_id)
//===============================================================
void LLPrimitive::setTE(const U8 index, const LLTextureEntry& te)
{
- if(mTextureList.copyTexture(index, te) != TEM_CHANGE_NONE && te.getBumpmap() > 0)
+ if(mTextureList.copyTexture(index, &te) != TEM_CHANGE_NONE && te.getBumpmap() > 0)
{
mNumBumpmapTEs++;
}
@@ -753,7 +753,7 @@ void LLPrimitive::copyTEs(const LLPrimitive *primitivep)
}
for (i = 0; i < num_tes; i++)
{
- mTextureList.copyTexture(i, *(primitivep->getTE(i)));
+ mTextureList.copyTexture(i, primitivep->getTE(i));
}
}
diff --git a/indra/llprimitive/llprimtexturelist.cpp b/indra/llprimitive/llprimtexturelist.cpp
index 76322a9d29..7f60d8025a 100644
--- a/indra/llprimitive/llprimtexturelist.cpp
+++ b/indra/llprimitive/llprimtexturelist.cpp
@@ -125,7 +125,7 @@ void LLPrimTextureList::take(LLPrimTextureList& other_list)
// virtual
// copies LLTextureEntry 'te'
// returns TEM_CHANGE_TEXTURE if successful, otherwise TEM_CHANGE_NONE
-S32 LLPrimTextureList::copyTexture(const U8 index, const LLTextureEntry& te)
+S32 LLPrimTextureList::copyTexture(const U8 index, const LLTextureEntry* te)
{
if (size_t(index) >= mEntryList.size())
{
@@ -137,7 +137,7 @@ S32 LLPrimTextureList::copyTexture(const U8 index, const LLTextureEntry& te)
// we're changing an existing entry
llassert(mEntryList[index]);
delete (mEntryList[index]);
- mEntryList[index] = te.newCopy();
+ mEntryList[index] = te->newCopy();
return TEM_CHANGE_TEXTURE;
}
diff --git a/indra/llprimitive/llprimtexturelist.h b/indra/llprimitive/llprimtexturelist.h
index 79744e9f08..b8bdad60b3 100644
--- a/indra/llprimitive/llprimtexturelist.h
+++ b/indra/llprimitive/llprimtexturelist.h
@@ -71,7 +71,7 @@ public:
// copies LLTextureEntry 'te'
// returns TEM_CHANGE_TEXTURE if successful, otherwise TEM_CHANGE_NONE
- S32 copyTexture(const U8 index, const LLTextureEntry& te);
+ S32 copyTexture(const U8 index, const LLTextureEntry* te);
// takes ownership of LLTextureEntry* 'te'
// returns TEM_CHANGE_TEXTURE if successful, otherwise TEM_CHANGE_NONE
diff --git a/indra/llrender/CMakeLists.txt b/indra/llrender/CMakeLists.txt
index 04401e9bea..6cd85daa6f 100644
--- a/indra/llrender/CMakeLists.txt
+++ b/indra/llrender/CMakeLists.txt
@@ -104,3 +104,4 @@ target_link_libraries(llrender
OpenGL::GLU
)
+include(LibraryInstall)
diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp
index 26e4aaad52..53691bafe2 100644
--- a/indra/llrender/llcubemap.cpp
+++ b/indra/llrender/llcubemap.cpp
@@ -214,7 +214,9 @@ void LLCubeMap::initEnvironmentMap(const std::vector<LLPointer<LLImageRaw> >& ra
enableTexture(0);
bind();
mImages[0]->setFilteringOption(LLTexUnit::TFO_ANISOTROPIC);
+#if GL_VERSION_3_2
glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
+#endif
glGenerateMipmap(GL_TEXTURE_CUBE_MAP);
gGL.getTexUnit(0)->disable();
disable();
diff --git a/indra/llrender/llcubemaparray.cpp b/indra/llrender/llcubemaparray.cpp
index 4f5e13765a..4e7fa7316e 100644
--- a/indra/llrender/llcubemaparray.cpp
+++ b/indra/llrender/llcubemaparray.cpp
@@ -132,8 +132,10 @@ void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count, bool us
U32 mip_resolution = resolution;
while (mip_resolution >= 1)
{
+#if GL_VERSION_4_0
glTexImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, mip, format, mip_resolution, mip_resolution, count * 6, 0,
GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
+#endif
if (!use_mips)
{
diff --git a/indra/llrender/llfontfreetypesvg.cpp b/indra/llrender/llfontfreetypesvg.cpp
index 15251fe1b1..04825ae8a3 100644
--- a/indra/llrender/llfontfreetypesvg.cpp
+++ b/indra/llrender/llfontfreetypesvg.cpp
@@ -34,9 +34,17 @@
#endif
#define NANOSVG_IMPLEMENTATION
+#if __FreeBSD__
+#include <nanosvg.h>
+#else
#include <nanosvg/nanosvg.h>
+#endif
#define NANOSVGRAST_IMPLEMENTATION
+#if __FreeBSD__
+#include <nanosvgrast.h>
+#else
#include <nanosvg/nanosvgrast.h>
+#endif
#if LL_WINDOWS
#pragma warning (pop)
diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 9209cdcb51..273871678c 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -77,7 +77,7 @@ static const std::string HEADLESS_VERSION_STRING("1.0");
llofstream gFailLog;
-#if GL_ARB_debug_output
+#if GL_ARB_debug_output || GL_KHR_debug
#ifndef APIENTRY
#define APIENTRY
@@ -100,9 +100,9 @@ void APIENTRY gl_debug_callback(GLenum source,
}*/
if (gGLManager.mIsDisabled &&
- severity == GL_DEBUG_SEVERITY_HIGH_ARB &&
- source == GL_DEBUG_SOURCE_API_ARB &&
- type == GL_DEBUG_TYPE_ERROR_ARB &&
+ severity == GL_DEBUG_SEVERITY_HIGH &&
+ source == GL_DEBUG_SOURCE_API &&
+ type == GL_DEBUG_TYPE_ERROR &&
id == GL_INVALID_VALUE)
{
// Suppress messages about deleting already deleted objects called from LLViewerWindow::stopGL()
@@ -162,7 +162,11 @@ void APIENTRY gl_debug_callback(GLenum source,
if (ubo != 0)
{
glGetBufferParameteriv(GL_UNIFORM_BUFFER, GL_BUFFER_SIZE, &ubo_size);
+#if GL_EXT_buffer_storage
+ glGetBufferParameteriv(GL_UNIFORM_BUFFER, GL_BUFFER_IMMUTABLE_STORAGE_EXT, &ubo_immutable);
+#else
glGetBufferParameteriv(GL_UNIFORM_BUFFER, GL_BUFFER_IMMUTABLE_STORAGE, &ubo_immutable);
+#endif
}
// No needs to halt when is called from LLViewerWindow::stopGL()
@@ -235,6 +239,8 @@ PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC wglBlitContextFramebufferAMD = n
PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = nullptr;
PFNWGLGETSWAPINTERVALEXTPROC wglGetSwapIntervalEXT = nullptr;
+/*
+
// GL_VERSION_1_2
//PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements = nullptr;
//PFNGLTEXIMAGE3DPROC glTexImage3D = nullptr;
@@ -979,6 +985,7 @@ PFNGLMULTIDRAWARRAYSINDIRECTCOUNTPROC glMultiDrawArraysIndirectCount = nullpt
PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTPROC glMultiDrawElementsIndirectCount = nullptr;
PFNGLPOLYGONOFFSETCLAMPPROC glPolygonOffsetClamp = nullptr;
+*/
#endif
LLGLManager gGLManager;
@@ -1129,6 +1136,7 @@ bool LLGLManager::initGL()
#endif
}
+#if GL_VERSION_1_3
if (mGLVersion >= 2.1f && LLImageGL::sCompressTextures)
{ //use texture compression
glHint(GL_TEXTURE_COMPRESSION_HINT, GL_NICEST);
@@ -1137,6 +1145,7 @@ bool LLGLManager::initGL()
{ //GL version is < 3.0, always disable texture compression
LLImageGL::sCompressTextures = false;
}
+#endif
// Trailing space necessary to keep "nVidia Corpor_ati_on" cards
// from being recognized as ATI.
@@ -1157,7 +1166,7 @@ bool LLGLManager::initGL()
mIsNVIDIA = true;
}
else if (mGLVendor.find("INTEL") != std::string::npos
-#if LL_LINUX
+#if LL_LINUX || __FreeBSD__
// The Mesa-based drivers put this in the Renderer string,
// not the Vendor string.
|| mGLRenderer.find("INTEL") != std::string::npos
@@ -1253,10 +1262,12 @@ bool LLGLManager::initGL()
}
glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &mNumTextureImageUnits);
+#if GL_VERSION_3_2
glGetIntegerv(GL_MAX_COLOR_TEXTURE_SAMPLES, &mMaxColorTextureSamples);
glGetIntegerv(GL_MAX_DEPTH_TEXTURE_SAMPLES, &mMaxDepthTextureSamples);
glGetIntegerv(GL_MAX_INTEGER_SAMPLES, &mMaxIntegerSamples);
glGetIntegerv(GL_MAX_SAMPLE_MASK_WORDS, &mMaxSampleMaskWords);
+#endif
glGetIntegerv(GL_MAX_SAMPLES, &mMaxSamples);
glGetIntegerv(GL_MAX_UNIFORM_BLOCK_SIZE, &mMaxUniformBlockSize);
@@ -1266,7 +1277,7 @@ bool LLGLManager::initGL()
if (mGLVersion >= 4.59f)
{
- glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY, &mMaxAnisotropy);
+ glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &mMaxAnisotropy);
}
initGLStates();
@@ -1446,6 +1457,7 @@ void LLGLManager::initExtensions()
mInited = true;
+/*
#if LL_WINDOWS
LL_DEBUGS("RenderInit") << "GL Probe: Getting symbols" << LL_ENDL;
@@ -2283,6 +2295,7 @@ void LLGLManager::initExtensions()
glPolygonOffsetClamp = (PFNGLPOLYGONOFFSETCLAMPPROC)GLH_EXT_GET_PROC_ADDRESS("glPolygonOffsetClamp");
#endif
+*/
}
void rotate_quat(LLQuaternion& rotation)
@@ -2309,12 +2322,14 @@ void log_glerror()
error = glGetError();
while (LL_UNLIKELY(error))
{
+#if GLU_VERSION_1_1
GLubyte const * gl_error_msg = gluErrorString(error);
if (NULL != gl_error_msg)
{
LL_WARNS() << "GL Error: " << error << " GL Error String: " << gl_error_msg << LL_ENDL ;
}
else
+#endif // GLU_VERSION_1_1
{
// gluErrorString returns NULL for some extensions' error codes.
// you'll probably have to grep for the number in glext.h.
@@ -2333,6 +2348,7 @@ void do_assert_glerror()
if (LL_UNLIKELY(error))
{
quit = true;
+#if GLU_VERSION_1_1
GLubyte const * gl_error_msg = gluErrorString(error);
if (NULL != gl_error_msg)
{
@@ -2345,6 +2361,7 @@ void do_assert_glerror()
}
}
else
+#endif // GLU_VERSION_1_1
{
// gluErrorString returns NULL for some extensions' error codes.
// you'll probably have to grep for the number in glext.h.
@@ -2419,8 +2436,10 @@ void LLGLState::initClass()
// sStateMap[GL_TEXTURE_2D] = GL_TRUE;
//make sure multisample defaults to disabled
+#if GL_EXT_multisample || GL_EXT_multisampled_compatibility
sStateMap[GL_MULTISAMPLE] = GL_FALSE;
glDisable(GL_MULTISAMPLE);
+#endif
}
//static
@@ -2435,6 +2454,7 @@ void LLGLState::restoreGL()
void LLGLState::resetTextureStates()
{
gGL.flush();
+#if GL_VERSION_1_3
GLint maxTextureUnits;
glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &maxTextureUnits);
@@ -2444,6 +2464,7 @@ void LLGLState::resetTextureStates()
glClientActiveTexture(GL_TEXTURE0+j);
j == 0 ? gGL.getTexUnit(j)->enable(LLTexUnit::TT_TEXTURE) : gGL.getTexUnit(j)->disable();
}
+#endif
}
void LLGLState::dumpStates()
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
index 921adc0f8c..a2685376cd 100644
--- a/indra/llrender/llglheaders.h
+++ b/indra/llrender/llglheaders.h
@@ -27,7 +27,7 @@
#ifndef LL_LLGLHEADERS_H
#define LL_LLGLHEADERS_H
-#if LL_MESA
+#if LL_MESA || LL_LINUX || __FreeBSD__
//----------------------------------------------------------------------------
// MESA headers
// quotes so we get libraries/.../GL/ version
@@ -839,10 +839,14 @@ extern PFNGLPOLYGONOFFSETCLAMPPROC glPolygonOffsetClamp;
#define GL_EXT_separate_specular_color 1
#define GL_GLEXT_PROTOTYPES
-#include "GL/glext.h"
+#include <OpenGL/glext.h>
+
+#define GL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED
+#include <OpenGL/gl3.h>
#include "GL/glh_extensions.h"
+#if 0
// These symbols don't exist on 10.3.9, so they have to be declared weak. Redeclaring them here fixes the problem.
// Note that they also must not be called on 10.3.9. This should be taken care of by a runtime check for the existence of the GL extension.
#include <AvailabilityMacros.h>
@@ -1044,6 +1048,7 @@ extern void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
#endif
#include <OpenGL/gl.h>
+#endif // 0
#elif LL_LINUX
diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp
index bbbce1965e..147d3a5de2 100644
--- a/indra/llrender/llglslshader.cpp
+++ b/indra/llrender/llglslshader.cpp
@@ -255,12 +255,18 @@ void LLGLSLShader::placeProfileQuery(bool for_runtime)
glGenQueries(1, &mPrimitivesQuery);
}
- glBeginQuery(GL_TIME_ELAPSED, mTimerQuery);
+#if GL_EXT_timer_query || GL_EXT_disjoint_timer_query
+ glBeginQuery(GL_TIME_ELAPSED_EXT, mTimerQuery);
+#endif
if (!for_runtime)
{
+#if GL_VERSION_1_5
glBeginQuery(GL_SAMPLES_PASSED, mSamplesQuery);
+#endif
+#if GL_VERSION_3_0
glBeginQuery(GL_PRIMITIVES_GENERATED, mPrimitivesQuery);
+#endif
}
}
}
@@ -271,19 +277,30 @@ bool LLGLSLShader::readProfileQuery(bool for_runtime, bool force_read)
{
if (!mProfilePending)
{
- glEndQuery(GL_TIME_ELAPSED);
+#if GL_EXT_timer_query || GL_EXT_disjoint_timer_query
+ glEndQuery(GL_TIME_ELAPSED_EXT);
+#endif
if (!for_runtime)
{
+#if GL_VERSION_1_5
glEndQuery(GL_SAMPLES_PASSED);
+#endif
+#if GL_VERSION_3_0
glEndQuery(GL_PRIMITIVES_GENERATED);
+#endif
}
mProfilePending = for_runtime;
}
if (mProfilePending && for_runtime && !force_read)
{
+#if GL_ARB_timer_query
GLuint64 result = 0;
glGetQueryObjectui64v(mTimerQuery, GL_QUERY_RESULT_AVAILABLE, &result);
+#else
+ GLuint result = 0;
+ glGetQueryObjectuiv(mTimerQuery, GL_QUERY_RESULT_AVAILABLE, &result);
+#endif
if (result != GL_TRUE)
{
@@ -291,22 +308,34 @@ bool LLGLSLShader::readProfileQuery(bool for_runtime, bool force_read)
}
}
+#if GL_ARB_timer_query
GLuint64 time_elapsed = 0;
glGetQueryObjectui64v(mTimerQuery, GL_QUERY_RESULT, &time_elapsed);
+#else
+ GLuint time_elapsed = 0;
+ glGetQueryObjectuiv(mTimerQuery, GL_QUERY_RESULT, &time_elapsed);
+#endif
mTimeElapsed += time_elapsed;
mProfilePending = false;
if (!for_runtime)
{
+#if GL_ARB_timer_query
GLuint64 samples_passed = 0;
glGetQueryObjectui64v(mSamplesQuery, GL_QUERY_RESULT, &samples_passed);
GLuint64 primitives_generated = 0;
glGetQueryObjectui64v(mPrimitivesQuery, GL_QUERY_RESULT, &primitives_generated);
+#else
+ GLuint primitives_generated = 0;
+ glGetQueryObjectuiv(mPrimitivesQuery, GL_QUERY_RESULT, &primitives_generated);
+#endif
sTotalTimeElapsed += time_elapsed;
+#if GL_VERSION_1_5
sTotalSamplesDrawn += samples_passed;
mSamplesDrawn += samples_passed;
+#endif
U32 tri_count = (U32)primitives_generated / 3;
@@ -721,10 +750,14 @@ void LLGLSLShader::mapUniform(GLint index)
case GL_FLOAT_VEC2: size *= 2; break;
case GL_FLOAT_VEC3: size *= 3; break;
case GL_FLOAT_VEC4: size *= 4; break;
+#if GL_VERSION_1_1
case GL_DOUBLE: size *= 2; break;
+#if GL_VERSION_4_0
case GL_DOUBLE_VEC2: size *= 2; break;
case GL_DOUBLE_VEC3: size *= 6; break;
case GL_DOUBLE_VEC4: size *= 8; break;
+#endif // GL_VERSION_4_0
+#endif // GL_VERSION_1_1
case GL_INT_VEC2: size *= 2; break;
case GL_INT_VEC3: size *= 3; break;
case GL_INT_VEC4: size *= 4; break;
@@ -743,6 +776,7 @@ void LLGLSLShader::mapUniform(GLint index)
case GL_FLOAT_MAT3x4: size *= 12; break;
case GL_FLOAT_MAT4x2: size *= 8; break;
case GL_FLOAT_MAT4x3: size *= 12; break;
+#if GL_VERSION_4_0
case GL_DOUBLE_MAT2: size *= 8; break;
case GL_DOUBLE_MAT3: size *= 18; break;
case GL_DOUBLE_MAT4: size *= 32; break;
@@ -752,6 +786,7 @@ void LLGLSLShader::mapUniform(GLint index)
case GL_DOUBLE_MAT3x4: size *= 24; break;
case GL_DOUBLE_MAT4x2: size *= 16; break;
case GL_DOUBLE_MAT4x3: size *= 24; break;
+#endif // GL_VERSION_4_0
}
mTotalUniformSize += size;
}
@@ -815,7 +850,10 @@ GLint LLGLSLShader::mapUniformTextureChannel(GLint location, GLenum type, GLint
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_SHADER;
- if ((type >= GL_SAMPLER_1D && type <= GL_SAMPLER_2D_RECT_SHADOW) ||
+ if (
+#if GL_VERSION_2_0
+ (type >= GL_SAMPLER_1D && type <= GL_SAMPLER_2D_RECT_SHADOW) ||
+#endif
type == GL_SAMPLER_2D_MULTISAMPLE ||
type == GL_SAMPLER_CUBE_MAP_ARRAY)
{ //this here is a texture
diff --git a/indra/llrender/llglstates.h b/indra/llrender/llglstates.h
index 9bb980d7ad..68d4df8e90 100644
--- a/indra/llrender/llglstates.h
+++ b/indra/llrender/llglstates.h
@@ -166,6 +166,7 @@ public:
//----------------------------------------------------------------------------
+#if GL_VERSION_1_1
class LLGLSSpecular
{
public:
@@ -190,6 +191,7 @@ public:
}
}
};
+#endif
//----------------------------------------------------------------------------
diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp
index 17c6247670..e6522ee418 100644
--- a/indra/llrender/llimagegl.cpp
+++ b/indra/llrender/llimagegl.cpp
@@ -301,28 +301,46 @@ S32 LLImageGL::dataFormatBits(S32 dataformat)
{
switch (dataformat)
{
+#if GL_VERSION_3_0
case GL_COMPRESSED_RED: return 8;
+#endif
case GL_COMPRESSED_RG: return 16;
+#if GL_VERSION_1_3
case GL_COMPRESSED_RGB: return 24;
+#endif
+#if GL_VERSION_2_1
case GL_COMPRESSED_SRGB: return 32;
+#endif
+#if GL_VERSION_1_3
case GL_COMPRESSED_RGBA: return 32;
+#endif
+#if GL_VERSION_2_1
case GL_COMPRESSED_SRGB_ALPHA: return 32;
+#endif
+#if GL_VERSION_1_3
case GL_COMPRESSED_LUMINANCE: return 8;
case GL_COMPRESSED_LUMINANCE_ALPHA: return 16;
case GL_COMPRESSED_ALPHA: return 8;
+#endif
+#if GL_EXT_texture_compression_s3tc || GL_EXT_texture_compression_dxt1
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: return 4;
- case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: return 4;
case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: return 8;
- case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: return 8;
case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: return 8;
+#endif
+#if GL_EXT_texture_sRGB || GL_EXT_texture_compression_s3tc_srgb
+ case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: return 4;
+ case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: return 8;
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: return 8;
+#endif
case GL_LUMINANCE: return 8;
case GL_LUMINANCE8: return 8;
case GL_ALPHA: return 8;
case GL_ALPHA8: return 8;
case GL_RED: return 8;
case GL_R8: return 8;
+#if GL_VERSION_1_1
case GL_COLOR_INDEX: return 8;
+#endif
case GL_LUMINANCE_ALPHA: return 16;
case GL_LUMINANCE8_ALPHA8: return 16;
case GL_RG: return 16;
@@ -332,8 +350,10 @@ S32 LLImageGL::dataFormatBits(S32 dataformat)
case GL_RGB8: return 24;
case GL_RGBA: return 32;
case GL_RGBA8: return 32;
+#if GL_VERSION_2_1
case GL_SRGB_ALPHA: return 32;
case GL_BGRA: return 32; // Used for QuickTime media textures on the Mac
+#endif
case GL_DEPTH_COMPONENT: return 24;
case GL_DEPTH_COMPONENT24: return 24;
case GL_R16F: return 16;
@@ -355,6 +375,8 @@ S64 LLImageGL::dataFormatBytes(S32 dataformat, S32 width, S32 height)
{
switch (dataformat)
{
+#if GL_EXT_texture_compression_s3tc || GL_EXT_texture_compression_dxt1 \
+ || GL_EXT_texture_sRGB || GL_EXT_texture_compression_s3tc_srgb
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
@@ -364,6 +386,7 @@ S64 LLImageGL::dataFormatBytes(S32 dataformat, S32 width, S32 height)
if (width < 4) width = 4;
if (height < 4) height = 4;
break;
+#endif
default:
break;
}
@@ -377,23 +400,31 @@ S32 LLImageGL::dataFormatComponents(S32 dataformat)
{
switch (dataformat)
{
+#if GL_EXT_texture_compression_s3tc || GL_EXT_texture_compression_dxt1
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: return 3;
- case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: return 3;
case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: return 4;
- case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: return 4;
case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: return 4;
+#endif
+#if GL_EXT_texture_sRGB || GL_EXT_texture_compression_s3tc_srgb
+ case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: return 3;
+ case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: return 4;
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: return 4;
+#endif
case GL_LUMINANCE: return 1;
case GL_ALPHA: return 1;
case GL_RED: return 1;
+#if GL_VERSION_1_1
case GL_COLOR_INDEX: return 1;
+#endif
case GL_LUMINANCE_ALPHA: return 2;
case GL_RG: return 2;
case GL_RGB: return 3;
case GL_SRGB: return 3;
case GL_RGBA: return 4;
+#if GL_VERSION_2_1
case GL_SRGB_ALPHA: return 4;
case GL_BGRA: return 4; // Used for QuickTime media textures on the Mac
+#endif
default:
LL_ERRS() << "LLImageGL::Unknown format: " << std::hex << dataformat << std::dec << LL_ENDL;
return 0;
@@ -793,11 +824,13 @@ bool LLImageGL::setImage(const U8* data_in, bool data_hasmips /* = false */, S32
}
else
{
+#if GL_VERSION_1_1
if(mFormatSwapBytes)
{
glPixelStorei(GL_UNPACK_SWAP_BYTES, 1);
stop_glerror();
}
+#endif
LLImageGL::setManualImage(mTarget, gl_level, mFormatInternal, w, h, mFormatPrimary, GL_UNSIGNED_BYTE, (GLvoid*)data_in, mAllowCompression);
if (gl_level == 0)
@@ -806,11 +839,13 @@ bool LLImageGL::setImage(const U8* data_in, bool data_hasmips /* = false */, S32
}
updatePickMask(w, h, data_in);
+#if GL_VERSION_1_1
if(mFormatSwapBytes)
{
glPixelStorei(GL_UNPACK_SWAP_BYTES, 0);
stop_glerror();
}
+#endif
stop_glerror();
}
@@ -823,11 +858,13 @@ bool LLImageGL::setImage(const U8* data_in, bool data_hasmips /* = false */, S32
{
stop_glerror();
{
+#if GL_VERSION_1_1
if(mFormatSwapBytes)
{
glPixelStorei(GL_UNPACK_SWAP_BYTES, 1);
stop_glerror();
}
+#endif
S32 w = getWidth(mCurrentDiscardLevel);
S32 h = getHeight(mCurrentDiscardLevel);
@@ -837,10 +874,12 @@ bool LLImageGL::setImage(const U8* data_in, bool data_hasmips /* = false */, S32
//use legacy mipmap generation mode (note: making this condional can cause rendering issues)
// -- but making it not conditional triggers deprecation warnings when core profile is enabled
// (some rendering issues while core profile is enabled are acceptable at this point in time)
+#if GL_VERSION_1_4
if (!LLRender::sGLCoreProfile)
{
glTexParameteri(mTarget, GL_GENERATE_MIPMAP, GL_TRUE);
}
+#endif
LLImageGL::setManualImage(mTarget, 0, mFormatInternal,
w, h,
@@ -851,11 +890,13 @@ bool LLImageGL::setImage(const U8* data_in, bool data_hasmips /* = false */, S32
updatePickMask(w, h, data_in);
+#if GL_VERSION_1_1
if(mFormatSwapBytes)
{
glPixelStorei(GL_UNPACK_SWAP_BYTES, 0);
stop_glerror();
}
+#endif
if (LLRender::sGLCoreProfile)
{
@@ -940,11 +981,13 @@ bool LLImageGL::setImage(const U8* data_in, bool data_hasmips /* = false */, S32
llassert(w > 0 && h > 0 && cur_mip_data);
(void)cur_mip_data;
{
+#if GL_VERSION_1_1
if(mFormatSwapBytes)
{
glPixelStorei(GL_UNPACK_SWAP_BYTES, 1);
stop_glerror();
}
+#endif
LLImageGL::setManualImage(mTarget, m, mFormatInternal, w, h, mFormatPrimary, mFormatType, cur_mip_data, mAllowCompression);
if (m == 0)
@@ -957,11 +1000,13 @@ bool LLImageGL::setImage(const U8* data_in, bool data_hasmips /* = false */, S32
updatePickMask(w, h, cur_mip_data);
}
+#if GL_VERSION_1_1
if(mFormatSwapBytes)
{
glPixelStorei(GL_UNPACK_SWAP_BYTES, 0);
stop_glerror();
}
+#endif
}
if (prev_mip_data && prev_mip_data != data_in)
{
@@ -996,11 +1041,13 @@ bool LLImageGL::setImage(const U8* data_in, bool data_hasmips /* = false */, S32
}
else
{
+#if GL_VERSION_1_1
if(mFormatSwapBytes)
{
glPixelStorei(GL_UNPACK_SWAP_BYTES, 1);
stop_glerror();
}
+#endif
LLImageGL::setManualImage(mTarget, 0, mFormatInternal, w, h,
mFormatPrimary, mFormatType, (GLvoid *)data_in, mAllowCompression);
@@ -1010,11 +1057,13 @@ bool LLImageGL::setImage(const U8* data_in, bool data_hasmips /* = false */, S32
stop_glerror();
+#if GL_VERSION_1_1
if(mFormatSwapBytes)
{
glPixelStorei(GL_UNPACK_SWAP_BYTES, 0);
stop_glerror();
}
+#endif
}
}
@@ -1030,7 +1079,9 @@ U32 type_width_from_pixtype(U32 pixtype)
{
case GL_UNSIGNED_BYTE:
case GL_BYTE:
+#if GL_VERSION_1_2
case GL_UNSIGNED_INT_8_8_8_8_REV:
+#endif
type_width = 1;
break;
case GL_UNSIGNED_SHORT:
@@ -1177,11 +1228,13 @@ bool LLImageGL::setSubImage(const U8* datap, S32 data_width, S32 data_height, S3
glPixelStorei(GL_UNPACK_ROW_LENGTH, data_width);
stop_glerror();
+#if GL_VERSION_1_1
if(mFormatSwapBytes)
{
glPixelStorei(GL_UNPACK_SWAP_BYTES, 1);
stop_glerror();
}
+#endif
const U8* sub_datap = datap + (y_pos * data_width + x_pos) * getComponents();
// Update the GL texture
@@ -1205,11 +1258,13 @@ bool LLImageGL::setSubImage(const U8* datap, S32 data_width, S32 data_height, S3
gGL.getTexUnit(0)->disable();
stop_glerror();
+#if GL_VERSION_1_1
if(mFormatSwapBytes)
{
glPixelStorei(GL_UNPACK_SWAP_BYTES, 0);
stop_glerror();
}
+#endif
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
stop_glerror();
@@ -1416,31 +1471,51 @@ void LLImageGL::setManualImage(U32 target, S32 miplevel, S32 intformat, S32 widt
break;
case GL_RGB:
case GL_RGB8:
+#if GL_VERSION_1_3
intformat = GL_COMPRESSED_RGB;
+#endif
break;
case GL_SRGB:
case GL_SRGB8:
+#if GL_VERSION_2_1
intformat = GL_COMPRESSED_SRGB;
+#endif
break;
case GL_RGBA:
case GL_RGBA8:
+#if GL_VERSION_1_3
intformat = GL_COMPRESSED_RGBA;
+#endif
break;
- case GL_SRGB_ALPHA:
case GL_SRGB8_ALPHA8:
+#if GL_VERSION_2_1
+ case GL_SRGB_ALPHA:
intformat = GL_COMPRESSED_SRGB_ALPHA;
+#endif
break;
case GL_LUMINANCE:
+#if GL_VERSION_1_1
case GL_LUMINANCE8:
+#endif
+#if GL_VERSION_1_3
intformat = GL_COMPRESSED_LUMINANCE;
+#endif
break;
case GL_LUMINANCE_ALPHA:
+#if GL_VERSION_1_1
case GL_LUMINANCE8_ALPHA8:
+#endif
+#if GL_VERSION_1_3
intformat = GL_COMPRESSED_LUMINANCE_ALPHA;
+#endif
break;
case GL_ALPHA:
+#if GL_VERSION_1_1
case GL_ALPHA8:
+#endif
+#if GL_VERSION_1_3
intformat = GL_COMPRESSED_ALPHA;
+#endif
break;
default:
LL_WARNS() << "Could not compress format: " << std::hex << intformat << std::dec << LL_ENDL;
@@ -1574,13 +1649,21 @@ bool LLImageGL::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S
{
case 1:
// Use luminance alpha (for fonts)
+#if GL_VERSION_1_1
mFormatInternal = GL_LUMINANCE8;
+#else
+ mFormatInternal = GL_LUMINANCE;
+#endif
mFormatPrimary = GL_LUMINANCE;
mFormatType = GL_UNSIGNED_BYTE;
break;
case 2:
// Use luminance alpha (for fonts)
+#if GL_VERSION_1_1
mFormatInternal = GL_LUMINANCE8_ALPHA8;
+#else
+ mFormatInternal = GL_LUMINANCE_ALPHA;
+#endif
mFormatPrimary = GL_LUMINANCE_ALPHA;
mFormatType = GL_UNSIGNED_BYTE;
break;
@@ -1862,6 +1945,7 @@ bool LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
LLImageDataLock lock(imageraw);
+#if GL_VERSION_1_3
if (is_compressed)
{
LLGLint glbytes;
@@ -1888,6 +1972,7 @@ bool LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre
glGetTexImage(GL_TEXTURE_2D, gl_discard, mFormatPrimary, mFormatType, (GLvoid*)(imageraw->getData()));
//stop_glerror();
}
+#endif // GL_VERSION_1_3
//-----------------------------------------------------------------------------------------------
if((error = glGetError()) != GL_NO_ERROR)
@@ -1976,11 +2061,13 @@ bool LLImageGL::getIsResident(bool test_now)
{
if (test_now)
{
+#if GL_VERSION_1_1
if (mTexName != 0)
{
glAreTexturesResident(1, (GLuint*)&mTexName, &mIsResident);
}
else
+#endif
{
mIsResident = false;
}
@@ -2110,12 +2197,16 @@ void LLImageGL::calcAlphaChannelOffsetAndStride()
mIsMask = false;
return; //no alpha channel.
case GL_RGBA:
+#if GL_VERSION_2_1
case GL_SRGB_ALPHA:
+#endif
mAlphaStride = 4;
break;
+#if GL_EXT_bgra
case GL_BGRA_EXT:
mAlphaStride = 4;
break;
+#endif
default:
break;
}
@@ -2125,6 +2216,7 @@ void LLImageGL::calcAlphaChannelOffsetAndStride()
{
mAlphaOffset = mAlphaStride - 1 ;
}
+#if GL_VERSION_1_2
else if(is_little_endian())
{
if (mFormatType == GL_UNSIGNED_INT_8_8_8_8)
@@ -2147,10 +2239,15 @@ void LLImageGL::calcAlphaChannelOffsetAndStride()
mAlphaOffset = 0 ;
}
}
+#endif // GL_VERSION_1_2
if( mAlphaStride < 1 || //unsupported format
- mAlphaOffset < 0 || //unsupported type
- (mFormatPrimary == GL_BGRA_EXT && mFormatType != GL_UNSIGNED_BYTE)) //unknown situation
+ mAlphaOffset < 0 //unsupported type
+#if GL_EXT_bgra
+ ||
+ (mFormatPrimary == GL_BGRA_EXT && mFormatType != GL_UNSIGNED_BYTE) //unknown situation
+#endif
+ )
{
LL_WARNS() << "Cannot analyze alpha for image with format type " << std::hex << mFormatType << std::dec << LL_ENDL;
@@ -2299,6 +2396,8 @@ bool LLImageGL::isCompressed()
bool is_compressed = false;
switch (mFormatPrimary)
{
+#if GL_EXT_texture_compression_s3tc || GL_EXT_texture_compression_dxt1 \
+ || GL_EXT_texture_sRGB || GL_EXT_texture_compression_s3tc_srgb
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
@@ -2307,6 +2406,7 @@ bool LLImageGL::isCompressed()
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
is_compressed = true;
break;
+#endif
default:
break;
}
@@ -2323,7 +2423,10 @@ void LLImageGL::updatePickMask(S32 width, S32 height, const U8* data_in)
if (mFormatType != GL_UNSIGNED_BYTE ||
((mFormatPrimary != GL_RGBA)
- && (mFormatPrimary != GL_SRGB_ALPHA)))
+#if GL_VERSION_2_1
+ && (mFormatPrimary != GL_SRGB_ALPHA)
+#endif
+ ))
{
//cannot generate a pick mask for this texture
freePickMask();
@@ -2510,7 +2613,9 @@ bool LLImageGL::scaleDown(S32 desired_discard)
sScratchPBOSize = (U32)size;
}
+#if GL_VERSION_1_3
glGetTexImage(mTarget, mip, mFormatPrimary, mFormatType, nullptr);
+#endif
free_tex_image(mTexName);
diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp
index 3b74d360d0..a0025968f7 100644
--- a/indra/llrender/llrender.cpp
+++ b/indra/llrender/llrender.cpp
@@ -83,10 +83,16 @@ static thread_local std::list<LLVertexBufferData> *sBufferDataList = nullptr;
static const GLenum sGLTextureType[] =
{
GL_TEXTURE_2D,
+#if GL_VERSION_3_1
GL_TEXTURE_RECTANGLE,
+#endif
GL_TEXTURE_CUBE_MAP,
+#if GL_VERSION_4_0
GL_TEXTURE_CUBE_MAP_ARRAY,
+#endif
+#if GL_VERSION_3_2
GL_TEXTURE_2D_MULTISAMPLE,
+#endif
GL_TEXTURE_3D
};
@@ -530,17 +536,18 @@ void LLTexUnit::setTextureFilteringOption(LLTexUnit::eTextureFilterOptions optio
{
if (LLImageGL::sGlobalUseAnisotropic && option == TFO_ANISOTROPIC)
{
- glTexParameterf(sGLTextureType[mCurrTexType], GL_TEXTURE_MAX_ANISOTROPY, gGLManager.mMaxAnisotropy);
+ glTexParameterf(sGLTextureType[mCurrTexType], GL_TEXTURE_MAX_ANISOTROPY_EXT, gGLManager.mMaxAnisotropy);
}
else
{
- glTexParameterf(sGLTextureType[mCurrTexType], GL_TEXTURE_MAX_ANISOTROPY, 1.f);
+ glTexParameterf(sGLTextureType[mCurrTexType], GL_TEXTURE_MAX_ANISOTROPY_EXT, 1.f);
}
}
}
GLint LLTexUnit::getTextureSource(eTextureBlendSrc src)
{
+#if GL_VERSION_1_3
switch (src)
{
// All four cases should return the same value.
@@ -555,8 +562,10 @@ GLint LLTexUnit::getTextureSource(eTextureBlendSrc src)
case TBS_TEX_ALPHA:
case TBS_ONE_MINUS_TEX_COLOR:
case TBS_ONE_MINUS_TEX_ALPHA:
+#endif
return GL_TEXTURE;
+#if GL_VERSION_1_3
// All four cases should return the same value.
case TBS_VERT_COLOR:
case TBS_VERT_ALPHA:
@@ -575,6 +584,7 @@ GLint LLTexUnit::getTextureSource(eTextureBlendSrc src)
LL_WARNS() << "Unknown eTextureBlendSrc: " << src << ". Using Vertex Color instead." << LL_ENDL;
return GL_PRIMARY_COLOR;
}
+#endif
}
GLint LLTexUnit::getTextureSourceType(eTextureBlendSrc src, bool isAlpha)
@@ -621,7 +631,9 @@ void LLTexUnit::setColorScale(S32 scale)
{
mCurrColorScale = scale;
gGL.flush();
+#if GL_VERSION_1_1
glTexEnvi(GL_TEXTURE_ENV, GL_RGB_SCALE, scale);
+#endif
}
}
@@ -631,7 +643,9 @@ void LLTexUnit::setAlphaScale(S32 scale)
{
mCurrAlphaScale = scale;
gGL.flush();
+#if GL_VERSION_1_1
glTexEnvi(GL_TEXTURE_ENV, GL_ALPHA_SCALE, scale);
+#endif
}
}
@@ -884,7 +898,9 @@ bool LLRender::init(bool needs_vertex_buffer)
glCullFace(GL_BACK);
// necessary for reflection maps
+#if GL_VERSION_3_2
glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
+#endif
#if LL_WINDOWS
if (glGenVertexArrays == nullptr)
@@ -2070,9 +2086,11 @@ void LLRender::debugTexUnits(void)
case LLTexUnit::TT_TEXTURE:
LL_CONT << "Texture 2D";
break;
+#if GL_VERSION_3_1
case LLTexUnit::TT_RECT_TEXTURE:
LL_CONT << "Texture Rectangle";
break;
+#endif
case LLTexUnit::TT_CUBE_MAP:
LL_CONT << "Cube Map";
break;
diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h
index 8c7126420e..410ef6f560 100644
--- a/indra/llrender/llrender.h
+++ b/indra/llrender/llrender.h
@@ -34,6 +34,7 @@
//#include "linden_common.h"
+#include <array>
#include "v2math.h"
#include "v3math.h"
#include "v4coloru.h"
@@ -69,10 +70,16 @@ public:
typedef enum
{
TT_TEXTURE = 0, // Standard 2D Texture
+#if GL_VERSION_3_1
TT_RECT_TEXTURE, // Non power of 2 texture
+#endif
TT_CUBE_MAP, // 6-sided cube map texture
+#if GL_VERSION_4_0
TT_CUBE_MAP_ARRAY, // Array of cube maps
+#endif
+#if GL_VERSION_3_2
TT_MULTISAMPLE_TEXTURE, // see GL_ARB_texture_multisample
+#endif
TT_TEXTURE_3D, // standard 3D Texture
TT_NONE, // No texture type is currently enabled
} eTextureType;
diff --git a/indra/llrender/llrender2dutils.cpp b/indra/llrender/llrender2dutils.cpp
index bec6cb32c4..90c1caba79 100644
--- a/indra/llrender/llrender2dutils.cpp
+++ b/indra/llrender/llrender2dutils.cpp
@@ -1802,10 +1802,12 @@ void LLRender2D::setLineWidth(F32 width)
// If outside the allowed range, glLineWidth fails with "invalid value".
// On Darwin, the range is [1, 1].
static GLfloat range[2]{0.0};
+#if GL_VERSION_1_2
if (range[1] == 0)
{
glGetFloatv(GL_SMOOTH_LINE_WIDTH_RANGE, range);
}
+#endif
width *= lerp(LLRender::sUIGLScaleFactor.mV[VX], LLRender::sUIGLScaleFactor.mV[VY], 0.5f);
glLineWidth(llclamp(width, range[0], range[1]));
}
diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp
index c72f8fa2ba..f39615a37d 100644
--- a/indra/llrender/llrendertarget.cpp
+++ b/indra/llrender/llrendertarget.cpp
@@ -256,12 +256,14 @@ bool LLRenderTarget::addColorAttachment(U32 color_fmt)
stop_glerror();
}
+#if GL_VERSION_3_1
if (mUsage != LLTexUnit::TT_RECT_TEXTURE)
{
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_MIRROR);
stop_glerror();
}
else
+#endif
{
// ATI doesn't support mirrored repeat for rectangular textures.
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
@@ -430,7 +432,8 @@ void LLRenderTarget::bindTarget()
if (mTex.empty())
{ //no color buffer to draw to
- glDrawBuffer(GL_NONE);
+ GLenum buffers[] = {GL_NONE};
+ glDrawBuffers(0, buffers);
glReadBuffer(GL_NONE);
}
else
@@ -507,7 +510,9 @@ void LLRenderTarget::bindTexture(U32 index, S32 channel, LLTexUnit::eTextureFilt
{
case GL_SRGB:
case GL_SRGB8:
+#if GL_VERSION_2_1
case GL_SRGB_ALPHA:
+#endif
case GL_SRGB8_ALPHA8:
isSRGB = true;
break;
@@ -550,7 +555,8 @@ void LLRenderTarget::flush()
sCurResX = gGLViewport[2];
sCurResY = gGLViewport[3];
glReadBuffer(GL_BACK);
- glDrawBuffer(GL_BACK);
+ GLenum drawbuffers[] = {GL_BACK};
+ glDrawBuffers(1, drawbuffers);
}
}
diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt
index 13a0250fe5..76bb71953c 100644
--- a/indra/llui/CMakeLists.txt
+++ b/indra/llui/CMakeLists.txt
@@ -273,6 +273,8 @@ target_link_libraries(llui
ll::SDL2
)
+include(LibraryInstall)
+
# Add tests
if(LL_TESTS)
include(LLAddBuildTest)
diff --git a/indra/llwebrtc/CMakeLists.txt b/indra/llwebrtc/CMakeLists.txt
index a18b716003..7700eeb7c6 100644
--- a/indra/llwebrtc/CMakeLists.txt
+++ b/indra/llwebrtc/CMakeLists.txt
@@ -28,7 +28,9 @@ list(APPEND llwebrtc_SOURCE_FILES ${llwebrtc_HEADER_FILES})
add_library (llwebrtc SHARED ${llwebrtc_SOURCE_FILES})
+if (NOT USESYSTEMLIBS)
set_target_properties(llwebrtc PROPERTIES PUBLIC_HEADER llwebrtc.h)
+endif (NOT USESYSTEMLIBS)
if (WINDOWS)
cmake_policy(SET CMP0091 NEW)
@@ -56,7 +58,7 @@ elseif (DARWIN)
set_target_properties(llwebrtc PROPERTIES XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym"
XCODE_ATTRIBUTE_DWARF_DSYM_FOLDER_PATH "${SYMBOLS_STAGING_DIR}/dSYMs")
endif (USE_BUGSPLAT)
-elseif (LINUX)
+elseif (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
target_link_libraries(llwebrtc PRIVATE ll::webrtc)
endif (WINDOWS)
@@ -74,3 +76,16 @@ ADD_CUSTOM_COMMAND(TARGET llwebrtc POST_BUILD
# Add tests
if (LL_TESTS)
endif (LL_TESTS)
+
+if (INSTALL)
+ if (DARWIN)
+ set(_LIB ../Frameworks)
+ elseif (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ set(_LIB lib/${ARCH}-linux-gnu)
+ elseif (EXISTS /lib64 AND NOT ${LINUX_DISTRO} MATCHES arch)
+ set(_LIB lib64)
+ else (DARWIN)
+ set(_LIB lib)
+ endif (DARWIN)
+ install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB})
+endif (INSTALL)
diff --git a/indra/llwebrtc/llwebrtc.cpp b/indra/llwebrtc/llwebrtc.cpp
index a73962f3d6..3152f6e74a 100644
--- a/indra/llwebrtc/llwebrtc.cpp
+++ b/indra/llwebrtc/llwebrtc.cpp
@@ -207,7 +207,9 @@ void LLWebRTCImpl::init()
mTuningDeviceModule->SetPlayoutDevice(mPlayoutDevice);
mTuningDeviceModule->SetRecordingDevice(mRecordingDevice);
mTuningDeviceModule->EnableBuiltInAEC(false);
+#if !CM_WEBRTC
mTuningDeviceModule->SetAudioDeviceSink(this);
+#endif
mTuningDeviceModule->InitMicrophone();
mTuningDeviceModule->InitSpeaker();
mTuningDeviceModule->SetStereoRecording(false);
diff --git a/indra/llwebrtc/llwebrtc_impl.h b/indra/llwebrtc/llwebrtc_impl.h
index 27b7eae8e7..0dfb2e7915 100644
--- a/indra/llwebrtc/llwebrtc_impl.h
+++ b/indra/llwebrtc/llwebrtc_impl.h
@@ -184,7 +184,11 @@ class LLCustomProcessor : public webrtc::CustomProcessing
// Primary singleton implementation for interfacing
// with the native webrtc library.
+#if CM_WEBRTC
+class LLWebRTCImpl : public LLWebRTCDeviceInterface
+#else
class LLWebRTCImpl : public LLWebRTCDeviceInterface, public webrtc::AudioDeviceSink
+#endif
{
public:
LLWebRTCImpl(LLWebRTCLogCallback* logCallback);
@@ -222,7 +226,11 @@ class LLWebRTCImpl : public LLWebRTCDeviceInterface, public webrtc::AudioDeviceS
//
// AudioDeviceSink
//
+#if CM_WEBRTC
+ void OnDevicesUpdated();
+#else
void OnDevicesUpdated() override;
+#endif
//
// Helpers
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index e86ef2d578..2a4a180e58 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -59,7 +59,6 @@ set(llwindow_LINK_LIBRARIES
llcommon
llimage
llmath
- llrender
llfilesystem
llxml
ll::glm
@@ -69,9 +68,11 @@ set(llwindow_LINK_LIBRARIES
ll::zlib-ng
)
+include_directories(${CMAKE_SOURCE_DIR}/llrender)
+
# Libraries on which this library depends, needed for Linux builds
# Sort by high-level to low-level
-if (LINUX)
+if (USESYSTEMLIBS AND NOT DARWIN)
list(APPEND viewer_SOURCE_FILES
llkeyboardsdl.cpp
llwindowsdl.cpp
@@ -93,7 +94,7 @@ if (LINUX)
fontconfig # For FCInit and other FC* functions.
)
endif (BUILD_HEADLESS)
-endif (LINUX)
+endif (USESYSTEMLIBS AND NOT DARWIN)
if (DARWIN)
list(APPEND llwindow_SOURCE_FILES
@@ -194,3 +195,5 @@ if (DARWIN)
find_library(CARBON_LIBRARY Carbon)
target_link_libraries(llwindow ${CARBON_LIBRARY})
endif (DARWIN)
+
+include(LibraryInstall)
diff --git a/indra/llwindow/llkeyboardsdl.cpp b/indra/llwindow/llkeyboardsdl.cpp
index b6666195a6..3885ebfdbd 100644
--- a/indra/llwindow/llkeyboardsdl.cpp
+++ b/indra/llwindow/llkeyboardsdl.cpp
@@ -165,7 +165,11 @@ void LLKeyboardSDL::resetMaskKeys()
mKeyLevel[KEY_SHIFT] = true;
}
- if(mask & KMOD_CTRL)
+ if(mask & (KMOD_CTRL
+#ifdef LL_DARWIN
+ | KMOD_GUI
+#endif
+ ))
{
mKeyLevel[KEY_CONTROL] = true;
}
@@ -187,7 +191,11 @@ MASK LLKeyboardSDL::updateModifiers(const MASK mask)
out_mask |= MASK_SHIFT;
}
- if(mask & KMOD_CTRL)
+ if(mask & (KMOD_CTRL
+#ifdef LL_DARWIN
+ | KMOD_GUI
+#endif
+ ))
{
out_mask |= MASK_CONTROL;
}
diff --git a/indra/llwindow/llkeyboardsdl.h b/indra/llwindow/llkeyboardsdl.h
index 7671e4c859..3181758ca0 100644
--- a/indra/llwindow/llkeyboardsdl.h
+++ b/indra/llwindow/llkeyboardsdl.h
@@ -27,6 +27,9 @@
#define LL_LLKEYBOARDSDL2_H
#include "llkeyboard.h"
+#if !defined(__i386__) && !defined(__x86_64__)
+#define SDL_DISABLE_IMMINTRIN_H
+#endif
#include "SDL2/SDL.h"
class LLKeyboardSDL : public LLKeyboard
diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp
index b90e85d911..20281c2ab7 100644
--- a/indra/llwindow/llwindowmacosx.cpp
+++ b/indra/llwindow/llwindowmacosx.cpp
@@ -39,6 +39,7 @@
#include "lldir.h"
#include "indra_constants.h"
+
#include <OpenGL/OpenGL.h>
#include <Carbon/Carbon.h>
#include <CoreServices/CoreServices.h>
diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp
index 4793ab4fc7..8fddbf05e2 100644
--- a/indra/llwindow/llwindowsdl.cpp
+++ b/indra/llwindow/llwindowsdl.cpp
@@ -47,7 +47,7 @@ extern "C" {
# include "fontconfig/fontconfig.h"
}
-#if LL_LINUX
+#if LL_LINUX || __FreeBSD__
// not necessarily available on random SDL platforms, so #if LL_LINUX
// for execv(), waitpid(), fork()
#include <unistd.h>
@@ -549,7 +549,9 @@ bool LLWindowSDL::createContext(int x, int y, int width, int height, int bits, b
SDL_StartTextInput();
//make sure multisampling is disabled by default
+#if GL_VERSION_1_3
glDisable(GL_MULTISAMPLE_ARB);
+#endif
// Don't need to get the current gamma, since there's a call that restores it to the system defaults.
return true;
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index 974ba69b61..5ab90614ec 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -32,7 +32,11 @@
#include "llwindow.h"
#include "lltimer.h"
+#if !defined(__i386__) && !defined(__x86_64__)
+#define SDL_DISABLE_IMMINTRIN_H
+#endif
#include "SDL2/SDL.h"
+#include "SDL2/SDL_video.h"
#include "SDL2/SDL_endian.h"
// get X11-specific headers for use in low-level stuff like copy-and-paste support
diff --git a/indra/llxml/CMakeLists.txt b/indra/llxml/CMakeLists.txt
index 508c2b919b..591538543a 100644
--- a/indra/llxml/CMakeLists.txt
+++ b/indra/llxml/CMakeLists.txt
@@ -4,6 +4,7 @@ project(llxml)
include(00-Common)
include(LLCommon)
+include(LLWindow)
set(llxml_SOURCE_FILES
llcontrol.cpp
@@ -31,9 +32,11 @@ target_link_libraries( llxml
llmath
llcommon
ll::expat
+ ll::SDL2
)
target_include_directories( llxml INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
+include(LibraryInstall)
# tests
diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp
index e695035461..c5ecc67025 100644
--- a/indra/llxml/llxmlnode.cpp
+++ b/indra/llxml/llxmlnode.cpp
@@ -29,6 +29,9 @@
#include <iostream>
#include <map>
+#if LL_SDL
+#include <SDL_rwops.h>
+#endif
#include "llxmlnode.h"
diff --git a/indra/media_plugins/CMakeLists.txt b/indra/media_plugins/CMakeLists.txt
index 86c46cb476..78bdba8f18 100644
--- a/indra/media_plugins/CMakeLists.txt
+++ b/indra/media_plugins/CMakeLists.txt
@@ -2,10 +2,15 @@
add_subdirectory(base)
+if (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ add_subdirectory(example)
+ add_subdirectory(libvlc)
+endif (CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+
if (LINUX)
add_subdirectory(cef)
add_subdirectory(example)
- add_subdirectory(gstreamer10)
+ add_subdirectory(libvlc)
endif (LINUX)
if (DARWIN)
diff --git a/indra/media_plugins/base/CMakeLists.txt b/indra/media_plugins/base/CMakeLists.txt
index 5e635c6ca3..57e3782ada 100644
--- a/indra/media_plugins/base/CMakeLists.txt
+++ b/indra/media_plugins/base/CMakeLists.txt
@@ -24,6 +24,7 @@ set(media_plugin_base_HEADER_FILES
)
add_library(media_plugin_base
+ STATIC
${media_plugin_base_SOURCE_FILES}
)
diff --git a/indra/media_plugins/base/media_plugin_base.cpp b/indra/media_plugins/base/media_plugin_base.cpp
index f31708c4d7..0e7c7646fa 100644
--- a/indra/media_plugins/base/media_plugin_base.cpp
+++ b/indra/media_plugins/base/media_plugin_base.cpp
@@ -167,7 +167,7 @@ void MediaPluginBase::sendStatus()
sendMessage(message);
}
-#if LL_LINUX
+#if LL_LINUX || __FreeBSD__
#include <dlfcn.h>
@@ -219,7 +219,7 @@ void SymbolGrabber::ungrabSymbols()
#if LL_WINDOWS
# define LLSYMEXPORT __declspec(dllexport)
-#elif LL_LINUX
+#elif LL_LINUX || __FreeBSD__
# define LLSYMEXPORT __attribute__ ((visibility("default")))
#else
# define LLSYMEXPORT /**/
diff --git a/indra/media_plugins/base/media_plugin_base.h b/indra/media_plugins/base/media_plugin_base.h
index 98e9ce0316..26d57ba2dd 100644
--- a/indra/media_plugins/base/media_plugin_base.h
+++ b/indra/media_plugins/base/media_plugin_base.h
@@ -32,7 +32,7 @@
#include "llpluginmessage.h"
#include "llpluginmessageclasses.h"
-#if LL_LINUX
+#if LL_LINUX || __FreeBSD__
struct SymbolToGrab
{
diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt
index 28e5f64132..9030e4ae58 100644
--- a/indra/media_plugins/cef/CMakeLists.txt
+++ b/indra/media_plugins/cef/CMakeLists.txt
@@ -103,9 +103,78 @@ if (DARWIN)
add_custom_command(TARGET media_plugin_cef
POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL} -change "@executable_path/Chromium Embedded Framework"
"@executable_path/../../../../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework"
+ -change "/opt/local/lib/libpng16.16.dylib" "@loader_path/../../Frameworks/libpng16.16.dylib"
+ -change "/opt/local/lib/libjpeg.8.dylib" "@loader_path/../../Frameworks/libjpeg.8.dylib"
+ -change "/opt/local/lib/libSDL2-2.0.0.dylib" "@loader_path/../../Frameworks/libSDL2-2.0.0.dylib"
+ -change "/opt/local/lib/libfreetype.6.dylib" "@loader_path/../../Frameworks/libfreetype.6.dylib"
+ -change "/opt/local/lib/libaprutil-1.0.dylib" "@loader_path/../../Frameworks/libaprutil-1.0.dylib"
+ -change "/opt/local/lib/libiconv.2.dylib" "@loader_path/../../Frameworks/libiconv.2.dylib"
+ -change "/opt/local/lib/libapr-1.0.dylib" "@loader_path/../../Frameworks/libapr-1.0.dylib"
+ -change "/opt/local/lib/libexpat.1.dylib" "@loader_path/../../Frameworks/libexpat.1.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_context-mt.dylib" "@loader_path/../../Frameworks/libboost_context-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_fiber-mt.dylib" "@loader_path/../../Frameworks/libboost_fiber-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_filesystem-mt.dylib" "@loader_path/../../Frameworks/libboost_filesystem-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_program_options-mt.dylib" "@loader_path/../../Frameworks/libboost_program_options-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_regex-mt.dylib" "@loader_path/../../Frameworks/libboost_regex-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_system-mt.dylib" "@loader_path/../../Frameworks/libboost_system-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_thread-mt.dylib" "@loader_path/../../Frameworks/libboost_thread-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_url-mt.dylib" "@loader_path/../../Frameworks/libboost_url-mt.dylib"
+ -change "/opt/local/lib/libz.1.dylib" "@loader_path/../../Frameworks/libz.1.dylib"
+ -change "/opt/local/lib/libnghttp2.14.dylib" "@loader_path/../../Frameworks/libnghttp2.14.dylib"
"$<TARGET_FILE:media_plugin_cef>"
VERBATIM
COMMENT "Fixing path to CEF Framework"
)
endif (DARWIN)
+
+if (INSTALL)
+ if (DARWIN)
+ set(_LIB llplugin)
+ install(
+ DIRECTORY "${AUTOBUILD_INSTALL_DIR}/lib/release/Chromium Embedded Framework.framework"
+ DESTINATION ../Frameworks
+ )
+ install(
+ DIRECTORY
+ "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper.app"
+ "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper (GPU).app"
+ "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper (Plugin).app"
+ "${AUTOBUILD_INSTALL_DIR}/lib/release/DullahanHelper (Renderer).app"
+ DESTINATION SLPlugin.app/Contents/Frameworks
+ )
+ elseif (LINUX)
+ if (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ set(_LIB lib/${ARCH}-linux-gnu)
+ elseif (EXISTS /lib64 AND NOT ${LINUX_DISTRO} MATCHES arch)
+ set(_LIB lib64)
+ else (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ set(_LIB lib)
+ endif (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ install(
+ PROGRAMS
+ ${AUTOBUILD_INSTALL_DIR}/bin/release/chrome-sandbox
+ ${AUTOBUILD_INSTALL_DIR}/bin/release/dullahan_host
+ DESTINATION libexec/${VIEWER_BINARY_NAME}
+ #PERMISSIONS SETUID OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+ )
+ install(
+ FILES
+ ${AUTOBUILD_INSTALL_DIR}/lib/release/libcef.so
+ ${AUTOBUILD_INSTALL_DIR}/bin/release/snapshot_blob.bin
+ ${AUTOBUILD_INSTALL_DIR}/bin/release/v8_context_snapshot.bin
+ ${AUTOBUILD_INSTALL_DIR}/resources/chrome_100_percent.pak
+ ${AUTOBUILD_INSTALL_DIR}/resources/chrome_200_percent.pak
+ ${AUTOBUILD_INSTALL_DIR}/resources/icudtl.dat
+ ${AUTOBUILD_INSTALL_DIR}/resources/resources.pak
+ DESTINATION ${_LIB}
+ )
+ install(
+ DIRECTORY ${AUTOBUILD_INSTALL_DIR}/resources/locales
+ DESTINATION ${_LIB}
+ )
+ else (DARWIN)
+ set(_LIB lib)
+ endif (DARWIN)
+ install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB})
+endif (INSTALL)
diff --git a/indra/media_plugins/gstreamer10/CMakeLists.txt b/indra/media_plugins/gstreamer10/CMakeLists.txt
index 14ce5bfaa1..f9898368cc 100644
--- a/indra/media_plugins/gstreamer10/CMakeLists.txt
+++ b/indra/media_plugins/gstreamer10/CMakeLists.txt
@@ -1,6 +1,6 @@
# -*- cmake -*-
-project(media_plugin_gstreamer10)
+project(media_plugin_gstreamer)
include(00-Common)
include(LLCommon)
@@ -16,7 +16,7 @@ include(GStreamer10Plugin)
### media_plugin_gstreamer10
-set(media_plugin_gstreamer10_SOURCE_FILES
+set(${PROJECT_NAME}_SOURCE_FILES
media_plugin_gstreamer10.cpp
)
@@ -25,12 +25,12 @@ set(media_plugin_gstreamer10_HEADER_FILES
llmediaimplgstreamertriviallogging.h
)
-add_library(media_plugin_gstreamer10
+add_library(${PROJECT_NAME}
SHARED
- ${media_plugin_gstreamer10_SOURCE_FILES}
+ ${${PROJECT_NAME}_SOURCE_FILES}
)
-target_link_libraries(media_plugin_gstreamer10 media_plugin_base ll::gstreamer10 )
+target_link_libraries(${PROJECT_NAME} media_plugin_base ll::gstreamer10 )
if (WINDOWS)
set_target_properties(
@@ -39,3 +39,14 @@ if (WINDOWS)
LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMT"
)
endif (WINDOWS)
+
+if (INSTALL)
+ if (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ set(_LIB lib/${ARCH}-linux-gnu)
+ elseif (EXISTS /lib64)
+ set(_LIB lib64)
+ else ()
+ set(_LIB lib)
+ endif ()
+ install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB})
+endif ()
diff --git a/indra/media_plugins/libvlc/CMakeLists.txt b/indra/media_plugins/libvlc/CMakeLists.txt
index 863b4617e9..80f0347e12 100644
--- a/indra/media_plugins/libvlc/CMakeLists.txt
+++ b/indra/media_plugins/libvlc/CMakeLists.txt
@@ -47,4 +47,56 @@ if (DARWIN)
LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp"
)
+ add_custom_command(TARGET ${PROJECT_NAME}
+ POST_BUILD COMMAND ${CMAKE_INSTALL_NAME_TOOL}
+ -change "/opt/local/lib/libpng16.16.dylib" "@loader_path/../../Frameworks/libpng16.16.dylib"
+ -change "/opt/local/lib/libjpeg.8.dylib" "@loader_path/../../Frameworks/libjpeg.8.dylib"
+ -change "/opt/local/lib/libSDL2-2.0.0.dylib" "@loader_path/../../Frameworks/libSDL2-2.0.0.dylib"
+ -change "/opt/local/lib/libfreetype.6.dylib" "@loader_path/../../Frameworks/libfreetype.6.dylib"
+ -change "/opt/local/lib/libaprutil-1.0.dylib" "@loader_path/../../Frameworks/libaprutil-1.0.dylib"
+ -change "/opt/local/lib/libiconv.2.dylib" "@loader_path/../../Frameworks/libiconv.2.dylib"
+ -change "/opt/local/lib/libapr-1.0.dylib" "@loader_path/../../Frameworks/libapr-1.0.dylib"
+ -change "/opt/local/lib/libexpat.1.dylib" "@loader_path/../../Frameworks/libexpat.1.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_context-mt.dylib" "@loader_path/../../Frameworks/libboost_context-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_fiber-mt.dylib" "@loader_path/../../Frameworks/libboost_fiber-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_filesystem-mt.dylib" "@loader_path/../../Frameworks/libboost_filesystem-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_program_options-mt.dylib" "@loader_path/../../Frameworks/libboost_program_options-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_regex-mt.dylib" "@loader_path/../../Frameworks/libboost_regex-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_system-mt.dylib" "@loader_path/../../Frameworks/libboost_system-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_thread-mt.dylib" "@loader_path/../../Frameworks/libboost_thread-mt.dylib"
+ -change "/opt/local/libexec/boost/1.81/lib/libboost_url-mt.dylib" "@loader_path/../../Frameworks/libboost_url-mt.dylib"
+ -change "/opt/local/lib/libz.1.dylib" "@loader_path/../../Frameworks/libz.1.dylib"
+ -change "/opt/local/lib/libnghttp2.14.dylib" "@loader_path/../../Frameworks/libnghttp2.14.dylib"
+ -change "@rpath/libvlc.dylib" "@loader_path/plugins/libvlc.dylib"
+ -change "@rpath/libvlccore.dylib" "@loader_path/plugins/libvlccore.dylib"
+ "$<TARGET_FILE:media_plugin_libvlc>"
+ VERBATIM
+ COMMENT "Fixing paths to LibVLC media plugin dependencies"
+ )
+
endif (DARWIN)
+
+if (INSTALL)
+ if (DARWIN)
+ set(_LIB llplugin)
+ install(
+ DIRECTORY /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/plugins
+ DESTINATION ${_LIB}
+ )
+ install(
+ FILES
+ /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlc.5.dylib
+ /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlc.dylib
+ /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlccore.9.dylib
+ /Volumes/VLC\ media\ player/VLC.app/Contents/MacOS/lib/libvlccore.dylib
+ DESTINATION ${_LIB}/plugins
+ )
+ elseif (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ set(_LIB lib/${ARCH}-linux-gnu)
+ elseif (EXISTS /lib64 AND NOT ${LINUX_DISTRO} MATCHES arch)
+ set(_LIB lib64)
+ else (DARWIN)
+ set(_LIB lib)
+ endif (DARWIN)
+ install(TARGETS ${PROJECT_NAME} DESTINATION ${_LIB})
+endif (INSTALL)
diff --git a/indra/media_plugins/libvlc/media_plugin_libvlc.cpp b/indra/media_plugins/libvlc/media_plugin_libvlc.cpp
index 4240613a0c..e79d474325 100644
--- a/indra/media_plugins/libvlc/media_plugin_libvlc.cpp
+++ b/indra/media_plugins/libvlc/media_plugin_libvlc.cpp
@@ -294,6 +294,22 @@ void MediaPluginLibVLC::eventCallbacks(const libvlc_event_t* event, void* ptr)
}
}
break;
+ case libvlc_MediaMetaChanged:
+ auto title = libvlc_media_get_meta(parent->mLibVLCMedia, libvlc_meta_Title);
+ if (title)
+ {
+ LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "title_text");
+ message.setValue("title", title);
+ parent->sendMessage(message);
+ }
+ auto now_playing = libvlc_media_get_meta(parent->mLibVLCMedia, libvlc_meta_NowPlaying);
+ if (now_playing)
+ {
+ LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "nowplaying_text");
+ message.setValue("nowplaying", now_playing);
+ parent->sendMessage(message);
+ }
+ break;
}
}
@@ -348,6 +364,11 @@ void MediaPluginLibVLC::playMedia()
libvlc_event_attach(em, libvlc_MediaPlayerLengthChanged, eventCallbacks, this);
libvlc_event_attach(em, libvlc_MediaPlayerTitleChanged, eventCallbacks, this);
}
+ auto event_manager = libvlc_media_event_manager(mLibVLCMedia);
+ if (event_manager)
+ {
+ libvlc_event_attach(event_manager, libvlc_MediaMetaChanged, eventCallbacks, this);
+ }
libvlc_video_set_callbacks(mLibVLCMediaPlayer, lock, unlock, display, &mLibVLCCallbackContext);
libvlc_video_set_format(mLibVLCMediaPlayer, "RV32", mWidth, mHeight, mWidth * mDepth);
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index b0f5116215..4c047d5d20 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -9,11 +9,15 @@ include(Linking)
include(Boost)
include(bugsplat)
+if (NOT USESYSTEMLIBS)
include(BuildPackagesInfo)
+endif ()
include(BuildVersion)
include(CMakeCopyIfDifferent)
include(CubemapToEquirectangularJS)
+if (NOT USESYSTEMLIBS)
include(DBusGlib)
+endif ()
include(DragDrop)
include(EXPAT)
include(Hunspell)
@@ -42,13 +46,20 @@ include(ThreeJS)
include(Tracy)
include(UI)
include(ViewerMiscLibs)
+if (NOT USESYSTEMLIBS)
include(ViewerManager)
+endif ()
include(VisualLeakDetector)
include(VulkanGltf)
include(ZLIBNG)
include(LLPrimitive)
include(Lualibs)
+if (ENABLE_MEDIA_PLUGINS)
+ include(LibVLCPlugin)
+ include(CEFPlugin)
+endif (ENABLE_MEDIA_PLUGINS)
+
if (NOT HAVOK_TPV)
# When using HAVOK_TPV, the library is precompiled, so no need for this
@@ -233,6 +244,7 @@ set(viewer_SOURCE_FILES
llfloaterhandler.cpp
llfloaterhelpbrowser.cpp
llfloaterhoverheight.cpp
+ mpfloatertuning.cpp
llfloaterhowto.cpp
llfloaterhud.cpp
llfloaterimagepreview.cpp
@@ -742,6 +754,10 @@ set(viewer_SOURCE_FILES
rlvhandler.cpp
)
+if (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+ list(REMOVE_ITEM viewer_SOURCE_FILES llvoicewebrtc.cpp)
+endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+
set(VIEWER_BINARY_NAME "secondlife-bin" CACHE STRING
"The name of the viewer executable to create.")
@@ -911,6 +927,7 @@ set(viewer_HEADER_FILES
llfloaterhandler.h
llfloaterhelpbrowser.h
llfloaterhoverheight.h
+ mpfloatertuning.h
llfloaterhowto.h
llfloaterhud.h
llfloaterimagepreview.h
@@ -1472,16 +1489,18 @@ if (DARWIN)
list(APPEND viewer_SOURCE_FILES ${viewer_RESOURCE_FILES})
endif (DARWIN)
-if (LINUX)
+if (USESYSTEMLIBS AND NOT DARWIN)
LIST(APPEND viewer_SOURCE_FILES llappviewerlinux.cpp)
set_source_files_properties(
llappviewerlinux.cpp
PROPERTIES
COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}"
)
+ if (NOT CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
+ endif ()
-endif (LINUX)
+endif (USESYSTEMLIBS AND NOT DARWIN)
if (WINDOWS)
@@ -1676,6 +1695,10 @@ set(viewer_APPSETTINGS_FILES
featuretable_mac.txt
)
+if (USESYSTEMLIBS)
+ list(REMOVE_ITEM viewer_APPSETTINGS_FILES packages-info.txt)
+endif ()
+
source_group("App Settings" FILES ${viewer_APPSETTINGS_FILES})
set_source_files_properties(${viewer_APPSETTINGS_FILES}
@@ -1948,6 +1971,17 @@ target_link_libraries(${VIEWER_BINARY_NAME}
ll::openxr
)
+if (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+ target_link_libraries(${VIEWER_BINARY_NAME} llwebrtc )
+endif (NOT CMAKE_SYSTEM_NAME MATCHES FreeBSD)
+
+if (ENABLE_MEDIA_PLUGINS)
+ target_link_libraries(${VIEWER_BINARY_NAME} ll::libvlc )
+ if (DARWIN OR LINUX)
+ target_link_libraries(${VIEWER_BINARY_NAME} ll::cef )
+ endif (DARWIN OR LINUX)
+endif (ENABLE_MEDIA_PLUGINS)
+
if( TARGET ll::intel_memops )
target_link_libraries(${VIEWER_BINARY_NAME} ll::intel_memops )
endif()
@@ -1959,6 +1993,46 @@ endif()
set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH
"Path to artwork files.")
+set_source_files_properties(llinventorygallery.cpp PROPERTIES COMPILE_FLAGS
+ -Wno-unused-but-set-variable)
+if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ set_source_files_properties(llappviewerlinux.cpp PROPERTIES
+ COMPILE_FLAGS -Wno-dangling-gsl
+ )
+ set_source_files_properties(llviewerstats.cpp PROPERTIES
+ COMPILE_FLAGS -Wno-unused-value)
+elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
+ set_source_files_properties(
+ llface.cpp
+ llhttpretrypolicy.cpp
+ llmodelpreview.cpp
+ llpanelface.cpp
+ lltexturefetch.cpp
+ PROPERTIES COMPILE_FLAGS -Wno-maybe-uninitialized)
+ set_source_files_properties(llfasttimerview.cpp PROPERTIES
+ COMPILE_FLAGS -Wno-nonnull)
+ set_source_files_properties(llinventorygallerymenu.cpp PROPERTIES
+ COMPILE_FLAGS -Wno-uninitialized)
+ set_source_files_properties(llviewerstats.cpp PROPERTIES
+ COMPILE_FLAGS -Wno-unused-value)
+ set_source_files_properties(llurl.cpp PROPERTIES COMPILE_FLAGS
+ -Wno-stringop-truncation)
+ set_source_files_properties(
+ llfloaterimsessiontab.cpp
+ llfloatersimplesnapshot.cpp
+ llfloatersidepanelcontainer.cpp
+ llinventorypanel.cpp
+ llpanelmaininventory.cpp
+ llpathfindingnavmesh.cpp
+ llsidepanelinventory.cpp
+ PROPERTIES COMPILE_FLAGS -Wno-dangling-reference
+ )
+ set_source_files_properties(
+ gltf/animation.cpp
+ gltf/primitive.cpp
+ PROPERTIES COMPILE_FLAGS -Wno-unused-function)
+endif ()
+
message("Copying fonts")
file(GLOB FONT_FILE_GLOB_LIST
"${AUTOBUILD_INSTALL_DIR}/fonts/*"
@@ -1981,7 +2055,100 @@ foreach(elem ${country_codes})
configure_file(${emoji_mapping_src_file} ${emoji_mapping_dst_file} COPYONLY)
endforeach()
+if (PACKAGE AND USESYSTEMLIBS)
+ set(CPACK_PACKAGE_NAME ${VIEWER_BINARY_NAME}
+ CACHE STRING "Viewer binary name.")
+ set(CPACK_PACKAGE_VERSION ${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION}
+ CACHE STRING "Viewer major.minor.patch.revision versions.")
+ set(VIEWER_PACKAGE_COMMENT
+ "A fork of the Second Life viewer"
+ )
+ set(VIEWER_PACKAGE_DESCRIPTION
+ "An entrance to virtual empires in only megabytes. A shelter for the metaverse refugees, especially those from less supported operating systems."
+ )
+ set(VIEWER_PACKAGE_DOMAIN_NAME
+ ${VIEWER_BINARY_NAME}.net
+ )
+endif (PACKAGE AND USESYSTEMLIBS)
+
if (LINUX)
+ if (USESYSTEMLIBS)
+ add_custom_command(
+ TARGET ${VIEWER_BINARY_NAME} POST_BUILD
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -e '/Linden Lab.*/d' ${CMAKE_HOME_DIRECTORY}/../doc/contributions.txt > ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e '/following residents.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e '/along with.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e '/^$$/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e '/\t.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e '/^ .*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND sort
+ ARGS -R contributions.txt -o ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND paste
+ ARGS -s -d, ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt > ${CMAKE_CURRENT_BINARY_DIR}/contributors.txt
+ COMMAND ${CMAKE_SYSROOT}/usr/bin/sed
+ ARGS -i ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt -e 's/,/, /g' ${CMAKE_CURRENT_BINARY_DIR}/contributors.txt
+ )
+ if (PACKAGE)
+ if (${LINUX_DISTRO} MATCHES debian OR ${LINUX_DISTRO} MATCHES ubuntu)
+ set(CPACK_BINARY_DEB ON CACHE BOOL "Able to package Debian DEB.")
+ set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE
+ amd64
+ CACHE STRING "Debian package architecture.")
+ set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${VIEWER_PACKAGE_COMMENT}
+ CACHE STRING "Debian package description.")
+ set(CPACK_DEBIAN_PACKAGE_MAINTAINER
+ $ENV{USER}@${VIEWER_PACKAGE_DOMAIN_NAME}
+ CACHE STRING "Debian package maintainer.")
+ set(CPACK_DEBIAN_PACKAGE_SECTION net
+ CACHE STRING "Debian package section.")
+ if (${LINUX_DISTRO} MATCHES debian)
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS
+ "libalut0, libaprutil1, libboost-fiber1.81.0, libboost-filesystem1.81.0, libboost-program-options1.81.0, libboost-regex1.81.0, libboost-thread1.81.0, libboost-url1.81.0, libexpat1, libfltk1.3, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libnghttp2-14, libsdl2-2.0-0, liburiparser1, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base"
+ CACHE STRING "Debian package dependencies.")
+ elseif (${LINUX_DISTRO} MATCHES ubuntu)
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS
+ "libaprutil1t64, libboost-fiber1.83.0, libboost-filesystem1.83.0, libboost-program-options1.83.0, libboost-regex1.83.0, libboost-thread1.83.0, libboost-url1.83.0, libexpat1, libfltk1.3t64, libglu1-mesa, libhunspell-1.7-0, libmeshoptimizer2d, libnghttp2-14, libsdl2-2.0-0, liburiparser1, libvlc5, libvorbisenc2, libvorbisfile3, vlc-plugin-base"
+ CACHE STRING "Debian package dependencies.")
+ endif (${LINUX_DISTRO} MATCHES debian)
+ elseif (${LINUX_DISTRO} MATCHES fedora OR (${LINUX_DISTRO} MATCHES opensuse-tumbleweed))
+ set(CPACK_BINARY_RPM ON CACHE BOOL "Able to package Fedora RPM.")
+ set(CPACK_RPM_PACKAGE_SUMMARY ${VIEWER_PACKAGE_COMMENT}
+ CACHE STRING "RPM package summary.")
+ set(CPACK_RPM_PACKAGE_ARCHITECTURE
+ ${CMAKE_SYSTEM_PROCESSOR}
+ CACHE STRING "RPM package architecture.")
+ set(CPACK_RPM_PACKAGE_LICENSE LGPL-2.1-only
+ CACHE STRING "RPM package license.")
+ set(CPACK_RPM_PACKAGE_VENDOR ${VIEWER_CHANNEL}
+ CACHE STRING "RPM package vendor.")
+ set(CPACK_RPM_PACKAGE_URL
+ https://${VIEWER_PACKAGE_DOMAIN_NAME}
+ CACHE STRING "RPM package URL.")
+ set(CPACK_RPM_PACKAGE_DESCRIPTION ${VIEWER_PACKAGE_DESCRIPTION}
+ CACHE STRING "RPM package description.")
+ if (${LINUX_DISTRO} MATCHES fedora)
+ set(CPACK_RPM_PACKAGE_REQUIRES
+ "apr-util, boost-fiber, boost-program-options, boost-regex, boost-thread, boost-url, expat, fltk, mesa-libGLU, hunspell, libnghttp2, SDL2, uriparser, vlc-libs, vlc-plugins-base, libvorbis"
+ CACHE STRING "RPM package requirements.")
+ elseif (${LINUX_DISTRO} MATCHES opensuse-tumbleweed)
+ set(CPACK_RPM_PACKAGE_REQUIRES
+ "libapr-util1-0, libboost_fiber1_85_0, libboost_program_options1_85_0, libboost_regex1_85_0, libboost_thread1_85_0, expat, libfltk1_3, libGLU1, libhunspell-1_7-0, libnghttp2-14, libSDL2-2_0-0, liburiparser1, libvlc5, vlc-codecs, libvorbis0"
+ CACHE STRING "RPM package requirements.")
+ endif (${LINUX_DISTRO} MATCHES fedora)
+ elseif (${LINUX_DISTRO} MATCHES arch)
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/PKGBUILD.in
+ ${CMAKE_BINARY_DIR}/PKGBUILD
+ )
+ endif (${LINUX_DISTRO} MATCHES debian OR ${LINUX_DISTRO} MATCHES ubuntu)
+ endif (PACKAGE)
+ else (USESYSTEMLIBS)
set(product SecondLife-${ARCH}-${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION})
# These are the generated targets that are copied to package/
@@ -2056,6 +2223,49 @@ if (LINUX)
add_dependencies(llpackage copy_l_viewer_manifest)
check_message_template(llpackage)
endif (PACKAGE)
+ endif (USESYSTEMLIBS)
+elseif (USESYSTEMLIBS)
+ add_custom_command(
+ TARGET ${VIEWER_BINARY_NAME} POST_BUILD
+ COMMAND sed
+ ARGS -e '/Linden Lab.*/d' ${CMAKE_HOME_DIRECTORY}/../doc/contributions.txt > ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND sed
+ ARGS -i '' -e '/following residents.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND sed
+ ARGS -i '' -e '/along with.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND sed
+ ARGS -i '' -e '/^$$/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND sed
+ ARGS -i '' -e '/\t.*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND sed
+ ARGS -i '' -e '/^ .*/d' ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND sort
+ ARGS -R contributions.txt -o ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt
+ COMMAND paste
+ ARGS -s -d, ${CMAKE_CURRENT_BINARY_DIR}/contributions.txt > ${CMAKE_CURRENT_BINARY_DIR}/contributors.txt
+ COMMAND sed
+ ARGS -i '' -e 's/,/, /g' ${CMAKE_CURRENT_BINARY_DIR}/contributors.txt
+ )
+ if (CMAKE_SYSTEM_NAME MATCHES FreeBSD AND PACKAGE)
+ set(CPACK_BINARY_FREEBSD ON CACHE BOOL "Able to package FreeBSD PKG.")
+ set(CPACK_FREEBSD_PACKAGE_COMMENT ${VIEWER_PACKAGE_COMMENT}
+ CACHE STRING "FreeBSD package comment.")
+ set(CPACK_FREEBSD_PACKAGE_DESCRIPTION ${VIEWER_PACKAGE_DESCRIPTION}
+ CACHE STRING "FreeBSD package description.")
+ set(CPACK_FREEBSD_PACKAGE_WWW
+ https://${VIEWER_PACKAGE_DOMAIN_NAME}
+ CACHE STRING "FreeBSD package WWW.")
+ set(CPACK_FREEBSD_PACKAGE_LICENSE LGPL21
+ CACHE STRING "FreeBSD package license.")
+ set(CPACK_FREEBSD_PACKAGE_MAINTAINER
+ $ENV{USER}@${VIEWER_PACKAGE_DOMAIN_NAME}
+ CACHE STRING "FreeBSD package maintainer.")
+ set(CPACK_FREEBSD_PACKAGE_ORIGIN net/${VIEWER_BINARY_NAME}
+ CACHE STRING "FreeBSD package origin.")
+ set(CPACK_FREEBSD_PACKAGE_DEPS
+ "audio/freealut;graphics/libGLU;textproc/hunspell;misc/meshoptimizer;archivers/minizip;www/libnghttp2;devel/pcre;net/uriparser;multimedia/vlc;audio/libvorbis"
+ CACHE STRING "FreeBSD package dependencies.")
+ endif (CMAKE_SYSTEM_NAME MATCHES FreeBSD AND PACKAGE)
endif (LINUX)
if (DARWIN)
@@ -2065,13 +2275,13 @@ if (DARWIN)
set(product "${VIEWER_CHANNEL}")
set(MACOSX_EXECUTABLE_NAME "${VIEWER_CHANNEL}")
set(MACOSX_BUNDLE_INFO_STRING "${VIEWER_CHANNEL}")
- set(MACOSX_BUNDLE_ICON_FILE "secondlife.icns")
- set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.secondlife.indra.viewer")
+ set(MACOSX_BUNDLE_ICON_FILE "${VIEWER_CHANNEL}.icns")
+ set(MACOSX_BUNDLE_GUI_IDENTIFIER "net.megapahit.viewer")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${VIEWER_CHANNEL} ${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")
- set(MACOSX_BUNDLE_BUNDLE_NAME "SecondLife")
+ set(MACOSX_BUNDLE_BUNDLE_NAME "Megapahit")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}")
set(MACOSX_BUNDLE_BUNDLE_VERSION "${VIEWER_SHORT_VERSION}${VIEWER_MACOSX_PHASE}${VIEWER_REVISION}")
- set(MACOSX_BUNDLE_COPYRIGHT "Copyright © Linden Research, Inc. 2020")
+ set(MACOSX_BUNDLE_COPYRIGHT "Copyright © Megapahit 2024")
set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "SecondLife.nib")
set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "LLApplication")
@@ -2089,6 +2299,7 @@ if (DARWIN)
LINK_FLAGS "-rpath @loader_path/../Frameworks"
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info-SecondLife.plist"
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${MACOSX_BUNDLE_GUI_IDENTIFIER}"
+ MACOSX_BUNDLE TRUE
)
set(VIEWER_APP_BUNDLE "${CMAKE_CURRENT_BINARY_DIR}/$<IF:$<BOOL:${LL_GENERATOR_IS_MULTI_CONFIG}>,$<CONFIG>,>/${product}.app")
@@ -2099,6 +2310,12 @@ if (DARWIN)
"${VIEWER_APP_BUNDLE}/Contents/Info.plist"
)
+ if (USESYSTEMLIBS)
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/English.lproj/InfoPlist.strings
+ ${CMAKE_CURRENT_BINARY_DIR}/InfoPlist.strings
+ )
+ else (USESYSTEMLIBS)
add_custom_command(
TARGET ${VIEWER_BINARY_NAME} POST_BUILD
COMMAND ${PYTHON_EXECUTABLE}
@@ -2123,8 +2340,11 @@ if (DARWIN)
${VIEWER_BINARY_NAME}
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
)
+ endif (USESYSTEMLIBS)
+ if (ENABLE_MEDIA_PLUGINS)
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_libvlc media_plugin_cef)
+ endif ()
if (ENABLE_SIGNING)
set(SIGNING_SETTING "--signature=${SIGNING_IDENTITY}")
@@ -2133,6 +2353,26 @@ if (DARWIN)
endif (ENABLE_SIGNING)
if (PACKAGE)
+ if (USESYSTEMLIBS)
+ set(CPACK_DMG_VOLUME_NAME "${product} Installer"
+ CACHE STRING "Disk image volume name.")
+ set(CPACK_DMG_FORMAT UDRW CACHE STRING "Disk image format.")
+ set(CPACK_DMG_DS_STORE
+ ${CMAKE_CURRENT_SOURCE_DIR}/installers/darwin/release-dmg/_DS_Store
+ CACHE STRING "Disk image .DS_Store file.")
+ set(CPACK_DMG_DS_STORE_SETUP_SCRIPT
+ ${CMAKE_CURRENT_SOURCE_DIR}/installers/darwin/dmg-cleanup.applescript
+ CACHE STRING "Disk image AppleScript file.")
+ set(CPACK_DMG_BACKGROUND_IMAGE
+ ${CMAKE_CURRENT_SOURCE_DIR}/installers/darwin/release-dmg/background.jpg
+ CACHE STRING "Disk image background image.")
+ set(CPACK_BUNDLE_NAME ${product} CACHE STRING "Bundle name.")
+ set(CPACK_BUNDLE_PLIST ${VIEWER_APP_BUNDLE}/Contents/Info.plist
+ CACHE STRING "Bundle Property List file.")
+ set(CPACK_BUNDLE_ICON ${CMAKE_CURRENT_SOURCE_DIR}/secondlife.icns
+ CACHE STRING "Bundle icon file.")
+
+ else (USESYSTEMLIBS)
add_custom_target(llpackage ALL DEPENDS ${VIEWER_BINARY_NAME})
add_custom_command(
@@ -2158,12 +2398,16 @@ if (DARWIN)
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
)
+ endif (USESYSTEMLIBS)
endif (PACKAGE)
endif (DARWIN)
if (INSTALL)
include(${CMAKE_CURRENT_SOURCE_DIR}/ViewerInstall.cmake)
endif (INSTALL)
+if (PACKAGE AND USESYSTEMLIBS)
+ include(CPack)
+endif (PACKAGE AND USESYSTEMLIBS)
if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIEWER_SYMBOL_FILE)
if (USE_BUGSPLAT)
diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings
index 041b8cea0b..48e7262dd5 100644
--- a/indra/newview/English.lproj/InfoPlist.strings
+++ b/indra/newview/English.lproj/InfoPlist.strings
@@ -1,7 +1,7 @@
/* Localized versions of Info.plist keys */
-CFBundleName = "Second Life";
+CFBundleName = "Megapahit";
-CFBundleShortVersionString = "Second Life version %%VERSION%%";
-CFBundleGetInfoString = "Second Life version %%VERSION%%, Copyright 2004 Linden Research, Inc.";
+CFBundleShortVersionString = "Megapahit version ${MACOSX_BUNDLE_SHORT_VERSION_STRING}";
+CFBundleGetInfoString = "Megapahit version ${MACOSX_BUNDLE_SHORT_VERSION_STRING}, Copyright 2024 Megapahit.";
diff --git a/indra/newview/FixBundle.cmake.in b/indra/newview/FixBundle.cmake.in
new file mode 100644
index 0000000000..dbf9161b70
--- /dev/null
+++ b/indra/newview/FixBundle.cmake.in
@@ -0,0 +1,717 @@
+include(BundleUtilities)
+
+set(dirs
+ /opt/local/lib
+ )
+
+file(CREATE_LINK
+ "../../../../Frameworks/libnghttp2.14.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libnghttp2.14.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libpng16.16.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libpng16.16.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libjpeg.8.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libjpeg.8.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libaprutil-1.0.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libaprutil-1.0.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libiconv.2.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libiconv.2.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libapr-1.0.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libapr-1.0.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libz.1.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libz.1.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_atomic-mt.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_atomic-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_context-mt.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_context-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_fiber-mt.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_fiber-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_filesystem-mt.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_filesystem-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_program_options-mt.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_program_options-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_regex-mt.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_regex-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_system-mt.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_system-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_thread-mt.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_thread-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_url-mt.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_url-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libexpat.1.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libexpat.1.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libSDL2-2.0.0.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libSDL2-2.0.0.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libfreetype.6.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libfreetype.6.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libbz2.1.0.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libbz2.1.0.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libbrotlidec.1.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libbrotlidec.1.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libbrotlicommon.1.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libbrotlicommon.1.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libicudata.74.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libicudata.74.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libicui18n.74.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libicui18n.74.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libicuuc.74.dylib"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libicuuc.74.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/Chromium Embedded Framework.framework"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework"
+ SYMBOLIC
+ )
+
+fixup_bundle(${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/MacOS/${VIEWER_CHANNEL} "" "${dirs}")
+
+file(CHMOD
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper.app/Contents/MacOS/DullahanHelper"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper (GPU).app/Contents/MacOS/DullahanHelper (GPU)"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper (Plugin).app/Contents/MacOS/DullahanHelper (Plugin)"
+ "${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper (Renderer).app/Contents/MacOS/DullahanHelper (Renderer)"
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+ )
+
+execute_process(
+ COMMAND hdiutil detach /Volumes/VLC\ media\ player
+ COMMAND lipo libalut.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libalut.0.dylib
+ COMMAND lipo libapr-1.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libapr-1.0.dylib
+ COMMAND lipo libaprutil-1.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libaprutil-1.0.dylib
+ COMMAND lipo libboost_atomic-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_atomic-mt.dylib
+ COMMAND lipo libboost_context-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_context-mt.dylib
+ COMMAND lipo libboost_fiber-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_fiber-mt.dylib
+ COMMAND lipo libboost_filesystem-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_filesystem-mt.dylib
+ COMMAND lipo libboost_program_options-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_program_options-mt.dylib
+ COMMAND lipo libboost_regex-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_regex-mt.dylib
+ COMMAND lipo libboost_system-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_system-mt.dylib
+ COMMAND lipo libboost_thread-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_thread-mt.dylib
+ COMMAND lipo libboost_url-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_url-mt.dylib
+ COMMAND lipo libbrotlicommon.1.1.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libbrotlicommon.1.1.0.dylib
+ COMMAND lipo libbrotlidec.1.1.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libbrotlidec.1.1.0.dylib
+ COMMAND lipo libbz2.1.0.8.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libbz2.1.0.8.dylib
+ COMMAND lipo libcollada14dom.2.3-r4.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libcollada14dom.2.3-r4.dylib
+ COMMAND lipo libexpat.1.9.3.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libexpat.1.9.3.dylib
+ COMMAND lipo libfreetype.6.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libfreetype.6.dylib
+ COMMAND lipo libhunspell-1.7.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libhunspell-1.7.0.dylib
+ COMMAND lipo libiconv.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libiconv.2.dylib
+ COMMAND lipo libicudata.74.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libicudata.74.2.dylib
+ COMMAND lipo libicui18n.74.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libicui18n.74.2.dylib
+ COMMAND lipo libicuuc.74.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libicuuc.74.2.dylib
+ COMMAND lipo libjpeg.8.3.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libjpeg.8.3.2.dylib
+ COMMAND lipo libllwebrtc.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libllwebrtc.dylib
+ COMMAND lipo liblzma.5.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output liblzma.5.dylib
+ COMMAND lipo libminizip.1.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libminizip.1.dylib
+ COMMAND lipo libncurses.6.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libncurses.6.dylib
+ COMMAND lipo libndofdev.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libndofdev.dylib
+ COMMAND lipo libnghttp2.14.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libnghttp2.14.dylib
+ COMMAND lipo libogg.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libogg.0.dylib
+ COMMAND lipo libopenal.1.23.1.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libopenal.1.23.1.dylib
+ COMMAND lipo libpcre.1.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libpcre.1.dylib
+ COMMAND lipo libpcrecpp.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libpcrecpp.0.dylib
+ COMMAND lipo libpng16.16.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libpng16.16.dylib
+ COMMAND lipo libvlc.5.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libvlc.5.dylib
+ COMMAND lipo libvlccore.9.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libvlccore.9.dylib
+ COMMAND lipo libvorbis.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libvorbis.0.dylib
+ COMMAND lipo libvorbisenc.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libvorbisenc.2.dylib
+ COMMAND lipo libvorbisfile.3.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libvorbisfile.3.dylib
+ COMMAND lipo libxml2.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libxml2.2.dylib
+ COMMAND lipo libz.1.3.1.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libz.1.3.1.dylib
+ WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Frameworks
+ ERROR_QUIET
+ )
+
+message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Running a native self-built viewer on it without correct codesigning would lead to a crash. Also, codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.")
+execute_process(
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libEGL.dylib
+ Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libGLESv2.dylib
+ Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libvk_swiftshader.dylib
+ Frameworks/Chromium\ Embedded\ Framework.framework
+ Frameworks/libSDL2-2.0.0.dylib
+ Frameworks/libalut.0.dylib
+ Frameworks/libapr-1.0.dylib
+ Frameworks/libaprutil-1.0.dylib
+ Frameworks/libboost_atomic-mt.dylib
+ Frameworks/libboost_context-mt.dylib
+ Frameworks/libboost_fiber-mt.dylib
+ Frameworks/libboost_filesystem-mt.dylib
+ Frameworks/libboost_program_options-mt.dylib
+ Frameworks/libboost_regex-mt.dylib
+ Frameworks/libboost_system-mt.dylib
+ Frameworks/libboost_thread-mt.dylib
+ Frameworks/libboost_url-mt.dylib
+ Frameworks/libbrotlicommon.1.1.0.dylib
+ Frameworks/libbrotlidec.1.1.0.dylib
+ Frameworks/libbz2.1.0.8.dylib
+ Frameworks/libcollada14dom.2.3-r4.dylib
+ Frameworks/libexpat.1.9.3.dylib
+ Frameworks/libfreetype.6.dylib
+ Frameworks/libhunspell-1.7.0.dylib
+ Frameworks/libiconv.2.dylib
+ Frameworks/libicudata.74.2.dylib
+ Frameworks/libicui18n.74.2.dylib
+ Frameworks/libicuuc.74.2.dylib
+ Frameworks/libjpeg.8.3.2.dylib
+ Frameworks/libllwebrtc.dylib
+ Frameworks/liblzma.5.dylib
+ Frameworks/libminizip.1.dylib
+ Frameworks/libncurses.6.dylib
+ Frameworks/libndofdev.dylib
+ Frameworks/libnghttp2.14.dylib
+ Frameworks/libogg.0.dylib
+ Frameworks/libopenal.1.23.1.dylib
+ Frameworks/libpcre.1.dylib
+ Frameworks/libpcrecpp.0.dylib
+ Frameworks/libpng16.16.dylib
+ Frameworks/libvlc.5.dylib
+ Frameworks/libvlccore.9.dylib
+ Frameworks/libvorbis.0.dylib
+ Frameworks/libvorbisenc.2.dylib
+ Frameworks/libvorbisfile.3.dylib
+ Frameworks/libxml2.2.dylib
+ Frameworks/libz.1.3.1.dylib
+ Resources/libndofdev.dylib
+ Resources/llplugin/media_plugin_cef.dylib
+ Resources/llplugin/media_plugin_libvlc.dylib
+ Resources/llplugin/plugins/liba52_plugin.dylib
+ Resources/llplugin/plugins/libaccess_concat_plugin.dylib
+ Resources/llplugin/plugins/libaccess_imem_plugin.dylib
+ Resources/llplugin/plugins/libaccess_mms_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_dummy_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_file_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_http_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_livehttp_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_rist_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_shout_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_srt_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_udp_plugin.dylib
+ Resources/llplugin/plugins/libaccess_realrtsp_plugin.dylib
+ Resources/llplugin/plugins/libaccess_srt_plugin.dylib
+ Resources/llplugin/plugins/libadaptive_plugin.dylib
+ Resources/llplugin/plugins/libaddonsfsstorage_plugin.dylib
+ Resources/llplugin/plugins/libaddonsvorepository_plugin.dylib
+ Resources/llplugin/plugins/libadf_plugin.dylib
+ Resources/llplugin/plugins/libadjust_plugin.dylib
+ Resources/llplugin/plugins/libadpcm_plugin.dylib
+ Resources/llplugin/plugins/libadummy_plugin.dylib
+ Resources/llplugin/plugins/libaes3_plugin.dylib
+ Resources/llplugin/plugins/libafile_plugin.dylib
+ Resources/llplugin/plugins/libaiff_plugin.dylib
+ Resources/llplugin/plugins/libalphamask_plugin.dylib
+ Resources/llplugin/plugins/libamem_plugin.dylib
+ Resources/llplugin/plugins/libanaglyph_plugin.dylib
+ Resources/llplugin/plugins/libantiflicker_plugin.dylib
+ Resources/llplugin/plugins/libaom_plugin.dylib
+ Resources/llplugin/plugins/libaraw_plugin.dylib
+ Resources/llplugin/plugins/libarchive_plugin.dylib
+ Resources/llplugin/plugins/libaribsub_plugin.dylib
+ Resources/llplugin/plugins/libasf_plugin.dylib
+ Resources/llplugin/plugins/libattachment_plugin.dylib
+ Resources/llplugin/plugins/libau_plugin.dylib
+ Resources/llplugin/plugins/libaudio_format_plugin.dylib
+ Resources/llplugin/plugins/libaudiobargraph_a_plugin.dylib
+ Resources/llplugin/plugins/libaudiobargraph_v_plugin.dylib
+ Resources/llplugin/plugins/libaudioscrobbler_plugin.dylib
+ Resources/llplugin/plugins/libaudiotoolboxmidi_plugin.dylib
+ Resources/llplugin/plugins/libauhal_plugin.dylib
+ Resources/llplugin/plugins/libavaudiocapture_plugin.dylib
+ Resources/llplugin/plugins/libavcapture_plugin.dylib
+ Resources/llplugin/plugins/libavcodec_plugin.dylib
+ Resources/llplugin/plugins/libavi_plugin.dylib
+ Resources/llplugin/plugins/libball_plugin.dylib
+ Resources/llplugin/plugins/libblend_plugin.dylib
+ Resources/llplugin/plugins/libblendbench_plugin.dylib
+ Resources/llplugin/plugins/libbluescreen_plugin.dylib
+ Resources/llplugin/plugins/libbluray-awt-j2se-1.3.2.jar
+ Resources/llplugin/plugins/libbluray-j2se-1.3.2.jar
+ Resources/llplugin/plugins/libbonjour_plugin.dylib
+ Resources/llplugin/plugins/libcache_block_plugin.dylib
+ Resources/llplugin/plugins/libcache_read_plugin.dylib
+ Resources/llplugin/plugins/libcaf_plugin.dylib
+ Resources/llplugin/plugins/libcanvas_plugin.dylib
+ Resources/llplugin/plugins/libcaopengllayer_plugin.dylib
+ Resources/llplugin/plugins/libcc_plugin.dylib
+ Resources/llplugin/plugins/libcdda_plugin.dylib
+ Resources/llplugin/plugins/libcdg_plugin.dylib
+ Resources/llplugin/plugins/libchain_plugin.dylib
+ Resources/llplugin/plugins/libchorus_flanger_plugin.dylib
+ Resources/llplugin/plugins/libci_filters_plugin.dylib
+ Resources/llplugin/plugins/libclone_plugin.dylib
+ Resources/llplugin/plugins/libcolorthres_plugin.dylib
+ Resources/llplugin/plugins/libcompressor_plugin.dylib
+ Resources/llplugin/plugins/libconsole_logger_plugin.dylib
+ Resources/llplugin/plugins/libcroppadd_plugin.dylib
+ Resources/llplugin/plugins/libcvdsub_plugin.dylib
+ Resources/llplugin/plugins/libcvpx_plugin.dylib
+ Resources/llplugin/plugins/libdav1d_plugin.dylib
+ Resources/llplugin/plugins/libdca_plugin.dylib
+ Resources/llplugin/plugins/libdcp_plugin.dylib
+ Resources/llplugin/plugins/libddummy_plugin.dylib
+ Resources/llplugin/plugins/libdecomp_plugin.dylib
+ Resources/llplugin/plugins/libdeinterlace_plugin.dylib
+ Resources/llplugin/plugins/libdemux_cdg_plugin.dylib
+ Resources/llplugin/plugins/libdemux_chromecast_plugin.dylib
+ Resources/llplugin/plugins/libdemux_stl_plugin.dylib
+ Resources/llplugin/plugins/libdemuxdump_plugin.dylib
+ Resources/llplugin/plugins/libdiracsys_plugin.dylib
+ Resources/llplugin/plugins/libdirectory_demux_plugin.dylib
+ Resources/llplugin/plugins/libdolby_surround_decoder_plugin.dylib
+ Resources/llplugin/plugins/libdummy_plugin.dylib
+ Resources/llplugin/plugins/libdvbsub_plugin.dylib
+ Resources/llplugin/plugins/libdvdnav_plugin.dylib
+ Resources/llplugin/plugins/libdvdread_plugin.dylib
+ Resources/llplugin/plugins/libdynamicoverlay_plugin.dylib
+ Resources/llplugin/plugins/libedgedetection_plugin.dylib
+ Resources/llplugin/plugins/libedummy_plugin.dylib
+ Resources/llplugin/plugins/libequalizer_plugin.dylib
+ Resources/llplugin/plugins/liberase_plugin.dylib
+ Resources/llplugin/plugins/libes_plugin.dylib
+ Resources/llplugin/plugins/libexport_plugin.dylib
+ Resources/llplugin/plugins/libextract_plugin.dylib
+ Resources/llplugin/plugins/libfaad_plugin.dylib
+ Resources/llplugin/plugins/libfile_keystore_plugin.dylib
+ Resources/llplugin/plugins/libfile_logger_plugin.dylib
+ Resources/llplugin/plugins/libfilesystem_plugin.dylib
+ Resources/llplugin/plugins/libfingerprinter_plugin.dylib
+ Resources/llplugin/plugins/libflac_plugin.dylib
+ Resources/llplugin/plugins/libflacsys_plugin.dylib
+ Resources/llplugin/plugins/libflaschen_plugin.dylib
+ Resources/llplugin/plugins/libfloat_mixer_plugin.dylib
+ Resources/llplugin/plugins/libfolder_plugin.dylib
+ Resources/llplugin/plugins/libfps_plugin.dylib
+ Resources/llplugin/plugins/libfreetype_plugin.dylib
+ Resources/llplugin/plugins/libfreeze_plugin.dylib
+ Resources/llplugin/plugins/libftp_plugin.dylib
+ Resources/llplugin/plugins/libg711_plugin.dylib
+ Resources/llplugin/plugins/libgain_plugin.dylib
+ Resources/llplugin/plugins/libgaussianblur_plugin.dylib
+ Resources/llplugin/plugins/libgestures_plugin.dylib
+ Resources/llplugin/plugins/libglconv_cvpx_plugin.dylib
+ Resources/llplugin/plugins/libgme_plugin.dylib
+ Resources/llplugin/plugins/libgnutls_plugin.dylib
+ Resources/llplugin/plugins/libgoom_plugin.dylib
+ Resources/llplugin/plugins/libgradfun_plugin.dylib
+ Resources/llplugin/plugins/libgradient_plugin.dylib
+ Resources/llplugin/plugins/libgrain_plugin.dylib
+ Resources/llplugin/plugins/libgrey_yuv_plugin.dylib
+ Resources/llplugin/plugins/libh26x_plugin.dylib
+ Resources/llplugin/plugins/libhds_plugin.dylib
+ Resources/llplugin/plugins/libheadphone_channel_mixer_plugin.dylib
+ Resources/llplugin/plugins/libhotkeys_plugin.dylib
+ Resources/llplugin/plugins/libhqdn3d_plugin.dylib
+ Resources/llplugin/plugins/libhttp_plugin.dylib
+ Resources/llplugin/plugins/libhttps_plugin.dylib
+ Resources/llplugin/plugins/libi420_10_p010_plugin.dylib
+ Resources/llplugin/plugins/libi420_nv12_plugin.dylib
+ Resources/llplugin/plugins/libi420_rgb_mmx_plugin.dylib
+ Resources/llplugin/plugins/libi420_rgb_plugin.dylib
+ Resources/llplugin/plugins/libi420_rgb_sse2_plugin.dylib
+ Resources/llplugin/plugins/libi420_yuy2_mmx_plugin.dylib
+ Resources/llplugin/plugins/libi420_yuy2_plugin.dylib
+ Resources/llplugin/plugins/libi420_yuy2_sse2_plugin.dylib
+ Resources/llplugin/plugins/libi422_i420_plugin.dylib
+ Resources/llplugin/plugins/libi422_yuy2_mmx_plugin.dylib
+ Resources/llplugin/plugins/libi422_yuy2_plugin.dylib
+ Resources/llplugin/plugins/libi422_yuy2_sse2_plugin.dylib
+ Resources/llplugin/plugins/libidummy_plugin.dylib
+ Resources/llplugin/plugins/libimage_plugin.dylib
+ Resources/llplugin/plugins/libimem_plugin.dylib
+ Resources/llplugin/plugins/libinflate_plugin.dylib
+ Resources/llplugin/plugins/libinteger_mixer_plugin.dylib
+ Resources/llplugin/plugins/libinvert_plugin.dylib
+ Resources/llplugin/plugins/libjpeg_plugin.dylib
+ Resources/llplugin/plugins/libkaraoke_plugin.dylib
+ Resources/llplugin/plugins/libkate_plugin.dylib
+ Resources/llplugin/plugins/libkeychain_plugin.dylib
+ Resources/llplugin/plugins/liblibass_plugin.dylib
+ Resources/llplugin/plugins/liblibbluray_plugin.dylib
+ Resources/llplugin/plugins/liblibmpeg2_plugin.dylib
+ Resources/llplugin/plugins/liblive555_plugin.dylib
+ Resources/llplugin/plugins/liblogger_plugin.dylib
+ Resources/llplugin/plugins/liblogo_plugin.dylib
+ Resources/llplugin/plugins/liblpcm_plugin.dylib
+ Resources/llplugin/plugins/liblua_plugin.dylib
+ Resources/llplugin/plugins/libmacosx_plugin.dylib
+ Resources/llplugin/plugins/libmad_plugin.dylib
+ Resources/llplugin/plugins/libmagnify_plugin.dylib
+ Resources/llplugin/plugins/libmarq_plugin.dylib
+ Resources/llplugin/plugins/libmediadirs_plugin.dylib
+ Resources/llplugin/plugins/libmemory_keystore_plugin.dylib
+ Resources/llplugin/plugins/libmirror_plugin.dylib
+ Resources/llplugin/plugins/libmjpeg_plugin.dylib
+ Resources/llplugin/plugins/libmkv_plugin.dylib
+ Resources/llplugin/plugins/libmod_plugin.dylib
+ Resources/llplugin/plugins/libmono_plugin.dylib
+ Resources/llplugin/plugins/libmosaic_plugin.dylib
+ Resources/llplugin/plugins/libmotion_plugin.dylib
+ Resources/llplugin/plugins/libmotionblur_plugin.dylib
+ Resources/llplugin/plugins/libmotiondetect_plugin.dylib
+ Resources/llplugin/plugins/libmp4_plugin.dylib
+ Resources/llplugin/plugins/libmpc_plugin.dylib
+ Resources/llplugin/plugins/libmpg123_plugin.dylib
+ Resources/llplugin/plugins/libmpgv_plugin.dylib
+ Resources/llplugin/plugins/libmux_asf_plugin.dylib
+ Resources/llplugin/plugins/libmux_avi_plugin.dylib
+ Resources/llplugin/plugins/libmux_dummy_plugin.dylib
+ Resources/llplugin/plugins/libmux_mp4_plugin.dylib
+ Resources/llplugin/plugins/libmux_mpjpeg_plugin.dylib
+ Resources/llplugin/plugins/libmux_ogg_plugin.dylib
+ Resources/llplugin/plugins/libmux_ps_plugin.dylib
+ Resources/llplugin/plugins/libmux_ts_plugin.dylib
+ Resources/llplugin/plugins/libmux_wav_plugin.dylib
+ Resources/llplugin/plugins/libncurses_plugin.dylib
+ Resources/llplugin/plugins/libnetsync_plugin.dylib
+ Resources/llplugin/plugins/libnfs_plugin.dylib
+ Resources/llplugin/plugins/libnormvol_plugin.dylib
+ Resources/llplugin/plugins/libnoseek_plugin.dylib
+ Resources/llplugin/plugins/libnsc_plugin.dylib
+ Resources/llplugin/plugins/libnsspeechsynthesizer_plugin.dylib
+ Resources/llplugin/plugins/libnsv_plugin.dylib
+ Resources/llplugin/plugins/libnuv_plugin.dylib
+ Resources/llplugin/plugins/libogg_plugin.dylib
+ Resources/llplugin/plugins/liboggspots_plugin.dylib
+ Resources/llplugin/plugins/liboldmovie_plugin.dylib
+ Resources/llplugin/plugins/liboldrc_plugin.dylib
+ Resources/llplugin/plugins/libopus_plugin.dylib
+ Resources/llplugin/plugins/libosx_notifications_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_a52_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_av1_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_copy_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_dirac_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_dts_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_flac_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_h264_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_hevc_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_mlp_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_mpeg4audio_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_mpeg4video_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_mpegaudio_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_mpegvideo_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_vc1_plugin.dylib
+ Resources/llplugin/plugins/libparam_eq_plugin.dylib
+ Resources/llplugin/plugins/libplaylist_plugin.dylib
+ Resources/llplugin/plugins/libpng_plugin.dylib
+ Resources/llplugin/plugins/libpodcast_plugin.dylib
+ Resources/llplugin/plugins/libposterize_plugin.dylib
+ Resources/llplugin/plugins/libpostproc_plugin.dylib
+ Resources/llplugin/plugins/libprefetch_plugin.dylib
+ Resources/llplugin/plugins/libps_plugin.dylib
+ Resources/llplugin/plugins/libpsychedelic_plugin.dylib
+ Resources/llplugin/plugins/libpuzzle_plugin.dylib
+ Resources/llplugin/plugins/libpva_plugin.dylib
+ Resources/llplugin/plugins/librawaud_plugin.dylib
+ Resources/llplugin/plugins/librawdv_plugin.dylib
+ Resources/llplugin/plugins/librawvid_plugin.dylib
+ Resources/llplugin/plugins/librawvideo_plugin.dylib
+ Resources/llplugin/plugins/libreal_plugin.dylib
+ Resources/llplugin/plugins/librecord_plugin.dylib
+ Resources/llplugin/plugins/libremap_plugin.dylib
+ Resources/llplugin/plugins/libremoteosd_plugin.dylib
+ Resources/llplugin/plugins/libripple_plugin.dylib
+ Resources/llplugin/plugins/librist_plugin.dylib
+ Resources/llplugin/plugins/librotate_plugin.dylib
+ Resources/llplugin/plugins/librss_plugin.dylib
+ Resources/llplugin/plugins/librtp_plugin.dylib
+ Resources/llplugin/plugins/librtpvideo_plugin.dylib
+ Resources/llplugin/plugins/librv32_plugin.dylib
+ Resources/llplugin/plugins/libsamplerate_plugin.dylib
+ Resources/llplugin/plugins/libsap_plugin.dylib
+ Resources/llplugin/plugins/libsatip_plugin.dylib
+ Resources/llplugin/plugins/libscale_plugin.dylib
+ Resources/llplugin/plugins/libscaletempo_pitch_plugin.dylib
+ Resources/llplugin/plugins/libscaletempo_plugin.dylib
+ Resources/llplugin/plugins/libscene_plugin.dylib
+ Resources/llplugin/plugins/libschroedinger_plugin.dylib
+ Resources/llplugin/plugins/libscreen_plugin.dylib
+ Resources/llplugin/plugins/libscte18_plugin.dylib
+ Resources/llplugin/plugins/libscte27_plugin.dylib
+ Resources/llplugin/plugins/libsdp_plugin.dylib
+ Resources/llplugin/plugins/libsecuretransport_plugin.dylib
+ Resources/llplugin/plugins/libsepia_plugin.dylib
+ Resources/llplugin/plugins/libsftp_plugin.dylib
+ Resources/llplugin/plugins/libsharpen_plugin.dylib
+ Resources/llplugin/plugins/libshm_plugin.dylib
+ Resources/llplugin/plugins/libsid_plugin.dylib
+ Resources/llplugin/plugins/libsimple_channel_mixer_plugin.dylib
+ Resources/llplugin/plugins/libskiptags_plugin.dylib
+ Resources/llplugin/plugins/libsmf_plugin.dylib
+ Resources/llplugin/plugins/libspatialaudio_plugin.dylib
+ Resources/llplugin/plugins/libspatializer_plugin.dylib
+ Resources/llplugin/plugins/libspdif_plugin.dylib
+ Resources/llplugin/plugins/libspeex_plugin.dylib
+ Resources/llplugin/plugins/libspeex_resampler_plugin.dylib
+ Resources/llplugin/plugins/libspudec_plugin.dylib
+ Resources/llplugin/plugins/libstats_plugin.dylib
+ Resources/llplugin/plugins/libstereo_widen_plugin.dylib
+ Resources/llplugin/plugins/libstl_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_autodel_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_bridge_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_chromaprint_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_chromecast_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_cycle_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_delay_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_description_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_display_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_dummy_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_duplicate_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_es_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_gather_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_mosaic_bridge_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_record_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_rtp_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_setid_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_smem_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_standard_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_stats_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_transcode_plugin.dylib
+ Resources/llplugin/plugins/libsubsdec_plugin.dylib
+ Resources/llplugin/plugins/libsubsdelay_plugin.dylib
+ Resources/llplugin/plugins/libsubstx3g_plugin.dylib
+ Resources/llplugin/plugins/libsubsusf_plugin.dylib
+ Resources/llplugin/plugins/libsubtitle_plugin.dylib
+ Resources/llplugin/plugins/libsvcdsub_plugin.dylib
+ Resources/llplugin/plugins/libswscale_plugin.dylib
+ Resources/llplugin/plugins/libsyslog_plugin.dylib
+ Resources/llplugin/plugins/libt140_plugin.dylib
+ Resources/llplugin/plugins/libtaglib_plugin.dylib
+ Resources/llplugin/plugins/libtcp_plugin.dylib
+ Resources/llplugin/plugins/libtdummy_plugin.dylib
+ Resources/llplugin/plugins/libtelx_plugin.dylib
+ Resources/llplugin/plugins/libtextst_plugin.dylib
+ Resources/llplugin/plugins/libtheora_plugin.dylib
+ Resources/llplugin/plugins/libtimecode_plugin.dylib
+ Resources/llplugin/plugins/libtospdif_plugin.dylib
+ Resources/llplugin/plugins/libtransform_plugin.dylib
+ Resources/llplugin/plugins/libtrivial_channel_mixer_plugin.dylib
+ Resources/llplugin/plugins/libts_plugin.dylib
+ Resources/llplugin/plugins/libtta_plugin.dylib
+ Resources/llplugin/plugins/libttml_plugin.dylib
+ Resources/llplugin/plugins/libtwolame_plugin.dylib
+ Resources/llplugin/plugins/libty_plugin.dylib
+ Resources/llplugin/plugins/libudp_plugin.dylib
+ Resources/llplugin/plugins/libugly_resampler_plugin.dylib
+ Resources/llplugin/plugins/libuleaddvaudio_plugin.dylib
+ Resources/llplugin/plugins/libupnp_plugin.dylib
+ Resources/llplugin/plugins/libvc1_plugin.dylib
+ Resources/llplugin/plugins/libvcd_plugin.dylib
+ Resources/llplugin/plugins/libvdr_plugin.dylib
+ Resources/llplugin/plugins/libvdummy_plugin.dylib
+ Resources/llplugin/plugins/libvhs_plugin.dylib
+ Resources/llplugin/plugins/libvideotoolbox_plugin.dylib
+ Resources/llplugin/plugins/libvisual_plugin.dylib
+ Resources/llplugin/plugins/libvlc.5.dylib
+ Resources/llplugin/plugins/libvlccore.9.dylib
+ Resources/llplugin/plugins/libvmem_plugin.dylib
+ Resources/llplugin/plugins/libvobsub_plugin.dylib
+ Resources/llplugin/plugins/libvoc_plugin.dylib
+ Resources/llplugin/plugins/libvod_rtsp_plugin.dylib
+ Resources/llplugin/plugins/libvorbis_plugin.dylib
+ Resources/llplugin/plugins/libvout_macosx_plugin.dylib
+ Resources/llplugin/plugins/libvpx_plugin.dylib
+ Resources/llplugin/plugins/libwall_plugin.dylib
+ Resources/llplugin/plugins/libwav_plugin.dylib
+ Resources/llplugin/plugins/libwave_plugin.dylib
+ Resources/llplugin/plugins/libwebvtt_plugin.dylib
+ Resources/llplugin/plugins/libx26410b_plugin.dylib
+ Resources/llplugin/plugins/libx264_plugin.dylib
+ Resources/llplugin/plugins/libx265_plugin.dylib
+ Resources/llplugin/plugins/libxa_plugin.dylib
+ Resources/llplugin/plugins/libxml_plugin.dylib
+ Resources/llplugin/plugins/libyuv_plugin.dylib
+ Resources/llplugin/plugins/libyuvp_plugin.dylib
+ Resources/llplugin/plugins/libyuy2_i420_plugin.dylib
+ Resources/llplugin/plugins/libyuy2_i422_plugin.dylib
+ Resources/llplugin/plugins/libzvbi_plugin.dylib
+ Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(GPU\).app/Contents/MacOS/DullahanHelper\ \(GPU\)
+ Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Plugin\).app/Contents/MacOS/DullahanHelper\ \(Plugin\)
+ WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents
+ )
+execute_process(
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ DullahanHelper.app
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements
+ DullahanHelper\ \(Renderer\).app/Contents/MacOS/DullahanHelper\ \(Renderer\)
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ --deep
+ DullahanHelper\ \(GPU\).app
+ DullahanHelper\ \(Plugin\).app
+ WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks
+ )
+execute_process(
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements
+ --deep
+ DullahanHelper\ \(Renderer\).app
+ WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks
+ )
+execute_process(
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements
+ SLPlugin.app
+ WORKING_DIRECTORY ${viewer_BINARY_DIR}/${VIEWER_CHANNEL}.app/Contents/Resources
+ )
+execute_process(
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements
+ -i net.${VIEWER_BINARY_NAME}.viewer
+ ${VIEWER_CHANNEL}.app
+ WORKING_DIRECTORY ${viewer_BINARY_DIR}
+ )
diff --git a/indra/newview/FixPackage.cmake.in b/indra/newview/FixPackage.cmake.in
new file mode 100644
index 0000000000..d8c91afce2
--- /dev/null
+++ b/indra/newview/FixPackage.cmake.in
@@ -0,0 +1,716 @@
+include(BundleUtilities)
+
+set(dirs
+ /opt/local/lib
+ )
+
+file(CREATE_LINK
+ "../../../../Frameworks/libnghttp2.14.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libnghttp2.14.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libpng16.16.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libpng16.16.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libjpeg.8.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libjpeg.8.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libaprutil-1.0.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libaprutil-1.0.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libiconv.2.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libiconv.2.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libapr-1.0.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libapr-1.0.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libz.1.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libz.1.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_atomic-mt.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_atomic-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_context-mt.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_context-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_fiber-mt.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_fiber-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_filesystem-mt.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_filesystem-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_program_options-mt.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_program_options-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_regex-mt.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_regex-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_system-mt.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_system-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_thread-mt.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_thread-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libboost_url-mt.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libboost_url-mt.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libexpat.1.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libexpat.1.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libSDL2-2.0.0.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libSDL2-2.0.0.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libfreetype.6.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libfreetype.6.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libbz2.1.0.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libbz2.1.0.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libbrotlidec.1.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libbrotlidec.1.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libbrotlicommon.1.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libbrotlicommon.1.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libicudata.74.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libicudata.74.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libicui18n.74.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libicui18n.74.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/libicuuc.74.dylib"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/libicuuc.74.dylib"
+ SYMBOLIC
+ )
+file(CREATE_LINK
+ "../../../../Frameworks/Chromium Embedded Framework.framework"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/Chromium Embedded Framework.framework"
+ SYMBOLIC
+ )
+
+fixup_bundle(${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/MacOS/${CPACK_BUNDLE_NAME} "" "${dirs}")
+
+file(CHMOD
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper.app/Contents/MacOS/DullahanHelper"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper (GPU).app/Contents/MacOS/DullahanHelper (GPU)"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper (Plugin).app/Contents/MacOS/DullahanHelper (Plugin)"
+ "${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper (Renderer).app/Contents/MacOS/DullahanHelper (Renderer)"
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+ )
+
+execute_process(
+ COMMAND hdiutil detach /Volumes/VLC\ media\ player
+ COMMAND lipo libalut.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libalut.0.dylib
+ COMMAND lipo libapr-1.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libapr-1.0.dylib
+ COMMAND lipo libaprutil-1.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libaprutil-1.0.dylib
+ COMMAND lipo libboost_atomic-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_atomic-mt.dylib
+ COMMAND lipo libboost_context-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_context-mt.dylib
+ COMMAND lipo libboost_fiber-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_fiber-mt.dylib
+ COMMAND lipo libboost_filesystem-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_filesystem-mt.dylib
+ COMMAND lipo libboost_program_options-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_program_options-mt.dylib
+ COMMAND lipo libboost_regex-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_regex-mt.dylib
+ COMMAND lipo libboost_system-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_system-mt.dylib
+ COMMAND lipo libboost_thread-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_thread-mt.dylib
+ COMMAND lipo libboost_url-mt.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libboost_url-mt.dylib
+ COMMAND lipo libbrotlicommon.1.1.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libbrotlicommon.1.1.0.dylib
+ COMMAND lipo libbrotlidec.1.1.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libbrotlidec.1.1.0.dylib
+ COMMAND lipo libbz2.1.0.8.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libbz2.1.0.8.dylib
+ COMMAND lipo libcollada14dom.2.3-r4.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libcollada14dom.2.3-r4.dylib
+ COMMAND lipo libexpat.1.9.3.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libexpat.1.9.3.dylib
+ COMMAND lipo libfreetype.6.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libfreetype.6.dylib
+ COMMAND lipo libhunspell-1.7.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libhunspell-1.7.0.dylib
+ COMMAND lipo libiconv.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libiconv.2.dylib
+ COMMAND lipo libicudata.74.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libicudata.74.2.dylib
+ COMMAND lipo libicui18n.74.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libicui18n.74.2.dylib
+ COMMAND lipo libicuuc.74.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libicuuc.74.2.dylib
+ COMMAND lipo libjpeg.8.3.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libjpeg.8.3.2.dylib
+ COMMAND lipo libllwebrtc.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libllwebrtc.dylib
+ COMMAND lipo liblzma.5.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output liblzma.5.dylib
+ COMMAND lipo libminizip.1.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libminizip.1.dylib
+ COMMAND lipo libncurses.6.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libncurses.6.dylib
+ COMMAND lipo libndofdev.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libndofdev.dylib
+ COMMAND lipo libnghttp2.14.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libnghttp2.14.dylib
+ COMMAND lipo libogg.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libogg.0.dylib
+ COMMAND lipo libopenal.1.23.1.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libopenal.1.23.1.dylib
+ COMMAND lipo libpcre.1.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libpcre.1.dylib
+ COMMAND lipo libpcrecpp.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libpcrecpp.0.dylib
+ COMMAND lipo libpng16.16.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libpng16.16.dylib
+ COMMAND lipo libvlc.5.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libvlc.5.dylib
+ COMMAND lipo libvlccore.9.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libvlccore.9.dylib
+ COMMAND lipo libvorbis.0.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libvorbis.0.dylib
+ COMMAND lipo libvorbisenc.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libvorbisenc.2.dylib
+ COMMAND lipo libvorbisfile.3.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libvorbisfile.3.dylib
+ COMMAND lipo libxml2.2.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libxml2.2.dylib
+ COMMAND lipo libz.1.3.1.dylib
+ -thin ${CMAKE_OSX_ARCHITECTURES}
+ -output libz.1.3.1.dylib
+ WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Frameworks
+ ERROR_QUIET
+ )
+
+message("By default, the situation is assumed to be the strictest, an Apple Silicon Mac with the default security settings. Running a native self-built viewer on it without correct codesigning would lead to a crash. Also, codesigning requires administrative access. If you believe you're not in such a situation, you can remove the sudos in this file.")
+execute_process(
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libEGL.dylib
+ Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libGLESv2.dylib
+ Frameworks/Chromium\ Embedded\ Framework.framework/Libraries/libvk_swiftshader.dylib
+ Frameworks/Chromium\ Embedded\ Framework.framework
+ Frameworks/libSDL2-2.0.0.dylib
+ Frameworks/libalut.0.dylib
+ Frameworks/libapr-1.0.dylib
+ Frameworks/libaprutil-1.0.dylib
+ Frameworks/libboost_atomic-mt.dylib
+ Frameworks/libboost_context-mt.dylib
+ Frameworks/libboost_fiber-mt.dylib
+ Frameworks/libboost_filesystem-mt.dylib
+ Frameworks/libboost_program_options-mt.dylib
+ Frameworks/libboost_regex-mt.dylib
+ Frameworks/libboost_system-mt.dylib
+ Frameworks/libboost_thread-mt.dylib
+ Frameworks/libboost_url-mt.dylib
+ Frameworks/libbrotlicommon.1.1.0.dylib
+ Frameworks/libbrotlidec.1.1.0.dylib
+ Frameworks/libbz2.1.0.8.dylib
+ Frameworks/libcollada14dom.2.3-r4.dylib
+ Frameworks/libexpat.1.9.3.dylib
+ Frameworks/libfreetype.6.dylib
+ Frameworks/libhunspell-1.7.0.dylib
+ Frameworks/libiconv.2.dylib
+ Frameworks/libicudata.74.2.dylib
+ Frameworks/libicui18n.74.2.dylib
+ Frameworks/libicuuc.74.2.dylib
+ Frameworks/libjpeg.8.3.2.dylib
+ Frameworks/libllwebrtc.dylib
+ Frameworks/liblzma.5.dylib
+ Frameworks/libminizip.1.dylib
+ Frameworks/libncurses.6.dylib
+ Frameworks/libndofdev.dylib
+ Frameworks/libnghttp2.14.dylib
+ Frameworks/libogg.0.dylib
+ Frameworks/libopenal.1.23.1.dylib
+ Frameworks/libpcre.1.dylib
+ Frameworks/libpcrecpp.0.dylib
+ Frameworks/libpng16.16.dylib
+ Frameworks/libvlc.5.dylib
+ Frameworks/libvlccore.9.dylib
+ Frameworks/libvorbis.0.dylib
+ Frameworks/libvorbisenc.2.dylib
+ Frameworks/libvorbisfile.3.dylib
+ Frameworks/libxml2.2.dylib
+ Frameworks/libz.1.3.1.dylib
+ Resources/libndofdev.dylib
+ Resources/llplugin/media_plugin_cef.dylib
+ Resources/llplugin/media_plugin_libvlc.dylib
+ Resources/llplugin/plugins/liba52_plugin.dylib
+ Resources/llplugin/plugins/libaccess_concat_plugin.dylib
+ Resources/llplugin/plugins/libaccess_imem_plugin.dylib
+ Resources/llplugin/plugins/libaccess_mms_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_dummy_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_file_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_http_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_livehttp_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_rist_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_shout_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_srt_plugin.dylib
+ Resources/llplugin/plugins/libaccess_output_udp_plugin.dylib
+ Resources/llplugin/plugins/libaccess_realrtsp_plugin.dylib
+ Resources/llplugin/plugins/libaccess_srt_plugin.dylib
+ Resources/llplugin/plugins/libadaptive_plugin.dylib
+ Resources/llplugin/plugins/libaddonsfsstorage_plugin.dylib
+ Resources/llplugin/plugins/libaddonsvorepository_plugin.dylib
+ Resources/llplugin/plugins/libadf_plugin.dylib
+ Resources/llplugin/plugins/libadjust_plugin.dylib
+ Resources/llplugin/plugins/libadpcm_plugin.dylib
+ Resources/llplugin/plugins/libadummy_plugin.dylib
+ Resources/llplugin/plugins/libaes3_plugin.dylib
+ Resources/llplugin/plugins/libafile_plugin.dylib
+ Resources/llplugin/plugins/libaiff_plugin.dylib
+ Resources/llplugin/plugins/libalphamask_plugin.dylib
+ Resources/llplugin/plugins/libamem_plugin.dylib
+ Resources/llplugin/plugins/libanaglyph_plugin.dylib
+ Resources/llplugin/plugins/libantiflicker_plugin.dylib
+ Resources/llplugin/plugins/libaom_plugin.dylib
+ Resources/llplugin/plugins/libaraw_plugin.dylib
+ Resources/llplugin/plugins/libarchive_plugin.dylib
+ Resources/llplugin/plugins/libaribsub_plugin.dylib
+ Resources/llplugin/plugins/libasf_plugin.dylib
+ Resources/llplugin/plugins/libattachment_plugin.dylib
+ Resources/llplugin/plugins/libau_plugin.dylib
+ Resources/llplugin/plugins/libaudio_format_plugin.dylib
+ Resources/llplugin/plugins/libaudiobargraph_a_plugin.dylib
+ Resources/llplugin/plugins/libaudiobargraph_v_plugin.dylib
+ Resources/llplugin/plugins/libaudioscrobbler_plugin.dylib
+ Resources/llplugin/plugins/libaudiotoolboxmidi_plugin.dylib
+ Resources/llplugin/plugins/libauhal_plugin.dylib
+ Resources/llplugin/plugins/libavaudiocapture_plugin.dylib
+ Resources/llplugin/plugins/libavcapture_plugin.dylib
+ Resources/llplugin/plugins/libavcodec_plugin.dylib
+ Resources/llplugin/plugins/libavi_plugin.dylib
+ Resources/llplugin/plugins/libball_plugin.dylib
+ Resources/llplugin/plugins/libblend_plugin.dylib
+ Resources/llplugin/plugins/libblendbench_plugin.dylib
+ Resources/llplugin/plugins/libbluescreen_plugin.dylib
+ Resources/llplugin/plugins/libbluray-awt-j2se-1.3.2.jar
+ Resources/llplugin/plugins/libbluray-j2se-1.3.2.jar
+ Resources/llplugin/plugins/libbonjour_plugin.dylib
+ Resources/llplugin/plugins/libcache_block_plugin.dylib
+ Resources/llplugin/plugins/libcache_read_plugin.dylib
+ Resources/llplugin/plugins/libcaf_plugin.dylib
+ Resources/llplugin/plugins/libcanvas_plugin.dylib
+ Resources/llplugin/plugins/libcaopengllayer_plugin.dylib
+ Resources/llplugin/plugins/libcc_plugin.dylib
+ Resources/llplugin/plugins/libcdda_plugin.dylib
+ Resources/llplugin/plugins/libcdg_plugin.dylib
+ Resources/llplugin/plugins/libchain_plugin.dylib
+ Resources/llplugin/plugins/libchorus_flanger_plugin.dylib
+ Resources/llplugin/plugins/libci_filters_plugin.dylib
+ Resources/llplugin/plugins/libclone_plugin.dylib
+ Resources/llplugin/plugins/libcolorthres_plugin.dylib
+ Resources/llplugin/plugins/libcompressor_plugin.dylib
+ Resources/llplugin/plugins/libconsole_logger_plugin.dylib
+ Resources/llplugin/plugins/libcroppadd_plugin.dylib
+ Resources/llplugin/plugins/libcvdsub_plugin.dylib
+ Resources/llplugin/plugins/libcvpx_plugin.dylib
+ Resources/llplugin/plugins/libdav1d_plugin.dylib
+ Resources/llplugin/plugins/libdca_plugin.dylib
+ Resources/llplugin/plugins/libdcp_plugin.dylib
+ Resources/llplugin/plugins/libddummy_plugin.dylib
+ Resources/llplugin/plugins/libdecomp_plugin.dylib
+ Resources/llplugin/plugins/libdeinterlace_plugin.dylib
+ Resources/llplugin/plugins/libdemux_cdg_plugin.dylib
+ Resources/llplugin/plugins/libdemux_chromecast_plugin.dylib
+ Resources/llplugin/plugins/libdemux_stl_plugin.dylib
+ Resources/llplugin/plugins/libdemuxdump_plugin.dylib
+ Resources/llplugin/plugins/libdiracsys_plugin.dylib
+ Resources/llplugin/plugins/libdirectory_demux_plugin.dylib
+ Resources/llplugin/plugins/libdolby_surround_decoder_plugin.dylib
+ Resources/llplugin/plugins/libdummy_plugin.dylib
+ Resources/llplugin/plugins/libdvbsub_plugin.dylib
+ Resources/llplugin/plugins/libdvdnav_plugin.dylib
+ Resources/llplugin/plugins/libdvdread_plugin.dylib
+ Resources/llplugin/plugins/libdynamicoverlay_plugin.dylib
+ Resources/llplugin/plugins/libedgedetection_plugin.dylib
+ Resources/llplugin/plugins/libedummy_plugin.dylib
+ Resources/llplugin/plugins/libequalizer_plugin.dylib
+ Resources/llplugin/plugins/liberase_plugin.dylib
+ Resources/llplugin/plugins/libes_plugin.dylib
+ Resources/llplugin/plugins/libexport_plugin.dylib
+ Resources/llplugin/plugins/libextract_plugin.dylib
+ Resources/llplugin/plugins/libfaad_plugin.dylib
+ Resources/llplugin/plugins/libfile_keystore_plugin.dylib
+ Resources/llplugin/plugins/libfile_logger_plugin.dylib
+ Resources/llplugin/plugins/libfilesystem_plugin.dylib
+ Resources/llplugin/plugins/libfingerprinter_plugin.dylib
+ Resources/llplugin/plugins/libflac_plugin.dylib
+ Resources/llplugin/plugins/libflacsys_plugin.dylib
+ Resources/llplugin/plugins/libflaschen_plugin.dylib
+ Resources/llplugin/plugins/libfloat_mixer_plugin.dylib
+ Resources/llplugin/plugins/libfolder_plugin.dylib
+ Resources/llplugin/plugins/libfps_plugin.dylib
+ Resources/llplugin/plugins/libfreetype_plugin.dylib
+ Resources/llplugin/plugins/libfreeze_plugin.dylib
+ Resources/llplugin/plugins/libftp_plugin.dylib
+ Resources/llplugin/plugins/libg711_plugin.dylib
+ Resources/llplugin/plugins/libgain_plugin.dylib
+ Resources/llplugin/plugins/libgaussianblur_plugin.dylib
+ Resources/llplugin/plugins/libgestures_plugin.dylib
+ Resources/llplugin/plugins/libglconv_cvpx_plugin.dylib
+ Resources/llplugin/plugins/libgme_plugin.dylib
+ Resources/llplugin/plugins/libgnutls_plugin.dylib
+ Resources/llplugin/plugins/libgoom_plugin.dylib
+ Resources/llplugin/plugins/libgradfun_plugin.dylib
+ Resources/llplugin/plugins/libgradient_plugin.dylib
+ Resources/llplugin/plugins/libgrain_plugin.dylib
+ Resources/llplugin/plugins/libgrey_yuv_plugin.dylib
+ Resources/llplugin/plugins/libh26x_plugin.dylib
+ Resources/llplugin/plugins/libhds_plugin.dylib
+ Resources/llplugin/plugins/libheadphone_channel_mixer_plugin.dylib
+ Resources/llplugin/plugins/libhotkeys_plugin.dylib
+ Resources/llplugin/plugins/libhqdn3d_plugin.dylib
+ Resources/llplugin/plugins/libhttp_plugin.dylib
+ Resources/llplugin/plugins/libhttps_plugin.dylib
+ Resources/llplugin/plugins/libi420_10_p010_plugin.dylib
+ Resources/llplugin/plugins/libi420_nv12_plugin.dylib
+ Resources/llplugin/plugins/libi420_rgb_mmx_plugin.dylib
+ Resources/llplugin/plugins/libi420_rgb_plugin.dylib
+ Resources/llplugin/plugins/libi420_rgb_sse2_plugin.dylib
+ Resources/llplugin/plugins/libi420_yuy2_mmx_plugin.dylib
+ Resources/llplugin/plugins/libi420_yuy2_plugin.dylib
+ Resources/llplugin/plugins/libi420_yuy2_sse2_plugin.dylib
+ Resources/llplugin/plugins/libi422_i420_plugin.dylib
+ Resources/llplugin/plugins/libi422_yuy2_mmx_plugin.dylib
+ Resources/llplugin/plugins/libi422_yuy2_plugin.dylib
+ Resources/llplugin/plugins/libi422_yuy2_sse2_plugin.dylib
+ Resources/llplugin/plugins/libidummy_plugin.dylib
+ Resources/llplugin/plugins/libimage_plugin.dylib
+ Resources/llplugin/plugins/libimem_plugin.dylib
+ Resources/llplugin/plugins/libinflate_plugin.dylib
+ Resources/llplugin/plugins/libinteger_mixer_plugin.dylib
+ Resources/llplugin/plugins/libinvert_plugin.dylib
+ Resources/llplugin/plugins/libjpeg_plugin.dylib
+ Resources/llplugin/plugins/libkaraoke_plugin.dylib
+ Resources/llplugin/plugins/libkate_plugin.dylib
+ Resources/llplugin/plugins/libkeychain_plugin.dylib
+ Resources/llplugin/plugins/liblibass_plugin.dylib
+ Resources/llplugin/plugins/liblibbluray_plugin.dylib
+ Resources/llplugin/plugins/liblibmpeg2_plugin.dylib
+ Resources/llplugin/plugins/liblive555_plugin.dylib
+ Resources/llplugin/plugins/liblogger_plugin.dylib
+ Resources/llplugin/plugins/liblogo_plugin.dylib
+ Resources/llplugin/plugins/liblpcm_plugin.dylib
+ Resources/llplugin/plugins/liblua_plugin.dylib
+ Resources/llplugin/plugins/libmacosx_plugin.dylib
+ Resources/llplugin/plugins/libmad_plugin.dylib
+ Resources/llplugin/plugins/libmagnify_plugin.dylib
+ Resources/llplugin/plugins/libmarq_plugin.dylib
+ Resources/llplugin/plugins/libmediadirs_plugin.dylib
+ Resources/llplugin/plugins/libmemory_keystore_plugin.dylib
+ Resources/llplugin/plugins/libmirror_plugin.dylib
+ Resources/llplugin/plugins/libmjpeg_plugin.dylib
+ Resources/llplugin/plugins/libmkv_plugin.dylib
+ Resources/llplugin/plugins/libmod_plugin.dylib
+ Resources/llplugin/plugins/libmono_plugin.dylib
+ Resources/llplugin/plugins/libmosaic_plugin.dylib
+ Resources/llplugin/plugins/libmotion_plugin.dylib
+ Resources/llplugin/plugins/libmotionblur_plugin.dylib
+ Resources/llplugin/plugins/libmotiondetect_plugin.dylib
+ Resources/llplugin/plugins/libmp4_plugin.dylib
+ Resources/llplugin/plugins/libmpc_plugin.dylib
+ Resources/llplugin/plugins/libmpg123_plugin.dylib
+ Resources/llplugin/plugins/libmpgv_plugin.dylib
+ Resources/llplugin/plugins/libmux_asf_plugin.dylib
+ Resources/llplugin/plugins/libmux_avi_plugin.dylib
+ Resources/llplugin/plugins/libmux_dummy_plugin.dylib
+ Resources/llplugin/plugins/libmux_mp4_plugin.dylib
+ Resources/llplugin/plugins/libmux_mpjpeg_plugin.dylib
+ Resources/llplugin/plugins/libmux_ogg_plugin.dylib
+ Resources/llplugin/plugins/libmux_ps_plugin.dylib
+ Resources/llplugin/plugins/libmux_ts_plugin.dylib
+ Resources/llplugin/plugins/libmux_wav_plugin.dylib
+ Resources/llplugin/plugins/libncurses_plugin.dylib
+ Resources/llplugin/plugins/libnetsync_plugin.dylib
+ Resources/llplugin/plugins/libnfs_plugin.dylib
+ Resources/llplugin/plugins/libnormvol_plugin.dylib
+ Resources/llplugin/plugins/libnoseek_plugin.dylib
+ Resources/llplugin/plugins/libnsc_plugin.dylib
+ Resources/llplugin/plugins/libnsspeechsynthesizer_plugin.dylib
+ Resources/llplugin/plugins/libnsv_plugin.dylib
+ Resources/llplugin/plugins/libnuv_plugin.dylib
+ Resources/llplugin/plugins/libogg_plugin.dylib
+ Resources/llplugin/plugins/liboggspots_plugin.dylib
+ Resources/llplugin/plugins/liboldmovie_plugin.dylib
+ Resources/llplugin/plugins/liboldrc_plugin.dylib
+ Resources/llplugin/plugins/libopus_plugin.dylib
+ Resources/llplugin/plugins/libosx_notifications_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_a52_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_av1_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_copy_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_dirac_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_dts_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_flac_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_h264_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_hevc_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_mlp_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_mpeg4audio_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_mpeg4video_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_mpegaudio_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_mpegvideo_plugin.dylib
+ Resources/llplugin/plugins/libpacketizer_vc1_plugin.dylib
+ Resources/llplugin/plugins/libparam_eq_plugin.dylib
+ Resources/llplugin/plugins/libplaylist_plugin.dylib
+ Resources/llplugin/plugins/libpng_plugin.dylib
+ Resources/llplugin/plugins/libpodcast_plugin.dylib
+ Resources/llplugin/plugins/libposterize_plugin.dylib
+ Resources/llplugin/plugins/libpostproc_plugin.dylib
+ Resources/llplugin/plugins/libprefetch_plugin.dylib
+ Resources/llplugin/plugins/libps_plugin.dylib
+ Resources/llplugin/plugins/libpsychedelic_plugin.dylib
+ Resources/llplugin/plugins/libpuzzle_plugin.dylib
+ Resources/llplugin/plugins/libpva_plugin.dylib
+ Resources/llplugin/plugins/librawaud_plugin.dylib
+ Resources/llplugin/plugins/librawdv_plugin.dylib
+ Resources/llplugin/plugins/librawvid_plugin.dylib
+ Resources/llplugin/plugins/librawvideo_plugin.dylib
+ Resources/llplugin/plugins/libreal_plugin.dylib
+ Resources/llplugin/plugins/librecord_plugin.dylib
+ Resources/llplugin/plugins/libremap_plugin.dylib
+ Resources/llplugin/plugins/libremoteosd_plugin.dylib
+ Resources/llplugin/plugins/libripple_plugin.dylib
+ Resources/llplugin/plugins/librist_plugin.dylib
+ Resources/llplugin/plugins/librotate_plugin.dylib
+ Resources/llplugin/plugins/librss_plugin.dylib
+ Resources/llplugin/plugins/librtp_plugin.dylib
+ Resources/llplugin/plugins/librtpvideo_plugin.dylib
+ Resources/llplugin/plugins/librv32_plugin.dylib
+ Resources/llplugin/plugins/libsamplerate_plugin.dylib
+ Resources/llplugin/plugins/libsap_plugin.dylib
+ Resources/llplugin/plugins/libsatip_plugin.dylib
+ Resources/llplugin/plugins/libscale_plugin.dylib
+ Resources/llplugin/plugins/libscaletempo_pitch_plugin.dylib
+ Resources/llplugin/plugins/libscaletempo_plugin.dylib
+ Resources/llplugin/plugins/libscene_plugin.dylib
+ Resources/llplugin/plugins/libschroedinger_plugin.dylib
+ Resources/llplugin/plugins/libscreen_plugin.dylib
+ Resources/llplugin/plugins/libscte18_plugin.dylib
+ Resources/llplugin/plugins/libscte27_plugin.dylib
+ Resources/llplugin/plugins/libsdp_plugin.dylib
+ Resources/llplugin/plugins/libsecuretransport_plugin.dylib
+ Resources/llplugin/plugins/libsepia_plugin.dylib
+ Resources/llplugin/plugins/libsftp_plugin.dylib
+ Resources/llplugin/plugins/libsharpen_plugin.dylib
+ Resources/llplugin/plugins/libshm_plugin.dylib
+ Resources/llplugin/plugins/libsid_plugin.dylib
+ Resources/llplugin/plugins/libsimple_channel_mixer_plugin.dylib
+ Resources/llplugin/plugins/libskiptags_plugin.dylib
+ Resources/llplugin/plugins/libsmf_plugin.dylib
+ Resources/llplugin/plugins/libspatialaudio_plugin.dylib
+ Resources/llplugin/plugins/libspatializer_plugin.dylib
+ Resources/llplugin/plugins/libspdif_plugin.dylib
+ Resources/llplugin/plugins/libspeex_plugin.dylib
+ Resources/llplugin/plugins/libspeex_resampler_plugin.dylib
+ Resources/llplugin/plugins/libspudec_plugin.dylib
+ Resources/llplugin/plugins/libstats_plugin.dylib
+ Resources/llplugin/plugins/libstereo_widen_plugin.dylib
+ Resources/llplugin/plugins/libstl_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_autodel_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_bridge_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_chromaprint_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_chromecast_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_cycle_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_delay_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_description_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_display_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_dummy_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_duplicate_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_es_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_gather_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_mosaic_bridge_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_record_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_rtp_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_setid_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_smem_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_standard_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_stats_plugin.dylib
+ Resources/llplugin/plugins/libstream_out_transcode_plugin.dylib
+ Resources/llplugin/plugins/libsubsdec_plugin.dylib
+ Resources/llplugin/plugins/libsubsdelay_plugin.dylib
+ Resources/llplugin/plugins/libsubstx3g_plugin.dylib
+ Resources/llplugin/plugins/libsubsusf_plugin.dylib
+ Resources/llplugin/plugins/libsubtitle_plugin.dylib
+ Resources/llplugin/plugins/libsvcdsub_plugin.dylib
+ Resources/llplugin/plugins/libswscale_plugin.dylib
+ Resources/llplugin/plugins/libsyslog_plugin.dylib
+ Resources/llplugin/plugins/libt140_plugin.dylib
+ Resources/llplugin/plugins/libtaglib_plugin.dylib
+ Resources/llplugin/plugins/libtcp_plugin.dylib
+ Resources/llplugin/plugins/libtdummy_plugin.dylib
+ Resources/llplugin/plugins/libtelx_plugin.dylib
+ Resources/llplugin/plugins/libtextst_plugin.dylib
+ Resources/llplugin/plugins/libtheora_plugin.dylib
+ Resources/llplugin/plugins/libtimecode_plugin.dylib
+ Resources/llplugin/plugins/libtospdif_plugin.dylib
+ Resources/llplugin/plugins/libtransform_plugin.dylib
+ Resources/llplugin/plugins/libtrivial_channel_mixer_plugin.dylib
+ Resources/llplugin/plugins/libts_plugin.dylib
+ Resources/llplugin/plugins/libtta_plugin.dylib
+ Resources/llplugin/plugins/libttml_plugin.dylib
+ Resources/llplugin/plugins/libtwolame_plugin.dylib
+ Resources/llplugin/plugins/libty_plugin.dylib
+ Resources/llplugin/plugins/libudp_plugin.dylib
+ Resources/llplugin/plugins/libugly_resampler_plugin.dylib
+ Resources/llplugin/plugins/libuleaddvaudio_plugin.dylib
+ Resources/llplugin/plugins/libupnp_plugin.dylib
+ Resources/llplugin/plugins/libvc1_plugin.dylib
+ Resources/llplugin/plugins/libvcd_plugin.dylib
+ Resources/llplugin/plugins/libvdr_plugin.dylib
+ Resources/llplugin/plugins/libvdummy_plugin.dylib
+ Resources/llplugin/plugins/libvhs_plugin.dylib
+ Resources/llplugin/plugins/libvideotoolbox_plugin.dylib
+ Resources/llplugin/plugins/libvisual_plugin.dylib
+ Resources/llplugin/plugins/libvlc.5.dylib
+ Resources/llplugin/plugins/libvlccore.9.dylib
+ Resources/llplugin/plugins/libvmem_plugin.dylib
+ Resources/llplugin/plugins/libvobsub_plugin.dylib
+ Resources/llplugin/plugins/libvoc_plugin.dylib
+ Resources/llplugin/plugins/libvod_rtsp_plugin.dylib
+ Resources/llplugin/plugins/libvorbis_plugin.dylib
+ Resources/llplugin/plugins/libvout_macosx_plugin.dylib
+ Resources/llplugin/plugins/libvpx_plugin.dylib
+ Resources/llplugin/plugins/libwall_plugin.dylib
+ Resources/llplugin/plugins/libwav_plugin.dylib
+ Resources/llplugin/plugins/libwave_plugin.dylib
+ Resources/llplugin/plugins/libwebvtt_plugin.dylib
+ Resources/llplugin/plugins/libx26410b_plugin.dylib
+ Resources/llplugin/plugins/libx264_plugin.dylib
+ Resources/llplugin/plugins/libx265_plugin.dylib
+ Resources/llplugin/plugins/libxa_plugin.dylib
+ Resources/llplugin/plugins/libxml_plugin.dylib
+ Resources/llplugin/plugins/libyuv_plugin.dylib
+ Resources/llplugin/plugins/libyuvp_plugin.dylib
+ Resources/llplugin/plugins/libyuy2_i420_plugin.dylib
+ Resources/llplugin/plugins/libyuy2_i422_plugin.dylib
+ Resources/llplugin/plugins/libzvbi_plugin.dylib
+ Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper.app
+ Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(GPU\).app/Contents/MacOS/DullahanHelper\ \(GPU\)
+ Resources/SLPlugin.app/Contents/Frameworks/DullahanHelper\ \(Plugin\).app/Contents/MacOS/DullahanHelper\ \(Plugin\)
+ WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents
+ )
+execute_process(
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements
+ DullahanHelper\ \(Renderer\).app/Contents/MacOS/DullahanHelper\ \(Renderer\)
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ --deep
+ DullahanHelper\ \(GPU\).app
+ DullahanHelper\ \(Plugin\).app
+ WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks
+ )
+execute_process(
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements
+ --deep
+ DullahanHelper\ \(Renderer\).app
+ WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources/SLPlugin.app/Contents/Frameworks
+ )
+execute_process(
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements
+ SLPlugin.app
+ WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}/${CPACK_BUNDLE_NAME}.app/Contents/Resources
+ )
+execute_process(
+ COMMAND sudo codesign -f -s ${SIGNING_IDENTITY} --timestamp -o runtime --runtime-version ${CMAKE_OSX_DEPLOYMENT_TARGET}
+ --entitlements ${CMAKE_SOURCE_DIR}/newview/slplugin.entitlements
+ -i net.${VIEWER_BINARY_NAME}.viewer
+ ${CPACK_BUNDLE_NAME}.app
+ WORKING_DIRECTORY ${CMAKE_CACHEFILE_DIR}/_CPack_Packages/${CMAKE_SYSTEM_NAME}/Bundle/${CPACK_BUNDLE_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_SYSTEM_NAME}
+ )
diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist
index 09b0e1ec1b..82f63519db 100644
--- a/indra/newview/Info-SecondLife.plist
+++ b/indra/newview/Info-SecondLife.plist
@@ -11,7 +11,7 @@
<key>CFBundleIconFile</key>
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
<key>CFBundleIdentifier</key>
- <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ <string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
@@ -34,6 +34,10 @@
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>NSMicrophoneUsageDescription</key>
<string>For voice chat, you must grant permission for Second Life to use the microphone.</string>
+ <key>LSApplicationCategoryType</key>
+ <string>public.app-category.games</string>
+ <key>NSHighResolutionCapable</key>
+ <true/>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
diff --git a/indra/newview/PKGBUILD.in b/indra/newview/PKGBUILD.in
new file mode 100644
index 0000000000..b2a02318f2
--- /dev/null
+++ b/indra/newview/PKGBUILD.in
@@ -0,0 +1,14 @@
+# Maintainer: $ENV{USER}@${VIEWER_PACKAGE_DOMAIN_NAME}
+pkgname=${VIEWER_BINARY_NAME}
+pkgver=${VIEWER_VERSION_MAJOR}.${VIEWER_VERSION_MINOR}.${VIEWER_VERSION_PATCH}.${VIEWER_VERSION_REVISION}
+pkgrel=1
+pkgdesc="${VIEWER_PACKAGE_COMMENT}"
+arch=('${CMAKE_SYSTEM_PROCESSOR}')
+url="https://${VIEWER_PACKAGE_DOMAIN_NAME}"
+license=('LGPL-2.1')
+depends=(freealut apr-util boost-libs fltk glu hunspell libnghttp2 sdl2 uriparser vlc libvorbis)
+
+package() {
+ cd "$startdir"
+ make DESTDIR="$pkgdir/" install
+}
diff --git a/indra/newview/SecondLife.nib b/indra/newview/SecondLife.nib
index c4ddca50dc..ef0fa80b12 100644
--- a/indra/newview/SecondLife.nib
+++ b/indra/newview/SecondLife.nib
Binary files differ
diff --git a/indra/newview/SecondLife.xib b/indra/newview/SecondLife.xib
index fbff8fe307..8302392f5d 100644
--- a/indra/newview/SecondLife.xib
+++ b/indra/newview/SecondLife.xib
@@ -42,7 +42,7 @@
<array class="NSMutableArray" key="NSMenuItems">
<object class="NSMenuItem" id="694149608">
<reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Second Life</string>
+ <string key="NSTitle">Megapahit</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<object class="NSCustomResource" key="NSOnImage" id="353210768">
@@ -55,11 +55,11 @@
</object>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="110575045">
- <string key="NSTitle">Second Life</string>
+ <string key="NSTitle">Megapahit</string>
<array class="NSMutableArray" key="NSMenuItems">
<object class="NSMenuItem" id="238522557">
<reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">About Second Life</string>
+ <string key="NSTitle">About Megapahit</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="353210768"/>
@@ -120,7 +120,7 @@
</object>
<object class="NSMenuItem" id="755159360">
<reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide Second Life</string>
+ <string key="NSTitle">Hide Megapahit</string>
<string key="NSKeyEquiv">h</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -156,7 +156,7 @@
</object>
<object class="NSMenuItem" id="632727374">
<reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Quit Second Life</string>
+ <string key="NSTitle">Quit Megapahit</string>
<string key="NSKeyEquiv">q</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
@@ -323,7 +323,7 @@
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{196, 240}, {1024, 600}}</string>
<int key="NSWTFlags">74974208</int>
- <string key="NSWindowTitle">Second Life</string>
+ <string key="NSWindowTitle">Megapahit</string>
<string key="NSWindowClass">LLNSWindow</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
@@ -338,7 +338,7 @@
</object>
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
- <string key="NSFrameAutosaveName">Second Life</string>
+ <string key="NSFrameAutosaveName">Megapahit</string>
<int key="NSWindowCollectionBehavior">128</int>
<bool key="NSWindowIsRestorable">NO</bool>
</object>
diff --git a/indra/newview/ViewerInstall.cmake b/indra/newview/ViewerInstall.cmake
index ac2247c815..ab52c63a91 100644
--- a/indra/newview/ViewerInstall.cmake
+++ b/indra/newview/ViewerInstall.cmake
@@ -1,28 +1,153 @@
+if (DARWIN)
+
+ install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/InfoPlist.strings
+ ${CMAKE_CURRENT_SOURCE_DIR}/English.lproj/language.txt
+ DESTINATION English.lproj
+ )
+
+ install(DIRECTORY
+ German.lproj
+ Japanese.lproj
+ Korean.lproj
+ app_settings
+ character
+ cursors_mac
+ da.lproj
+ es.lproj
+ fonts
+ fr.lproj
+ uk.lproj
+ hu.lproj
+ it.lproj
+ nl.lproj
+ pl.lproj
+ pt.lproj
+ ru.lproj
+ skins
+ tr.lproj
+ zh-Hans.lproj
+ DESTINATION .
+ )
+
+ install(FILES
+ SecondLife.nib
+ ${AUTOBUILD_INSTALL_DIR}/ca-bundle.crt
+ cube.dae
+ featuretable_mac.txt
+ DESTINATION .
+ )
+
+ if (NOT PACKAGE)
+ install(FILES
+ secondlife.icns
+ RENAME ${VIEWER_CHANNEL}.icns
+ DESTINATION .
+ )
+ endif (NOT PACKAGE)
+
+ install(FILES
+ licenses-mac.txt
+ RENAME licenses.txt
+ DESTINATION .
+ )
+
+ install(FILES
+ ${SCRIPTS_DIR}/messages/message_template.msg
+ ${SCRIPTS_DIR}/../etc/message.xml
+ ${CMAKE_CURRENT_BINARY_DIR}/contributors.txt
+ DESTINATION app_settings
+ )
+
+ if (NDOF)
+ install(FILES
+ "${AUTOBUILD_INSTALL_DIR}/lib/release/libndofdev.dylib"
+ DESTINATION .
+ )
+ endif ()
+
+ if (PACKAGE)
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/FixPackage.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake
+ )
+ else (PACKAGE)
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/FixBundle.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake
+ )
+ endif (PACKAGE)
+ install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake)
+
+else (DARWIN)
+
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${VIEWER_BINARY_NAME}
- DESTINATION ${APP_BINARY_DIR}
+ DESTINATION bin
+ )
+
+install(PROGRAMS linux_tools/launch_url.sh
+ DESTINATION libexec/${VIEWER_BINARY_NAME}
)
-install(DIRECTORY skins app_settings linux_tools
- DESTINATION ${APP_SHARE_DIR}
+if (LINUX)
+ if (EXISTS ${CMAKE_SYSROOT}/usr/lib/${ARCH}-linux-gnu)
+ set(_LIB lib/${ARCH}-linux-gnu)
+ elseif (EXISTS /lib64 AND NOT ${LINUX_DISTRO} MATCHES arch)
+ set(_LIB lib64)
+ else ()
+ set(_LIB lib)
+ endif ()
+ if (USE_FMODSTUDIO)
+ install(FILES
+ ${AUTOBUILD_INSTALL_DIR}/lib/release/libfmod.so
+ ${AUTOBUILD_INSTALL_DIR}/lib/release/libfmod.so.13
+ ${AUTOBUILD_INSTALL_DIR}/lib/release/libfmod.so.13.23
+ DESTINATION ${_LIB})
+ endif (USE_FMODSTUDIO)
+endif (LINUX)
+
+install(DIRECTORY skins app_settings fonts
+ DESTINATION share/${VIEWER_BINARY_NAME}
PATTERN ".svn" EXCLUDE
)
+install(DIRECTORY icons/hicolor
+ DESTINATION share/icons
+ )
+
find_file(IS_ARTWORK_PRESENT NAMES have_artwork_bundle.marker
PATHS ${VIEWER_DIR}/newview/res)
if (IS_ARTWORK_PRESENT)
install(DIRECTORY res res-sdl character
- DESTINATION ${APP_SHARE_DIR}
+ DESTINATION share/${VIEWER_BINARY_NAME}
PATTERN ".svn" EXCLUDE
)
else (IS_ARTWORK_PRESENT)
message(STATUS "WARNING: Artwork is not present, and will not be installed")
endif (IS_ARTWORK_PRESENT)
-install(FILES featuretable_linux.txt featuretable_solaris.txt
- DESTINATION ${APP_SHARE_DIR}
+ install(FILES
+ ${AUTOBUILD_INSTALL_DIR}/ca-bundle.crt
+ featuretable_linux.txt
+ #featuretable_solaris.txt
+ DESTINATION share/${VIEWER_BINARY_NAME}
+ )
+
+ install(FILES
+ licenses-linux.txt
+ RENAME licenses.txt
+ DESTINATION share/${VIEWER_BINARY_NAME}
)
install(FILES ${SCRIPTS_DIR}/messages/message_template.msg
- DESTINATION ${APP_SHARE_DIR}/app_settings
+ ${SCRIPTS_DIR}/../etc/message.xml
+ ${CMAKE_CURRENT_BINARY_DIR}/contributors.txt
+ DESTINATION share/${VIEWER_BINARY_NAME}/app_settings
)
+
+ install(FILES linux_tools/${VIEWER_BINARY_NAME}.desktop
+ DESTINATION share/applications
+ )
+
+endif (DARWIN)
diff --git a/indra/newview/app_settings/camera/Rear.xml b/indra/newview/app_settings/camera/Rear.xml
index 7eda566e48..db02001b9c 100644
--- a/indra/newview/app_settings/camera/Rear.xml
+++ b/indra/newview/app_settings/camera/Rear.xml
@@ -53,8 +53,8 @@
<key>Value</key>
<array>
<real>-3</real>
- <real>0</real>
- <real>0.75</real>
+ <real>0.5</real>
+ <real>0.2</real>
</array>
</map>
<key>CameraOffsetScale</key>
@@ -89,9 +89,9 @@
<string>Vector3D</string>
<key>Value</key>
<array>
- <real>1.0</real>
- <real>0.0</real>
- <real>1.0</real>
+ <real>0.9</real>
+ <real>0.5</real>
+ <real>0.2</real>
</array>
</map>
<key>PresetCameraActive</key>
diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml
index 4a3dfffde1..635e5e40f5 100644
--- a/indra/newview/app_settings/commands.xml
+++ b/indra/newview/app_settings/commands.xml
@@ -46,7 +46,7 @@
available_in_toybox="true"
is_flashing_allowed="true"
icon="Command_Chat_Icon"
- label_ref="Command_Chat_Label"
+ label_ref="Command_Conversations_Label"
tooltip_ref="Command_Conversations_Tooltip"
execute_function="Floater.ToggleOrBringToFront"
execute_parameters="im_container"
@@ -295,4 +295,19 @@
is_running_function="Floater.IsOpen"
is_running_parameters="performance"
/>
+ <command name="favoritefolder"
+ available_in_toybox="true"
+ icon="Command_FavoriteFolder_Icon"
+ label_ref="Command_FavoriteFolder_Label"
+ tooltip_ref="Command_FavoriteFolder_Tooltip"
+ execute_function="Inventory.OpenFavoriteFolder"
+ is_running_function="Inventory.IsFavoriteFolderOpen"
+ />
+ <command name="resync_animations"
+ available_in_toybox="true"
+ icon="Command_Resync_Animations"
+ label_ref="Command_ResyncAnimations_Label"
+ tooltip_ref="Command_ResyncAnimations_Tooltip"
+ execute_function="Tools.ResyncAnimations"
+ />
</commands>
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index a810e72aac..c4c5d88446 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -68,6 +68,17 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>IMShowArrivalsDepartures</key>
+ <map>
+ <key>Comment</key>
+ <string>Enable(disable) showing of arrivals and departures in the chat.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>CrashHostUrl</key>
<map>
<key>Comment</key>
@@ -1264,8 +1275,8 @@
<key>Value</key>
<array>
<real>-3.0</real>
- <real>0.0</real>
- <real>0.75</real>
+ <real>0.5</real>
+ <real>0.2</real>
</array>
</map>
<key>CameraOffsetScale</key>
@@ -2535,7 +2546,7 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>DoubleClickTeleport</key>
+ <key>DoubleClickTeleport</key>
<map>
<key>Comment</key>
<string>Enable double-click to teleport where allowed (afects minimap and people panel)</string>
@@ -3211,9 +3222,9 @@
<string>Vector3D</string>
<key>Value</key>
<array>
- <real>1.0</real>
- <real>0.0</real>
- <real>1.0</real>
+ <real>0.9</real>
+ <real>0.5</real>
+ <real>0.2</real>
</array>
</map>
<key>AvatarSitRotation</key>
@@ -6301,6 +6312,28 @@
<key>Value</key>
<integer>1</integer>
</map>
+ <key>StreamNotificationChannel</key>
+ <map>
+ <key>Comment</key>
+ <string>Custom stream notification channel</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>S32</string>
+ <key>Value</key>
+ <integer>751751</integer>
+ </map>
+ <key>StreamNotificationChannelEnabled</key>
+ <map>
+ <key>Comment</key>
+ <string>Use the stream notification channel?</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
<key>ParticipantListShowIcons</key>
<map>
<key>Comment</key>
@@ -9046,7 +9079,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>NameTagShowUsernames</key>
<map>
@@ -9235,7 +9268,7 @@
<key>Value</key>
<integer>1</integer>
</map>
-
+
<key>RenderReflectionDetail</key>
<map>
<key>Comment</key>
@@ -9302,7 +9335,7 @@
<key>Value</key>
<real>1.5</real>
</map>
-
+
<key>RenderReflectionProbeDrawDistance</key>
<map>
<key>Comment</key>
@@ -9490,7 +9523,7 @@
<key>Value</key>
<real>0.7</real>
</map>
-
+
<key>RenderReflectionProbeMaxLocalLightAmbiance</key>
<map>
<key>Comment</key>
@@ -10144,7 +10177,7 @@
<key>Type</key>
<string>String</string>
<key>Value</key>
- <string>https://feedback.secondlife.com/</string>
+ <string>https://megapahit.com/enter_bug.cgi?product=Viewer/</string>
</map>
<key>RestrainedLove</key>
<map>
@@ -10771,7 +10804,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>0</integer>
+ <integer>1</integer>
</map>
<key>NavBarShowParcelProperties</key>
<map>
@@ -11058,7 +11091,7 @@
<string>Boolean</string>
<key>Value</key>
<integer>0</integer>
- </map>
+ </map>
<key>NearbyListShowMap</key>
<map>
<key>Comment</key>
@@ -14025,13 +14058,24 @@
<key>MaxFPS</key>
<map>
<key>Comment</key>
- <string>OBSOLETE UNUSED setting.</string>
+ <string>FPS Limiter.</string>
<key>Persist</key>
<integer>1</integer>
<key>Type</key>
- <string>F32</string>
+ <string>U32</string>
+ <key>Value</key>
+ <real>0</real>
+ </map>
+ <key>MaxFPS</key>
+ <map>
+ <key>Comment</key>
+ <string>FPS Limiter.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>U32</string>
<key>Value</key>
- <real>-1.0</real>
+ <real>0</real>
</map>
<key>ZoomDirect</key>
<map>
@@ -14292,6 +14336,334 @@
<real>12</real>
</map>
+
+ <!-- megapahit settings -->
+ <key>MPVBufferOptiMode</key>
+ <map>
+ <key>Comment</key>
+ <string>
+ OpenGL buffer mapping mode:
+ 0:auto
+ 1:normal
+ 2:MP optimised
+ 3:LL optimized.</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>U32</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>MPVCameraCollapsed</key>
+ <map>
+ <key>Comment</key>
+ <string>
+ Camera floater collapsed</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>MPVNearMeRange</key>
+ <map>
+ <key>Comment</key>
+ <string>Search radius in the people panel</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>F32</string>
+ <key>Value</key>
+ <integer>4096</integer>
+ </map>
+ <key>RenderVSyncEnabled</key>
+ <map>
+ <key>Comment</key>
+ <string>VSync</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>MemProfiling</key>
+ <map>
+ <key>Comment</key>
+ <string>VSync</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>FSLastSearchTab</key>
+ <map>
+ <key>Comment</key>
+ <string>Last selected tab in search window</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>S32</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>FSLegacySearchActionOnTeleport</key>
+ <map>
+ <key>Comment</key>
+ <string>Controls what action Legacy Search should take when teleporting: 0 = No effect,
+ 1 = Close floater, 2 Minimise floater</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>U32</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowPGGroups</key>
+ <map>
+ <key>Comment</key>
+ <string>Controls what action Legacy Search should take when teleporting: 0 = No effect,
+ 1 = Close floater, 2 Minimise floater</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>U32</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowPGGroups</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find groups that are flagged as general</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowMatureGroups</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find groups that are flagged as moderate</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowAdultGroups</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find groups that are flagged as adult</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>ShowPGClassifieds</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find classifieds that are flagged as general</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowMatureClassifieds</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find classifieds that are flagged as moderate</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowAdultClassifieds</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find classifieds that are flagged as adult</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>ShowPGEvents</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find events that are flagged as general</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowMatureEvents</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find events that are flagged as moderate</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowAdultEvents</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find events that are flagged as adult</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>ShowPGLand</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find land sales that are flagged as general</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowMatureLand</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find land sales that are flagged as moderate</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowAdultLand</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find land sales that are flagged as adult</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>ShowPGSims</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find places or find popular that are in general sims</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowMatureSims</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find places or find popular that are in moderate sims</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>ShowAdultSims</key>
+ <map>
+ <key>Comment</key>
+ <string>Display results of find places or find popular that are in adult sims</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>HideFromEditor</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>FindLandArea</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables filtering of land search results by area</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>0</integer>
+ </map>
+ <key>FindLandPrice</key>
+ <map>
+ <key>Comment</key>
+ <string>Enables filtering of land search results by price</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
+ <key>FindLandType</key>
+ <map>
+ <key>Comment</key>
+ <string>Controls which type of land you are searching for in Find Land interface ("All",
+ "Auction", "For Sale")</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string>All</string>
+ </map>
+
<!-- Settings below are for back compatibility only.
They are not used in current viewer anymore. But they can't be removed to avoid
influence on previous versions of the viewer in case of settings are not used or default value
@@ -16218,7 +16590,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>1</integer>
</map>
<key>UpdateAppWindowTitleBar</key>
<map>
diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index 99c43acd49..8361a50b6c 100644
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -458,5 +458,16 @@
<key>Value</key>
<integer>2</integer>
</map>
+ <key>FavoriteFolder</key>
+ <map>
+ <key>Comment</key>
+ <string>Favorite inventory folder (UUID)</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string></string>
+ </map>
</map>
</llsd>
diff --git a/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl b/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl
index ce018623a8..1a065daf89 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/aoUtil.glsl
@@ -78,10 +78,10 @@ float calcAmbientOcclusion(vec4 pos, vec3 norm, vec2 pos_screen)
{
float ret = 1.0;
vec3 pos_world = pos.xyz;
- vec2 noise_reflect = texture(noiseMap, pos_screen.xy * (screen_res / 128)).xy;
+ vec2 noise_reflect = texture(noiseMap, pos_screen.xy * (screen_res / 128.0)).xy;
float angle_hidden = 0.0;
- float points = 0;
+ float points = 0.0;
float scale = min(ssao_radius / -pos_world.z, ssao_max_radius);
diff --git a/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl b/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl
index 3319e32cdf..8588a93648 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/deferredUtil.glsl
@@ -243,7 +243,7 @@ vec4 texture2DLodSpecular(vec2 tc, float lod)
vec2 dist = vec2(0.5) - abs(tc-vec2(0.5));
float det = min(lod/(proj_lod*0.5), 1.0);
float d = min(dist.x, dist.y);
- d *= min(1, d * (proj_lod - lod)); // BUG? extra factor compared to diffuse causes N repeats
+ d *= min(1.0, d * (proj_lod - lod)); // BUG? extra factor compared to diffuse causes N repeats
float edge = 0.25*det;
ret *= clamp(d/edge, 0.0, 1.0);
@@ -359,7 +359,7 @@ vec3 pbrIbl(vec3 diffuseColor,
float perceptualRough)
{
// retrieve a scale and bias to F0. See [1], Figure 3
- vec2 brdf = BRDF(clamp(nv, 0, 1), 1.0-perceptualRough);
+ vec2 brdf = BRDF(clamp(nv, 0.0, 1.0), 1.0-perceptualRough);
vec3 diffuseLight = irradiance;
vec3 specularLight = radiance;
@@ -556,7 +556,7 @@ uniform float waterSign;
void waterClip(vec3 pos)
{
// TODO: make this less branchy
- if (waterSign > 0)
+ if (waterSign > 0.0)
{
if ((dot(pos.xyz, waterPlane.xyz) + waterPlane.w) < 0.0)
{
diff --git a/indra/newview/app_settings/shaders/class1/deferred/globalF.glsl b/indra/newview/app_settings/shaders/class1/deferred/globalF.glsl
index a1b7a4b11f..d493976eba 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/globalF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/globalF.glsl
@@ -34,7 +34,7 @@ uniform float clipSign;
void mirrorClip(vec3 pos)
{
- if (mirror_flag > 0)
+ if (mirror_flag > 0.0)
{
if ((dot(pos.xyz, clipPlane.xyz) + clipPlane.w) < 0.0)
{
diff --git a/indra/newview/app_settings/shaders/class1/deferred/pbrterrainUtilF.glsl b/indra/newview/app_settings/shaders/class1/deferred/pbrterrainUtilF.glsl
index dc43007dca..fb4b139662 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/pbrterrainUtilF.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/pbrterrainUtilF.glsl
@@ -297,7 +297,7 @@ vec3 _t_normal_post_1(vec3 vNt0, float sign_or_zero)
sign = (2.0*sign) + 1.0;
sign /= abs(sign);
// If the sign is negative, rotate normal by 180 degrees
- vNt1.xy = (min(0, sign) * vNt1.xy) + (min(0, -sign) * -vNt1.xy);
+ vNt1.xy = (min(0.0, sign) * vNt1.xy) + (min(0.0, -sign) * -vNt1.xy);
return vNt1;
}
diff --git a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
index 72eda80716..bfb592be9b 100644
--- a/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
+++ b/indra/newview/app_settings/shaders/class1/effects/glowExtractF.glsl
@@ -49,7 +49,7 @@ void main()
float warmth = smoothstep(minLuminance, minLuminance+1.0, max(col.r * warmthWeights.r, max(col.g * warmthWeights.g, col.b * warmthWeights.b)) );
#if HAS_NOISE
- float TRUE_NOISE_RES = 128; // See mTrueNoiseMap
+ float TRUE_NOISE_RES = 128.0; // See mTrueNoiseMap
// *NOTE: Usually this is vary_fragcoord not vary_texcoord0, but glow extraction is in screen space
vec3 glow_noise = texture(glowNoiseMap, vary_texcoord0.xy * (screen_res / TRUE_NOISE_RES)).xyz;
// Dithering. Reduces banding effects in the reduced precision glow buffer.
diff --git a/indra/newview/app_settings/shaders/class1/interface/gaussianF.glsl b/indra/newview/app_settings/shaders/class1/interface/gaussianF.glsl
index 09eb7a6a6a..82f32da048 100644
--- a/indra/newview/app_settings/shaders/class1/interface/gaussianF.glsl
+++ b/indra/newview/app_settings/shaders/class1/interface/gaussianF.glsl
@@ -45,7 +45,7 @@ void main()
for (int i = 0; i < 9; ++i)
{
- vec2 tc = vary_texcoord0 + (i-4)*direction*resScale;
+ vec2 tc = vary_texcoord0 + float(i-4)*direction*resScale;
col += texture(diffuseRect, tc).rgb * w[i];
}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl
index 359bfe8253..af10ecce9a 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsFuncs.glsl
@@ -98,7 +98,7 @@ void calcAtmosphericVars(vec3 inPositionEye, vec3 light_dir, float ambFactor, ou
haze_glow = max(haze_glow, .001); // set a minimum "angle" (smaller glow.y allows tighter, brighter hotspot)
haze_glow *= glow.x;
// higher glow.x gives dimmer glow (because next step is 1 / "angle")
- haze_glow = clamp(pow(haze_glow, glow.z), -100000, 100000);
+ haze_glow = clamp(pow(haze_glow, glow.z), -100000.0, 100000.0);
// glow.z should be negative, so we're doing a sort of (1 / "angle") function
// add "minimum anti-solar illumination"
diff --git a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl
index 1372ddbcfa..bdc5b58060 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/atmosphericsV.glsl
@@ -47,7 +47,7 @@ void calcAtmospherics(vec3 inPositionEye) {
vec3 tmpaddlit = vec3(1);
vec3 tmpattenlit = vec3(1);
vec3 light_dir = (sun_up_factor == 1) ? sun_dir : moon_dir;
- calcAtmosphericVars(inPositionEye, light_dir, 1, tmpsunlit, tmpamblit, tmpaddlit, tmpattenlit);
+ calcAtmosphericVars(inPositionEye, light_dir, 1.0, tmpsunlit, tmpamblit, tmpaddlit, tmpattenlit);
setSunlitColor(tmpsunlit);
setAmblitColor(tmpamblit);
setAdditiveColor(tmpaddlit);
diff --git a/indra/newview/app_settings/shaders/class3/environment/waterF.glsl b/indra/newview/app_settings/shaders/class3/environment/waterF.glsl
index a5592188a9..03da5b020f 100644
--- a/indra/newview/app_settings/shaders/class3/environment/waterF.glsl
+++ b/indra/newview/app_settings/shaders/class3/environment/waterF.glsl
@@ -145,7 +145,7 @@ void main()
//get wave normals
vec2 bigwave = vec2(refCoord.w, view.w);
- vec3 wave1_a = texture(bumpMap, bigwave, -2 ).xyz*2.0-1.0;
+ vec3 wave1_a = texture(bumpMap, bigwave, -2.0 ).xyz*2.0-1.0;
vec3 wave2_a = texture(bumpMap, littleWave.xy).xyz*2.0-1.0;
vec3 wave3_a = texture(bumpMap, littleWave.zw).xyz*2.0-1.0;
@@ -167,10 +167,10 @@ void main()
vec3 wavef = (wave1 + wave2 * 0.4 + wave3 * 0.6) * 0.5;
- vec3 waver = wavef*3;
+ vec3 waver = wavef*3.0;
vec3 up = transform_normal(vec3(0,0,1));
- float vdu = -dot(viewVec, up)*2;
+ float vdu = -dot(viewVec, up)*2.0;
vec3 wave_ibl = wavef;
wave_ibl.z *= 2.0;
@@ -178,7 +178,7 @@ void main()
vec3 norm = transform_normal(normalize(wavef));
- vdu = clamp(vdu, 0, 1);
+ vdu = clamp(vdu, 0.0, 1.0);
wavef.z *= max(vdu*vdu*vdu, 0.1);
wavef = normalize(wavef);
@@ -266,7 +266,7 @@ void main()
color += ibl;
float nv = clamp(abs(dot(norm.xyz, v)), 0.001, 1.0);
- vec2 brdf = BRDF(clamp(nv, 0, 1), 1.0);
+ vec2 brdf = BRDF(clamp(nv, 0.0, 1.0), 1.0);
float f = 1.0-brdf.y; //1.0 - (brdf.x+brdf.y);
f *= 0.9;
f *= f;
@@ -279,7 +279,7 @@ void main()
// shift from -1 to 1
f += (fresnelOffset - 0.5) * 2.0;
- f = clamp(f, 0, 1);
+ f = clamp(f, 0.0, 1.0);
color = ((1.0 - f) * color) + fb.rgb;
diff --git a/indra/newview/app_settings/toolbars.xml b/indra/newview/app_settings/toolbars.xml
index a1c9d6d9ee..cd900b6c60 100644
--- a/indra/newview/app_settings/toolbars.xml
+++ b/indra/newview/app_settings/toolbars.xml
@@ -4,27 +4,24 @@
button_display_mode="icons_with_text">
<command name="chat"/>
<command name="speak"/>
- <command name="destinations"/>
<command name="people"/>
<command name="profile"/>
- <command name="map"/>
- <command name="move"/>
<command name="view"/>
- <command name="howto"/>
+ <command name="appearance"/>
+ <command name="inventory"/>
</bottom_toolbar>
<left_toolbar
button_display_mode="icons_only">
- <command name="avatar"/>
- <command name="appearance"/>
- <command name="inventory"/>
<command name="search"/>
- <command name="places"/>
- <command name="voice"/>
+ <command name="map"/>
+ <command name="build"/>
<command name="minimap"/>
<command name="snapshot"/>
- <command name="performance"/>
+ <command name="aboutland"/>
</left_toolbar>
<right_toolbar
button_display_mode="icons_only">
+ <command name="performance"/>
+ <command name="howto"/>
</right_toolbar>
</toolbars>
diff --git a/indra/newview/character/attentions.xml b/indra/newview/character/attentions.xml
index be9a2b28fc..9bda3309ac 100644
--- a/indra/newview/character/attentions.xml
+++ b/indra/newview/character/attentions.xml
@@ -33,7 +33,7 @@ MOUSELOOK: Tracks center of view when in mouselook view mode.
<param attention="hover" priority="4.0" timeout="1.0" />
<param attention="conversation" priority="0.0" timeout="-1" />
<param attention="select" priority="6.0" timeout="-1" />
- <param attention="focus" priority="6.0" timeout="-1" />
+ <param attention="focus" priority="0.0" timeout="-1" />
<param attention="mouselook" priority="7.0" timeout="-1" />
</gender>
<gender name="Feminine">
@@ -44,7 +44,7 @@ MOUSELOOK: Tracks center of view when in mouselook view mode.
<param attention="hover" priority="4.0" timeout="1.0" />
<param attention="conversation" priority="0.0" timeout="-1" />
<param attention="select" priority="6.0" timeout="-1" />
- <param attention="focus" priority="6.0" timeout="-1" />
+ <param attention="focus" priority="0.0" timeout="-1" />
<param attention="mouselook" priority="7.0" timeout="-1" />
</gender>
</linden_attentions>
diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt
index b1359f8b91..cc74e8ec3c 100644
--- a/indra/newview/featuretable_mac.txt
+++ b/indra/newview/featuretable_mac.txt
@@ -86,21 +86,21 @@ RenderCASSharpness 1 1
//
list Low
RenderAnisotropic 1 0
-RenderAvatarLODFactor 1 0
-RenderAvatarPhysicsLODFactor 1 0
+RenderAvatarLODFactor 1 0.5
+RenderAvatarMaxComplexity 1 35000
+RenderAvatarPhysicsLODFactor 1 0.5
RenderAvatarMaxNonImpostors 1 3
-RenderAvatarMaxComplexity 1 35000
RenderFarClip 1 64
-RenderFlexTimeFactor 1 0
+RenderFlexTimeFactor 1 1.0
RenderGlowResolutionPow 1 8
-RenderLocalLightCount 1 8
-RenderMaxPartCount 1 0
-RenderTerrainDetail 1 0
-RenderTerrainLODFactor 1 1
-RenderTerrainPBRDetail 1 -4
+RenderMaxPartCount 1 512
+RenderLocalLightCount 1 256
+RenderTerrainDetail 1 1
+RenderTerrainLODFactor 1 1.0
+RenderTerrainPBRDetail 1 -1
RenderTerrainPBRPlanarSampleCount 1 1
-RenderTransparentWater 1 0
-RenderTreeLODFactor 1 0
+RenderTransparentWater 1 1
+RenderTreeLODFactor 1 0.5
RenderVolumeLODFactor 1 1.125
RenderDeferredSSAO 1 0
RenderShadowDetail 1 0
@@ -118,6 +118,7 @@ RenderHeroProbeUpdateRate 1 6
RenderHeroProbeConservativeUpdateMultiplier 1 16
RenderCASSharpness 1 0
+
//
// Medium Low Graphics Settings
//
diff --git a/indra/newview/gltf/asset.cpp b/indra/newview/gltf/asset.cpp
index c210b9c61d..a399a59f40 100644
--- a/indra/newview/gltf/asset.cpp
+++ b/indra/newview/gltf/asset.cpp
@@ -904,7 +904,7 @@ bool Asset::save(const std::string& filename)
// save .gltf
object obj;
serialize(obj);
- std::string buffer = boost::json::serialize(obj, {});
+ std::string buffer = boost::json::serialize(obj);
std::ofstream file(filename, std::ios::binary);
file.write(buffer.c_str(), buffer.size());
diff --git a/indra/newview/gltf/primitive.cpp b/indra/newview/gltf/primitive.cpp
index 81caff8ab2..5de45119fc 100644
--- a/indra/newview/gltf/primitive.cpp
+++ b/indra/newview/gltf/primitive.cpp
@@ -32,7 +32,11 @@
#include "mikktspace/mikktspace.hh"
+#if LL_USESYSTEMLIBS
+#include <meshoptimizer.h>
+#else
#include "meshoptimizer/meshoptimizer.h"
+#endif
using namespace LL::GLTF;
diff --git a/indra/newview/gltfscenemanager.cpp b/indra/newview/gltfscenemanager.cpp
index 335dbf820a..55482166e9 100644
--- a/indra/newview/gltfscenemanager.cpp
+++ b/indra/newview/gltfscenemanager.cpp
@@ -485,7 +485,7 @@ void GLTFSceneManager::update()
{
boost::json::object obj;
mUploadingAsset->serialize(obj);
- std::string buffer = boost::json::serialize(obj, {});
+ std::string buffer = boost::json::serialize(obj);
LLNewBufferedResourceUploadInfo::uploadFailure_f failure = [this](LLUUID assetId, LLSD response, std::string reason)
{
diff --git a/indra/newview/icons/hicolor/128x128/apps/megapahit.png b/indra/newview/icons/hicolor/128x128/apps/megapahit.png
new file mode 100644
index 0000000000..5ed63802d3
--- /dev/null
+++ b/indra/newview/icons/hicolor/128x128/apps/megapahit.png
Binary files differ
diff --git a/indra/newview/icons/hicolor/256x256/apps/megapahit.png b/indra/newview/icons/hicolor/256x256/apps/megapahit.png
new file mode 100644
index 0000000000..07deb76090
--- /dev/null
+++ b/indra/newview/icons/hicolor/256x256/apps/megapahit.png
Binary files differ
diff --git a/indra/newview/icons/hicolor/48x48/apps/megapahit.png b/indra/newview/icons/hicolor/48x48/apps/megapahit.png
new file mode 100644
index 0000000000..3189bb2c3d
--- /dev/null
+++ b/indra/newview/icons/hicolor/48x48/apps/megapahit.png
Binary files differ
diff --git a/indra/newview/icons/hicolor/512x512/apps/megapahit.png b/indra/newview/icons/hicolor/512x512/apps/megapahit.png
new file mode 100644
index 0000000000..fdbec7e739
--- /dev/null
+++ b/indra/newview/icons/hicolor/512x512/apps/megapahit.png
Binary files differ
diff --git a/indra/newview/icons/hicolor/64x64/apps/megapahit.png b/indra/newview/icons/hicolor/64x64/apps/megapahit.png
new file mode 100644
index 0000000000..4917b1a825
--- /dev/null
+++ b/indra/newview/icons/hicolor/64x64/apps/megapahit.png
Binary files differ
diff --git a/indra/newview/icons/hicolor/96x96/apps/megapahit.png b/indra/newview/icons/hicolor/96x96/apps/megapahit.png
new file mode 100644
index 0000000000..ffe9066f4a
--- /dev/null
+++ b/indra/newview/icons/hicolor/96x96/apps/megapahit.png
Binary files differ
diff --git a/indra/newview/installers/darwin/dmg-cleanup.applescript b/indra/newview/installers/darwin/dmg-cleanup.applescript
index 8a71b392f9..866bf31e8f 100755
--- a/indra/newview/installers/darwin/dmg-cleanup.applescript
+++ b/indra/newview/installers/darwin/dmg-cleanup.applescript
@@ -4,25 +4,43 @@
tell application "Finder"
- set foo to every item in front window
- repeat with i in foo
- if the name of i is "Applications" then
- set the position of i to {391, 165}
- else if the name of i ends with ".app" then
- set the position of i to {121, 166}
- end if
- end repeat
+ -- set foo to every item in front window
+ -- repeat with i in foo
+ -- if the name of i is "Applications" then
+ -- set the position of i to {391, 165}
+ -- else if the name of i ends with ".app" then
+ -- set the position of i to {121, 166}
+ -- end if
+ -- end repeat
-- There doesn't seem to be a way to set the background picture with applescript, but all the saved .DS_Store files should already have that set correctly.
- set foo to front window
- set current view of foo to icon view
- set toolbar visible of foo to false
- set statusbar visible of foo to false
- set the bounds of foo to {100, 100, 600, 449}
+ -- set foo to front window
+ -- set current view of foo to icon view
+ -- set toolbar visible of foo to false
+ -- set statusbar visible of foo to false
+ -- set the bounds of foo to {100, 100, 600, 449}
-- set the position of front window to {100, 100}
-- get {name, position} of every item of front window
- get properties of front window
+ -- get properties of front window
+
+ tell disk "Megapahit Installer"
+ open
+ set current view of container window to icon view
+ set toolbar visible of container window to false
+ set statusbar visible of container window to false
+ set the bounds of container window to {400, 100, 900, 500}
+ set theViewOptions to the icon view options of container window
+ set arrangement of theViewOptions to not arranged
+ set icon size of theViewOptions to 128
+ set background picture of theViewOptions to file ".background:background.jpg"
+ make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
+ set position of item "Megapahit" of container window to {125, 160}
+ set position of item "Applications" of container window to {375, 160}
+ update without registering applications
+ delay 5
+ close
+ end tell
end tell
diff --git a/indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns b/indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns
index 272b496e7d..1be2300130 100644
--- a/indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns
+++ b/indra/newview/installers/darwin/release-dmg/_VolumeIcon.icns
Binary files differ
diff --git a/indra/newview/installers/darwin/release-dmg/background.jpg b/indra/newview/installers/darwin/release-dmg/background.jpg
index e7064d9545..41c2bc320b 100644
--- a/indra/newview/installers/darwin/release-dmg/background.jpg
+++ b/indra/newview/installers/darwin/release-dmg/background.jpg
Binary files differ
diff --git a/indra/newview/licenses-linux.txt b/indra/newview/licenses-linux.txt
index e53ba94a36..23dace4de0 100644
--- a/indra/newview/licenses-linux.txt
+++ b/indra/newview/licenses-linux.txt
@@ -1,21 +1,3 @@
-===========
-APR License
-===========
-
-Copyright 2000-2004 The Apache Software Foundation
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
==============
Base32 License
==============
@@ -69,43 +51,65 @@ NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.
+===========
+CEF License
+===========
-Except as contained in this notice, the name of a copyright holder shall not
-be used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization of the copyright holder.
-
+// Copyright (c) 2008-2020 Marshall A. Greenblatt. Portions Copyright (c)
+// 2006-2009 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the name Chromium Embedded
+// Framework nor the names of its contributors may be used to endorse
+// or promote products derived from this software without specific prior
+// written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-=============
-expat License
-=============
-Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+================
+Dullahan License
+================
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
+Copyright (c) 2016, Linden Research, Inc.
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
-================
-FreeType License
-================
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
-Portions of this software are copyright (c) 2003 The FreeType
-Project (www.freetype.org). All rights reserved.
==========================
FSI FontShop International
@@ -126,10 +130,10 @@ obtain a license from FSI FontShop International at www.fontfont.com.
GL License
==========
-Mesa 3-D graphics library
-Version: 6.2
+Mesa 3-D graphics library and Mesa Demos
+Version: 6.2 and 8.5.0
-Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
+Copyright (C) 1999-2014 Brian Paul All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
@@ -191,122 +195,50 @@ Redistribution and use in source and binary forms, with or
Cass Everitt - cass@r3.nu
-=======================
-JPEG Library 6b License
-=======================
-
-This software is based in part on the work of the Independent JPEG Group
-
================
-JPEG2000 License
+OpenJPEG License
================
-Copyright 2001, David Taubman, The University of New South Wales (UNSW)
-The copyright owner is Unisearch Ltd, Australia (commercial arm of UNSW)
-Neither this copyright statement, nor the licensing details below
-may be removed from this file or dissociated from its contents.
-
-Licensee: Linden Research, Inc.
-License number: 00024
-The licensee has been granted a COMMERCIAL license to the contents of
-this source file. A brief summary of this license appears below. This
-summary is not to be relied upon in preference to the full text of the
-license agreement, accepted at purchase of the license.
-1. The Licensee has the right to Commercial Use of the Kakadu software,
- including distribution of one or more Applications built using the
- software.
-2. The Licensee has the right to Internal Use of the Kakadu software,
- including use by employees of the Licensee or an Affiliate for the
- purpose of performing services on behalf of the Licensee or Affiliate,
- or in the performance of services for Third Parties who engage Licensee
- or an Affiliate for such services.
-3. The Licensee has the right to distribute Reusable Code (including
- source code and dynamically or statically linked libraries) to a Third
- Party, provided the Third Party possesses a license to use the Kakadu
- software.
-
-==================
-ogg/vorbis License
-==================
-
-Copyright (c) 2001, Xiphophorus
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-- Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-
-- Neither the name of the Xiphophorus nor the names of its contributors
-may be used to endorse or promote products derived from this software
-without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-===========
-SDL License
-===========
-
-SDL - Simple DirectMedia Layer
-Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public
-License as published by the Free Software Foundation; either
-version 2 of the License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with this library; if not, write to the Free
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-Sam Lantinga
-slouken@libsdl.org
-
-The GNU Library GPL is available at http://www.gnu.org/copyleft/lesser.html
-
-=============
-ELFIO License
-=============
-
-ELFIO.h - ELF reader and producer.
-Copyright (C) 2001 Serge Lamikhov-Center <to_serge@users.sourceforge.net>
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation; either
-version 2.1 of the License, or (at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+/*
+ * The copyright in this software is being made available under the 2-clauses
+ * BSD License, included below. This software may be subject to other third
+ * party and contributor rights, including patent rights, and no such rights
+ * are granted under this license.
+ *
+ * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
+ * Copyright (c) 2002-2014, Professor Benoit Macq
+ * Copyright (c) 2003-2014, Antonin Descampe
+ * Copyright (c) 2003-2009, Francois-Olivier Devaux
+ * Copyright (c) 2005, Herve Drolon, FreeImage Team
+ * Copyright (c) 2002-2003, Yannick Verschueren
+ * Copyright (c) 2001-2003, David Janssens
+ * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
+ * Copyright (c) 2012, CS Systemes d'Information, France
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
-The GNU Library GPL is available at http://www.gnu.org/copyleft/lesser.html
===============
OpenSSL License
@@ -426,321 +358,6 @@ copied and put under another distribution licence
[including the GNU Public Licence.]
-==================
-xmlrpc-epi License
-==================
-
-Copyright 2000 Epinions, Inc.
-
-Subject to the following 3 conditions, Epinions, Inc. permits you, free of charge, to (a) use, copy, distribute, modify, perform and display this software and associated documentation files (the "Software"), and (b) permit others to whom the Software is furnished to do so as well.
-
-1) The above copyright notice and this permission notice shall be included without modification in all copies or substantial portions of the Software.
-
-2) THE SOFTWARE IS PROVIDED "AS IS", WITHOUT ANY WARRANTY OR CONDITION OF ANY KIND, EXPRESS, IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OF ACCURACY, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
-
-3) IN NO EVENT SHALL EPINIONS, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT OF OR IN CONNECTION WITH THE SOFTWARE (HOWEVER ARISING, INCLUDING NEGLIGENCE), EVEN IF EPINIONS, INC. IS AWARE OF THE POSSIBILITY OF SUCH DAMAGES.
-
-
-===============
-libuuid License
-===============
-
-Copyright (C) 1999, 2000, 2003, 2004 by Theodore Ts'o
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, and the entire permission notice in its entirety,
- including the disclaimer of warranties.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. The name of the author may not be used to endorse or promote
- products derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
-WHICH ARE HEREBY DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
-OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
-USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-
-============
-zlib License
-============
-
-'zlib' general purpose compression library version 1.1.4, March 11th, 2002
-
-Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler
-
-This software is provided 'as-is', without any express or implied warranty.
-In no event will the authors be held liable for any damages arising from the
-use of this software.
-
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute it
-freely, subject to the following restrictions:
-
-The origin of this software must not be misrepresented; you must not claim
-that you wrote the original software. If you use this software in a product,
-an acknowledgment in the product documentation would be appreciated but is
-not required.
-
-Altered source versions must be plainly marked as such, and must not be
-misrepresented as being the original software.
-
-This notice may not be removed or altered from any source distribution.
-
-Jean-loup Gailly
-jloup@gzip.org
-
-Mark Adler
-madler@alumni.caltech.edu
-
-=================================
-tcmalloc/Google perftools license
-=================================
-
-Copyright (c) 2005, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-==============
-libpng license
-==============
-
-COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
-
-If you modify libpng you may insert additional notices immediately following
-this sentence.
-
-libpng versions 1.2.6, August 15, 2004, through 1.2.18, May 15, 2007, are
-Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are
-distributed according to the same disclaimer and license as libpng-1.2.5
-with the following individual added to the list of Contributing Authors:
-
- Cosmin Truta
-
-libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are
-Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
-distributed according to the same disclaimer and license as libpng-1.0.6
-with the following individuals added to the list of Contributing Authors:
-
- Simon-Pierre Cadieux
- Eric S. Raymond
- Gilles Vollant
-
-and with the following additions to the disclaimer:
-
- There is no warranty against interference with your enjoyment of the
- library or against infringement. There is no warranty that our
- efforts or the library will fulfill any of your particular purposes
- or needs. This library is provided with all faults, and the entire
- risk of satisfactory quality, performance, accuracy, and effort is with
- the user.
-
-libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
-Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are
-distributed according to the same disclaimer and license as libpng-0.96,
-with the following individuals added to the list of Contributing Authors:
-
- Tom Lane
- Glenn Randers-Pehrson
- Willem van Schaik
-
-libpng versions 0.89, June 1996, through 0.96, May 1997, are
-Copyright (c) 1996, 1997 Andreas Dilger
-Distributed according to the same disclaimer and license as libpng-0.88,
-with the following individuals added to the list of Contributing Authors:
-
- John Bowler
- Kevin Bracey
- Sam Bushell
- Magnus Holmgren
- Greg Roelofs
- Tom Tanner
-
-libpng versions 0.5, May 1995, through 0.88, January 1996, are
-Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
-
-For the purposes of this copyright and license, "Contributing Authors"
-is defined as the following set of individuals:
-
- Andreas Dilger
- Dave Martindale
- Guy Eric Schalnat
- Paul Schmidt
- Tim Wegner
-
-The PNG Reference Library is supplied "AS IS". The Contributing Authors
-and Group 42, Inc. disclaim all warranties, expressed or implied,
-including, without limitation, the warranties of merchantability and of
-fitness for any purpose. The Contributing Authors and Group 42, Inc.
-assume no liability for direct, indirect, incidental, special, exemplary,
-or consequential damages, which may result from the use of the PNG
-Reference Library, even if advised of the possibility of such damage.
-
-Permission is hereby granted to use, copy, modify, and distribute this
-source code, or portions hereof, for any purpose, without fee, subject
-to the following restrictions:
-
-1. The origin of this source code must not be misrepresented.
-
-2. Altered versions must be plainly marked as such and
-must not be misrepresented as being the original source.
-
-3. This Copyright notice may not be removed or altered from
- any source or altered source distribution.
-
-The Contributing Authors and Group 42, Inc. specifically permit, without
-fee, and encourage the use of this source code as a component to
-supporting the PNG file format in commercial products. If you use this
-source code in a product, acknowledgment is not required but would be
-appreciated.
-
-=================
-Vivox SDK License
-=================
-
-RSA Data Security, Inc. MD5 Message-Digest Algorithm
-
-Audio coding: Polycom(R) Siren14TM (ITU-T Rec. G.722.1 Annex C)
-
-Open Source Software Licensing
-Each open source software component utilized by this product is subject to its own copyright and licensing terms, as listed below.
-
-
-*************************************************************
-*************************************************************
-
-/**
- * OpenAL cross platform audio library
- * Copyright (C) 1999-2000 by authors.
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- * Or go to http://www.gnu.org/copyleft/lgpl.html
- */
-
-*************************************************************
-*************************************************************
-RTP code under Lesser General Public License
-
-/*
- The oRTP library is an RTP (Realtime Transport Protocol - rfc3550) stack.
- Copyright (C) 2001 Simon MORLAT simon.morlat@linphone.org
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-************************************************************
-*************************************************************
-
-/*
- * The Vovida Software License, Version 1.0
- *
- * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The names "VOCAL", "Vovida Open Communication Application Library",
- * and "Vovida Open Communication Application Library (VOCAL)" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact vocal@vovida.org.
- *
- * 4. Products derived from this software may not be called "VOCAL", nor
- * may "VOCAL" appear in their name, without prior written
- * permission of Vovida Networks, Inc.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA
- * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
- * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * This software consists of voluntary contributions made by Vovida
- * Networks, Inc. and many individuals on behalf of Vovida Networks,
- * Inc. For more information on Vovida Networks, Inc., please see
- *
- *
- */
*************************************************************
*************************************************************
@@ -763,49 +380,54 @@ Internet Software Consortium code
* SOFTWARE.
*/
-*************************************************************
-
-*************************************************************
-
-************************************************************
-
-http://tinyxpath.sourceforge.net/
-
-TinyXPath is covered by the zlib license :
-
- www.sourceforge.net/projects/tinyxpath
- Copyright (c) 2002-2006 Yves Berquin (yvesb@users.sourceforge.net)
+=============
+meshoptimizer
+=============
+MIT License
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any
- damages arising from the use of this software.
+Copyright (c) 2016-2021 Arseny Kapoulkine
- Permission is granted to anyone to use this software for any
- purpose, including commercial applications, and to alter it and
- redistribute it freely, subject to the following restrictions:
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
- 1. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product documentation
- would be appreciated but is not required.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
- 2. Altered source versions must be plainly marked as such, and
- must not be misrepresented as being the original software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
- 3. This notice may not be removed or altered from any source distribution.
+============
+tinygltf
+============
+MIT License
-************************************************************
-************************************************************
+Copyright (c) 2017 Syoyo Fujita, Aurélien Chatelain and many contributors
-THE FREE SOFTWARE FOUNDATION
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
-Any customer may request the source code for all open source portions of this product which are covered by the Free Software Foundation's General Public License (GPL), for a period of three years from purchase. Please contact the vendor from whom you obtained this product for instructions. A fee equivalent to the cost of making the code available may be charged. Alternatively, customers may choose to download desired GPL components directly from their original vendors. Specifically, this product contains the following GPL-licensed components:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
-From Vivox:
- - Assorted software components. To request source, contact Vivox at:
- Vivox, Inc.
- Attn: customer support
- 40 Speen Street Suite 402
- Framingham, MA 01701
diff --git a/indra/newview/licenses-mac.txt b/indra/newview/licenses-mac.txt
index 29b5a919bd..a3792f0b6b 100644
--- a/indra/newview/licenses-mac.txt
+++ b/indra/newview/licenses-mac.txt
@@ -48,6 +48,42 @@ Base32 License
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
+
+===========
+CEF License
+===========
+
+// Copyright (c) 2008-2020 Marshall A. Greenblatt. Portions Copyright (c)
+// 2006-2009 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the name Chromium Embedded
+// Framework nor the names of its contributors may be used to endorse
+// or promote products derived from this software without specific prior
+// written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
============
cURL License
============
@@ -75,6 +111,31 @@ be used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization of the copyright holder.
+================
+Dullahan License
+================
+
+Copyright (c) 2016, Linden Research, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
=============
expat License
=============
@@ -198,32 +259,48 @@ JPEG Library 6b License
This software is based in part on the work of the Independent JPEG Group
================
-JPEG2000 License
+OpenJPEG License
================
-Copyright 2001, David Taubman, The University of New South Wales (UNSW)
-The copyright owner is Unisearch Ltd, Australia (commercial arm of UNSW)
-Neither this copyright statement, nor the licensing details below
-may be removed from this file or dissociated from its contents.
-
-Licensee: Linden Research, Inc.
-License number: 00024
-The licensee has been granted a COMMERCIAL license to the contents of
-this source file. A brief summary of this license appears below. This
-summary is not to be relied upon in preference to the full text of the
-license agreement, accepted at purchase of the license.
-1. The Licensee has the right to Commercial Use of the Kakadu software,
- including distribution of one or more Applications built using the
- software.
-2. The Licensee has the right to Internal Use of the Kakadu software,
- including use by employees of the Licensee or an Affiliate for the
- purpose of performing services on behalf of the Licensee or Affiliate,
- or in the performance of services for Third Parties who engage Licensee
- or an Affiliate for such services.
-3. The Licensee has the right to distribute Reusable Code (including
- source code and dynamically or statically linked libraries) to a Third
- Party, provided the Third Party possesses a license to use the Kakadu
- software.
+/*
+ * The copyright in this software is being made available under the 2-clauses
+ * BSD License, included below. This software may be subject to other third
+ * party and contributor rights, including patent rights, and no such rights
+ * are granted under this license.
+ *
+ * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
+ * Copyright (c) 2002-2014, Professor Benoit Macq
+ * Copyright (c) 2003-2014, Antonin Descampe
+ * Copyright (c) 2003-2009, Francois-Olivier Devaux
+ * Copyright (c) 2005, Herve Drolon, FreeImage Team
+ * Copyright (c) 2002-2003, Yannick Verschueren
+ * Copyright (c) 2001-2003, David Janssens
+ * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France
+ * Copyright (c) 2012, CS Systemes d'Information, France
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
==================
ogg/vorbis License
@@ -259,6 +336,30 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+===========
+SDL License
+===========
+
+SDL - Simple DirectMedia Layer
+Copyright (C) 1997-2024 Sam Lantinga <slouken@libsdl.org>
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+
===============
OpenSSL License
===============
@@ -516,18 +617,6 @@ supporting the PNG file format in commercial products. If you use this
source code in a product, acknowledgment is not required but would be
appreciated.
-=================
-Vivox SDK License
-=================
-
-RSA Data Security, Inc. MD5 Message-Digest Algorithm
-
-Audio coding: Polycom(R) Siren14TM (ITU-T Rec. G.722.1 Annex C)
-
-Open Source Software Licensing
-Each open source software component utilized by this product is subject to its own copyright and licensing terms, as listed below.
-
-
*************************************************************
*************************************************************
@@ -553,80 +642,6 @@ Each open source software component utilized by this product is subject to its o
*************************************************************
*************************************************************
-RTP code under Lesser General Public License
-
-/*
- The oRTP library is an RTP (Realtime Transport Protocol - rfc3550) stack.
- Copyright (C) 2001 Simon MORLAT simon.morlat@linphone.org
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-*/
-
-************************************************************
-*************************************************************
-
-/*
- * The Vovida Software License, Version 1.0
- *
- * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The names "VOCAL", "Vovida Open Communication Application Library",
- * and "Vovida Open Communication Application Library (VOCAL)" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact vocal@vovida.org.
- *
- * 4. Products derived from this software may not be called "VOCAL", nor
- * may "VOCAL" appear in their name, without prior written
- * permission of Vovida Networks, Inc.
- *
- * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
- * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA
- * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
- * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
- * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- *
- *
- * This software consists of voluntary contributions made by Vovida
- * Networks, Inc. and many individuals on behalf of Vovida Networks,
- * Inc. For more information on Vovida Networks, Inc., please see
- *
- *
- */
-*************************************************************
-*************************************************************
Internet Software Consortium code
@@ -647,54 +662,6 @@ Internet Software Consortium code
* SOFTWARE.
*/
-*************************************************************
-
-*************************************************************
-
-************************************************************
-
-http://tinyxpath.sourceforge.net/
-
-TinyXPath is covered by the zlib license :
-
- www.sourceforge.net/projects/tinyxpath
- Copyright (c) 2002-2006 Yves Berquin (yvesb@users.sourceforge.net)
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any
- damages arising from the use of this software.
-
- Permission is granted to anyone to use this software for any
- purpose, including commercial applications, and to alter it and
- redistribute it freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must
- not claim that you wrote the original software. If you use this
- software in a product, an acknowledgment in the product documentation
- would be appreciated but is not required.
-
- 2. Altered source versions must be plainly marked as such, and
- must not be misrepresented as being the original software.
-
- 3. This notice may not be removed or altered from any source distribution.
-
-
-************************************************************
-************************************************************
-
-THE FREE SOFTWARE FOUNDATION
-
-Any customer may request the source code for all open source portions of this product which are covered by the Free Software Foundation's General Public License (GPL), for a period of three years from purchase. Please contact the vendor from whom you obtained this product for instructions. A fee equivalent to the cost of making the code available may be charged. Alternatively, customers may choose to download desired GPL components directly from their original vendors. Specifically, this product contains the following GPL-licensed components:
-
-
-From Vivox:
- - Assorted software components. To request source, contact Vivox at:
- Vivox, Inc.
- Attn: customer support
- 40 Speen Street Suite 402
- Framingham, MA 01701
-
-
=============
meshoptimizer
=============
@@ -771,3 +738,47 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+========
+sse2neon
+========
+/*
+ * sse2neon is freely redistributable under the MIT License.
+ *
+ * Copyright (c) 2015-2024 SSE2NEON Contributors.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+===============================
+libwebrtc binaries (unofficial)
+===============================
+
+Copyright 2019 Zenichi Amano
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/indra/newview/linux_tools/launch_url.sh b/indra/newview/linux_tools/launch_url.sh
index 404ea36f26..7c4ebf2291 100755
--- a/indra/newview/linux_tools/launch_url.sh
+++ b/indra/newview/linux_tools/launch_url.sh
@@ -61,6 +61,7 @@ fi
# will be tried first, which is a debian alternative.
BROWSER_COMMANDS=" \
x-www-browser \
+ chrome \
firefox \
mozilla-firefox \
iceweasel \
diff --git a/indra/newview/linux_tools/megapahit.desktop b/indra/newview/linux_tools/megapahit.desktop
new file mode 100755
index 0000000000..05e5d0175a
--- /dev/null
+++ b/indra/newview/linux_tools/megapahit.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Name=Megapahit
+Comment=A fork of the Second Life viewer
+Exec=megapahit
+Icon=megapahit
+Terminal=false
+Type=Application
+Categories=Application;Network;
+StartupNotify=true
+X-Desktop-File-Install-Version=3.0"
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index 7f60b2b8a0..418d3d150b 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -2648,9 +2648,9 @@ void LLAgentCamera::setCameraPosAndFocusGlobal(const LLVector3d& camera_pos, con
if (mCameraAnimating)
{
- const F64 ANIM_METERS_PER_SECOND = 10.0;
+ const F64 ANIM_METERS_PER_SECOND = 15.0;
const F64 MIN_ANIM_SECONDS = 0.5;
- const F64 MAX_ANIM_SECONDS = 10.0;
+ const F64 MAX_ANIM_SECONDS = 3.0;
F64 anim_duration = llmax( MIN_ANIM_SECONDS, sqrt(focus_delta_squared) / ANIM_METERS_PER_SECOND );
anim_duration = llmin( anim_duration, MAX_ANIM_SECONDS );
setAnimationDuration( (F32)anim_duration );
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 23da0faa47..aa95681d32 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -137,10 +137,10 @@
#include "stringize.h"
#include "llcoros.h"
#include "llexception.h"
+#if LL_DARWIN || LL_LINUX || __FreeBSD__
#include "cef/dullahan_version.h"
-#if !LL_LINUX
+#endif
#include "vlc/libvlc_version.h"
-#endif // LL_LINUX
#if LL_DARWIN
#include "llwindowmacosx.h"
@@ -255,6 +255,7 @@ using namespace LL;
#include "llcoproceduremanager.h"
#include "llviewereventrecorder.h"
+#include <chrono>
#include "rlvactions.h"
#include "rlvcommon.h"
#include "rlvhandler.h"
@@ -314,6 +315,8 @@ S32 gLastExecDuration = -1; // (<0 indicates unknown)
# define LL_PLATFORM_KEY "mac"
#elif LL_LINUX
# define LL_PLATFORM_KEY "lnx"
+#elif __FreeBSD__
+# define LL_PLATFORM_KEY "bsd"
#else
# error "Unknown Platform"
#endif
@@ -544,11 +547,13 @@ static void settings_to_globals()
{
LLSurface::setTextureSize(gSavedSettings.getU32("RegionTextureSize"));
-#if LL_DARWIN
+//#if LL_DARWIN
LLRender::sGLCoreProfile = true;
+/*
#else
LLRender::sGLCoreProfile = gSavedSettings.getBOOL("RenderGLContextCoreProfile");
#endif
+*/
LLRender::sNsightDebugSupport = gSavedSettings.getBOOL("RenderNsightDebugSupport");
LLImageGL::sGlobalUseAnisotropic = gSavedSettings.getBOOL("RenderAnisotropic");
LLImageGL::sCompressTextures = gSavedSettings.getBOOL("RenderCompressTextures");
@@ -680,7 +685,7 @@ LLAppViewer::LLAppViewer()
// Need to do this initialization before we do anything else, since anything
// that touches files should really go through the lldir API
- gDirUtilp->initAppDirs("SecondLife");
+ gDirUtilp->initAppDirs("Megapahit");
//
// IMPORTANT! Do NOT put anything that will write
// into the log files during normal startup until AFTER
@@ -914,7 +919,7 @@ bool LLAppViewer::init()
std::string mime_types_name;
#if LL_DARWIN
mime_types_name = "mime_types_mac.xml";
-#elif LL_LINUX
+#elif LL_LINUX || __FreeBSD__
mime_types_name = "mime_types_linux.xml";
#else
mime_types_name = "mime_types.xml";
@@ -995,6 +1000,7 @@ bool LLAppViewer::init()
return false;
}
+#if defined(__i386__) || defined(__x86_64__) || defined(__amd64__)
// Without SSE2 support we will crash almost immediately, warn here.
if (!gSysCPU.hasSSE2())
{
@@ -1006,6 +1012,7 @@ bool LLAppViewer::init()
// quit immediately
return false;
}
+#endif
// alert the user if they are using unsupported hardware
if (!gSavedSettings.getBOOL("AlertedUnsupportedHardware"))
@@ -1169,7 +1176,7 @@ bool LLAppViewer::init()
gGLActive = false;
-#if LL_RELEASE_FOR_DOWNLOAD && !LL_LINUX
+#if 0 // LL_RELEASE_FOR_DOWNLOAD && !LL_LINUX
// Skip updater if this is a non-interactive instance
if (!gSavedSettings.getBOOL("CmdLineSkipUpdater") && !gNonInteractive)
{
@@ -1485,6 +1492,13 @@ void sendGameControlInput()
bool LLAppViewer::doFrame()
{
+ static LLCachedControl<U32> fpsLimitMaxFps(gSavedSettings, "MaxFPS", 0);
+
+ using TimePoint = std::chrono::steady_clock::time_point;
+
+ U64 fpsLimitSleepFor = 0;
+ TimePoint fpsLimitFrameStartTime = std::chrono::steady_clock::now();
+
LL_RECORD_BLOCK_TIME(FTM_FRAME);
{
// and now adjust the visuals from previous frame.
@@ -1655,6 +1669,18 @@ bool LLAppViewer::doFrame()
}
}
+ if(fpsLimitMaxFps > 0)
+ {
+ auto elapsed = std::chrono::steady_clock::now() - fpsLimitFrameStartTime;
+
+ long long fpsLimitFrameTime = std::chrono::duration_cast<std::chrono::microseconds>(elapsed).count();
+ U64 desired_time_us = (U32)(1000000.f / fpsLimitMaxFps);
+ if((fpsLimitFrameTime+1000) < desired_time_us)
+ {
+ fpsLimitSleepFor = (desired_time_us - fpsLimitFrameTime - 1000) * 1.0;
+ }
+ }
+
{
LL_PROFILE_ZONE_NAMED_CATEGORY_APP("df pauseMainloopTimeout");
pingMainloopTimeout("Main:Sleep");
@@ -1667,6 +1693,11 @@ bool LLAppViewer::doFrame()
//LL_RECORD_BLOCK_TIME(SLEEP2);
LL_PROFILE_ZONE_WARN("Sleep2");
+ if(fpsLimitSleepFor)
+ {
+ usleep(fpsLimitSleepFor);
+ }
+
// yield some time to the os based on command line option
static LLCachedControl<S32> yield_time(gSavedSettings, "YieldTime", -1);
if(yield_time >= 0)
@@ -1857,7 +1888,7 @@ bool LLAppViewer::cleanup()
// one because it happens just after mFastTimerLogThread is deleted. This
// comment is in case we guessed wrong, so we can move it here instead.
-#if LL_LINUX
+#if LL_LINUX || __FreeBSD__
// remove any old breakpad minidump files from the log directory
if (! isError())
{
@@ -3544,7 +3575,7 @@ LLSD LLAppViewer::getViewerInfo() const
info["LIBCEF_VERSION"] = cef_ver_codec.str();
-#if !LL_LINUX
+//#if !LL_LINUX
std::ostringstream vlc_ver_codec;
vlc_ver_codec << LIBVLC_VERSION_MAJOR;
vlc_ver_codec << ".";
@@ -3552,9 +3583,11 @@ LLSD LLAppViewer::getViewerInfo() const
vlc_ver_codec << ".";
vlc_ver_codec << LIBVLC_VERSION_REVISION;
info["LIBVLC_VERSION"] = vlc_ver_codec.str();
+/*
#else
info["LIBVLC_VERSION"] = "Undefined";
#endif
+*/
S32 packets_in = (S32)LLViewerStats::instance().getRecording().getSum(LLStatViewer::PACKETS_IN);
if (packets_in > 0)
@@ -5617,7 +5650,7 @@ void LLAppViewer::forceErrorBreakpoint()
LL_WARNS() << "Forcing a deliberate breakpoint" << LL_ENDL;
#ifdef LL_WINDOWS
DebugBreak();
-#else
+#elif __i386__ || __x86_64__
asm ("int $3");
#endif
return;
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
index 7ce74649e2..9506ccad60 100644
--- a/indra/newview/llappviewerlinux.cpp
+++ b/indra/newview/llappviewerlinux.cpp
@@ -40,7 +40,10 @@
#include <exception>
+#if LL_GLIB
#include <gio/gio.h>
+#endif
+#include <netinet/in.h>
#include <resolv.h>
#if (__GLIBC__*1000 + __GLIBC_MINOR__) >= 2034
@@ -75,6 +78,7 @@ extern "C"
#define VIEWERAPI_PATH "/com/secondlife/ViewerAppAPI"
#define VIEWERAPI_INTERFACE "com.secondlife.ViewerAppAPI"
+#if LL_GLIB
static const char * DBUS_SERVER = "<node name=\"/com/secondlife/ViewerAppAPI\">\n"
" <interface name=\"com.secondlife.ViewerAppAPI\">\n"
" <annotation name=\"org.freedesktop.DBus.GLib.CSymbol\" value=\"viewer_app_api\"/>\n"
@@ -89,6 +93,7 @@ typedef struct
{
GObject parent;
} ViewerAppAPI;
+#endif
namespace
{
@@ -393,11 +398,13 @@ void LLAppViewerLinux::initCrashReporting(bool reportFreeze)
{
std::string cmd =gDirUtilp->getExecutableDir();
cmd += gDirUtilp->getDirDelimiter();
-#if LL_LINUX
+//#if LL_LINUX
cmd += "linux-crash-logger.bin";
+/*
#else
# error Unknown platform
#endif
+*/
std::stringstream pid_str;
pid_str << LLApp::getPid();
diff --git a/indra/newview/llattachmentsmgr.cpp b/indra/newview/llattachmentsmgr.cpp
index 8b5db2c0fa..73ac895d0d 100644
--- a/indra/newview/llattachmentsmgr.cpp
+++ b/indra/newview/llattachmentsmgr.cpp
@@ -545,3 +545,28 @@ void LLAttachmentsMgr::spamStatusInfo()
}
#endif
}
+
+// [SL:KB] - Patch: Appearance-PhantomAttach | Checked: Catznip-5.0
+void LLAttachmentsMgr::refreshAttachments()
+{
+ if (!isAgentAvatarValid())
+ return;
+
+ for (const auto& kvpAttachPt : gAgentAvatarp->mAttachmentPoints)
+ {
+ for (const LLViewerObject* pAttachObj : kvpAttachPt.second->mAttachedObjects)
+ {
+ const LLUUID& idItem = pAttachObj->getAttachmentItemID();
+ if ( (mAttachmentRequests.wasRequestedRecently(idItem)) || (pAttachObj->isTempAttachment()) )
+ continue;
+
+ AttachmentsInfo attachment;
+ attachment.mItemID = idItem;
+ attachment.mAttachmentPt = kvpAttachPt.first;
+ attachment.mAdd = true;
+ mPendingAttachments.push_back(attachment);
+ mAttachmentRequests.addTime(idItem);
+ }
+ }
+}
+// [/SL:KB]
diff --git a/indra/newview/llattachmentsmgr.h b/indra/newview/llattachmentsmgr.h
index 2428acfb38..de36253339 100644
--- a/indra/newview/llattachmentsmgr.h
+++ b/indra/newview/llattachmentsmgr.h
@@ -87,6 +87,9 @@ public:
bool isAttachmentStateComplete() const;
+ // [SL:KB] - Patch: Appearance-PhantomAttach | Checked: Catznip-5.0
+ void refreshAttachments();
+
private:
class LLItemRequestTimes: public std::map<LLUUID,LLTimer>
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 8f858fe4e1..52cd86951d 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -36,6 +36,7 @@
#include "lltextutil.h"
// newview
+#include "llagent.h"
#include "llagentdata.h" // for comparator
#include "llavatariconctrl.h"
#include "llavatarnamecache.h"
@@ -47,11 +48,12 @@
#include "llvoiceclient.h"
#include "llviewercontrol.h" // for gSavedSettings
#include "lltooldraganddrop.h"
+#include "llworld.h"
static LLDefaultChildRegistry::Register<LLAvatarList> r("avatar_list");
// Last interaction time update period.
-static const F32 LIT_UPDATE_PERIOD = 5;
+static const F32 LIT_UPDATE_PERIOD = 1;
// Maximum number of avatars that can be added to a list in one pass.
// Used to limit time spent for avatar list update per frame.
@@ -119,6 +121,8 @@ static const LLFlatListView::ItemReverseComparator REVERSE_NAME_COMPARATOR(NAME_
LLAvatarList::Params::Params()
: ignore_online_status("ignore_online_status", false)
+, show_avatar_arrival_time("show_avatar_arrival_time", false)
+, show_avatar_distance("show_avatar_distance", false)
, show_last_interaction_time("show_last_interaction_time", false)
, show_info_btn("show_info_btn", true)
, show_profile_btn("show_profile_btn", true)
@@ -131,6 +135,8 @@ LLAvatarList::LLAvatarList(const Params& p)
: LLFlatListViewEx(p)
, mIgnoreOnlineStatus(p.ignore_online_status)
, mShowLastInteractionTime(p.show_last_interaction_time)
+, mAvatarDistance(p.show_avatar_distance)
+, mAvatarArrivalTime(p.show_avatar_arrival_time)
, mContextMenu(NULL)
, mDirty(true) // to force initial update
, mNeedUpdateNames(false)
@@ -147,7 +153,7 @@ LLAvatarList::LLAvatarList(const Params& p)
// Set default sort order.
setComparator(&NAME_COMPARATOR);
- if (mShowLastInteractionTime)
+ if (mShowLastInteractionTime || mAvatarDistance || mAvatarArrivalTime)
{
mLITUpdateTimer = new LLTimer();
mLITUpdateTimer->setTimerExpirySec(0); // zero to force initial update
@@ -196,9 +202,20 @@ void LLAvatarList::draw()
if (mDirty)
refresh();
- if (mShowLastInteractionTime && mLITUpdateTimer->hasExpired())
+ if ((mShowLastInteractionTime || mAvatarDistance || mAvatarArrivalTime) && mLITUpdateTimer->hasExpired())
{
+ if (mAvatarArrivalTime)
+ {
+ updateAvatarArrivalTime();
+ }
+ if (mAvatarDistance)
+ {
+ updateAvatarDistance();
+ }
+ if (mShowLastInteractionTime)
+ {
updateLastInteractionTimes();
+ }
mLITUpdateTimer->setTimerExpirySec(LIT_UPDATE_PERIOD); // restart the timer
}
}
@@ -422,6 +439,8 @@ void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, bool is
// This sets the name as a side effect
item->setAvatarId(id, mSessionID, mIgnoreOnlineStatus);
item->setOnline(mIgnoreOnlineStatus ? true : is_online);
+ item->showAvatarArrivalTime(mAvatarArrivalTime);
+ item->showAvatarDistance(mAvatarDistance);
item->showLastInteractionTime(mShowLastInteractionTime);
item->setAvatarIconVisible(mShowIcons);
@@ -528,6 +547,46 @@ void LLAvatarList::computeDifference(
LLCommonUtils::computeDifference(vnew_unsorted, vcur, vadded, vremoved);
}
+void LLAvatarList::updateAvatarArrivalTime()
+{
+ std::vector<LLPanel*> items;
+ getItems(items);
+ auto uuids = getIDs();
+ std::vector<LLVector3d> positions;
+ auto me_pos = gAgent.getPositionGlobal();
+ LLWorld::getInstance()->getAvatars(&uuids, &positions, me_pos, gSavedSettings.getF32("MPVNearMeRange"));
+ LLRecentPeople::instance().updateAvatarsArrivalTime(uuids);
+ for (auto it = items.begin(); it != items.end(); it++)
+ {
+ auto item = static_cast<LLAvatarListItem*>(*it);
+ auto secs_since = LLDate::now().secondsSinceEpoch() - LLRecentPeople::instance().getArrivalTimeByID(item->getAvatarId());
+ if (secs_since >= 0)
+ item->setAvatarArrivalTime(secs_since);
+ }
+}
+
+ void LLAvatarList::updateAvatarDistance()
+{
+ std::vector<LLPanel*> items;
+ getItems(items);
+ auto uuids = getIDs();
+ std::vector<LLVector3d> positions;
+ auto me_pos = gAgent.getPositionGlobal();
+ LLWorld::getInstance()->getAvatars(&uuids, &positions, me_pos, gSavedSettings.getF32("MPVNearMeRange"));
+ std::map <LLUUID, LLVector3d> avatarsPositions;
+ auto pos_it = positions.begin();
+ auto id_it = uuids.begin();
+ for (;pos_it != positions.end() && id_it != uuids.end(); ++pos_it, ++id_it)
+ {
+ avatarsPositions[*id_it] = *pos_it;
+ }
+ for (auto it = items.begin(); it != items.end(); it++)
+ {
+ auto item = static_cast<LLAvatarListItem*>(*it);
+ item->setAvatarDistance(dist_vec(avatarsPositions[item->getAvatarId()], me_pos));
+ }
+}
+
// Refresh shown time of our last interaction with all listed avatars.
void LLAvatarList::updateLastInteractionTimes()
{
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index af5bfefcde..37ad578a20 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -50,6 +50,8 @@ public:
struct Params : public LLInitParam::Block<Params, LLFlatListViewEx::Params>
{
Optional<bool> ignore_online_status, // show all items as online
+ show_avatar_arrival_time,
+ show_avatar_distance,
show_last_interaction_time, // show most recent interaction time. *HACK: move this to a derived class
show_info_btn,
show_profile_btn,
@@ -110,6 +112,8 @@ protected:
const uuid_vec_t& vnew,
uuid_vec_t& vadded,
uuid_vec_t& vremoved);
+ void updateAvatarArrivalTime();
+ void updateAvatarDistance();
void updateLastInteractionTimes();
void rebuildNames();
void onItemDoubleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask);
@@ -118,6 +122,8 @@ protected:
private:
bool mIgnoreOnlineStatus;
+ bool mAvatarArrivalTime;
+ bool mAvatarDistance;
bool mShowLastInteractionTime;
bool mDirty;
bool mNeedUpdateNames;
diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 880910d18e..7be4f4eeb8 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -65,6 +65,8 @@ LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/)
LLFriendObserver(),
mAvatarIcon(NULL),
mAvatarName(NULL),
+ mAvatarArrivalTime(NULL),
+ mAvatarDistance(NULL),
mLastInteractionTime(NULL),
mIconPermissionOnline(NULL),
mIconPermissionMap(NULL),
@@ -107,6 +109,8 @@ bool LLAvatarListItem::postBuild()
{
mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon");
mAvatarName = getChild<LLTextBox>("avatar_name");
+ mAvatarArrivalTime = getChild<LLTextBox>("avatar_arrival_time");
+ mAvatarDistance = getChild<LLTextBox>("avatar_distance");
mLastInteractionTime = getChild<LLTextBox>("last_interaction");
mIconPermissionOnline = getChild<LLIconCtrl>("permission_online_icon");
@@ -301,6 +305,28 @@ void LLAvatarListItem::setAvatarId(const LLUUID& id, const LLUUID& session_id, b
}
}
+void LLAvatarListItem::showAvatarArrivalTime(bool show)
+{
+ mAvatarArrivalTime->setVisible(show);
+ updateChildren();
+}
+
+void LLAvatarListItem::setAvatarArrivalTime(F32 arrival_time)
+{
+ mAvatarArrivalTime->setValue(formatSeconds(arrival_time));
+}
+
+void LLAvatarListItem::showAvatarDistance(bool show)
+{
+ mAvatarDistance->setVisible(show);
+ updateChildren();
+}
+
+void LLAvatarListItem::setAvatarDistance(F32 distance)
+{
+ mAvatarDistance->setValue(llformat("%.1f m", distance));
+}
+
void LLAvatarListItem::showLastInteractionTime(bool show)
{
mLastInteractionTime->setVisible(show);
@@ -538,6 +564,12 @@ void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item)
// last interaction time textbox width + padding
S32 last_interaction_time_width = avatar_item->mIconPermissionEditTheirs->getRect().mLeft - avatar_item->mLastInteractionTime->getRect().mLeft;
+ // avatar distance textbox width + padding
+ S32 avatar_distance_width = avatar_item->mAvatarDistance->getRect().mLeft - avatar_item->mAvatarArrivalTime->getRect().mLeft;
+
+ // avatar arrival time textbox width + padding
+ S32 avatar_arrival_time = avatar_item->mAvatarArrivalTime->getRect().mLeft - avatar_item->mAvatarName->getRect().mLeft;
+
// avatar icon width + padding
S32 icon_width = avatar_item->mAvatarName->getRect().mLeft - avatar_item->mAvatarIcon->getRect().mLeft;
@@ -546,6 +578,8 @@ void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item)
S32 index = ALIC_COUNT;
sChildrenWidths[--index] = icon_width;
sChildrenWidths[--index] = 0; // for avatar name we don't need its width, it will be calculated as "left available space"
+ sChildrenWidths[--index] = avatar_arrival_time;
+ sChildrenWidths[--index] = avatar_distance_width;
sChildrenWidths[--index] = last_interaction_time_width;
sChildrenWidths[--index] = permission_edit_theirs_width;
sChildrenWidths[--index] = permission_edit_mine_width;
@@ -666,6 +700,12 @@ LLView* LLAvatarListItem::getItemChildView(EAvatarListItemChildIndex child_view_
case ALIC_NAME:
child_view = mAvatarName;
break;
+ case ALIC_ARRIVAL_TIME:
+ child_view = mAvatarArrivalTime;
+ break;
+ case ALIC_DISTANCE:
+ child_view = mAvatarDistance;
+ break;
case ALIC_INTERACTION_TIME:
child_view = mLastInteractionTime;
break;
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index 2e4c597d30..630a7ec751 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -98,12 +98,16 @@ public:
void setHighlight(const std::string& highlight);
void setState(EItemState item_style);
void setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes = false, bool is_resident = true);
+ void setAvatarArrivalTime(F32 arrival_time);
+ void setAvatarDistance(F32 distance);
void setLastInteractionTime(U32 secs_since);
//Show/hide profile/info btn, translating speaker indicator and avatar name coordinates accordingly
void setShowProfileBtn(bool show);
void setShowInfoBtn(bool show);
void showSpeakingIndicator(bool show);
void setShowPermissions(bool show) { mShowPermissions = show; };
+ void showAvatarArrivalTime(bool show);
+ void showAvatarDistance(bool show);
void showLastInteractionTime(bool show);
void setAvatarIconVisible(bool visible);
void setShowCompleteName(bool show) { mShowCompleteName = show;};
@@ -158,6 +162,8 @@ private:
ALIC_PERMISSION_EDIT_MINE,
ALIC_PERMISSION_EDIT_THEIRS,
ALIC_INTERACTION_TIME,
+ ALIC_DISTANCE,
+ ALIC_ARRIVAL_TIME,
ALIC_NAME,
ALIC_ICON,
ALIC_COUNT,
@@ -199,6 +205,8 @@ private:
LLView* getItemChildView(EAvatarListItemChildIndex child_index);
LLTextBox* mAvatarName;
+ LLTextBox* mAvatarArrivalTime;
+ LLTextBox* mAvatarDistance;
LLTextBox* mLastInteractionTime;
LLStyle::Params mAvatarNameStyle;
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index bb5ee558ca..b0240c62be 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -1258,7 +1258,10 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
LLStyle::Params body_message_params;
body_message_params.color(txt_color);
- body_message_params.readonly_color(txt_color);
+ if (args["COLOR"])
+ body_message_params.readonly_color(LLUIColorTable::instance().getColor(args["COLOR"].asString()));
+ else
+ body_message_params.readonly_color(txt_color);
body_message_params.alpha(alpha);
body_message_params.font.name(font_name);
body_message_params.font.size(font_size);
diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp
index 17edca7ccb..bc00f4179e 100644
--- a/indra/newview/lldirpicker.cpp
+++ b/indra/newview/lldirpicker.cpp
@@ -37,7 +37,7 @@
#include "llviewercontrol.h"
#include "llwin32headers.h"
-#if LL_LINUX || LL_DARWIN
+#if LL_LINUX || LL_DARWIN || __FreeBSD__
# include "llfilepicker.h"
#endif
@@ -208,7 +208,7 @@ std::string LLDirPicker::getDirName()
return mFilePicker->getFirstFile();
}
-#elif LL_LINUX
+#elif LL_LINUX || __FreeBSD__
LLDirPicker::LLDirPicker() :
mFileName(NULL),
diff --git a/indra/newview/lldirpicker.h b/indra/newview/lldirpicker.h
index dc740caab2..2d5bfc3a75 100644
--- a/indra/newview/lldirpicker.h
+++ b/indra/newview/lldirpicker.h
@@ -75,7 +75,7 @@ private:
void buildDirname( void );
bool check_local_file_access_enabled();
-#if LL_LINUX || LL_DARWIN
+#if LL_LINUX || LL_DARWIN || __FreeBSD__
// On Linux we just implement LLDirPicker on top of LLFilePicker
LLFilePicker *mFilePicker;
#endif
diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp
index 7bd5206453..74d7997a8d 100644
--- a/indra/newview/lldrawpool.cpp
+++ b/indra/newview/lldrawpool.cpp
@@ -365,7 +365,9 @@ void LLFacePool::LLOverrideFaceColor::setColor(const LLColor4& color)
void LLFacePool::LLOverrideFaceColor::setColor(const LLColor4U& color)
{
+#if GL_VERSION_1_1
glColor4ubv(color.mV);
+#endif
}
void LLFacePool::LLOverrideFaceColor::setColor(F32 r, F32 g, F32 b, F32 a)
diff --git a/indra/newview/lldrawpoolterrain.cpp b/indra/newview/lldrawpoolterrain.cpp
index 57def49539..60e40d3dba 100644
--- a/indra/newview/lldrawpoolterrain.cpp
+++ b/indra/newview/lldrawpoolterrain.cpp
@@ -666,6 +666,7 @@ void LLDrawPoolTerrain::renderFull4TU()
gGL.getTexUnit(0)->activate();
gGL.getTexUnit(0)->bind(detail_texture0p);
+#if GL_VERSION_1_1
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
@@ -673,6 +674,7 @@ void LLDrawPoolTerrain::renderFull4TU()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
+#endif
//
// Stage 1: Generate alpha ramp for detail0/detail1 transition
@@ -689,12 +691,14 @@ void LLDrawPoolTerrain::renderFull4TU()
gGL.getTexUnit(2)->enable(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(2)->activate();
+#if GL_VERSION_1_1
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
+#endif
//
// Stage 3: Modulate with primary (vertex) color for lighting
@@ -716,12 +720,14 @@ void LLDrawPoolTerrain::renderFull4TU()
gGL.getTexUnit(0)->activate();
gGL.getTexUnit(0)->bind(detail_texture3p);
+#if GL_VERSION_1_1
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
+#endif
//
// Stage 1: Generate alpha ramp for detail2/detail3 transition
@@ -742,12 +748,14 @@ void LLDrawPoolTerrain::renderFull4TU()
gGL.getTexUnit(2)->enable(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(2)->activate();
+#if GL_VERSION_1_1
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
+#endif
//
// Stage 3: Generate alpha ramp for detail1/detail2 transition
@@ -782,8 +790,10 @@ void LLDrawPoolTerrain::renderFull4TU()
gGL.getTexUnit(2)->disable();
gGL.getTexUnit(2)->activate();
+#if GL_VERSION_1_1
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
+#endif
gGL.matrixMode(LLRender::MM_TEXTURE);
gGL.loadIdentity();
gGL.matrixMode(LLRender::MM_MODELVIEW);
@@ -806,8 +816,10 @@ void LLDrawPoolTerrain::renderFull4TU()
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+#if GL_VERSION_1_1
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
+#endif
gGL.matrixMode(LLRender::MM_TEXTURE);
gGL.loadIdentity();
gGL.matrixMode(LLRender::MM_MODELVIEW);
@@ -841,6 +853,7 @@ void LLDrawPoolTerrain::renderFull2TU()
// Stage 0: Render detail 0 into base
//
gGL.getTexUnit(0)->bind(detail_texture0p);
+#if GL_VERSION_1_1
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
@@ -848,6 +861,7 @@ void LLDrawPoolTerrain::renderFull2TU()
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
+#endif
drawLoop();
@@ -859,8 +873,10 @@ void LLDrawPoolTerrain::renderFull2TU()
//
gGL.getTexUnit(0)->bind(m2DAlphaRampImagep);
+#if GL_VERSION_1_1
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
+#endif
//
// Stage 1: Write detail1
@@ -869,12 +885,14 @@ void LLDrawPoolTerrain::renderFull2TU()
gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(1)->activate();
+#if GL_VERSION_1_1
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
+#endif
gGL.getTexUnit(0)->activate();
{
@@ -902,12 +920,14 @@ void LLDrawPoolTerrain::renderFull2TU()
gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(1)->activate();
+#if GL_VERSION_1_1
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
+#endif
{
LLGLEnable blend(GL_BLEND);
@@ -933,12 +953,14 @@ void LLDrawPoolTerrain::renderFull2TU()
gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE);
gGL.getTexUnit(1)->activate();
+#if GL_VERSION_1_1
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGenfv(GL_S, GL_OBJECT_PLANE, tp0.mV);
glTexGenfv(GL_T, GL_OBJECT_PLANE, tp1.mV);
+#endif
gGL.getTexUnit(0)->activate();
{
@@ -955,8 +977,10 @@ void LLDrawPoolTerrain::renderFull2TU()
gGL.getTexUnit(1)->disable();
gGL.getTexUnit(1)->activate();
+#if GL_VERSION_1_1
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
+#endif
gGL.matrixMode(LLRender::MM_TEXTURE);
gGL.loadIdentity();
gGL.matrixMode(LLRender::MM_MODELVIEW);
@@ -967,8 +991,10 @@ void LLDrawPoolTerrain::renderFull2TU()
gGL.getTexUnit(0)->activate();
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
+#if GL_VERSION_1_1
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
+#endif
gGL.matrixMode(LLRender::MM_TEXTURE);
gGL.loadIdentity();
gGL.matrixMode(LLRender::MM_MODELVIEW);
diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h
index 217c069705..559a34bc47 100644
--- a/indra/newview/llenvironment.h
+++ b/indra/newview/llenvironment.h
@@ -27,6 +27,8 @@
#ifndef LL_ENVIRONMENT_H
#define LL_ENVIRONMENT_H
+#include <array>
+
#include "llsingleton.h"
#include "llmemory.h"
#include "llsd.h"
diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp
index f3cb07739d..7717dba1af 100644
--- a/indra/newview/llface.cpp
+++ b/indra/newview/llface.cpp
@@ -543,15 +543,21 @@ void LLFace::renderSelected(LLViewerTexture *imagep, const LLColor4& color)
gGL.multMatrix((F32*) volume->getRelativeXform().mMatrix);
const LLVolumeFace& vol_face = rigged->getVolumeFace(getTEOffset());
LLVertexBuffer::unbind();
+#if GL_VERSION_1_1
glVertexPointer(3, GL_FLOAT, 16, vol_face.mPositions);
+#endif
if (vol_face.mTexCoords)
{
+#if GL_VERSION_1_1
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 8, vol_face.mTexCoords);
+#endif
}
gGL.syncMatrices();
glDrawElements(GL_TRIANGLES, vol_face.mNumIndices, GL_UNSIGNED_SHORT, vol_face.mIndices);
+#if GL_VERSION_1_1
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
+#endif
}
}
#endif
@@ -638,10 +644,14 @@ void LLFace::renderOneWireframe(const LLColor4 &color, F32 fogCfx, bool wirefram
{
LLGLDisable depth(wireframe_selection ? 0 : GL_BLEND);
+#if GL_VERSION_1_1
LLGLEnable offset(GL_POLYGON_OFFSET_LINE);
+#endif
glPolygonOffset(3.f, 3.f);
glLineWidth(5.f);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+#endif
renderFace(mDrawablep, this);
}
}
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 8056983c7c..aa2578fec6 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -1098,7 +1098,7 @@ void LLFastTimerView::drawLineGraph()
cur_max_calls = llmax(cur_max_calls, calls);
}
F32 x = mGraphRect.mRight - j * (F32)(mGraphRect.getWidth())/(mRecording.getNumRecordedPeriods()-1);
- F32 y;
+ F32 y = 0.0;
switch(mDisplayType)
{
case DISPLAY_TIME:
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index fcc3423b4d..16007b623d 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -40,7 +40,6 @@
#include "llappviewer.h"
#include "llbufferstream.h"
-#include "llexception.h"
#include "llnotificationsutil.h"
#include "llviewercontrol.h"
#include "llworld.h"
@@ -63,7 +62,7 @@
#if LL_DARWIN
const char FEATURE_TABLE_FILENAME[] = "featuretable_mac.txt";
-#elif LL_LINUX
+#elif LL_LINUX || __FreeBSD__
const char FEATURE_TABLE_FILENAME[] = "featuretable_linux.txt";
#else
const char FEATURE_TABLE_FILENAME[] = "featuretable.txt";
@@ -387,7 +386,11 @@ bool LLFeatureManager::loadGPUClass()
F32 gbps;
try
{
- gbps = LL::seh::catcher(gpu_benchmark);
+#if LL_WINDOWS
+ gbps = logExceptionBenchmark();
+#else
+ gbps = gpu_benchmark();
+#endif
}
catch (const std::exception& e)
{
diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp
index 3639064cc4..9e2bcc5148 100644
--- a/indra/newview/llfilepicker.cpp
+++ b/indra/newview/llfilepicker.cpp
@@ -36,7 +36,7 @@
#include "llviewercontrol.h"
#include "llwindow.h" // beforeDialog()
-#if LL_LINUX
+#if LL_LINUX || __FreeBSD__
#include "llwindowsdl.h" // for some X/GTK utils to help with filepickers
#include "llhttpconstants.h" // file picker uses some of thes constants on Linux
#endif
@@ -1102,7 +1102,7 @@ bool LLFilePicker::getSaveFileModeless(ESaveFilter filter,
}
//END LL_DARWIN
-#elif LL_LINUX
+#elif LL_LINUX || __FreeBSD__
# if LL_GTK
diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp
index 2322103009..f20858452a 100644
--- a/indra/newview/llfloatercamera.cpp
+++ b/indra/newview/llfloatercamera.cpp
@@ -478,10 +478,8 @@ bool LLFloaterCamera::postBuild()
mZoom = getChild<LLPanelCameraZoom>(ZOOM);
mTrack = getChild<LLJoystickCameraTrack>(PAN);
mPresetCombo = getChild<LLComboBox>("preset_combo");
- mPreciseCtrls = getChild<LLTextBox>("precise_ctrs_label");
+ mPreciseCtrls = getChild<LLButton>("precise_btn");
- mPreciseCtrls->setShowCursorHand(false);
- mPreciseCtrls->setSoundFlags(LLView::MOUSE_UP);
mPreciseCtrls->setClickedCallback(boost::bind(&LLFloaterReg::showInstance, "prefs_view_advanced", LLSD(), false));
mPresetCombo->setCommitCallback(boost::bind(&LLFloaterCamera::onCustomPresetSelected, this));
@@ -492,6 +490,11 @@ bool LLFloaterCamera::postBuild()
// ensure that appearance mode is handled while building. See EXT-7796.
handleAvatarEditingAppearance(sAppearanceEditing);
+ mCollapseCtrl = getChild<LLButton>("collapse_btn");
+ mCollapseCtrl->setCommitCallback(boost::bind(&LLFloaterCamera::toggleCollapsedView, this));
+
+ updateCollapsedView();
+
return LLFloater::postBuild();
}
@@ -736,3 +739,19 @@ void LLFloaterCamera::onCustomPresetSelected()
switchToPreset(selected_preset);
}
}
+
+void LLFloaterCamera::toggleCollapsedView()
+{
+ BOOL isCollapsed = gSavedSettings.getBOOL("MPVCameraCollapsed");
+ gSavedSettings.setBOOL("MPVCameraCollapsed", !isCollapsed);
+ updateCollapsedView();
+}
+
+void LLFloaterCamera::updateCollapsedView()
+{
+ BOOL isCollapsed = gSavedSettings.getBOOL("MPVCameraCollapsed");
+ mCollapseCtrl->setImageOverlay(!isCollapsed ? "Conv_toolbar_collapse" : "Conv_toolbar_expand");
+ getChild<LLPanel>("buttons_panel")->setVisible(!isCollapsed);
+ //mPreciseCtrls->setVisible(!collapse);
+ reshape(!isCollapsed ? 410 : 220, getRect().getHeight(), FALSE);
+}
diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h
index ece3d8218e..7db903f470 100644
--- a/indra/newview/llfloatercamera.h
+++ b/indra/newview/llfloatercamera.h
@@ -122,6 +122,9 @@ private:
void showDebugInfo(bool show);
+ void toggleCollapsedView();
+ void updateCollapsedView();
+
// set to true when free camera mode is selected in modes list
// remains true until preset camera mode is chosen, or pan button is clicked, or escape pressed
static bool sFreeCamera;
@@ -135,7 +138,8 @@ private:
LLPanel* mViewerCameraInfo { nullptr };
LLPanel* mAgentCameraInfo { nullptr };
LLComboBox* mPresetCombo { nullptr };
- LLTextBox* mPreciseCtrls { nullptr };
+ LLButton* mPreciseCtrls { nullptr };
+ LLButton* mCollapseCtrl { nullptr };
};
/**
diff --git a/indra/newview/llfloaterpreferencesgraphicsadvanced.h b/indra/newview/llfloaterpreferencesgraphicsadvanced.h
index 6f793c1379..61203be068 100644
--- a/indra/newview/llfloaterpreferencesgraphicsadvanced.h
+++ b/indra/newview/llfloaterpreferencesgraphicsadvanced.h
@@ -61,7 +61,6 @@ protected:
void onBtnOK(const LLSD& userdata);
void onBtnCancel(const LLSD& userdata);
- boost::signals2::connection mImpostorsChangedSignal;
boost::signals2::connection mComplexityChangedSignal;
boost::signals2::connection mComplexityModeChangedSignal;
boost::signals2::connection mLODFactorChangedSignal;
diff --git a/indra/newview/llfloatertos.cpp b/indra/newview/llfloatertos.cpp
index 8eec5b753a..63ba51e559 100644
--- a/indra/newview/llfloatertos.cpp
+++ b/indra/newview/llfloatertos.cpp
@@ -96,6 +96,8 @@ bool LLFloaterTOS::postBuild()
external_prompt->setVisible(true);
web_browser->setVisible(false);
+
+ updateAgreeEnabled(true);
#else
web_browser->addObserver(this);
diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp
index 12576c042b..824d7fe98b 100644
--- a/indra/newview/llfloateruipreview.cpp
+++ b/indra/newview/llfloateruipreview.cpp
@@ -72,6 +72,7 @@
#if LL_DARWIN
#include <CoreFoundation/CFURL.h>
+#include <CoreFoundation/CFBundle.h>
#endif
// Static initialization
diff --git a/indra/newview/llheroprobemanager.cpp b/indra/newview/llheroprobemanager.cpp
index ce419498cf..368306ded8 100644
--- a/indra/newview/llheroprobemanager.cpp
+++ b/indra/newview/llheroprobemanager.cpp
@@ -414,8 +414,10 @@ void LLHeroProbeManager::generateRadiance(LLReflectionMap* probe)
gHeroRadianceGenProgram.bind();
mVertexBuffer->setBuffer();
+#if GL_VERSION_4_0
S32 channel = gHeroRadianceGenProgram.enableTexture(LLShaderMgr::REFLECTION_PROBES, LLTexUnit::TT_CUBE_MAP_ARRAY);
mTexture->bind(channel);
+#endif
gHeroRadianceGenProgram.uniform1i(sSourceIdx, sourceIdx);
gHeroRadianceGenProgram.uniform1f(LLShaderMgr::REFLECTION_PROBE_MAX_LOD, mMaxProbeLOD);
gHeroRadianceGenProgram.uniform1f(LLShaderMgr::REFLECTION_PROBE_STRENGTH, mHeroProbeStrength);
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 4fcbc91ffd..a2fc124b26 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -24,6 +24,8 @@
* $/LicenseInfo$
*/
+#include <array>
+
#include "llviewerprecompiledheaders.h"
#include "llimview.h"
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 9a38355858..a002ed0534 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -4519,6 +4519,8 @@ void LLFolderBridge::buildContextMenuOptions(U32 flags, menuentry_vec_t& items
{
mWearables=true;
}
+
+ items.push_back(std::string("Set favorite folder"));
}
else
{
diff --git a/indra/newview/llinventorygallerymenu.cpp b/indra/newview/llinventorygallerymenu.cpp
index 43ab9502d4..d03604d079 100644
--- a/indra/newview/llinventorygallerymenu.cpp
+++ b/indra/newview/llinventorygallerymenu.cpp
@@ -113,6 +113,7 @@ LLContextMenu* LLInventoryGalleryContextMenu::createMenu()
registrar.add("Inventory.Share", boost::bind(&LLAvatarActions::shareWithAvatars, uuids, gFloaterView->getParentFloater(mGallery)), LLUICtrl::cb_info::UNTRUSTED_BLOCK);
enable_registrar.add("Inventory.CanSetUploadLocation", boost::bind(&LLInventoryGalleryContextMenu::canSetUploadLocation, this, _2));
+ enable_registrar.add("Inventory.CanSetFavoriteFolder", boost::bind(&LLInventoryGalleryContextMenu::canSetFavoriteFolder, this));
enable_registrar.add("Inventory.EnvironmentEnabled", [](LLUICtrl*, const LLSD&)
{
@@ -506,6 +507,25 @@ bool LLInventoryGalleryContextMenu::canSetUploadLocation(const LLSD& userdata)
return true;
}
+void LLInventoryGalleryContextMenu::setFavoriteFolder()
+{
+ gSavedPerAccountSettings.setString("FavoriteFolder", mUUIDs.front().asString());
+}
+
+bool LLInventoryGalleryContextMenu::canSetFavoriteFolder()
+{
+ if (mUUIDs.size() != 1)
+ {
+ return false;
+ }
+ LLInventoryCategory* cat = gInventory.getCategory(mUUIDs.front());
+ if (!cat)
+ {
+ return false;
+ }
+ return true;
+}
+
bool is_inbox_folder(LLUUID item_id)
{
const LLUUID inbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_INBOX);
@@ -790,6 +810,8 @@ void LLInventoryGalleryContextMenu::updateMenuItemsVisibility(LLContextMenu* men
items.push_back(std::string("upload_def"));
}
+ items.push_back(std::string("Set favorite folder"));
+
if(is_outfits && !isRootFolder())
{
items.push_back(std::string("New Outfit"));
@@ -887,6 +909,8 @@ void LLInventoryGalleryContextMenu::updateMenuItemsVisibility(LLContextMenu* men
{
disabled_items.push_back(std::string("Copy"));
}
+
+ disabled_items.push_back(std::string("Set favorite folder"));
}
if((obj->getType() == LLAssetType::AT_SETTINGS)
|| ((obj->getType() <= LLAssetType::AT_GESTURE)
diff --git a/indra/newview/llinventorygallerymenu.h b/indra/newview/llinventorygallerymenu.h
index 7c3545432b..7f6598e171 100644
--- a/indra/newview/llinventorygallerymenu.h
+++ b/indra/newview/llinventorygallerymenu.h
@@ -49,6 +49,9 @@ protected:
void fileUploadLocation(const LLSD& userdata);
bool canSetUploadLocation(const LLSD& userdata);
+ void setFavoriteFolder();
+ bool canSetFavoriteFolder();
+
static void onRename(const LLSD& notification, const LLSD& response);
private:
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index ba4d4c08ed..cba69d5b4f 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -1796,6 +1796,11 @@ void LLInventoryPanel::fileUploadLocation(const LLSD& userdata)
LLInventoryAction::fileUploadLocation(dest, param);
}
+void LLInventoryPanel::setFavoriteFolder()
+{
+ gSavedPerAccountSettings.setString("FavoriteFolder", LLFolderBridge::sSelf.get()->getUUID().asString());
+}
+
void LLInventoryPanel::openSingleViewInventory(LLUUID folder_id)
{
LLPanelMainInventory::newFolderWindow(folder_id.isNull() ? LLFolderBridge::sSelf.get()->getUUID() : folder_id);
@@ -2061,7 +2066,7 @@ void LLInventoryPanel::removeItemID(const LLUUID& id)
++it)
{
mItemMap.erase((*it)->getUUID());
-}
+ }
for (LLInventoryModel::item_array_t::iterator it = items.begin(), end_it = items.end();
it != end_it;
diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h
index 73062e41a9..6f7a2193ac 100644
--- a/indra/newview/llinventorypanel.h
+++ b/indra/newview/llinventorypanel.h
@@ -225,6 +225,7 @@ public:
void doCreate(const LLSD& userdata);
bool beginIMSession();
void fileUploadLocation(const LLSD& userdata);
+ void setFavoriteFolder();
void openSingleViewInventory(LLUUID folder_id = LLUUID());
void purgeSelectedItems();
bool attachObject(const LLSD& userdata);
diff --git a/indra/newview/llmaniprotate.cpp b/indra/newview/llmaniprotate.cpp
index 0d80b8d8ba..7642a76308 100644
--- a/indra/newview/llmaniprotate.cpp
+++ b/indra/newview/llmaniprotate.cpp
@@ -274,7 +274,9 @@ void LLManipRotate::render()
}
LLGLEnable cull_face(GL_CULL_FACE);
+#if GL_VERSION_1_1
LLGLEnable clip_plane0(GL_CLIP_PLANE0);
+#endif
LLGLDepthTest gls_depth(GL_FALSE);
//LLGLDisable gls_stencil(GL_STENCIL_TEST);
diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp
index 6ef7712000..07e19c4c6c 100644
--- a/indra/newview/llmodelpreview.cpp
+++ b/indra/newview/llmodelpreview.cpp
@@ -3513,9 +3513,13 @@ bool LLModelPreview::render()
if (show_edges)
{
glLineWidth(PREVIEW_EDGE_WIDTH);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+#endif
buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts() - 1, buffer->getNumIndices(), 0);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+#endif
glLineWidth(1.f);
}
buffer->unmapBuffer();
@@ -3640,10 +3644,14 @@ bool LLModelPreview::render()
gGL.diffuseColor4fv(PREVIEW_PSYH_EDGE_COL.mV);
glLineWidth(PREVIEW_PSYH_EDGE_WIDTH);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+#endif
buffer->drawRange(LLRender::TRIANGLES, 0, buffer->getNumVerts() - 1, buffer->getNumIndices(), 0);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+#endif
glLineWidth(1.f);
buffer->unmapBuffer();
@@ -3657,7 +3665,9 @@ bool LLModelPreview::render()
if (mHasDegenerate)
{
glLineWidth(PREVIEW_DEG_EDGE_WIDTH);
+#if GL_VERSION_1_1
glPointSize(PREVIEW_DEG_POINT_SIZE);
+#endif
gPipeline.enableLightsFullbright();
//show degenerate triangles
LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS);
@@ -3727,7 +3737,9 @@ bool LLModelPreview::render()
gGL.popMatrix();
}
glLineWidth(1.f);
+#if GL_VERSION_1_1
glPointSize(1.f);
+#endif
gPipeline.enableLightsPreview();
gGL.setSceneBlendType(LLRender::BT_ALPHA);
}
@@ -3849,9 +3861,13 @@ bool LLModelPreview::render()
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
gGL.diffuseColor4fv(PREVIEW_EDGE_COL.mV);
glLineWidth(PREVIEW_EDGE_WIDTH);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+#endif
buffer->draw(LLRender::TRIANGLES, buffer->getNumIndices(), 0);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+#endif
glLineWidth(1.f);
}
}
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index ca1a4e258d..4b9f109558 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -840,7 +840,7 @@ void LLPanelPeople::updateNearbyList()
std::vector<LLVector3d> positions;
- LLWorld::getInstance()->getAvatars(&mNearbyList->getIDs(), &positions, gAgent.getPositionGlobal(), gSavedSettings.getF32("NearMeRange"));
+ LLWorld::getInstance()->getAvatars(&mNearbyList->getIDs(), &positions, gAgent.getPositionGlobal(), gSavedSettings.getF32("MPVNearMeRange"));
mNearbyList->setDirty();
DISTANCE_COMPARATOR.updateAvatarsPositions(positions, mNearbyList->getIDs());
diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp
index 6580752c79..3b42b60c0f 100644
--- a/indra/newview/llpanelpeoplemenus.cpp
+++ b/indra/newview/llpanelpeoplemenus.cpp
@@ -74,6 +74,7 @@ LLContextMenu* PeopleContextMenu::createMenu()
registrar.add("Avatar.Call", boost::bind(&LLAvatarActions::startCall, id), LLUICtrl::cb_info::UNTRUSTED_BLOCK);
registrar.add("Avatar.OfferTeleport", boost::bind(&PeopleContextMenu::offerTeleport, this), LLUICtrl::cb_info::UNTRUSTED_BLOCK);
registrar.add("Avatar.ZoomIn", boost::bind(&handle_zoom_to_object, id));
+ registrar.add("Avatar.TeleportTo", boost::bind(&handle_teleport_to_object, id));
registrar.add("Avatar.ShowOnMap", boost::bind(&LLAvatarActions::showOnMap, id));
registrar.add("Avatar.Share", boost::bind(&LLAvatarActions::share, id), LLUICtrl::cb_info::UNTRUSTED_BLOCK);
registrar.add("Avatar.Pay", boost::bind(&LLAvatarActions::pay, id), LLUICtrl::cb_info::UNTRUSTED_BLOCK);
@@ -407,6 +408,7 @@ void NearbyPeopleContextMenu::buildContextMenu(class LLMenuGL& menu, U32 flags)
items.push_back(std::string("invite_to_group"));
items.push_back(std::string("separator_invite_to_group"));
items.push_back(std::string("zoom_in"));
+ items.push_back(std::string("teleport_to"));
items.push_back(std::string("map"));
items.push_back(std::string("share"));
items.push_back(std::string("pay"));
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp
index b0aadff277..d72d28869d 100644
--- a/indra/newview/llpanelprofile.cpp
+++ b/indra/newview/llpanelprofile.cpp
@@ -1415,6 +1415,11 @@ void LLPanelProfileSecondLife::onCommitMenu(const LLSD& userdata)
LLWString wstr = utf8str_to_wstring(getAvatarId().asString());
LLClipboard::instance().copyToClipboard(wstr, 0, static_cast<S32>(wstr.size()));
}
+ else if (item_name == "copy_profile_link")
+ {
+ LLWString wstr = utf8str_to_wstring(llformat("secondlife:///app/agent/%s/about", getAvatarId().asString().c_str()));
+ LLClipboard::instance().copyToClipboard(wstr, 0, wstr.size());
+ }
else if (item_name == "agent_permissions")
{
onShowAgentPermissionsDialog();
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 7cbbb89313..ddab98b07d 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -505,9 +505,17 @@ void LLPreviewGesture::addKeys()
LLComboBox* combo = mKeyCombo;
combo->add( NONE_LABEL );
- for (KEY key = KEY_F2; key <= KEY_F12; key++)
+ for (KEY key = ' '; key < KEY_NONE; key++)
{
- combo->add( LLKeyboard::stringFromKey(key), ADD_BOTTOM );
+ char buffer[] = { (char)key, '\0' };
+ std::string str_org(buffer);
+ std::string str_translated = LLKeyboard::stringFromKey(key);
+
+ if (str_org == str_translated)
+ {
+ if (key >= ' ' && key <= '~') combo->add(str_translated, ADD_BOTTOM);
+ }
+ else combo->add(str_translated, ADD_BOTTOM);
}
combo->setCurrentByIndex(0);
}
diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp
index 80e403dfde..3add43a3c0 100644
--- a/indra/newview/llprogressview.cpp
+++ b/indra/newview/llprogressview.cpp
@@ -383,9 +383,10 @@ void LLProgressView::initLogos()
{
mLogosList.clear();
+#if LL_FMODSTUDIO || LL_HAVOK
const U8 image_codec = IMG_CODEC_PNG;
const LLRectf default_clip(0.f, 1.f, 1.f, 0.f);
- const S32 default_height = 28;
+ //const S32 default_height = 28;
const S32 default_pad = 15;
S32 icon_width, icon_height;
@@ -393,6 +394,7 @@ void LLProgressView::initLogos()
// We don't know final screen rect yet, so we can't precalculate position fully
S32 texture_start_x = (S32)mLogosLabel->getFont()->getWidthF32(mLogosLabel->getWText().c_str()) + default_pad;
S32 texture_start_y = -7;
+#endif //LL_FMODSTUDIO || LL_HAVOK
// Normally we would just preload these textures from textures.xml,
// and display them via icon control, but they are only needed on
@@ -402,6 +404,21 @@ void LLProgressView::initLogos()
temp_str += gDirUtilp->getDirDelimiter();
+#ifdef LL_FMODSTUDIO
+ // original image size is 264x96, it is on longer side but
+ // with no internal paddings so it gets additional padding
+ icon_width = 77;
+ icon_height = 21;
+ S32 pad_fmod_y = 4;
+ texture_start_x++;
+ loadLogo(temp_str + "fmod_logo.png",
+ image_codec,
+ LLRect(texture_start_x, texture_start_y + pad_fmod_y + icon_height, texture_start_x + icon_width, texture_start_y + pad_fmod_y),
+ default_clip,
+ default_clip);
+
+ texture_start_x += icon_width + default_pad + 1;
+#endif //LL_FMODSTUDIO
#ifdef LL_HAVOK
// original image size is 342x113, central element is on a larger side
// plus internal padding, so it gets slightly more height than desired 32
@@ -417,6 +434,7 @@ void LLProgressView::initLogos()
texture_start_x += icon_width + default_pad;
#endif //LL_HAVOK
+/*
// 108x41
icon_width = 74;
icon_height = default_height;
@@ -425,6 +443,7 @@ void LLProgressView::initLogos()
LLRect(texture_start_x, texture_start_y + icon_height, texture_start_x + icon_width, texture_start_y),
default_clip,
default_clip);
+*/
}
void LLProgressView::initStartTexture(S32 location_id, bool is_in_production)
diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp
index f083747bfe..1b2cc7cc64 100644
--- a/indra/newview/llreflectionmapmanager.cpp
+++ b/indra/newview/llreflectionmapmanager.cpp
@@ -797,7 +797,9 @@ void LLReflectionMapManager::updateProbeFace(LLReflectionMap* probe, U32 face)
LL_PROFILE_GPU_ZONE("probe mip copy");
mTexture->bind(0);
//glCopyTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, mip, 0, 0, probe->mCubeIndex * 6 + face, 0, 0, res, res);
+#if GL_VERSION_4_0
glCopyTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, mip, 0, 0, sourceIdx * 6 + face, 0, 0, res, res);
+#endif
//if (i == 0)
//{
//glCopyTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, mip, 0, 0, probe->mCubeIndex * 6 + face, 0, 0, res, res);
@@ -826,8 +828,10 @@ void LLReflectionMapManager::updateProbeFace(LLReflectionMap* probe, U32 face)
gRadianceGenProgram.bind();
mVertexBuffer->setBuffer();
+#if GL_VERSION_4_0
S32 channel = gRadianceGenProgram.enableTexture(LLShaderMgr::REFLECTION_PROBES, LLTexUnit::TT_CUBE_MAP_ARRAY);
mTexture->bind(channel);
+#endif
gRadianceGenProgram.uniform1i(sSourceIdx, sourceIdx);
gRadianceGenProgram.uniform1f(LLShaderMgr::REFLECTION_PROBE_MAX_LOD, mMaxProbeLOD);
gRadianceGenProgram.uniform1f(LLShaderMgr::REFLECTION_PROBE_STRENGTH, 1.f);
@@ -856,7 +860,9 @@ void LLReflectionMapManager::updateProbeFace(LLReflectionMap* probe, U32 face)
mVertexBuffer->drawArrays(gGL.TRIANGLE_STRIP, 0, 4);
+#if GL_VERSION_4_0
glCopyTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, i, 0, 0, probe->mCubeIndex * 6 + cf, 0, 0, res, res);
+#endif
}
if (i != mMipChain.size() - 1)
@@ -872,8 +878,10 @@ void LLReflectionMapManager::updateProbeFace(LLReflectionMap* probe, U32 face)
{
//generate irradiance map
gIrradianceGenProgram.bind();
+#if GL_VERSION_4_0
S32 channel = gIrradianceGenProgram.enableTexture(LLShaderMgr::REFLECTION_PROBES, LLTexUnit::TT_CUBE_MAP_ARRAY);
mTexture->bind(channel);
+#endif
gIrradianceGenProgram.uniform1i(sSourceIdx, sourceIdx);
gIrradianceGenProgram.uniform1f(LLShaderMgr::REFLECTION_PROBE_MAX_LOD, mMaxProbeLOD);
@@ -906,9 +914,11 @@ void LLReflectionMapManager::updateProbeFace(LLReflectionMap* probe, U32 face)
mVertexBuffer->drawArrays(gGL.TRIANGLE_STRIP, 0, 4);
S32 res = mMipChain[i].getWidth();
+#if GL_VERSION_4_0
mIrradianceMaps->bind(channel);
glCopyTexSubImage3D(GL_TEXTURE_CUBE_MAP_ARRAY, i - start_mip, 0, 0, probe->mCubeIndex * 6 + cf, 0, 0, res, res);
mTexture->bind(channel);
+#endif
}
}
}
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 9cce47107a..6d0dac41db 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -6498,7 +6498,9 @@ void LLSelectMgr::renderSilhouettes(bool for_hud)
}
}
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+#endif
S32 num_tes = llmin((S32)objectp->getNumTEs(), (S32)objectp->getNumFaces()); // avatars have TEs but no faces
for (S32 te = 0; te < num_tes; ++te)
@@ -6513,7 +6515,9 @@ void LLSelectMgr::renderSilhouettes(bool for_hud)
gGL.popMatrix();
glLineWidth(1.f);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+#endif
if (shader)
{
diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp
index a1a67c319c..c56900d986 100644
--- a/indra/newview/llspatialpartition.cpp
+++ b/indra/newview/llspatialpartition.cpp
@@ -1655,7 +1655,9 @@ void renderOctree(LLSpatialGroup* group)
{
LLGLDepthTest gl_depth(false, false);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+#endif
gGL.diffuseColor4f(1,0,0,group->mBuilt);
gGL.flush();
@@ -1752,7 +1754,9 @@ void renderOctree(LLSpatialGroup* group)
gGL.popMatrix();
}
}
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+#endif
gDebugProgram.bind(); // make sure non-rigged variant is bound
gGL.diffuseColor4f(1,1,1,1);
}
@@ -2491,7 +2495,9 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume, bool wireframe
llassert(LLGLSLShader::sCurBoundShader != 0);
LLVertexBuffer::unbind();
+#if GL_VERSION_1_1
glVertexPointer(3, GL_FLOAT, 16, phys_volume->mHullPoints);
+#endif
gGL.diffuseColor4fv(color.mV);
@@ -2688,7 +2694,9 @@ void renderTextureAnim(LLDrawInfo* params)
void renderBatchSize(LLDrawInfo* params)
{
+#if GL_VERSION_1_1
LLGLEnable offset(GL_POLYGON_OFFSET_FILL);
+#endif
glPolygonOffset(-1.f, 1.f);
LLGLSLShader* old_shader = LLGLSLShader::sCurBoundShaderPtr;
bool bind = false;
@@ -2994,7 +3002,9 @@ void renderRaycast(LLDrawable* drawablep)
dir.setSub(end, start);
gGL.flush();
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+#endif
{
//render face positions
@@ -3013,7 +3023,9 @@ void renderRaycast(LLDrawable* drawablep)
}
gGL.popMatrix();
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+#endif
}
}
}
@@ -3601,16 +3613,22 @@ void LLSpatialPartition::renderDebug()
LLGLEnable blend(GL_BLEND);
LLGLDepthTest depth_under(GL_TRUE, GL_FALSE, GL_GREATER);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+#endif
gGL.diffuseColor4f(0.5f, 0.0f, 0, 0.25f);
+#if GL_VERSION_1_1
LLGLEnable offset(GL_POLYGON_OFFSET_LINE);
+#endif
glPolygonOffset(-1.f, -1.f);
LLOctreeRenderXRay xray(camera);
xray.traverse(mOctree);
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+#endif
}
}
gDebugProgram.unbind();
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index dd8c6d989e..79cdb5c7de 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -39,6 +39,10 @@
#include "llviewermedia_streamingaudio.h"
#include "llaudioengine.h"
+#ifdef LL_FMODSTUDIO
+# include "llaudioengine_fmodstudio.h"
+#endif
+
#ifdef LL_OPENAL
#include "llaudioengine_openal.h"
#endif
@@ -652,6 +656,15 @@ bool idle_startup()
delete gAudiop;
gAudiop = NULL;
+#ifdef LL_FMODSTUDIO
+#if !LL_WINDOWS
+ if (NULL == getenv("LL_BAD_FMODSTUDIO_DRIVER"))
+#endif // !LL_WINDOWS
+ {
+ gAudiop = (LLAudioEngine *) new LLAudioEngine_FMODSTUDIO(gSavedSettings.getBOOL("FMODExProfilerEnable"));
+ }
+#endif
+
#ifdef LL_OPENAL
#if !LL_WINDOWS
if (NULL == getenv("LL_BAD_OPENAL_DRIVER"))
@@ -672,8 +685,19 @@ bool idle_startup()
#endif
if (gAudiop->init(window_handle, LLAppViewer::instance()->getSecondLifeTitle()))
{
- LL_INFOS("AppInit") << "Using media plugins to render streaming audio" << LL_ENDL;
- gAudiop->setStreamingAudioImpl(new LLStreamingAudio_MediaPlugins());
+ if (FALSE == gSavedSettings.getBOOL("UseMediaPluginsForStreamingAudio"))
+ {
+ LL_INFOS("AppInit") << "Using default impl to render streaming audio" << LL_ENDL;
+ gAudiop->setStreamingAudioImpl(gAudiop->createDefaultStreamingAudioImpl());
+ }
+
+ // if the audio engine hasn't set up its own preferred handler for streaming audio
+ // then set up the generic streaming audio implementation which uses media plugins
+ if (NULL == gAudiop->getStreamingAudioImpl())
+ {
+ LL_INFOS("AppInit") << "Using media plugins to render streaming audio" << LL_ENDL;
+ gAudiop->setStreamingAudioImpl(new LLStreamingAudio_MediaPlugins());
+ }
gAudiop->setMuted(true);
}
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index ecbbc4b2c5..1bab602364 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -109,6 +109,7 @@ static void onClickVolume(void*);
LLStatusBar::LLStatusBar(const LLRect& rect)
: LLPanel(),
mTextTime(NULL),
+ mTextFps(NULL),
mSGBandwidth(NULL),
mSGPacketLoss(NULL),
mBtnVolume(NULL),
@@ -127,6 +128,7 @@ LLStatusBar::LLStatusBar(const LLRect& rect)
mBalanceTimer = new LLFrameTimer();
mHealthTimer = new LLFrameTimer();
+ mFpsUpdateTimer = new LLFrameTimer();
buildFromFile("panel_status_bar.xml");
}
@@ -165,6 +167,9 @@ bool LLStatusBar::postBuild()
mTextTime = getChild<LLTextBox>("TimeText" );
+ mTextFps = getChild<LLButton>("FpsText");
+ mTextFps->setClickedCallback( &LLStatusBar::onClickFps, this );
+
getChild<LLUICtrl>("buyL")->setCommitCallback(
boost::bind(&LLStatusBar::onClickBuyCurrency, this));
@@ -297,6 +302,16 @@ void LLStatusBar::refresh()
//mSGBandwidth->setThreshold(2, bwtotal);
}
+ if(mFpsUpdateTimer->getElapsedTimeF32() >= 1.0f)
+ {
+ mFpsUpdateTimer->reset();
+
+ S32 fps = (S32) llround(LLTrace::get_frame_recording().getPeriodMedianPerSec(LLStatViewer::FPS, 50));
+ std::string fpsStr = std::to_string(fps);
+ //mTextFps->setText(fpsStr);
+ mTextFps->setLabel(fpsStr);
+ }
+
// update clock every 10 seconds
if(mClockUpdateTimer.getElapsedTimeF32() > 10.f)
{
@@ -637,6 +652,12 @@ void LLStatusBar::onClickMediaToggle(void* data)
LLViewerMedia::getInstance()->setAllMediaPaused(pause);
}
+//static
+void LLStatusBar::onClickFps(void* data)
+{
+ LLFloaterReg::toggleInstance("mpv_performance");
+}
+
bool can_afford_transaction(S32 cost)
{
return((cost <= 0)||((gStatusBar) && (gStatusBar->getBalance() >=cost)));
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index 4c9d3e0c08..7e1ecf08ca 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -109,6 +109,8 @@ private:
static void onClickMediaToggle(void* data);
static void onClickBalance(void* data);
+ static void onClickFps(void* data);
+
LLSearchEditor *mFilterEdit;
LLPanel *mSearchPanel;
void onUpdateFilterTerm();
@@ -121,6 +123,7 @@ private:
private:
LLTextBox *mTextTime;
+ LLButton *mTextFps;
LLStatGraph *mSGBandwidth;
LLStatGraph *mSGPacketLoss;
@@ -131,6 +134,7 @@ private:
LLTextBox *mBoxBalance;
LLButton *mMediaToggle;
LLFrameTimer mClockUpdateTimer;
+ LLFrameTimer *mFpsUpdateTimer;
S32 mBalance;
S32 mHealth;
diff --git a/indra/newview/lltracker.cpp b/indra/newview/lltracker.cpp
index d4d3e71b46..b1bee0f2c7 100644
--- a/indra/newview/lltracker.cpp
+++ b/indra/newview/lltracker.cpp
@@ -493,7 +493,7 @@ void draw_shockwave(F32 center_z, F32 t, S32 steps, LLColor4 color)
void LLTracker::drawBeacon(LLVector3 pos_agent, std::string direction, LLColor4 fogged_color, F32 dist)
{
const F32 MAX_HEIGHT = 5020.f;
- const U32 BEACON_ROWS = 256;
+ const U32 BEACON_ROWS = 128;
U32 nRows;
F32 height;
@@ -520,8 +520,6 @@ void LLTracker::drawBeacon(LLVector3 pos_agent, std::string direction, LLColor4
if(nRows<2) nRows=2;
rowHeight = height / nRows;
- gGL.color4fv(fogged_color.mV);
-
LLVector3 x_axis = LLViewerCamera::getInstance()->getLeftAxis();
F32 t = gRenderStartTime.getElapsedTimeF32();
@@ -536,6 +534,8 @@ void LLTracker::drawBeacon(LLVector3 pos_agent, std::string direction, LLColor4
bool tracking_avatar = getTrackingStatus() == TRACKING_AVATAR;
+ gGL.color4fv(fogged_color.mV);
+
gGL.begin(LLRender::TRIANGLES);
for (U32 i = 0; i < nRows; i++)
diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp
index 4e8320b72a..b7ea95c694 100644
--- a/indra/newview/llversioninfo.cpp
+++ b/indra/newview/llversioninfo.cpp
@@ -158,9 +158,9 @@ LLVersionInfo::ViewerMaturity LLVersionInfo::getViewerMaturity() const
else
{
LL_WARNS() << "Channel '" << channel
- << "' does not follow naming convention, assuming Test"
+ << "' does not follow naming convention, assuming Release"
<< LL_ENDL;
- maturity = TEST_VIEWER;
+ maturity = RELEASE_VIEWER;
}
return maturity;
}
diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp
index 80c8d5045a..048f316dc8 100644
--- a/indra/newview/llviewercamera.cpp
+++ b/indra/newview/llviewercamera.cpp
@@ -519,6 +519,7 @@ bool LLViewerCamera::projectPosAgentToScreen(const LLVector3 &pos_agent, LLCoord
bool LLViewerCamera::projectPosAgentToScreenEdge(const LLVector3 &pos_agent,
LLCoordGL &out_point) const
{
+#if GLU_VERSION_1_1
LLVector3 dir_to_point = pos_agent - getOrigin();
dir_to_point /= dir_to_point.magVec();
@@ -649,6 +650,7 @@ bool LLViewerCamera::projectPosAgentToScreenEdge(const LLVector3 &pos_agent,
out_point.mY = int_y + world_rect.mBottom;
return true;
}
+#endif // GLU_VERSION_1_1
return false;
}
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index cb741e4af9..b5d0063cd8 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -1665,7 +1665,9 @@ void render_ui_2d()
// Render 2D UI elements that overlay the world (no z compare)
// Disable wireframe mode below here, as this is HUD/menus
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
+#endif
// Menu overlays, HUD, etc
gViewerWindow->setup2DRender();
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index b2a7d875ab..fc86629549 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -83,6 +83,7 @@
#include "llfloatergroups.h"
#include "llfloaterhelpbrowser.h"
#include "llfloaterhoverheight.h"
+#include "mpfloatertuning.h"
#include "llfloaterhowto.h"
#include "llfloaterhud.h"
#include "llfloaterimagepreview.h"
@@ -390,6 +391,9 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("edit_hover_height", "floater_edit_hover_height.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHoverHeight>);
LLFloaterReg::add("hud", "floater_hud.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHUD>);
+ LLFloaterReg::add("mpv_performance", "floater_mp_performance.xml", (LLFloaterBuildFunc)&
+ LLFloaterReg::build<MPFloaterTuning>);
+
LLFloaterReg::add("impanel", "floater_im_session.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterIMSession>);
LLFloaterReg::add("im_container", "floater_im_container.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterIMContainer>);
LLFloaterReg::add("im_well_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMWellWindow>);
diff --git a/indra/newview/llviewerjointattachment.cpp b/indra/newview/llviewerjointattachment.cpp
index 511fac9788..e5cf1bcb69 100644
--- a/indra/newview/llviewerjointattachment.cpp
+++ b/indra/newview/llviewerjointattachment.cpp
@@ -28,6 +28,9 @@
#include "llviewerjointattachment.h"
+// [SL:KB] - Patch: Appearance-PhantomAttach | Checked: Catznip-5.0
+#include "llagent.h"
+// [/SL:KB]
#include "llviewercontrol.h"
#include "lldrawable.h"
#include "llgl.h"
@@ -168,7 +171,7 @@ void LLViewerJointAttachment::setupDrawable(LLViewerObject *object)
//-----------------------------------------------------------------------------
bool LLViewerJointAttachment::addObject(LLViewerObject* object)
{
- object->extractAttachmentItemID();
+// object->extractAttachmentItemID();
// Same object reattached
if (isObjectAttached(object))
@@ -179,17 +182,39 @@ bool LLViewerJointAttachment::addObject(LLViewerObject* object)
// re-connect object to the joint correctly
}
+// [SL:KB] - Patch: Appearance-Misc | Checked: 2011-01-13 (Catznip-2.4)
+ // LLViewerJointAttachment::removeObject() sets the object's item to the NULL UUID so we need to extract it *after* the block above
+ object->extractAttachmentItemID();
+// [/SL:KB]
+
// Two instances of the same inventory item attached --
// Request detach, and kill the object in the meantime.
- if (getAttachedObject(object->getAttachmentItemID()))
+// [SL:KB] - Patch: Appearance-PhantomAttach | Checked: Catznip-5.0
+ if (LLViewerObject* pAttachObj = getAttachedObject(object->getAttachmentItemID()))
{
LL_INFOS() << "(same object re-attached)" << LL_ENDL;
- object->markDead();
-
- // If this happens to be attached to self, then detach.
- LLVOAvatarSelf::detachAttachmentIntoInventory(object->getAttachmentItemID());
- return false;
+ pAttachObj->markDead();
+ if (pAttachObj->permYouOwner())
+ {
+ gMessageSystem->newMessage("ObjectDetach");
+ gMessageSystem->nextBlockFast(_PREHASH_AgentData);
+ gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+ gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+ gMessageSystem->nextBlockFast(_PREHASH_ObjectData);
+ gMessageSystem->addU32Fast(_PREHASH_ObjectLocalID, pAttachObj->getLocalID());
+ gMessageSystem->sendReliable(gAgent.getRegionHost());
+ }
}
+// [/SL:KB]
+// if (getAttachedObject(object->getAttachmentItemID()))
+// {
+// LL_INFOS() << "(same object re-attached)" << LL_ENDL;
+// object->markDead();
+//
+// // If this happens to be attached to self, then detach.
+// LLVOAvatarSelf::detachAttachmentIntoInventory(object->getAttachmentItemID());
+// return FALSE;
+// }
mAttachedObjects.push_back(object);
setupDrawable(object);
@@ -461,7 +486,10 @@ const LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &o
++iter)
{
const LLViewerObject* attached_object = iter->get();
- if (attached_object->getAttachmentItemID() == object_id)
+// if (attached_object->getAttachmentItemID() == object_id)
+// [SL:KB] - Patch: Appearance-PhantomAttach | Checked: Catznip-5.0
+ if ( (attached_object->getAttachmentItemID() == object_id) && (!attached_object->isDead()) )
+// [/SL:KB]
{
return attached_object;
}
diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp
index da7ad71336..3ecf3c39b2 100644
--- a/indra/newview/llviewerjointmesh.cpp
+++ b/indra/newview/llviewerjointmesh.cpp
@@ -56,7 +56,7 @@
#include "llmatrix4a.h"
#include "llperfstats.h"
-#if !LL_DARWIN && !LL_LINUX
+#if !LL_DARWIN && !LL_LINUX && !__FreeBSD__
extern PFNGLWEIGHTPOINTERARBPROC glWeightPointerARB;
extern PFNGLWEIGHTFVARBPROC glWeightfvARB;
extern PFNGLVERTEXBLENDARBPROC glVertexBlendARB;
@@ -242,7 +242,9 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, bool first_pass, bool is_dummy)
stop_glerror();
+#if GL_VERSION_1_1
LLGLSSpecular specular(LLColor4(1.f,1.f,1.f,1.f), 0.f);
+#endif
//----------------------------------------------------------------
// setup current texture
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 9633e54f29..a9f5ba0d0b 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -397,7 +397,7 @@ std::string LLViewerMedia::getCurrentUserAgent()
// This was also helpful:
// http://www.mozilla.org/build/revised-user-agent-strings.html
std::ostringstream codec;
- codec << "SecondLife/";
+ codec << "Megapahit/";
codec << LLVersionInfo::instance().getVersion();
codec << " (" << channel << "; " << skin_name << " skin)";
LL_INFOS() << codec.str() << LL_ENDL;
@@ -1726,6 +1726,13 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
{
std::string launcher_name = gDirUtilp->getLLPluginLauncher();
std::string plugin_name = gDirUtilp->getLLPluginFilename(plugin_basename);
+#if __FreeBSD__
+ if (plugin_basename == "media_plugin_cef")
+ {
+ launcher_name = "/compat/linux/usr/libexec/megapahit/SLPlugin";
+ plugin_name = "/compat/linux/usr/lib/x86_64-linux-gnu/libmedia_plugin_cef.so";
+ }
+#endif
std::string user_data_path_cache = gDirUtilp->getCacheDir(false);
user_data_path_cache += gDirUtilp->getDirDelimiter();
@@ -1784,7 +1791,16 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
media_source->setTarget(target);
+#if __FreeBSD__
+ std::string plugin_dir = gDirUtilp->getLLPluginDir();
+ if (plugin_basename == "media_plugin_cef")
+ {
+ plugin_dir = "/compat/linux/usr/lib/x86_64-linux-gnu";
+ plugin_name = "/usr/lib/x86_64-linux-gnu/libmedia_plugin_cef.so";
+ }
+#else
const std::string plugin_dir = gDirUtilp->getLLPluginDir();
+#endif
if (media_source->init(launcher_name, plugin_dir, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins")))
{
return media_source;
diff --git a/indra/newview/llviewermedia_streamingaudio.cpp b/indra/newview/llviewermedia_streamingaudio.cpp
index b68ffbe1a2..21f5ba64d7 100644
--- a/indra/newview/llviewermedia_streamingaudio.cpp
+++ b/indra/newview/llviewermedia_streamingaudio.cpp
@@ -34,6 +34,7 @@
#include "llmimetypes.h"
#include "lldir.h"
+#include "llnotificationmanager.h"
LLStreamingAudio_MediaPlugins::LLStreamingAudio_MediaPlugins() :
mMediaPlugin(NULL),
@@ -111,6 +112,8 @@ void LLStreamingAudio_MediaPlugins::update()
mMediaPlugin->idle();
}
+extern void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel);
+
int LLStreamingAudio_MediaPlugins::isPlaying()
{
if (!mMediaPlugin)
@@ -118,6 +121,21 @@ int LLStreamingAudio_MediaPlugins::isPlaying()
LLPluginClassMediaOwner::EMediaStatus status =
mMediaPlugin->getStatus();
+ auto nowPlaying = mMediaPlugin->getMediaNowPlaying();
+ if (!nowPlaying.empty() && mNowPlaying != nowPlaying)
+ {
+ mTitle = mMediaPlugin->getMediaTitle();
+ mNowPlaying = nowPlaying;
+ auto text = llformat("Now playing %s.", nowPlaying.c_str());
+ LLChat chat{text};
+ chat.mFromName = mTitle;
+ chat.mSourceType = CHAT_SOURCE_SYSTEM;
+ LLNotificationsUI::LLNotificationManager::instance().onChat(chat, LLSD{});
+ if (gSavedSettings.getBOOL("StreamNotificationChannelEnabled"))
+ {
+ send_chat_from_viewer(text, CHAT_TYPE_NORMAL, gSavedSettings.getS32("StreamNotificationChannel"));
+ }
+ }
switch (status)
{
diff --git a/indra/newview/llviewermedia_streamingaudio.h b/indra/newview/llviewermedia_streamingaudio.h
index bf4d92c29e..e1f7cd71d9 100644
--- a/indra/newview/llviewermedia_streamingaudio.h
+++ b/indra/newview/llviewermedia_streamingaudio.h
@@ -56,6 +56,8 @@ private:
LLPluginClassMedia *mMediaPlugin;
std::string mURL;
+ std::string mTitle;
+ std::string mNowPlaying;
F32 mGain;
};
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 9ad4926634..3dfaed0e91 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -39,6 +39,7 @@
#include "llfloaterreg.h"
#include "llfloatersidepanelcontainer.h"
#include "llinventorypanel.h"
+#include "llsidepanelinventory.h"
#include "llnotifications.h"
#include "llnotificationsutil.h"
#include "llviewereventrecorder.h"
@@ -52,6 +53,9 @@
#include "llagentui.h"
#include "llagentwearables.h"
#include "llagentpilot.h"
+// [SL:KB] - Patch: Appearance-PhantomAttach | Checked: Catznip-5.0
+#include "llattachmentsmgr.h"
+// [/SL:KB]
#include "llavataractions.h"
#include "llcompilequeue.h"
#include "llconsole.h"
@@ -2296,6 +2300,13 @@ class LLAdvancedRebakeTextures : public view_listener_t
};
+// [SL:KB] - Patch: Appearance-PhantomAttach | Checked: Catznip-5.0
+void handle_refresh_attachments()
+{
+ LLAttachmentsMgr::instance().refreshAttachments();
+}
+// [/SL:KB]
+
#if 1 //ndef LL_RELEASE_FOR_DOWNLOAD
///////////////////////////
// DEBUG AVATAR TEXTURES //
@@ -6636,6 +6647,26 @@ void handle_zoom_to_object(const LLUUID& object_id)
}
}
+void handle_teleport_to_object(LLUUID object_id)
+{
+ LLViewerObject* object = gObjectList.findObject(object_id);
+
+ if (object)
+ {
+ gAgentCamera.setFocusOnAvatar(FALSE, ANIMATE);
+
+ LLBBox bbox = object->getBoundingBoxAgent() ;
+
+ LLVector3 obj_to_cam = LLViewerCamera::getInstance()->getOrigin() - bbox.getCenterAgent();
+ obj_to_cam.normVec();
+
+
+ LLVector3d object_center_global = gAgent.getPosGlobalFromAgent(bbox.getCenterAgent());
+
+ gAgent.teleportViaLocation(object_center_global);
+ }
+}
+
class LLAvatarInviteToGroup : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -6738,6 +6769,35 @@ class LLAvatarToggleSearch : public view_listener_t
}
};
+// <FS:CR> Resync Animations
+class FSToolsResyncAnimations : public view_listener_t
+{
+ bool handleEvent(const LLSD& userdata)
+ {
+ for (S32 i = 0; i < gObjectList.getNumObjects(); i++)
+ {
+ LLViewerObject* object = gObjectList.getObject(i);
+ if (object &&
+ object->isAvatar())
+ {
+ LLVOAvatar* avatarp = (LLVOAvatar*)object;
+ if (avatarp)
+ {
+ for (LLVOAvatar::AnimIterator anim_it = avatarp->mPlayingAnimations.begin();
+ anim_it != avatarp->mPlayingAnimations.end();
+ anim_it++)
+ {
+ avatarp->stopMotion(anim_it->first, true);
+ avatarp->startMotion(anim_it->first);
+ }
+ }
+ }
+ }
+ return true;
+ }
+};
+// </FS:CR> Resync Animations
+
class LLAvatarResetSkeleton : public view_listener_t
{
bool handleEvent(const LLSD& userdata)
@@ -6904,6 +6964,59 @@ void handle_give_money_dialog()
}
}
+LLFloaterSidePanelContainer* get_favorite_inventory_folder()
+{
+ LLUUID folder_id = LLUUID(gSavedPerAccountSettings.getString("FavoriteFolder"));
+ if (!folder_id.isNull())
+ {
+ LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("inventory");
+ for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end();)
+ {
+ LLFloaterSidePanelContainer* inventory_container = dynamic_cast<LLFloaterSidePanelContainer*>(*iter++);
+ if (inventory_container)
+ {
+ LLSidepanelInventory* sidepanel_inventory = dynamic_cast<LLSidepanelInventory*>(inventory_container->findChild<LLPanel>("main_panel", true));
+ if (sidepanel_inventory)
+ {
+ LLPanelMainInventory* main_inventory = sidepanel_inventory->getMainInventoryPanel();
+ if (main_inventory && main_inventory->isSingleFolderMode()
+ && (main_inventory->getCurrentSFVRoot() == folder_id))
+ {
+ return inventory_container;
+ }
+ }
+ }
+ }
+ }
+
+ return NULL;
+}
+
+void toggle_favorite_inventory_folder()
+{
+ LLUUID folder_id = LLUUID(gSavedPerAccountSettings.getString("FavoriteFolder"));
+ if ((folder_id.isNull()) || (!gInventory.getCategory(folder_id)))
+ {
+ LLNotificationsUtil::add("MissingFavoriteFolder");
+ return;
+ }
+
+ LLFloaterSidePanelContainer* inventory_container = get_favorite_inventory_folder();
+ if (inventory_container)
+ {
+ inventory_container->closeFloater();
+ }
+ else
+ {
+ LLPanelMainInventory::newFolderWindow(folder_id);
+ }
+}
+
+bool favorite_inventory_folder_visible()
+{
+ return (get_favorite_inventory_folder() != NULL);
+}
+
bool enable_pay_avatar()
{
LLViewerObject* obj = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
@@ -10087,6 +10200,9 @@ void initialize_menus()
view_listener_t::addMenu(new LLAdvancedCheckDebugCharacterVis(), "Advanced.CheckDebugCharacterVis");
view_listener_t::addMenu(new LLAdvancedDumpAttachments(), "Advanced.DumpAttachments");
view_listener_t::addMenu(new LLAdvancedRebakeTextures(), "Advanced.RebakeTextures");
+// [SL:KB] - Patch: Appearance-PhantomAttach | Checked: Catznip-5.0
+ registrar.add("Advanced.RefreshAttachments", boost::bind(&handle_refresh_attachments));
+// [/SL:KB]
view_listener_t::addMenu(new LLAdvancedDebugAvatarTextures(), "Advanced.DebugAvatarTextures");
view_listener_t::addMenu(new LLAdvancedDumpAvatarLocalTextures(), "Advanced.DumpAvatarLocalTextures");
// Advanced > Network
@@ -10191,6 +10307,7 @@ void initialize_menus()
view_listener_t::addMenu(new LLAvatarToggleMyProfile(), "Avatar.ToggleMyProfile");
view_listener_t::addMenu(new LLAvatarTogglePicks(), "Avatar.TogglePicks");
view_listener_t::addMenu(new LLAvatarToggleSearch(), "Avatar.ToggleSearch");
+ view_listener_t::addMenu(new FSToolsResyncAnimations(), "Tools.ResyncAnimations"); // <FS:CR> Resync Animations
view_listener_t::addMenu(new LLAvatarResetSkeleton(), "Avatar.ResetSkeleton", cb_info::UNTRUSTED_THROTTLE);
view_listener_t::addMenu(new LLAvatarEnableResetSkeleton(), "Avatar.EnableResetSkeleton");
view_listener_t::addMenu(new LLAvatarResetSkeletonAndAnimations(), "Avatar.ResetSkeletonAndAnimations");
@@ -10292,6 +10409,9 @@ void initialize_menus()
registrar.add("Inventory.NewWindow", boost::bind(&LLPanelMainInventory::newWindow), cb_info::UNTRUSTED_THROTTLE);
+ registrar.add("Inventory.OpenFavoriteFolder", boost::bind(&toggle_favorite_inventory_folder));
+ enable.add("Inventory.IsFavoriteFolderOpen", boost::bind(&favorite_inventory_folder_visible));
+
enable.add("EnablePayObject", boost::bind(&enable_pay_object));
enable.add("EnablePayAvatar", boost::bind(&enable_pay_avatar));
enable.add("EnableEdit", boost::bind(&enable_object_edit));
diff --git a/indra/newview/llviewermenu.h b/indra/newview/llviewermenu.h
index 5e4b24c7e8..49539b9e97 100644
--- a/indra/newview/llviewermenu.h
+++ b/indra/newview/llviewermenu.h
@@ -74,6 +74,7 @@ void handle_take(bool take_separate = false);
void handle_take_copy();
void handle_look_at_selection(const LLSD& param);
void handle_zoom_to_object(const LLUUID& object_id);
+void handle_teleport_to_object(LLUUID object_id);
void handle_object_return();
void handle_object_delete();
void handle_object_edit();
diff --git a/indra/newview/llvieweroctree.cpp b/indra/newview/llvieweroctree.cpp
index b1673d2232..a1c2e0f9ff 100644
--- a/indra/newview/llvieweroctree.cpp
+++ b/indra/newview/llvieweroctree.cpp
@@ -1217,7 +1217,15 @@ void LLOcclusionCullingGroup::doOcclusion(LLCamera* camera, const LLVector4a* sh
LLGLEnable clamp(use_depth_clamp ? GL_DEPTH_CLAMP : 0);
- U32 mode = gGLManager.mGLVersion >= 3.3f ? GL_ANY_SAMPLES_PASSED : GL_SAMPLES_PASSED;
+ U32 mode =
+#if GL_VERSION_1_5
+ gGLManager.mGLVersion >= 3.3f ?
+#endif
+ GL_ANY_SAMPLES_PASSED
+#if GL_VERSION_1_5
+ : GL_SAMPLES_PASSED
+#endif
+ ;
#if LL_TRACK_PENDING_OCCLUSION_QUERIES
sPendingQueries.insert(mOcclusionQuery[LLViewerCamera::sCurCameraID]);
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 752cfb3884..47b247cee8 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -176,15 +176,25 @@ void LLViewerTextureList::doPreloadImages()
image->setAddressMode(LLTexUnit::TAM_WRAP);
mImagePreloads.insert(image);
}
+#if GL_VERSION_1_1
image = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient.tga", FTT_LOCAL_FILE, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI, LLViewerTexture::FETCHED_TEXTURE,
GL_ALPHA8, GL_ALPHA, IMG_ALPHA_GRAD);
+#else
+ image = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient.tga", FTT_LOCAL_FILE, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI, LLViewerTexture::FETCHED_TEXTURE,
+ GL_ALPHA8_EXT, GL_ALPHA, IMG_ALPHA_GRAD);
+#endif
if (image)
{
image->setAddressMode(LLTexUnit::TAM_CLAMP);
mImagePreloads.insert(image);
}
+#if GL_VERSION_1_1
image = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient_2d.j2c", FTT_LOCAL_FILE, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI, LLViewerTexture::FETCHED_TEXTURE,
GL_ALPHA8, GL_ALPHA, IMG_ALPHA_GRAD_2D);
+#else
+ image = LLViewerTextureManager::getFetchedTextureFromFile("alpha_gradient_2d.j2c", FTT_LOCAL_FILE, MIPMAP_YES, LLViewerFetchedTexture::BOOST_UI, LLViewerTexture::FETCHED_TEXTURE,
+ GL_ALPHA8_EXT, GL_ALPHA, IMG_ALPHA_GRAD_2D);
+#endif
if (image)
{
image->setAddressMode(LLTexUnit::TAM_CLAMP);
@@ -1153,8 +1163,10 @@ void LLViewerTextureList::updateImagesNameTextures()
static LLCachedControl<bool> debug_texture_label(gSavedSettings, "RenderDebugTextureLabel", false);
if (!debug_texture_label()) { return; }
+#ifndef LL_DARWIN
static GLsizei max_length = 0;
if (max_length == 0) { glGetIntegerv(GL_MAX_LABEL_LENGTH, &max_length); }
+#endif
auto it = mNameTextureList.begin();
while (it != mNameTextureList.end()) // For ALL textures needing names
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 440eb427cc..c51adaf115 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -2019,6 +2019,8 @@ LLViewerWindow::LLViewerWindow(const Params& p)
mDebugText = new LLDebugText(this);
mWorldViewRectScaled = calcScaledRect(mWorldViewRectRaw, mDisplayScale);
+
+ mWindow->toggleVSync(gSavedSettings.getBOOL("RenderVSyncEnabled"));
}
std::string LLViewerWindow::getLastSnapshotDir()
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 8b7d284259..6b3caf2d0d 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -70,6 +70,7 @@
#include "llmeshrepository.h"
#include "llmutelist.h"
#include "llmoveview.h"
+#include "llnotificationmanager.h"
#include "llnotificationsutil.h"
#include "llphysicsshapebuilderutil.h"
#include "llquantize.h"
@@ -817,6 +818,21 @@ LLVOAvatar::~LLVOAvatar()
{
sInstances.remove(this);
+ if (gSavedSettings.getBOOL("IMShowArrivalsDepartures"))
+ {
+ LLAvatarName av_name;
+ LLAvatarNameCache::get(getID(), &av_name);
+ auto display_name = av_name.getDisplayName();
+ if (!display_name.empty())
+ {
+ LLChat chat{llformat("%s left.", display_name.c_str())};
+ chat.mFromName = display_name;
+ chat.mFromID = getID();
+ LLSD args;
+ args["COLOR"] = "ChatHistoryTextColor";
+ LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args);
+ }
+ }
if (!mFullyLoaded)
{
debugAvatarRezTime("AvatarRezLeftCloudNotification", "left after ruth seconds as cloud");
@@ -2567,6 +2583,33 @@ U32 LLVOAvatar::processUpdateMessage(LLMessageSystem *mesgsys,
{
mDebugExistenceTimer.reset();
debugAvatarRezTime("AvatarRezArrivedNotification", "avatar arrived");
+ if (gSavedSettings.getBOOL("IMShowArrivalsDepartures"))
+ {
+ uuid_vec_t uuids;
+ std::vector<LLVector3d> positions;
+ LLWorld::getInstance()->getAvatars(&uuids, &positions, gAgent.getPositionGlobal(), gSavedSettings.getF32("MPVNearMeRange"));
+ auto pos_it = positions.begin();
+ auto id_it = uuids.begin();
+ for (;pos_it != positions.end() && id_it != uuids.end(); ++pos_it, ++id_it)
+ {
+ if (*id_it == getID() && !isSelf())
+ {
+ LLAvatarName av_name;
+ LLAvatarNameCache::get(getID(), &av_name);
+ auto display_name = av_name.getDisplayName();
+ if (!display_name.empty())
+ {
+ LLChat chat{llformat("%s arrived (%.1f m).", display_name.c_str(), dist_vec(*pos_it, gAgent.getPositionGlobal()))};
+ chat.mFromName = display_name;
+ chat.mFromID = getID();
+ LLSD args;
+ args["COLOR"] = "ChatHistoryTextColor";
+ LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args);
+ }
+ break;
+ }
+ }
+ }
}
if (retval & LLViewerObject::INVALID_UPDATE)
@@ -11729,24 +11772,38 @@ void LLVOAvatar::placeProfileQuery()
glGenQueries(1, &mGPUTimerQuery);
}
- glBeginQuery(GL_TIME_ELAPSED, mGPUTimerQuery);
+#if GL_EXT_timer_query || GL_EXT_disjoint_timer_query
+ glBeginQuery(GL_TIME_ELAPSED_EXT, mGPUTimerQuery);
+#endif
}
void LLVOAvatar::readProfileQuery(S32 retries)
{
if (!mGPUProfilePending)
{
- glEndQuery(GL_TIME_ELAPSED);
+#if GL_EXT_timer_query || GL_EXT_disjoint_timer_query
+ glEndQuery(GL_TIME_ELAPSED_EXT);
+#endif
mGPUProfilePending = true;
}
+#if GL_ARB_timer_query
GLuint64 result = 0;
glGetQueryObjectui64v(mGPUTimerQuery, GL_QUERY_RESULT_AVAILABLE, &result);
+#else
+ GLuint result = 0;
+ glGetQueryObjectuiv(mGPUTimerQuery, GL_QUERY_RESULT_AVAILABLE, &result);
+#endif
if (result == GL_TRUE || --retries <= 0)
{ // query available, readback result
+#if GL_ARB_timer_query
GLuint64 time_elapsed = 0;
glGetQueryObjectui64v(mGPUTimerQuery, GL_QUERY_RESULT, &time_elapsed);
+#else
+ GLuint time_elapsed = 0;
+ glGetQueryObjectuiv(mGPUTimerQuery, GL_QUERY_RESULT, &time_elapsed);
+#endif
mGPURenderTime = time_elapsed / 1000000.f;
mGPUProfilePending = false;
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index 243cba6ffd..0e11854019 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -26,7 +26,9 @@
#include "llvoiceclient.h"
#include "llvoicevivox.h"
+#if !__FreeBSD__
#include "llvoicewebrtc.h"
+#endif
#include "llviewernetwork.h"
#include "llviewercontrol.h"
#include "llcommandhandler.h"
@@ -120,10 +122,12 @@ LLVoiceModuleInterface *getVoiceModule(const std::string &voice_server_type)
{
return (LLVoiceModuleInterface *) LLVivoxVoiceClient::getInstance();
}
+#if !__FreeBSD__
else if (voice_server_type == WEBRTC_VOICE_SERVER_TYPE)
{
return (LLVoiceModuleInterface *) LLWebRTCVoiceClient::getInstance();
}
+#endif
else
{
LLNotificationsUtil::add("VoiceVersionMismatch");
@@ -165,14 +169,18 @@ void LLVoiceClient::init(LLPumpIO *pump)
{
// Initialize all of the voice modules
m_servicePump = pump;
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->init(pump);
+#endif
LLVivoxVoiceClient::getInstance()->init(pump);
}
void LLVoiceClient::userAuthorized(const std::string& user_id, const LLUUID &agentID)
{
gAgent.addRegionChangedCallback(boost::bind(&LLVoiceClient::onRegionChanged, this));
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->userAuthorized(user_id, agentID);
+#endif
LLVivoxVoiceClient::getInstance()->userAuthorized(user_id, agentID);
}
@@ -281,7 +289,9 @@ void LLVoiceClient::setNonSpatialVoiceModule(const std::string &voice_server_typ
void LLVoiceClient::setHidden(bool hidden)
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->setHidden(hidden);
+#endif
LLVivoxVoiceClient::getInstance()->setHidden(hidden);
}
@@ -322,7 +332,9 @@ void LLVoiceClient::updateSettings()
updateMicMuteLogic();
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->updateSettings();
+#endif
LLVivoxVoiceClient::getInstance()->updateSettings();
}
@@ -331,34 +343,54 @@ void LLVoiceClient::updateSettings()
void LLVoiceClient::tuningStart()
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->tuningStart();
+#endif
LLVivoxVoiceClient::getInstance()->tuningStart();
}
void LLVoiceClient::tuningStop()
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->tuningStop();
+#endif
LLVivoxVoiceClient::getInstance()->tuningStop();
}
bool LLVoiceClient::inTuningMode()
{
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->inTuningMode();
+#else
+ return LLVivoxVoiceClient::getInstance()->inTuningMode();
+#endif
}
void LLVoiceClient::tuningSetMicVolume(float volume)
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->tuningSetMicVolume(volume);
+#else
+ LLVivoxVoiceClient::getInstance()->tuningSetMicVolume(volume);
+#endif
}
void LLVoiceClient::tuningSetSpeakerVolume(float volume)
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->tuningSetSpeakerVolume(volume);
+#else
+ LLVivoxVoiceClient::getInstance()->tuningSetSpeakerVolume(volume);
+#endif
}
float LLVoiceClient::tuningGetEnergy(void)
{
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->tuningGetEnergy();
+#else
+ return LLVivoxVoiceClient::getInstance()->tuningGetEnergy();
+#endif
}
//------------------------------------------------
@@ -366,29 +398,45 @@ float LLVoiceClient::tuningGetEnergy(void)
bool LLVoiceClient::deviceSettingsAvailable()
{
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->deviceSettingsAvailable();
+#else
+ return LLVivoxVoiceClient::getInstance()->deviceSettingsAvailable();
+#endif
}
bool LLVoiceClient::deviceSettingsUpdated()
{
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->deviceSettingsUpdated();
+#else
+ return LLVivoxVoiceClient::getInstance()->deviceSettingsUpdated();
+#endif
}
void LLVoiceClient::refreshDeviceLists(bool clearCurrentList)
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->refreshDeviceLists(clearCurrentList);
+#else
+ LLVivoxVoiceClient::getInstance()->refreshDeviceLists(clearCurrentList);
+#endif
}
void LLVoiceClient::setCaptureDevice(const std::string& name)
{
LLVivoxVoiceClient::getInstance()->setCaptureDevice(name);
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->setCaptureDevice(name);
+#endif
}
void LLVoiceClient::setRenderDevice(const std::string& name)
{
LLVivoxVoiceClient::getInstance()->setRenderDevice(name);
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->setRenderDevice(name);
+#endif
}
bool LLVoiceClient::isCaptureNoDevice()
@@ -403,12 +451,20 @@ bool LLVoiceClient::isRenderNoDevice()
const LLVoiceDeviceList& LLVoiceClient::getCaptureDevices()
{
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->getCaptureDevices();
+#else
+ return LLVivoxVoiceClient::getInstance()->getCaptureDevices();
+#endif
}
const LLVoiceDeviceList& LLVoiceClient::getRenderDevices()
{
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->getRenderDevices();
+#else
+ return LLVivoxVoiceClient::getInstance()->getRenderDevices();
+#endif
}
@@ -417,13 +473,19 @@ const LLVoiceDeviceList& LLVoiceClient::getRenderDevices()
void LLVoiceClient::getParticipantList(std::set<LLUUID> &participants) const
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->getParticipantList(participants);
+#endif
LLVivoxVoiceClient::getInstance()->getParticipantList(participants);
}
bool LLVoiceClient::isParticipant(const LLUUID &speaker_id) const
{
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->isParticipant(speaker_id) ||
+#else
+ return
+#endif
LLVivoxVoiceClient::getInstance()->isParticipant(speaker_id);
}
@@ -516,13 +578,21 @@ void LLVoiceClient::activateSpatialChannel(bool activate)
bool LLVoiceClient::isCurrentChannel(const LLSD& channelInfo)
{
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->isCurrentChannel(channelInfo) ||
+#else
+ return
+#endif
LLVivoxVoiceClient::getInstance()->isCurrentChannel(channelInfo);
}
bool LLVoiceClient::compareChannels(const LLSD &channelInfo1, const LLSD &channelInfo2)
{
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->compareChannels(channelInfo1, channelInfo2) ||
+#else
+ return
+#endif
LLVivoxVoiceClient::getInstance()->compareChannels(channelInfo1, channelInfo2);
}
@@ -564,13 +634,17 @@ LLVoiceP2POutgoingCallInterface *LLVoiceClient::getOutgoingCallInterface(const L
void LLVoiceClient::setVoiceVolume(F32 volume)
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->setVoiceVolume(volume);
+#endif
LLVivoxVoiceClient::getInstance()->setVoiceVolume(volume);
}
void LLVoiceClient::setMicGain(F32 gain)
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->setMicGain(gain);
+#endif
LLVivoxVoiceClient::getInstance()->setMicGain(gain);
}
@@ -617,7 +691,9 @@ bool LLVoiceClient::voiceEnabled()
void LLVoiceClient::setVoiceEnabled(bool enabled)
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->setVoiceEnabled(enabled);
+#endif
LLVivoxVoiceClient::getInstance()->setVoiceEnabled(enabled);
}
@@ -637,7 +713,9 @@ void LLVoiceClient::updateMicMuteLogic()
// Either of these always overrides any other PTT setting.
new_mic_mute = true;
}
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->setMuteMic(new_mic_mute);
+#endif
LLVivoxVoiceClient::getInstance()->setMuteMic(new_mic_mute);
}
@@ -732,18 +810,26 @@ bool LLVoiceClient::getVoiceEnabled(const LLUUID& id) const
std::string LLVoiceClient::getDisplayName(const LLUUID& id) const
{
+#if !__FreeBSD__
std::string result = LLWebRTCVoiceClient::getInstance()->getDisplayName(id);
if (result.empty())
{
result = LLVivoxVoiceClient::getInstance()->getDisplayName(id);
}
return result;
+#else
+ return LLVivoxVoiceClient::getInstance()->getDisplayName(id);
+#endif
}
bool LLVoiceClient::isVoiceWorking() const
{
+#if !__FreeBSD__
return LLVivoxVoiceClient::getInstance()->isVoiceWorking() ||
LLWebRTCVoiceClient::getInstance()->isVoiceWorking();
+#else
+ return LLVivoxVoiceClient::getInstance()->isVoiceWorking();
+#endif
}
bool LLVoiceClient::isParticipantAvatar(const LLUUID& id)
@@ -758,7 +844,11 @@ bool LLVoiceClient::isOnlineSIP(const LLUUID& id)
bool LLVoiceClient::getIsSpeaking(const LLUUID& id)
{
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->getIsSpeaking(id) ||
+#else
+ return
+#endif
LLVivoxVoiceClient::getInstance()->getIsSpeaking(id);
}
@@ -766,14 +856,22 @@ bool LLVoiceClient::getIsModeratorMuted(const LLUUID& id)
{
// don't bother worrying about p2p calls, as
// p2p calls don't have mute.
+#if !__FreeBSD__
return LLWebRTCVoiceClient::getInstance()->getIsModeratorMuted(id) ||
+#else
+ return
+#endif
LLVivoxVoiceClient::getInstance()->getIsModeratorMuted(id);
}
F32 LLVoiceClient::getCurrentPower(const LLUUID& id)
{
+#if !__FreeBSD__
return std::fmax(LLVivoxVoiceClient::getInstance()->getCurrentPower(id),
LLWebRTCVoiceClient::getInstance()->getCurrentPower(id));
+#else
+ return LLVivoxVoiceClient::getInstance()->getCurrentPower(id);
+#endif
}
bool LLVoiceClient::getOnMuteList(const LLUUID& id)
@@ -785,12 +883,18 @@ bool LLVoiceClient::getOnMuteList(const LLUUID& id)
F32 LLVoiceClient::getUserVolume(const LLUUID& id)
{
+#if !__FreeBSD__
return std::fmax(LLVivoxVoiceClient::getInstance()->getUserVolume(id), LLWebRTCVoiceClient::getInstance()->getUserVolume(id));
+#else
+ return LLVivoxVoiceClient::getInstance()->getUserVolume(id);
+#endif
}
void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume)
{
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->setUserVolume(id, volume);
+#endif
LLVivoxVoiceClient::getInstance()->setUserVolume(id, volume);
}
@@ -800,7 +904,9 @@ void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume)
void LLVoiceClient::addObserver(LLVoiceClientStatusObserver* observer)
{
LLVivoxVoiceClient::getInstance()->addObserver(observer);
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->addObserver(observer);
+#endif
}
void LLVoiceClient::removeObserver(LLVoiceClientStatusObserver* observer)
@@ -809,16 +915,20 @@ void LLVoiceClient::removeObserver(LLVoiceClientStatusObserver* observer)
{
LLVivoxVoiceClient::getInstance()->removeObserver(observer);
}
+#if !__FreeBSD__
if (LLWebRTCVoiceClient::instanceExists())
{
LLWebRTCVoiceClient::getInstance()->removeObserver(observer);
}
+#endif
}
void LLVoiceClient::addObserver(LLFriendObserver* observer)
{
LLVivoxVoiceClient::getInstance()->addObserver(observer);
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->addObserver(observer);
+#endif
}
void LLVoiceClient::removeObserver(LLFriendObserver* observer)
@@ -827,16 +937,20 @@ void LLVoiceClient::removeObserver(LLFriendObserver* observer)
{
LLVivoxVoiceClient::getInstance()->removeObserver(observer);
}
+#if !__FreeBSD__
if (LLWebRTCVoiceClient::instanceExists())
{
LLWebRTCVoiceClient::getInstance()->removeObserver(observer);
}
+#endif
}
void LLVoiceClient::addObserver(LLVoiceClientParticipantObserver* observer)
{
LLVivoxVoiceClient::getInstance()->addObserver(observer);
+#if !__FreeBSD__
LLWebRTCVoiceClient::getInstance()->addObserver(observer);
+#endif
}
void LLVoiceClient::removeObserver(LLVoiceClientParticipantObserver* observer)
@@ -845,10 +959,12 @@ void LLVoiceClient::removeObserver(LLVoiceClientParticipantObserver* observer)
{
LLVivoxVoiceClient::getInstance()->removeObserver(observer);
}
+#if !__FreeBSD__
if (LLWebRTCVoiceClient::instanceExists())
{
LLWebRTCVoiceClient::getInstance()->removeObserver(observer);
}
+#endif
}
std::string LLVoiceClient::sipURIFromID(const LLUUID &id) const
@@ -911,10 +1027,12 @@ class LLViewerRequiredVoiceVersion : public LLHTTPNode
{
voiceModule = (LLVoiceModuleInterface *) LLVivoxVoiceClient::getInstance();
}
+#if !__FreeBSD__
else if (voice_server_type == "webrtc")
{
voiceModule = (LLVoiceModuleInterface *) LLWebRTCVoiceClient::getInstance();
}
+#endif
else
{
LL_WARNS("Voice") << "Unknown voice server type " << voice_server_type << LL_ENDL;
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index b8ddc1f255..8a6cf948f9 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -940,7 +940,7 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
gDirUtilp->append(exe_path, "SLVoice");
#else
std::string exe_path = gDirUtilp->getExecutableDir();
- gDirUtilp->append(exe_path, "SLVoice");
+ gDirUtilp->append(exe_path, "SLVoice.exe");
#endif
// See if the vivox executable exists
llstat s;
@@ -948,7 +948,16 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
{
// vivox executable exists. Build the command line and launch the daemon.
LLProcess::Params params;
+#if LL_LINUX || __FreeBSD__
+#if __FreeBSD__
+ params.envs.add("WINEARCH=win32");
+ params.envs.add("WINEPREFIX=~/.i386-wine-pkg");
+#endif // __FreeBSD__
+ params.executable = "wine";
+ params.args.add(exe_path);
+#else
params.executable = exe_path;
+#endif // LL_LINUX || __FreeBSD__
// VOICE-88: Cycle through [portbase..portbase+portrange) on
// successive tries because attempting to relaunch (after manually
diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h
index cec8b71442..6befadb5ff 100644
--- a/indra/newview/llvoicevivox.h
+++ b/indra/newview/llvoicevivox.h
@@ -39,6 +39,8 @@ class LLVivoxProtocolParser;
#include "llcallingcard.h" // for LLFriendObserver
#include "lleventcoro.h"
#include "llcoros.h"
+#include "llparcel.h"
+#include "llmutelist.h"
#include <queue>
#ifdef LL_USESYSTEMLIBS
diff --git a/indra/newview/llworldmipmap.cpp b/indra/newview/llworldmipmap.cpp
index d198f7a33b..3c1268cd26 100644
--- a/indra/newview/llworldmipmap.cpp
+++ b/indra/newview/llworldmipmap.cpp
@@ -148,6 +148,11 @@ LLPointer<LLViewerFetchedTexture> LLWorldMipmap::getObjectsTile(U32 grid_x, U32
{
// Load it
LLPointer<LLViewerFetchedTexture> img = loadObjectsTile(grid_x, grid_y, level);
+ if(img == nullptr)
+ {
+ LL_ERRS() << "loadObjectsTile() failed" << LL_ENDL;
+ return NULL;
+ }
// Insert the image in the map
level_mipmap.insert(sublevel_tiles_t::value_type( handle, img ));
// Find the element again in the map (it's there now...)
@@ -162,6 +167,12 @@ LLPointer<LLViewerFetchedTexture> LLWorldMipmap::getObjectsTile(U32 grid_x, U32
// Get the image pointer and check if this asset is missing
LLPointer<LLViewerFetchedTexture> img = found->second;
+ if(img == nullptr)
+ {
+ LL_ERRS() << "img is NULL" << LL_ENDL;
+ return NULL;
+ }
+
if (img->isMissingAsset())
{
// Return NULL if asset missing
@@ -191,6 +202,12 @@ LLPointer<LLViewerFetchedTexture> LLWorldMipmap::loadObjectsTile(U32 grid_x, U32
//LL_INFOS("WorldMap") << "LLWorldMipmap::loadObjectsTile(), URL = " << imageurl << LL_ENDL;
LLPointer<LLViewerFetchedTexture> img = LLViewerTextureManager::getFetchedTextureFromUrl(imageurl, FTT_MAP_TILE, true, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE);
+
+ if(img == nullptr)
+ {
+ LL_ERRS() << "fetching map tile FAILED from " << imageurl << LL_ENDL;
+ return nullptr;
+ }
LL_INFOS("MAPURL") << "fetching map tile from " << imageurl << LL_ENDL;
img->setBoostLevel(LLGLTexture::BOOST_MAP);
diff --git a/indra/newview/mpfloatertuning.cpp b/indra/newview/mpfloatertuning.cpp
new file mode 100644
index 0000000000..bfa96a8764
--- /dev/null
+++ b/indra/newview/mpfloatertuning.cpp
@@ -0,0 +1,97 @@
+/**
+* @file mpfloatertuning.cpp
+* @brief Controller for viewer tuning
+* @author observeur@megapahit.net
+*
+* $LicenseInfo:firstyear=2014&license=viewerlgpl$
+* Second Life Viewer Source Code
+* Copyright (C) 2014, Linden Research, Inc.
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation;
+* version 2.1 of the License only.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*
+* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+* $/LicenseInfo$
+*/
+
+#include "llviewerprecompiledheaders.h"
+
+#include "mpfloatertuning.h"
+#include "llsliderctrl.h"
+#include "llcheckboxctrl.h"
+#include "llcombobox.h"
+#include "llviewercontrol.h"
+#include "llsdserialize.h"
+
+#include "../llrender/llvertexbuffer.cpp"
+
+MPFloaterTuning::MPFloaterTuning(const LLSD& key) : LLFloater(key)
+{
+}
+
+void MPFloaterTuning::syncFromPreferenceSetting(void *user_data)
+{
+ MPFloaterTuning *self = static_cast<MPFloaterTuning*>(user_data);
+
+ U32 fps = gSavedSettings.getU32("MaxFPS");
+ LLSliderCtrl* fpsSliderCtrl = self->getChild<LLSliderCtrl>("fpsSlider");
+ fpsSliderCtrl->setValue(fps,FALSE);
+
+ U32 optBuf = gSavedSettings.getU32("MPVBufferOptiMode");
+
+ if(optBuf == 0)
+ {
+ if(gGLManager.mIsApple) optBuf = 2;
+ else optBuf = 1;
+ }
+
+ LLComboBox * optBufCtrl = self->getChild<LLComboBox>("MPVBuffModeComboBox");
+ optBufCtrl->setCurrentByIndex(optBuf-1);
+
+ LL_INFOS() << "syncFromPreferenceSetting optBuf=" << optBuf << LL_ENDL;
+}
+
+bool MPFloaterTuning::postBuild()
+{
+ LLSliderCtrl* fpsSliderCtrl = getChild<LLSliderCtrl>("fpsSlider");
+ fpsSliderCtrl->setMinValue(0);
+ fpsSliderCtrl->setMaxValue(165);
+ fpsSliderCtrl->setSliderMouseUpCallback(boost::bind(&MPFloaterTuning::onFinalCommit,this));
+
+ LLComboBox* optBufCtrl = getChild<LLComboBox>("MPVBuffModeComboBox");
+ optBufCtrl->setCommitCallback(boost::bind(&MPFloaterTuning::onFinalCommit,this));
+
+ syncFromPreferenceSetting(this);
+
+ return TRUE;
+}
+
+// Do send-to-the-server work when slider drag completes, or new
+// value entered as text.
+void MPFloaterTuning::onFinalCommit()
+{
+ LLSliderCtrl* fpsSliderCtrl = getChild<LLSliderCtrl>("fpsSlider");
+ U32 fps = (U32)fpsSliderCtrl->getValueF32();
+ gSavedSettings.setU32("MaxFPS",fps);
+
+ LLComboBox* optBufCtrl = getChild<LLComboBox>("MPVBuffModeComboBox");
+ S16 optBuf = optBufCtrl->getCurrentIndex() + 1;
+ gSavedSettings.setU32("MPVBufferOptiMode",optBuf);
+
+ //LLVertexBuffer::sMappingMode = optBuf;
+}
+
+void MPFloaterTuning::onClose(bool app_quitting)
+{
+}
diff --git a/indra/newview/mpfloatertuning.h b/indra/newview/mpfloatertuning.h
new file mode 100644
index 0000000000..9e9c7f174f
--- /dev/null
+++ b/indra/newview/mpfloatertuning.h
@@ -0,0 +1,48 @@
+/**
+* @file mpfloatertuning.h
+* @brief Controller for viewer tuning
+* @author observeur@megapahit.net
+*
+* $LicenseInfo:firstyear=2014&license=viewerlgpl$
+* Second Life Viewer Source Code
+* Copyright (C) 2014, Linden Research, Inc.
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation;
+* version 2.1 of the License only.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library; if not, write to the Free Software
+* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*
+* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+* $/LicenseInfo$
+*/
+#ifndef LL_MPFLOATERTUNING_H
+#define LL_MPFLOATERTUNING_H
+
+#include "llfloater.h"
+
+class MPFloaterTuning: public LLFloater
+{
+public:
+ MPFloaterTuning(const LLSD& key);
+
+ bool postBuild();
+
+ void onFinalCommit();
+
+ static void syncFromPreferenceSetting(void *user_data);
+
+ //void updateEditEnabled();
+
+ /*virtual*/ void onClose(bool app_quitting);
+};
+
+#endif
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 0b4b98d674..41265c2202 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -962,7 +962,7 @@ bool LLPipeline::allocateShadowBuffer(U32 resX, U32 resY)
gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_ANISOTROPIC);
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
}
}
@@ -979,7 +979,7 @@ bool LLPipeline::allocateShadowBuffer(U32 resX, U32 resY)
gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_ANISOTROPIC);
gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
}
}
@@ -3885,10 +3885,12 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera, bool do_occlusion)
llassert(!sRenderingHUDs);
+#if GL_VERSION_1_1
if (gUseWireframe)
{
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
+#endif
if (&camera == LLViewerCamera::getInstance())
{ // a bit hacky, this is the start of the main render frame, figure out delta between last modelview matrix and
@@ -4008,10 +4010,12 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera, bool do_occlusion)
} // Tracy ZoneScoped
+#if GL_VERSION_1_1
if (gUseWireframe)
{
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
+#endif
}
void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
@@ -4019,10 +4023,12 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
LL_PROFILE_ZONE_SCOPED_CATEGORY_DRAWPOOL;
LL_PROFILE_GPU_ZONE("renderGeomPostDeferred");
+#if GL_VERSION_1_1
if (gUseWireframe)
{
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
+#endif
U32 cur_type = 0;
@@ -4133,10 +4139,12 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
renderDebug();
}
+#if GL_VERSION_1_1
if (gUseWireframe)
{
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
+#endif
}
void LLPipeline::renderGeomShadow(LLCamera& camera)
@@ -4229,7 +4237,9 @@ void LLPipeline::renderPhysicsDisplay()
gGL.flush();
gDebugProgram.bind();
+#if GL_VERSION_1_1
LLGLEnable(GL_POLYGON_OFFSET_LINE);
+#endif
glPolygonOffset(3.f, 3.f);
glLineWidth(3.f);
LLGLEnable blend(GL_BLEND);
@@ -4245,10 +4255,12 @@ void LLPipeline::renderPhysicsDisplay()
bool wireframe = (pass == 2);
+#if GL_VERSION_1_1
if (wireframe)
{
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
+#endif
for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
@@ -4268,10 +4280,12 @@ void LLPipeline::renderPhysicsDisplay()
}
gGL.flush();
+#if GL_VERSION_1_1
if (wireframe)
{
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
+#endif
}
glLineWidth(1.f);
gDebugProgram.unbind();
@@ -4351,7 +4365,9 @@ void LLPipeline::renderDebug()
glClearColor(clearColor.mV[0],clearColor.mV[1],clearColor.mV[2],0);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); // no stencil -- deprecated | GL_STENCIL_BUFFER_BIT);
gGL.setColorMask(true, false);
+#if GL_VERSION_1_1
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
+#endif
}
//NavMesh
@@ -4381,7 +4397,9 @@ void LLPipeline::renderDebug()
gPathfindingProgram.bind();
gGL.flush();
+#if GL_VERSION_1_1
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
+#endif
glLineWidth(1.0f);
gGL.flush();
}
@@ -4438,7 +4456,9 @@ void LLPipeline::renderDebug()
LLGLDisable cull(i >= 2 ? GL_CULL_FACE : 0);
gGL.flush();
+#if GL_VERSION_1_1
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
+#endif
//get rid of some z-fighting
LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
@@ -4463,8 +4483,10 @@ void LLPipeline::renderDebug()
gGL.flush();
}
+#if GL_VERSION_1_1
LLGLEnable lineOffset(GL_POLYGON_OFFSET_LINE);
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
+#endif
F32 offset = gSavedSettings.getF32("PathfindingLineOffset");
@@ -4484,10 +4506,14 @@ void LLPipeline::renderDebug()
}
else
{
+#if GL_VERSION_1_1
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
+#endif
gPathfindingProgram.uniform1f(sAmbiance, ambiance);
llPathingLibInstance->renderNavMeshShapesVBO( render_order[i] );
+#if GL_VERSION_1_1
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+#endif
}
}
@@ -4504,7 +4530,9 @@ void LLPipeline::renderDebug()
glLineWidth(1.f);
}
+#if GL_VERSION_1_1
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
+#endif
}
}
}
@@ -4515,7 +4543,9 @@ void LLPipeline::renderDebug()
{ //render navmesh xray
F32 ambiance = gSavedSettings.getF32("PathfindingAmbiance");
+#if GL_VERSION_1_1
LLGLEnable lineOffset(GL_POLYGON_OFFSET_LINE);
+#endif
LLGLEnable polyOffset(GL_POLYGON_OFFSET_FILL);
F32 offset = gSavedSettings.getF32("PathfindingLineOffset");
@@ -4532,10 +4562,14 @@ void LLPipeline::renderDebug()
if (gSavedSettings.getBOOL("PathfindingXRayWireframe"))
{ //draw hidden wireframe as darker and less opaque
+#if GL_VERSION_1_1
glPolygonMode( GL_FRONT_AND_BACK, GL_LINE );
+#endif
gPathfindingProgram.uniform1f(sAmbiance, 1.f);
llPathingLibInstance->renderNavMesh();
+#if GL_VERSION_1_1
glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
+#endif
}
else
{
@@ -4575,7 +4609,9 @@ void LLPipeline::renderDebug()
gGL.getTexUnit(0)->bind(LLViewerFetchedTexture::sWhiteImagep, true);
+#if GL_VERSION_1_1
glPointSize(8.f);
+#endif
LLGLDepthTest depth(GL_TRUE, GL_TRUE, GL_ALWAYS);
gGL.begin(LLRender::POINTS);
@@ -4600,7 +4636,9 @@ void LLPipeline::renderDebug()
}
gGL.end();
gGL.flush();
+#if GL_VERSION_1_1
glPointSize(1.f);
+#endif
}
// Debug stuff.
@@ -4804,7 +4842,9 @@ void LLPipeline::renderDebug()
{
//render visible point cloud
gGL.flush();
+#if GL_VERSION_1_1
glPointSize(8.f);
+#endif
gGL.begin(LLRender::POINTS);
F32* c = col+i*4;
@@ -4818,7 +4858,9 @@ void LLPipeline::renderDebug()
gGL.end();
gGL.flush();
+#if GL_VERSION_1_1
glPointSize(1.f);
+#endif
LLVector3* ext = mShadowExtents[i];
LLVector3 pos = (ext[0]+ext[1])*0.5f;
@@ -6862,7 +6904,7 @@ void apply_cube_face_rotation(U32 face)
void validate_framebuffer_object()
{
GLenum status;
- status = glCheckFramebufferStatus(GL_FRAMEBUFFER_EXT);
+ status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
switch(status)
{
case GL_FRAMEBUFFER_COMPLETE:
@@ -9059,8 +9101,13 @@ void LLPipeline::bindReflectionProbes(LLGLSLShader& shader)
return;
}
+#if GL_VERSION_4_0
S32 channel = shader.enableTexture(LLShaderMgr::REFLECTION_PROBES, LLTexUnit::TT_CUBE_MAP_ARRAY);
+#else
+ S32 channel;
+#endif
bool bound = false;
+#if GL_VERSION_4_0
if (channel > -1 && mReflectionMapManager.mTexture.notNull())
{
mReflectionMapManager.mTexture->bind(channel);
@@ -9091,6 +9138,7 @@ void LLPipeline::bindReflectionProbes(LLGLSLShader& shader)
setEnvMat(shader);
}
+#endif
// reflection probe shaders generally sample the scene map as well for SSR
channel = shader.enableTexture(LLShaderMgr::SCENE_MAP);
diff --git a/indra/newview/res-sdl/arrow.BMP b/indra/newview/res-sdl/arrow.BMP
index a8f6da64b5..1b1e1dcf9c 100644
--- a/indra/newview/res-sdl/arrow.BMP
+++ b/indra/newview/res-sdl/arrow.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/arrowcop.BMP b/indra/newview/res-sdl/arrowcop.BMP
index 1a26a0df34..29ae16c6ed 100644
--- a/indra/newview/res-sdl/arrowcop.BMP
+++ b/indra/newview/res-sdl/arrowcop.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/arrowcopmulti.BMP b/indra/newview/res-sdl/arrowcopmulti.BMP
index 48f153cef6..d1c089c266 100644
--- a/indra/newview/res-sdl/arrowcopmulti.BMP
+++ b/indra/newview/res-sdl/arrowcopmulti.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/arrowdrag.BMP b/indra/newview/res-sdl/arrowdrag.BMP
index cd868eec20..2a29183d64 100644
--- a/indra/newview/res-sdl/arrowdrag.BMP
+++ b/indra/newview/res-sdl/arrowdrag.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/circleandline.BMP b/indra/newview/res-sdl/circleandline.BMP
index 284ae8b7d5..dd630db676 100644
--- a/indra/newview/res-sdl/circleandline.BMP
+++ b/indra/newview/res-sdl/circleandline.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/hand.BMP b/indra/newview/res-sdl/hand.BMP
index 2a092fbb7f..ee315cf521 100644
--- a/indra/newview/res-sdl/hand.BMP
+++ b/indra/newview/res-sdl/hand.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/ibeam.BMP b/indra/newview/res-sdl/ibeam.BMP
index 820904a228..80a4576eb3 100644
--- a/indra/newview/res-sdl/ibeam.BMP
+++ b/indra/newview/res-sdl/ibeam.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/llarrow.BMP b/indra/newview/res-sdl/llarrow.BMP
index a8f6da64b5..13d9cd5910 100644
--- a/indra/newview/res-sdl/llarrow.BMP
+++ b/indra/newview/res-sdl/llarrow.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/llarrowdrag.BMP b/indra/newview/res-sdl/llarrowdrag.BMP
index cd868eec20..2a29183d64 100644
--- a/indra/newview/res-sdl/llarrowdrag.BMP
+++ b/indra/newview/res-sdl/llarrowdrag.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/llarrowdragmulti.BMP b/indra/newview/res-sdl/llarrowdragmulti.BMP
index fb528bc92d..265b80622d 100644
--- a/indra/newview/res-sdl/llarrowdragmulti.BMP
+++ b/indra/newview/res-sdl/llarrowdragmulti.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/llarrowlocked.BMP b/indra/newview/res-sdl/llarrowlocked.BMP
index 0aaa441ab1..8a310a71d7 100644
--- a/indra/newview/res-sdl/llarrowlocked.BMP
+++ b/indra/newview/res-sdl/llarrowlocked.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/llgrablocked.BMP b/indra/newview/res-sdl/llgrablocked.BMP
index 847439670f..6c8d40891c 100644
--- a/indra/newview/res-sdl/llgrablocked.BMP
+++ b/indra/newview/res-sdl/llgrablocked.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/llno.BMP b/indra/newview/res-sdl/llno.BMP
index 284ae8b7d5..dd630db676 100644
--- a/indra/newview/res-sdl/llno.BMP
+++ b/indra/newview/res-sdl/llno.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/llnolocked.BMP b/indra/newview/res-sdl/llnolocked.BMP
index 61f0170cb3..40893c9982 100644
--- a/indra/newview/res-sdl/llnolocked.BMP
+++ b/indra/newview/res-sdl/llnolocked.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolgrab.BMP b/indra/newview/res-sdl/lltoolgrab.BMP
index f2ac68bf3c..91220ec354 100644
--- a/indra/newview/res-sdl/lltoolgrab.BMP
+++ b/indra/newview/res-sdl/lltoolgrab.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolrotate.BMP b/indra/newview/res-sdl/lltoolrotate.BMP
index dd84673018..6115984c62 100644
--- a/indra/newview/res-sdl/lltoolrotate.BMP
+++ b/indra/newview/res-sdl/lltoolrotate.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/lltoolscale.BMP b/indra/newview/res-sdl/lltoolscale.BMP
index 882515e5e3..7782817d9b 100644
--- a/indra/newview/res-sdl/lltoolscale.BMP
+++ b/indra/newview/res-sdl/lltoolscale.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/lltooltranslate.BMP b/indra/newview/res-sdl/lltooltranslate.BMP
index d084f6a026..4fd761bc9b 100644
--- a/indra/newview/res-sdl/lltooltranslate.BMP
+++ b/indra/newview/res-sdl/lltooltranslate.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/sizeall.BMP b/indra/newview/res-sdl/sizeall.BMP
index 03d9bf4654..70b9549d17 100644
--- a/indra/newview/res-sdl/sizeall.BMP
+++ b/indra/newview/res-sdl/sizeall.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/sizenesw.BMP b/indra/newview/res-sdl/sizenesw.BMP
index 559579f40e..a7f1804dbc 100644
--- a/indra/newview/res-sdl/sizenesw.BMP
+++ b/indra/newview/res-sdl/sizenesw.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/sizens.BMP b/indra/newview/res-sdl/sizens.BMP
index 8373077dff..91473b2ff0 100644
--- a/indra/newview/res-sdl/sizens.BMP
+++ b/indra/newview/res-sdl/sizens.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/sizenwse.BMP b/indra/newview/res-sdl/sizenwse.BMP
index 6d069fa765..6c82a68e2a 100644
--- a/indra/newview/res-sdl/sizenwse.BMP
+++ b/indra/newview/res-sdl/sizenwse.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/sizewe.BMP b/indra/newview/res-sdl/sizewe.BMP
index 878df453a4..cc8c03fe9c 100644
--- a/indra/newview/res-sdl/sizewe.BMP
+++ b/indra/newview/res-sdl/sizewe.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolbuy.BMP b/indra/newview/res-sdl/toolbuy.BMP
index 07e9273721..bcc1253053 100644
--- a/indra/newview/res-sdl/toolbuy.BMP
+++ b/indra/newview/res-sdl/toolbuy.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolmediaopen.BMP b/indra/newview/res-sdl/toolmediaopen.BMP
index ac4b231994..670f07235e 100644
--- a/indra/newview/res-sdl/toolmediaopen.BMP
+++ b/indra/newview/res-sdl/toolmediaopen.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolopen.BMP b/indra/newview/res-sdl/toolopen.BMP
index 5b87979304..ae4908fd35 100644
--- a/indra/newview/res-sdl/toolopen.BMP
+++ b/indra/newview/res-sdl/toolopen.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolpause.BMP b/indra/newview/res-sdl/toolpause.BMP
index dd2c6857d2..33e9975b69 100644
--- a/indra/newview/res-sdl/toolpause.BMP
+++ b/indra/newview/res-sdl/toolpause.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolpickobject.BMP b/indra/newview/res-sdl/toolpickobject.BMP
index 25469fc3a8..668bc2713c 100644
--- a/indra/newview/res-sdl/toolpickobject.BMP
+++ b/indra/newview/res-sdl/toolpickobject.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolpickobject2.BMP b/indra/newview/res-sdl/toolpickobject2.BMP
index 09df69e675..7910837404 100644
--- a/indra/newview/res-sdl/toolpickobject2.BMP
+++ b/indra/newview/res-sdl/toolpickobject2.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolpickobject3.BMP b/indra/newview/res-sdl/toolpickobject3.BMP
index fc28698050..324268e76b 100644
--- a/indra/newview/res-sdl/toolpickobject3.BMP
+++ b/indra/newview/res-sdl/toolpickobject3.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolplay.BMP b/indra/newview/res-sdl/toolplay.BMP
index 9c40d7dbec..d0e14838e9 100644
--- a/indra/newview/res-sdl/toolplay.BMP
+++ b/indra/newview/res-sdl/toolplay.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/toolsit.BMP b/indra/newview/res-sdl/toolsit.BMP
index 8ce59ae97a..a19bd70f73 100644
--- a/indra/newview/res-sdl/toolsit.BMP
+++ b/indra/newview/res-sdl/toolsit.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/wait.BMP b/indra/newview/res-sdl/wait.BMP
index 26dec59afe..a4f3c5b531 100644
--- a/indra/newview/res-sdl/wait.BMP
+++ b/indra/newview/res-sdl/wait.BMP
Binary files differ
diff --git a/indra/newview/res-sdl/working.BMP b/indra/newview/res-sdl/working.BMP
index 26dec59afe..a4f3c5b531 100644
--- a/indra/newview/res-sdl/working.BMP
+++ b/indra/newview/res-sdl/working.BMP
Binary files differ
diff --git a/indra/newview/secondlife.icns b/indra/newview/secondlife.icns
index 4560d4bb24..f082c8872b 100644
--- a/indra/newview/secondlife.icns
+++ b/indra/newview/secondlife.icns
Binary files differ
diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index 60d9a5da23..db9b54f704 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -4,13 +4,13 @@
<!-- Named Colors -->
<color
name="EmphasisColor"
- value="0.38 0.694 0.573 1" />
+ value="0.34 0.51 0.64 1" />
<color
name="EmphasisColor_13"
- value="0.38 0.694 0.573 0.13" />
+ value="0.34 0.51 0.64 0.13" />
<color
name="EmphasisColor_35"
- value="0.38 0.694 0.573 0.35" />
+ value="0.34 0.51 0.64 0.35" />
<color
name="BeaconColor"
value="0.749 0.298 0 1" />
@@ -70,7 +70,8 @@
value="0 0 0 0.5" />
<color
name="FrogGreen"
- value="0.26 0.345 0.263 1" />
+ value="0.26 0.33 0.42 1" />
+ <!-- ^(Not actually green) -->
<color
name="Red"
value="1 0 0 1" />
@@ -338,7 +339,7 @@
reference="EmphasisColor" />
<color
name="ConversationFriendColor"
- value="0.42 0.85 0.71 1" />
+ value="0.5 0.7 0.85 1" />
<color
name="DefaultHighlightDark"
reference="White_10" />
@@ -359,7 +360,7 @@
reference="Black" />
<color
name="FilterTextColor"
- value="0.38 0.69 0.57 1" />
+ reference="EmphasisColor" />
<color
name="FloaterButtonImageColor"
reference="LtGray" />
@@ -380,7 +381,10 @@
reference="EmphasisColor" />
<color
name="FolderViewLoadingMessageTextColor"
- value="0.3344 0.5456 0.5159 1" />
+ value="0.3344 0.545 0.645 1" />
+ <color
+ name="FpsTextColor"
+ value="0.34 0.51 0.64 0.8" />
<color
name="GridFocusPointColor"
reference="White_50" />
@@ -407,7 +411,7 @@
value="0.43 0.06 0.06 1" />
<color
name="HTMLLinkColor"
- value="0.3 0.82 1 1" />
+ reference="EmphasisColor" />
<color
name="HealthTextColor"
reference="White" />
@@ -437,7 +441,7 @@
value="1 0 1 1" />
<color
name="HighlightParentColor"
- value="0.67 0.83 0.96 1" />
+ value="0.5 0.65 0.8 1" />
<color
name="IMHistoryBgColor"
reference="Unused?" />
@@ -506,10 +510,10 @@
reference="White" />
<color
name="MapAvatarColor"
- reference="Green" />
+ reference="White" />
<color
name="MapAvatarFriendColor"
- reference="Yellow" />
+ value="0.5 0.7 0.85 1" />
<color
name="MapAvatarSelfColor"
value="0.53125 0 0.498047 1" />
@@ -518,7 +522,7 @@
reference="White_10" />
<color
name="MapParcelOutlineColor"
- value="1 1 0 0.5" />
+ value="1 1 1 0.5" />
<color
name="MapTrackColor"
reference="Red" />
@@ -530,7 +534,7 @@
value="0.5 0 0 1" />
<color
name="MenuBarBgColor"
- reference="DkGray" />
+ reference="MouseGray" />
<color
name="MenuBarGodBgColor"
reference="FrogGreen" />
@@ -595,7 +599,7 @@
reference="White" />
<color
name="NameTagFriend"
- value="0.447 0.784 0.663 1" />
+ value="0.5 0.7 0.85 1" />
<color
name="NameTagLegacy"
reference="White" />
@@ -643,7 +647,7 @@
reference="DkGray_66" />
<color
name="ObjectChatColor"
- reference="EmphasisColor" />
+ reference="LtYellow" />
<color
name="OverdrivenColor"
reference="Red" />
@@ -838,10 +842,10 @@
reference="LtGray" />
<color
name="UserChatColor"
- reference="Yellow" />
+ reference="White" />
<color
name="llOwnerSayChatColor"
- reference="LtYellow" />
+ reference="LtOrange" />
<!-- New Colors -->
<color
@@ -978,10 +982,10 @@
value="1 0.14 0 1" />
<color
name="OutfitGalleryItemSelected"
- value="0.22 0.45 0.35 1" />
+ reference="EmphasisColor_35" />
<color
name="OutfitGalleryItemWorn"
- value="0.33 0.58 0.47 1" />
+ reference="EmphasisColor_13" />
<color
name="OutfitGalleryItemUnselected"
value="0.4 0.4 0.4 1" />
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Center.png b/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Center.png
index ffc3c85ea2..90389734e5 100644
--- a/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Center.png
+++ b/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_Center.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png b/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png
index c8560c0869..a540674662 100644
--- a/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png
+++ b/indra/newview/skins/default/textures/bottomtray/Cam_Rotate_In.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Center.png b/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Center.png
index 2812d614e6..a507127fda 100644
--- a/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Center.png
+++ b/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_Center.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png b/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png
index ae2c57c207..61b1085e96 100644
--- a/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png
+++ b/indra/newview/skins/default/textures/bottomtray/Cam_Tracking_In.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png
index 9f31d461b5..1af8e6b956 100644
--- a/indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_Backward_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png
index f7ed4c25fb..4f97611db1 100644
--- a/indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_Down_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png
index d0a825a682..f01c9f3c63 100644
--- a/indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_Forward_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png
index 2f81fb1588..a120d46e99 100644
--- a/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_Left_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png
index 4f86e81a15..c241ac75df 100644
--- a/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_Right_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png
index b211371e64..20ce7b9296 100644
--- a/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_TurnLeft_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png
index e937c3f012..7b3d2e8dd8 100644
--- a/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_TurnRight_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png b/indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png
index ed4902f3ee..ecce0d0192 100644
--- a/indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png
+++ b/indra/newview/skins/default/textures/bottomtray/Movement_Up_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png
index cd18ae310d..3072512301 100644
--- a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png
+++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl1.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png
index b0ed6ee8eb..28872be28f 100644
--- a/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png
+++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_Lvl2.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png b/indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png
index be4881b64c..823acfc583 100644
--- a/indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png
+++ b/indra/newview/skins/default/textures/bottomtray/VoicePTT_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png
index 6cb33efb93..84711ddc29 100644
--- a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png
+++ b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png
index 6cb33efb93..9b9468c574 100644
--- a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png
+++ b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Cone_Selected.png
index d50dc69ffe..4aeb96c3ae 100644
--- a/indra/newview/skins/default/textures/build/Object_Cone_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Cone_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Cube_Selected.png b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png
index 3d6964530d..9c9d4f506a 100644
--- a/indra/newview/skins/default/textures/build/Object_Cube_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png
index 3ed0389961..50bd865cfc 100644
--- a/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Grass_Selected.png b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png
index 3ebd5ea7a1..19cf732d91 100644
--- a/indra/newview/skins/default/textures/build/Object_Grass_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png
index 3bdc4d1fd5..ae65f1d5e6 100644
--- a/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png
index 0912442e29..c837e953da 100644
--- a/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png
index 33db4a2de8..2d1e035d41 100644
--- a/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Prism_Selected.png b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png
index 9e80fe2b84..6ec9e72c54 100644
--- a/indra/newview/skins/default/textures/build/Object_Prism_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png
index d36bfa55d4..ffb878dc72 100644
--- a/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Ring_Selected.png b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png
index 962f6efb93..ccc1f6d221 100644
--- a/indra/newview/skins/default/textures/build/Object_Ring_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png
index 715d597144..ee015e1786 100644
--- a/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png
index b2ea680f23..1afb115ce5 100644
--- a/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Torus_Selected.png b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png
index 1fc22686eb..ff1cce3a79 100644
--- a/indra/newview/skins/default/textures/build/Object_Torus_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Tree_Selected.png b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png
index 5bd87f8a2f..f21b0e4043 100644
--- a/indra/newview/skins/default/textures/build/Object_Tree_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/build/Object_Tube_Selected.png b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png
index a4c3f39e14..5653f06af1 100644
--- a/indra/newview/skins/default/textures/build/Object_Tube_Selected.png
+++ b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Accordion_Selected.png b/indra/newview/skins/default/textures/containers/Accordion_Selected.png
index 0616dea6a3..0c193cd2b8 100644
--- a/indra/newview/skins/default/textures/containers/Accordion_Selected.png
+++ b/indra/newview/skins/default/textures/containers/Accordion_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Left_Off.png b/indra/newview/skins/default/textures/containers/TabTop_Left_Off.png
index 1951413f8d..c5b232d9ab 100644
--- a/indra/newview/skins/default/textures/containers/TabTop_Left_Off.png
+++ b/indra/newview/skins/default/textures/containers/TabTop_Left_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png b/indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png
index 8364716e02..b075aa27cf 100644
--- a/indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png
+++ b/indra/newview/skins/default/textures/containers/TabTop_Left_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png b/indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png
index 21f1c2d8a8..be624ab273 100644
--- a/indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png
+++ b/indra/newview/skins/default/textures/containers/TabTop_Middle_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png b/indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png
index 3946917c7c..446f3b7ca6 100644
--- a/indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png
+++ b/indra/newview/skins/default/textures/containers/TabTop_Middle_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Right_Off.png b/indra/newview/skins/default/textures/containers/TabTop_Right_Off.png
index eeef28e5a5..db28e9e13a 100644
--- a/indra/newview/skins/default/textures/containers/TabTop_Right_Off.png
+++ b/indra/newview/skins/default/textures/containers/TabTop_Right_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png b/indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png
index b0f1f16398..418dc2b195 100644
--- a/indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png
+++ b/indra/newview/skins/default/textures/containers/TabTop_Right_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png
index 41b5d24d87..f347505772 100644
--- a/indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png
+++ b/indra/newview/skins/default/textures/containers/Toolbar_Left_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png
index 083acc0156..fd24e5b430 100644
--- a/indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png
+++ b/indra/newview/skins/default/textures/containers/Toolbar_Left_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png b/indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png
index ee4649a8f9..2adf67a8a0 100644
--- a/indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png
+++ b/indra/newview/skins/default/textures/containers/Toolbar_Left_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png
index 55c02160e3..cf30330f1c 100644
--- a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png
+++ b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png
index 2f6ea90196..6ac1ce3ffb 100644
--- a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png
+++ b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png
index 642113b135..1d9f2a166d 100644
--- a/indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png
+++ b/indra/newview/skins/default/textures/containers/Toolbar_Middle_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png
index 01fd765c3d..d4881e21d3 100644
--- a/indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png
+++ b/indra/newview/skins/default/textures/containers/Toolbar_Right_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png
index 74e00635f1..bf2a72d6f4 100644
--- a/indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png
+++ b/indra/newview/skins/default/textures/containers/Toolbar_Right_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png b/indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png
index 8a0d98a780..d10fd495bf 100644
--- a/indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png
+++ b/indra/newview/skins/default/textures/containers/Toolbar_Right_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Icon_Attachment_Large.png b/indra/newview/skins/default/textures/icons/Icon_Attachment_Large.png
index 74ec3d7e69..fb57265dac 100644
--- a/indra/newview/skins/default/textures/icons/Icon_Attachment_Large.png
+++ b/indra/newview/skins/default/textures/icons/Icon_Attachment_Large.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Icon_Attachment_Small.png b/indra/newview/skins/default/textures/icons/Icon_Attachment_Small.png
index 9ea7c48871..907113cbb7 100644
--- a/indra/newview/skins/default/textures/icons/Icon_Attachment_Small.png
+++ b/indra/newview/skins/default/textures/icons/Icon_Attachment_Small.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Info_Over.png b/indra/newview/skins/default/textures/icons/Info_Over.png
index 0efd596d3e..11bf174ec6 100644
--- a/indra/newview/skins/default/textures/icons/Info_Over.png
+++ b/indra/newview/skins/default/textures/icons/Info_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_Shape.png b/indra/newview/skins/default/textures/icons/Inv_Shape.png
new file mode 100644
index 0000000000..e5db447b36
--- /dev/null
+++ b/indra/newview/skins/default/textures/icons/Inv_Shape.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_SysClosed.png b/indra/newview/skins/default/textures/icons/Inv_SysClosed.png
index 9af3b60cbd..2550cae0d4 100644
--- a/indra/newview/skins/default/textures/icons/Inv_SysClosed.png
+++ b/indra/newview/skins/default/textures/icons/Inv_SysClosed.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Inv_SysOpen.png b/indra/newview/skins/default/textures/icons/Inv_SysOpen.png
index 01e7dbff8f..5b56d86184 100644
--- a/indra/newview/skins/default/textures/icons/Inv_SysOpen.png
+++ b/indra/newview/skins/default/textures/icons/Inv_SysOpen.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/MP_Logo.png b/indra/newview/skins/default/textures/icons/MP_Logo.png
new file mode 100644
index 0000000000..b01e8f4ea3
--- /dev/null
+++ b/indra/newview/skins/default/textures/icons/MP_Logo.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/MusicNote.png b/indra/newview/skins/default/textures/icons/MusicNote.png
new file mode 100644
index 0000000000..8d3534a94b
--- /dev/null
+++ b/indra/newview/skins/default/textures/icons/MusicNote.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png b/indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png
index ab8983b545..1d2dbd6349 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Disabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Off.png b/indra/newview/skins/default/textures/icons/OutboxPush_Off.png
index 17e152a901..f8f3367c42 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Off.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_On.png b/indra/newview/skins/default/textures/icons/OutboxPush_On.png
index 7ed854b9eb..b1fd734100 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_On.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png b/indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png
index 1b77ccdaaa..e234400b72 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_On_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Over.png b/indra/newview/skins/default/textures/icons/OutboxPush_Over.png
index 3d352af9a1..9e1b0e2dfc 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Over.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Press.png b/indra/newview/skins/default/textures/icons/OutboxPush_Press.png
index bf040e3662..14d9eacc52 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Press.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png
index 0e1252082f..85015fc913 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_1.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png
index 6684b70ca8..6158242b68 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_2.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png
index b8d2a86662..7105380bff 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_3.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png
index f93e844a00..0e65a60fc8 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_4.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png
index 631b8475af..7acef05891 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_5.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png
index 39283fa162..4f5b34a643 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Progress_6.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected.png
index c5576561d5..d58826da67 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Selected.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png
index 5899b766d6..cad9f118b1 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Disabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png
index de290d8228..65d914c6b3 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png
index 532cdff222..cd50d41903 100644
--- a/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png
+++ b/indra/newview/skins/default/textures/icons/OutboxPush_Selected_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Permission_Ungranted.png b/indra/newview/skins/default/textures/icons/Permission_Ungranted.png
new file mode 100644
index 0000000000..d206af4433
--- /dev/null
+++ b/indra/newview/skins/default/textures/icons/Permission_Ungranted.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/SL_Logo.png b/indra/newview/skins/default/textures/icons/SL_Logo.png
index 1eafc304f5..8234387058 100644
--- a/indra/newview/skins/default/textures/icons/SL_Logo.png
+++ b/indra/newview/skins/default/textures/icons/SL_Logo.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/Sync_Enabled.png b/indra/newview/skins/default/textures/icons/Sync_Enabled.png
index 43c8707995..0e7e5157cb 100644
--- a/indra/newview/skins/default/textures/icons/Sync_Enabled.png
+++ b/indra/newview/skins/default/textures/icons/Sync_Enabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png
index 3ad6a5ba5b..3072512301 100644
--- a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png
+++ b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl1.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png
index deae5cb989..28872be28f 100644
--- a/indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png
+++ b/indra/newview/skins/default/textures/icons/VoicePTT_Lvl2.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/VoicePTT_On.png b/indra/newview/skins/default/textures/icons/VoicePTT_On.png
index f673671082..823acfc583 100644
--- a/indra/newview/skins/default/textures/icons/VoicePTT_On.png
+++ b/indra/newview/skins/default/textures/icons/VoicePTT_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/add_icon.png b/indra/newview/skins/default/textures/icons/add_icon.png
index daedd49933..b5b09ae6e0 100644
--- a/indra/newview/skins/default/textures/icons/add_icon.png
+++ b/indra/newview/skins/default/textures/icons/add_icon.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/back_arrow_off.png b/indra/newview/skins/default/textures/icons/back_arrow_off.png
index ab82dfc0a7..0adf0b677e 100644
--- a/indra/newview/skins/default/textures/icons/back_arrow_off.png
+++ b/indra/newview/skins/default/textures/icons/back_arrow_off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/back_arrow_over.png b/indra/newview/skins/default/textures/icons/back_arrow_over.png
index ad8c1f8d2c..13ce6a8e4d 100644
--- a/indra/newview/skins/default/textures/icons/back_arrow_over.png
+++ b/indra/newview/skins/default/textures/icons/back_arrow_over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/back_arrow_press.png b/indra/newview/skins/default/textures/icons/back_arrow_press.png
index 8aecc3d876..311a90ac22 100644
--- a/indra/newview/skins/default/textures/icons/back_arrow_press.png
+++ b/indra/newview/skins/default/textures/icons/back_arrow_press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/check_mark.png b/indra/newview/skins/default/textures/icons/check_mark.png
index 5431dd31c8..ea59769d38 100644
--- a/indra/newview/skins/default/textures/icons/check_mark.png
+++ b/indra/newview/skins/default/textures/icons/check_mark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/copy_clipboard.png b/indra/newview/skins/default/textures/icons/copy_clipboard.png
index c6f267e944..9ce67d8547 100644
--- a/indra/newview/skins/default/textures/icons/copy_clipboard.png
+++ b/indra/newview/skins/default/textures/icons/copy_clipboard.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/delete_icon.png b/indra/newview/skins/default/textures/icons/delete_icon.png
index 0700e52a8c..5a80155d8b 100644
--- a/indra/newview/skins/default/textures/icons/delete_icon.png
+++ b/indra/newview/skins/default/textures/icons/delete_icon.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/file_upload.png b/indra/newview/skins/default/textures/icons/file_upload.png
index 52f75172c1..78b75fdd72 100644
--- a/indra/newview/skins/default/textures/icons/file_upload.png
+++ b/indra/newview/skins/default/textures/icons/file_upload.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/hand.png b/indra/newview/skins/default/textures/icons/hand.png
index d8ef2e22fa..3f497eefbb 100644
--- a/indra/newview/skins/default/textures/icons/hand.png
+++ b/indra/newview/skins/default/textures/icons/hand.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/multi_folder_mode.png b/indra/newview/skins/default/textures/icons/multi_folder_mode.png
index 13762173a5..b363848aba 100644
--- a/indra/newview/skins/default/textures/icons/multi_folder_mode.png
+++ b/indra/newview/skins/default/textures/icons/multi_folder_mode.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/paste_clipboard.png b/indra/newview/skins/default/textures/icons/paste_clipboard.png
index 810e603ef0..ff8493d4ad 100644
--- a/indra/newview/skins/default/textures/icons/paste_clipboard.png
+++ b/indra/newview/skins/default/textures/icons/paste_clipboard.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/profile_badge_beta.png b/indra/newview/skins/default/textures/icons/profile_badge_beta.png
index e378eebf9a..95e277aab0 100644
--- a/indra/newview/skins/default/textures/icons/profile_badge_beta.png
+++ b/indra/newview/skins/default/textures/icons/profile_badge_beta.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/profile_badge_beta_lifetime.png b/indra/newview/skins/default/textures/icons/profile_badge_beta_lifetime.png
index f2fc8e0853..fb145901e2 100644
--- a/indra/newview/skins/default/textures/icons/profile_badge_beta_lifetime.png
+++ b/indra/newview/skins/default/textures/icons/profile_badge_beta_lifetime.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/profile_badge_lifetime.png b/indra/newview/skins/default/textures/icons/profile_badge_lifetime.png
index 85b8e688b4..3f7fd343b3 100644
--- a/indra/newview/skins/default/textures/icons/profile_badge_lifetime.png
+++ b/indra/newview/skins/default/textures/icons/profile_badge_lifetime.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/profile_badge_linden.png b/indra/newview/skins/default/textures/icons/profile_badge_linden.png
index 6ff3a97fdc..6ab9fcebea 100644
--- a/indra/newview/skins/default/textures/icons/profile_badge_linden.png
+++ b/indra/newview/skins/default/textures/icons/profile_badge_linden.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/profile_badge_pplus_lifetime.png b/indra/newview/skins/default/textures/icons/profile_badge_pplus_lifetime.png
index aebd10f4b3..5c68ad40ce 100644
--- a/indra/newview/skins/default/textures/icons/profile_badge_pplus_lifetime.png
+++ b/indra/newview/skins/default/textures/icons/profile_badge_pplus_lifetime.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/profile_badge_premium_lifetime.png b/indra/newview/skins/default/textures/icons/profile_badge_premium_lifetime.png
index 06669bb228..58957b7b96 100644
--- a/indra/newview/skins/default/textures/icons/profile_badge_premium_lifetime.png
+++ b/indra/newview/skins/default/textures/icons/profile_badge_premium_lifetime.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/remove_icon.png b/indra/newview/skins/default/textures/icons/remove_icon.png
index 0df57d6c64..d8a45cc21c 100644
--- a/indra/newview/skins/default/textures/icons/remove_icon.png
+++ b/indra/newview/skins/default/textures/icons/remove_icon.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/see_me_online.png b/indra/newview/skins/default/textures/icons/see_me_online.png
index 4059035b20..5684e27f43 100644
--- a/indra/newview/skins/default/textures/icons/see_me_online.png
+++ b/indra/newview/skins/default/textures/icons/see_me_online.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/see_on_map.png b/indra/newview/skins/default/textures/icons/see_on_map.png
index c9e8d721af..fc7057cacd 100644
--- a/indra/newview/skins/default/textures/icons/see_on_map.png
+++ b/indra/newview/skins/default/textures/icons/see_on_map.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/see_them_on_map.png b/indra/newview/skins/default/textures/icons/see_them_on_map.png
new file mode 100644
index 0000000000..d309980c13
--- /dev/null
+++ b/indra/newview/skins/default/textures/icons/see_them_on_map.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/see_them_online.png b/indra/newview/skins/default/textures/icons/see_them_online.png
new file mode 100644
index 0000000000..135e6cdd82
--- /dev/null
+++ b/indra/newview/skins/default/textures/icons/see_them_online.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/single_folder_back.png b/indra/newview/skins/default/textures/icons/single_folder_back.png
index 4ccea718c6..b93bb2525a 100644
--- a/indra/newview/skins/default/textures/icons/single_folder_back.png
+++ b/indra/newview/skins/default/textures/icons/single_folder_back.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/single_folder_forward.png b/indra/newview/skins/default/textures/icons/single_folder_forward.png
index 614ad18f48..12a21b2bba 100644
--- a/indra/newview/skins/default/textures/icons/single_folder_forward.png
+++ b/indra/newview/skins/default/textures/icons/single_folder_forward.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/single_folder_mode.png b/indra/newview/skins/default/textures/icons/single_folder_mode.png
index 1382e8750b..0fc8475917 100644
--- a/indra/newview/skins/default/textures/icons/single_folder_mode.png
+++ b/indra/newview/skins/default/textures/icons/single_folder_mode.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/single_folder_up.png b/indra/newview/skins/default/textures/icons/single_folder_up.png
index 55d55434d2..c1c8c63870 100644
--- a/indra/newview/skins/default/textures/icons/single_folder_up.png
+++ b/indra/newview/skins/default/textures/icons/single_folder_up.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/snapshot_icon.png b/indra/newview/skins/default/textures/icons/snapshot_icon.png
index 990a41e5b7..9b6ac6eeb0 100644
--- a/indra/newview/skins/default/textures/icons/snapshot_icon.png
+++ b/indra/newview/skins/default/textures/icons/snapshot_icon.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/texture_icon.png b/indra/newview/skins/default/textures/icons/texture_icon.png
index e87ba4ba99..f5c205208c 100644
--- a/indra/newview/skins/default/textures/icons/texture_icon.png
+++ b/indra/newview/skins/default/textures/icons/texture_icon.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/icons/thumbnail_fallback_icon.png b/indra/newview/skins/default/textures/icons/thumbnail_fallback_icon.png
index 9199697375..19629aba04 100644
--- a/indra/newview/skins/default/textures/icons/thumbnail_fallback_icon.png
+++ b/indra/newview/skins/default/textures/icons/thumbnail_fallback_icon.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/progress_light.png b/indra/newview/skins/default/textures/model_wizard/progress_light.png
index c8ab151c44..be6b263fb6 100644
--- a/indra/newview/skins/default/textures/model_wizard/progress_light.png
+++ b/indra/newview/skins/default/textures/model_wizard/progress_light.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png b/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png
index 0b3f252ccf..3d9c758574 100644
--- a/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png
+++ b/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png b/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png
index 5c4c150bed..69b0d43900 100644
--- a/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png
+++ b/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png b/indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png
index e27dbe2cad..6d42f52963 100644
--- a/indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png
+++ b/indra/newview/skins/default/textures/navbar/Favorite_Star_Active.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png b/indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png
index 7909d54f2b..74861fdb58 100644
--- a/indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png
+++ b/indra/newview/skins/default/textures/navbar/Favorite_Star_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG.png b/indra/newview/skins/default/textures/navbar/NavBar_BG.png
index 38eea783e6..6a91700ae0 100644
--- a/indra/newview/skins/default/textures/navbar/NavBar_BG.png
+++ b/indra/newview/skins/default/textures/navbar/NavBar_BG.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png b/indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png
index a79d999932..c61dcde58c 100644
--- a/indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png
+++ b/indra/newview/skins/default/textures/navbar/NavBar_BG_NoFav_Bevel.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png b/indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png
index b692ed92da..9e3da34596 100644
--- a/indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png
+++ b/indra/newview/skins/default/textures/navbar/NavBar_BG_NoNav_Bevel.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/navbar/Row_Selection.png b/indra/newview/skins/default/textures/navbar/Row_Selection.png
index fc4f0c07ef..aededa12e0 100644
--- a/indra/newview/skins/default/textures/navbar/Row_Selection.png
+++ b/indra/newview/skins/default/textures/navbar/Row_Selection.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index d650e7e791..397fc54c7b 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -162,6 +162,8 @@ with the same filename but different name
<texture name="Command_Speak_Icon" file_name="toolbar_icons/speak.png" preload="true" />
<texture name="Command_View_Icon" file_name="toolbar_icons/view.png" preload="true" />
<texture name="Command_Voice_Icon" file_name="toolbar_icons/nearbyvoice.png" preload="true" />
+ <texture name="Command_FavoriteFolder_Icon" file_name="toolbar_icons/favorite_folder.png" preload="true" />
+ <texture name="Command_Resync_Animations" file_name="toolbar_icons/resync_animations.png" preload="true" />
<texture name="Caret_Bottom_Icon" file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" />
<texture name="Caret_Right_Icon" file_name="toolbar_icons/caret_right.png" preload="true" scale.left="5" scale.top="15" scale.right="28" scale.bottom="1" />
<texture name="Caret_Left_Icon" file_name="toolbar_icons/caret_left.png" preload="true" scale.left="1" scale.top="15" scale.right="23" scale.bottom="1" />
@@ -644,7 +646,7 @@ with the same filename but different name
<texture name="SliderThumb_Disabled" file_name="widgets/SliderThumb_Disabled.png" />
<texture name="SliderThumb_Press" file_name="widgets/SliderThumb_Press.png" />
- <texture name="SL_Logo" file_name="icons/SL_Logo.png" preload="true" />
+ <texture name="SL_Logo" file_name="icons/MP_Logo.png" preload="true" />
<texture name="OBJECT_Icon" file_name="icons/object_icon.png" preload="true" />
<texture name="Unknown_Icon" file_name="icons/unknown_icon.png" preload="true" />
@@ -655,8 +657,8 @@ with the same filename but different name
<texture name="Snapshot_Profile" file_name="toolbar_icons/profile.png" preload="false" />
<texture name="startup_logo" file_name="windows/startup_logo.png" preload="true" />
- <texture name="login_sl_logo" file_name="windows/login_sl_logo.png" preload="true" />
- <texture name="login_sl_logo_small" file_name="windows/login_sl_logo_small.png" preload="true" />
+ <texture name="login_mp_logo" file_name="windows/login_mp_logo.png" preload="true" />
+ <texture name="login_mp_logo_small" file_name="windows/login_mp_logo_small.png" preload="true" />
<texture name="first_login_image" file_name="windows/first_login_image.jpg" preload="true" />
<texture name="Stepper_Down_Off" file_name="widgets/Stepper_Down_Off.png" preload="false" />
@@ -782,9 +784,9 @@ with the same filename but different name
scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" />
<texture name="Window_Foreground" file_name="windows/Window_Foreground.png" preload="true"
scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" />
- <texture name="Window_NoTitle_Background" file_name="windows/Window_NoTitle_Background.png" preload="true"
+ <texture name="Window_NoTitle_Background" file_name="windows/Window_Background.png" preload="true"
scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" />
- <texture name="Window_NoTitle_Foreground" file_name="windows/Window_NoTitle_Foreground.png" preload="true"
+ <texture name="Window_NoTitle_Foreground" file_name="windows/Window_Foreground.png" preload="true"
scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" />
<texture name="YouAreHere_Badge" file_name="icons/YouAreHere_Badge.png" preload="false" />
@@ -898,7 +900,7 @@ with the same filename but different name
<texture name="Default_Outfit_Photo" file_name="icons/Default_Outfit_Photo.png" preload="true"/>
<texture name="Notification_Condense" file_name="icons/Icon_Notification_Condense.png" preload="true"/>
<texture name="Notification_Expand" file_name="icons/Icon_Notification_Expand.png" preload="true"/>
- <texture name="System_Notification" file_name="icons/SL_Logo.png" preload="true"/>
+ <texture name="System_Notification" file_name="icons/MP_Logo.png" preload="true"/>
<texture name="Icon_Attachment_Small" file_name="icons/Icon_Attachment_Small.png" preload="true"/>
<texture name="Icon_Attachment_Large" file_name="icons/Icon_Attachment_Large.png" preload="true"/>
diff --git a/indra/newview/skins/default/textures/toolbar_icons/favorite_folder.png b/indra/newview/skins/default/textures/toolbar_icons/favorite_folder.png
new file mode 100644
index 0000000000..811efffc0b
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/favorite_folder.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/highlighting_selected.png b/indra/newview/skins/default/textures/toolbar_icons/highlighting_selected.png
index aa1bb26a56..bce67be463 100644
--- a/indra/newview/skins/default/textures/toolbar_icons/highlighting_selected.png
+++ b/indra/newview/skins/default/textures/toolbar_icons/highlighting_selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/resync_animations.png b/indra/newview/skins/default/textures/toolbar_icons/resync_animations.png
new file mode 100644
index 0000000000..dc9ee9c428
--- /dev/null
+++ b/indra/newview/skins/default/textures/toolbar_icons/resync_animations.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/toolbar_icons/twitter.png b/indra/newview/skins/default/textures/toolbar_icons/twitter.png
index a99c490887..0ad56f7802 100644
--- a/indra/newview/skins/default/textures/toolbar_icons/twitter.png
+++ b/indra/newview/skins/default/textures/toolbar_icons/twitter.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Arrow_Small_Down.png b/indra/newview/skins/default/textures/widgets/Arrow_Small_Down.png
new file mode 100644
index 0000000000..8694cdf2d4
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/Arrow_Small_Down.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png
index 24bcfc4524..e61e7a29a1 100644
--- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png
index ca7ff3687a..7e278e1065 100644
--- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png
index 6ae73ffcdd..31038e28ae 100644
--- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png
index 0147c4b9a7..52bcf88258 100644
--- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png
index 497642a620..efdd13003a 100644
--- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png
index 7bfe8e5d8d..3c66b1f1cc 100644
--- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png
index dbf133cea6..4c433ec42a 100644
--- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png
index f7990c37ae..5915f34bb6 100644
--- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png
index 71da02ae1d..ab939cc99f 100644
--- a/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_On.png b/indra/newview/skins/default/textures/widgets/ComboButton_On.png
index 2739cb4684..1d1ea1bd87 100644
--- a/indra/newview/skins/default/textures/widgets/ComboButton_On.png
+++ b/indra/newview/skins/default/textures/widgets/ComboButton_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_Selected.png b/indra/newview/skins/default/textures/widgets/ComboButton_Selected.png
index 1a834bfbbc..d87e46aba7 100644
--- a/indra/newview/skins/default/textures/widgets/ComboButton_Selected.png
+++ b/indra/newview/skins/default/textures/widgets/ComboButton_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png b/indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png
index ff56367147..34b0c70cb0 100644
--- a/indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png
+++ b/indra/newview/skins/default/textures/widgets/ComboButton_UpSelected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/DropDown_On.png b/indra/newview/skins/default/textures/widgets/DropDown_On.png
index 613a8c2ff6..4a3c8c8e3a 100644
--- a/indra/newview/skins/default/textures/widgets/DropDown_On.png
+++ b/indra/newview/skins/default/textures/widgets/DropDown_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/DropDown_Press.png b/indra/newview/skins/default/textures/widgets/DropDown_Press.png
index fa3a152df1..9d09871e58 100644
--- a/indra/newview/skins/default/textures/widgets/DropDown_Press.png
+++ b/indra/newview/skins/default/textures/widgets/DropDown_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png
index 3b3f276e6d..76e078100f 100644
--- a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png
+++ b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Alert.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png
index ba4ab2d0c9..6e71ef7b72 100644
--- a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png
+++ b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ListItem_Over.png b/indra/newview/skins/default/textures/widgets/ListItem_Over.png
index e72c1c4020..0ec8de776e 100644
--- a/indra/newview/skins/default/textures/widgets/ListItem_Over.png
+++ b/indra/newview/skins/default/textures/widgets/ListItem_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ListItem_Select.png b/indra/newview/skins/default/textures/widgets/ListItem_Select.png
index 0e16a8b454..6dd7b3c638 100644
--- a/indra/newview/skins/default/textures/widgets/ListItem_Select.png
+++ b/indra/newview/skins/default/textures/widgets/ListItem_Select.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png b/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png
index 8bfa3acb42..d76d1246fb 100644
--- a/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png
+++ b/indra/newview/skins/default/textures/widgets/MarketplaceBtn_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/ProgressBar.png b/indra/newview/skins/default/textures/widgets/ProgressBar.png
index 4d0d123987..492d9b6fc4 100644
--- a/indra/newview/skins/default/textures/widgets/ProgressBar.png
+++ b/indra/newview/skins/default/textures/widgets/ProgressBar.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Off.png b/indra/newview/skins/default/textures/widgets/PushButton_Off.png
index 29eeed7c78..c74cea62d3 100644
--- a/indra/newview/skins/default/textures/widgets/PushButton_Off.png
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_On.png b/indra/newview/skins/default/textures/widgets/PushButton_On.png
index 65d92a9d82..af65a960b6 100644
--- a/indra/newview/skins/default/textures/widgets/PushButton_On.png
+++ b/indra/newview/skins/default/textures/widgets/PushButton_On.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png b/indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png
index 8588576fb0..2e9097a7dc 100644
--- a/indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png
+++ b/indra/newview/skins/default/textures/widgets/PushButton_On_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Over.png b/indra/newview/skins/default/textures/widgets/PushButton_Over.png
index 819f27c0ba..34a64a3ade 100644
--- a/indra/newview/skins/default/textures/widgets/PushButton_Over.png
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Press.png b/indra/newview/skins/default/textures/widgets/PushButton_Press.png
index b0a92d8ffe..4591305bff 100644
--- a/indra/newview/skins/default/textures/widgets/PushButton_Press.png
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected.png
index b0a92d8ffe..aa949c65cb 100644
--- a/indra/newview/skins/default/textures/widgets/PushButton_Selected.png
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png
index 65d92a9d82..0b306d8816 100644
--- a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Disabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png
index 8588576fb0..ca9870d078 100644
--- a/indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png
+++ b/indra/newview/skins/default/textures/widgets/PushButton_Selected_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png
index 300a7d73cd..7146900b30 100644
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png
+++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Disabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png
index c7ee699210..8fffd72633 100644
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png
+++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png
index f9cb95ff4b..5e8f0d12b4 100644
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png
+++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Left_Selected_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png
index 6223ad8dfe..09d10e6feb 100644
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png
+++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Disabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png
index 101d5a0930..cdc4abb15c 100644
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png
+++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Middle_Selected_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png
index fd1dd4207c..cee5d77931 100644
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png
+++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_On_Selected.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png
index fdf09e920d..237503fe32 100644
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png
+++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Disabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png
index 144d23cc6c..de081c2a4f 100644
--- a/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png
+++ b/indra/newview/skins/default/textures/widgets/SegmentedBtn_Right_Selected_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png b/indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png
index 51d269bd45..ff21034095 100644
--- a/indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png
+++ b/indra/newview/skins/default/textures/widgets/Stepper_Down_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png b/indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png
index b4f19b7dbb..7349132503 100644
--- a/indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png
+++ b/indra/newview/skins/default/textures/widgets/Stepper_Down_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png b/indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png
index a01d928aef..133845bdbc 100644
--- a/indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png
+++ b/indra/newview/skins/default/textures/widgets/Stepper_Up_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png b/indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png
index d5b672d943..3dce7733c2 100644
--- a/indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png
+++ b/indra/newview/skins/default/textures/widgets/Stepper_Up_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/TextField_Active.png b/indra/newview/skins/default/textures/widgets/TextField_Active.png
index 9eb5b6a36e..66c3867b81 100644
--- a/indra/newview/skins/default/textures/widgets/TextField_Active.png
+++ b/indra/newview/skins/default/textures/widgets/TextField_Active.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/TextField_Disabled.png b/indra/newview/skins/default/textures/widgets/TextField_Disabled.png
index 3b1ac6b9ed..baf747f581 100644
--- a/indra/newview/skins/default/textures/widgets/TextField_Disabled.png
+++ b/indra/newview/skins/default/textures/widgets/TextField_Disabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/TextField_Off.png b/indra/newview/skins/default/textures/widgets/TextField_Off.png
index afe091d613..a35562f950 100644
--- a/indra/newview/skins/default/textures/widgets/TextField_Off.png
+++ b/indra/newview/skins/default/textures/widgets/TextField_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/buy_off.png b/indra/newview/skins/default/textures/widgets/buy_off.png
index 7af02357ac..f623b501e2 100644
--- a/indra/newview/skins/default/textures/widgets/buy_off.png
+++ b/indra/newview/skins/default/textures/widgets/buy_off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/buy_over.png b/indra/newview/skins/default/textures/widgets/buy_over.png
index 5dafd9f47e..25d4173242 100644
--- a/indra/newview/skins/default/textures/widgets/buy_over.png
+++ b/indra/newview/skins/default/textures/widgets/buy_over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/buy_press.png b/indra/newview/skins/default/textures/widgets/buy_press.png
index 83db005fd7..3195431c84 100644
--- a/indra/newview/skins/default/textures/widgets/buy_press.png
+++ b/indra/newview/skins/default/textures/widgets/buy_press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/track_control_sphere.png b/indra/newview/skins/default/textures/widgets/track_control_sphere.png
index 60a81d1fea..6ba8d3877f 100644
--- a/indra/newview/skins/default/textures/widgets/track_control_sphere.png
+++ b/indra/newview/skins/default/textures/widgets/track_control_sphere.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Inspector_I.png b/indra/newview/skins/default/textures/windows/Inspector_I.png
index 843f6e9fbe..c36555c90d 100644
--- a/indra/newview/skins/default/textures/windows/Inspector_I.png
+++ b/indra/newview/skins/default/textures/windows/Inspector_I.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Resize_Corner.png b/indra/newview/skins/default/textures/windows/Resize_Corner.png
index f52b7ced4a..8cdcc1f99d 100644
--- a/indra/newview/skins/default/textures/windows/Resize_Corner.png
+++ b/indra/newview/skins/default/textures/windows/Resize_Corner.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Window_Background.png b/indra/newview/skins/default/textures/windows/Window_Background.png
index 9864ec0db8..f19fb0300b 100644
--- a/indra/newview/skins/default/textures/windows/Window_Background.png
+++ b/indra/newview/skins/default/textures/windows/Window_Background.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Window_Foreground.png b/indra/newview/skins/default/textures/windows/Window_Foreground.png
index a86b236504..15d2ff72b6 100644
--- a/indra/newview/skins/default/textures/windows/Window_Foreground.png
+++ b/indra/newview/skins/default/textures/windows/Window_Foreground.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png b/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png
deleted file mode 100644
index d01f82a310..0000000000
--- a/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png b/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png
deleted file mode 100644
index 1966400641..0000000000
--- a/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png
+++ /dev/null
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/add_payment_image_center.png b/indra/newview/skins/default/textures/windows/add_payment_image_center.png
index fa3575f53d..0b99a72f32 100644
--- a/indra/newview/skins/default/textures/windows/add_payment_image_center.png
+++ b/indra/newview/skins/default/textures/windows/add_payment_image_center.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/add_payment_image_left.png b/indra/newview/skins/default/textures/windows/add_payment_image_left.png
index a3c154477f..a5b28d7023 100644
--- a/indra/newview/skins/default/textures/windows/add_payment_image_left.png
+++ b/indra/newview/skins/default/textures/windows/add_payment_image_left.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/add_payment_image_right.png b/indra/newview/skins/default/textures/windows/add_payment_image_right.png
index 1edc10064d..5724d39744 100644
--- a/indra/newview/skins/default/textures/windows/add_payment_image_right.png
+++ b/indra/newview/skins/default/textures/windows/add_payment_image_right.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/first_login_image.jpg b/indra/newview/skins/default/textures/windows/first_login_image.jpg
index 30f31341ed..860fed4ac7 100644
--- a/indra/newview/skins/default/textures/windows/first_login_image.jpg
+++ b/indra/newview/skins/default/textures/windows/first_login_image.jpg
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/login_mp_logo.png b/indra/newview/skins/default/textures/windows/login_mp_logo.png
new file mode 100644
index 0000000000..7526374ba2
--- /dev/null
+++ b/indra/newview/skins/default/textures/windows/login_mp_logo.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/windows/login_mp_logo_small.png b/indra/newview/skins/default/textures/windows/login_mp_logo_small.png
new file mode 100644
index 0000000000..779d8ff649
--- /dev/null
+++ b/indra/newview/skins/default/textures/windows/login_mp_logo_small.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/world/NoEntryLines.png b/indra/newview/skins/default/textures/world/NoEntryLines.png
index d7496b8bd0..b295ba1281 100644
--- a/indra/newview/skins/default/textures/world/NoEntryLines.png
+++ b/indra/newview/skins/default/textures/world/NoEntryLines.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/world/NoEntryPassLines.png b/indra/newview/skins/default/textures/world/NoEntryPassLines.png
index e4b8fc6ae2..34900e2c02 100644
--- a/indra/newview/skins/default/textures/world/NoEntryPassLines.png
+++ b/indra/newview/skins/default/textures/world/NoEntryPassLines.png
Binary files differ
diff --git a/indra/newview/skins/default/xui/da/language_settings.xml b/indra/newview/skins/default/xui/da/language_settings.xml
index d31afb320a..d15a7c583a 100644
--- a/indra/newview/skins/default/xui/da/language_settings.xml
+++ b/indra/newview/skins/default/xui/da/language_settings.xml
@@ -8,6 +8,7 @@
<string name="macOSLocale">da_DK.UTF-8</string>
<string name="DarwinLocale">da_DK.UTF-8</string>
<string name="LinuxLocale">da_DK.UTF-8</string>
+ <string name="FreeBSDLocale">da_DK.UTF-8</string>
<!--
datetimeToCodes["wkday"] = "%a"; // Thu
diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
index c4275d43f7..038a2e0fcd 100644
--- a/indra/newview/skins/default/xui/da/strings.xml
+++ b/indra/newview/skins/default/xui/da/strings.xml
@@ -5,7 +5,7 @@
that are returned from one component and may appear in many places-->
<strings>
<string name="CAPITALIZED_APP_NAME">
- SECOND LIFE
+ MEGAPAHIT
</string>
<string name="SUPPORT_SITE">
Second Life Support Portal
@@ -429,7 +429,7 @@ Prøv venligst om lidt igen.
Noter om version
</string>
<string name="RELEASE_NOTES_BASE_URL">
- https://releasenotes.secondlife.com/viewer/
+ https://megapahit.net/
</string>
<string name="LoadingData">
Henter...
diff --git a/indra/newview/skins/default/xui/de/language_settings.xml b/indra/newview/skins/default/xui/de/language_settings.xml
index 57a327b345..bfd9ad60cd 100644
--- a/indra/newview/skins/default/xui/de/language_settings.xml
+++ b/indra/newview/skins/default/xui/de/language_settings.xml
@@ -8,6 +8,7 @@
<string name="macOSLocale">de_DE.UTF-8</string>
<string name="DarwinLocale">de_DE.UTF-8</string>
<string name="LinuxLocale">de_DE.UTF-8</string>
+ <string name="FreeBSDLocale">de_DE.UTF-8</string>
<!--
datetimeToCodes["wkday"] = "%a"; // Thu
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index dd003e72d9..2031f4cd2f 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" ?>
<strings>
<string name="SECOND_LIFE">Second Life</string>
- <string name="APP_NAME">Second Life</string>
- <string name="CAPITALIZED_APP_NAME">SECOND LIFE</string>
+ <string name="APP_NAME">Megapahit</string>
+ <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
<string name="SECOND_LIFE_GRID">Second Life-Grid:</string>
<string name="SUPPORT_SITE">Second Life Support-Portal</string>
<string name="StartupDetectingHardware">Hardware wird erfasst...</string>
@@ -266,7 +266,7 @@ nächsten Eigentümer angehängt werden.</string>
<string name="NoneFound">Nicht gefunden.</string>
<string name="RetrievingData">Laden...</string>
<string name="ReleaseNotes">Versionshinweise</string>
- <string name="RELEASE_NOTES_BASE_URL">https://releasenotes.secondlife.com/viewer/</string>
+ <string name="RELEASE_NOTES_BASE_URL">https://megapahit.net/</string>
<string name="LoadingData">Wird geladen...</string>
<string name="AvatarNameNobody">(niemand)</string>
<string name="AvatarNameWaiting">(wartet)</string>
diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml
index 126cd84d56..8d088e277c 100644
--- a/indra/newview/skins/default/xui/en/floater_about.xml
+++ b/indra/newview/skins/default/xui/en/floater_about.xml
@@ -2,7 +2,7 @@
<floater
positioning="centered"
legacy_header_height="18"
- height="440"
+ height="520"
layout="topleft"
name="floater_about"
help_topic="floater_about"
@@ -14,7 +14,7 @@
follows="all"
top="25"
left="10"
- height="405"
+ height="490"
width="480"
name="about_tab"
tab_position="top">
@@ -27,7 +27,7 @@
parse_urls="true"
follows="top|left"
font="SansSerif"
- height="343"
+ height="432"
bg_readonly_color="Transparent"
left="5"
max_length="65536"
@@ -46,17 +46,123 @@
</panel>
<panel
border="true"
+ has_border="true"
label="Credits"
help_topic="about_credits_tab"
name="credits_panel">
+ <accordion
+ fit_parent="false"
+ follows="all"
+ layout="topleft"
+ left="2"
+ name="credits_accordion"
+ single_expansion="true"
+ top="0"
+ right="-1">
+ <accordion_tab
+ expanded="true"
+ fit_panel="false"
+ layout="topleft"
+ name="mp_credits_tab"
+ title="Megapahit">
+ <panel
+ border="false"
+ follows="all"
+ left="10"
+ name="megapahit_credits_panel"
+ height="370"
+ top="10">
<text
follows="top|left|right"
+ font.style="BOLD"
+ height="10"
+ layout="topleft"
+ left="5"
+ top="0"
+ width="435"
+ wrap="true">
+Megapahit is brought to you by (in order of appearance):
+ </text>
+ <text_editor
+ enabled="false"
+ follows="top|left"
+ height="210"
+ bg_readonly_color="Transparent"
+ left="5"
+ text_color="LtGray"
+ max_length="65536"
+ top_pad="5"
+ width="545"
+ word_wrap="true">
+Erik Kundiman
+milo (observeur)
+Fritigern Gothly
+Hadet Sonnenkern
+Remmy (Secret Foxtail)
+Eris Ravenwood
+EmilyAmiee
+Bavid Dailey
+Aria (Tashia Redrose)
+Cate (32a)
+Melodey
+Hiroo Ono
+Keysin (scoutkeysin)
+gwigz
+ </text_editor>
+ <text
+ follows="top|left"
+ font.style="BOLD"
+ height="10"
+ layout="topleft"
+ left="5"
+ top_pad="5"
+ width="465"
+ wrap="true">
+with special thanks to (in order of appearance):
+ </text>
+<text_editor
+ enabled="false"
+ follows="top|left"
+ height="130"
+ bg_readonly_color="Transparent"
+ left="5"
+ text_color="LtGray"
+ max_length="65536"
+ name="megapahit_contributors"
+ top_pad="5"
+ width="450"
+ word_wrap="true">
+Chorazin Allen and Nicky Perian for involving Erik Kundiman in viewer developments;
+LinneNoir for the moral support and initial testing;
+Vir Linden for making it possible for the project to have a place (in every sense of the word) in SL;
+nutsobvious for the early testing and video proof;
+Soft Linden for the security testing; and
+Kyle Linden for selling TPV parcel 2 to Erik Kundiman at L$0 price.
+ </text_editor>
+ </panel>
+ </accordion_tab>
+ <accordion_tab
+ expanded="true"
+ fit_panel="false"
+ layout="topleft"
+ name="sl_credits_tab"
+ title="Second Life">
+ <panel
+ border="false"
+ follows="all"
+ left="10"
+ name="sl_credits_panel"
+ height="500"
+ top="10">
+ <text
+ follows="top|left|right"
+ font.style="BOLD"
height="20"
layout="topleft"
left="5"
name="linden_intro"
- top="10"
- width="465"
+ top="0"
+ width="365"
wrap="true">
Second Life is brought to you by the Lindens,
with open source contributions from:
@@ -64,18 +170,21 @@ with open source contributions from:
<text_editor
enabled="false"
follows="top|left"
- height="340"
+ height="375"
bg_readonly_color="Transparent"
left="5"
text_color="LtGray"
max_length="65536"
name="contrib_names"
top_pad="10"
- width="465"
+ width="415"
word_wrap="true">
Dummy Name replaced at run time
</text_editor>
</panel>
+ </accordion_tab>
+</accordion>
+ </panel>
<panel
border="true"
label="Licenses"
@@ -97,30 +206,22 @@ Dummy Name replaced at run time
APR Copyright (C) 2011 The Apache Software Foundation
Collada DOM Copyright 2006 Sony Computer Entertainment Inc.
cURL Copyright (C) 1996-2010, Daniel Stenberg, (daniel@haxx.se)
- DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc.
expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
FreeType Copyright (C) 1996-2002, 2006 David Turner, Robert Wilhelm, and Werner Lemberg.
GL Copyright (C) 1999-2004 Brian Paul.
- google-perftools Copyright (c) 2005, Google Inc.
- Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
- jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
meshoptimizer Copyright (c) 2016-2021 Arseny Kapoulkine
ogg/vorbis Copyright (C) 2002, Xiphophorus
OpenSSL Copyright (C) 1998-2008 The OpenSSL Project.
PCRE Copyright (c) 1997-2012 University of Cambridge
- SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
+ SDL Copyright (C) 1997-2024 Sam Lantinga
SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
xxHash Copyright (C) 2012-2020 Yann Collet.
zlib Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler.
- Second Life Viewer uses Havok (TM) Physics. (c)Copyright 1999-2010 Havok.com Inc. (and its Licensors). All Rights Reserved. See www.havok.com for details.
-
This software contains source code provided by NVIDIA Corporation.
All rights reserved. See licenses.txt for details.
-
- Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
</text_editor>
</panel>
</tab_container>
diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index 93b306d7d7..44a5638bc4 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -5,9 +5,11 @@
bottom="-50"
follows="left|bottom"
legacy_header_height="18"
- can_minimize="true"
+ can_minimize="false"
+ can_collapse="false"
can_close="true"
- height="135"
+ width="410"
+ height="114"
layout="topleft"
name="camera_floater"
help_topic="camera_floater"
@@ -15,8 +17,7 @@
single_instance="true"
title="CAMERA CONTROLS"
chrome="true"
- save_rect="true"
- width="400">
+ save_rect="true">
<floater.string
name="rotate_tooltip">
Rotate Camera Around Focus
@@ -36,18 +37,19 @@
<string name="inactive_combo_text">Use preset</string>
<panel
border="false"
- height="123"
+ width="220"
+ height="90"
layout="topleft"
left="2"
- top="0"
+ top="18"
mouse_opaque="false"
name="controls"
- width="220">
+ >
<!--TODO: replace + - images -->
<panel
border="false"
class="camera_zoom_panel"
- height="123"
+ height="90"
layout="topleft"
left="0"
mouse_opaque="false"
@@ -56,54 +58,59 @@
width="220">
<joystick_rotate
follows="top|left"
+ width="78"
height="78"
layout="topleft"
left="7"
+ top="8"
name="cam_rotate_stick"
quadrant="left"
sound_flags="3"
visible="true"
+ scale_image="true"
tool_tip="Orbit camera around focus"
- top="25"
- width="78" />
+ />
<button
follows="top|left"
+ width="18"
height="18"
+ left_pad="4"
+ top="2"
+ layout="topleft"
image_disabled="AddItem_Disabled"
image_selected="AddItem_Press"
image_unselected="AddItem_Off"
- layout="topleft"
- left_pad="14"
name="zoom_plus_btn"
- width="18"
- top="23">
+ >
<commit_callback
function="Zoom.plus" />
<mouse_held_callback
function="Zoom.plus" />
</button>
<slider_bar
+ width="18"
height="50"
+ top_pad="0"
layout="topleft"
name="zoom_slider"
orientation="vertical"
tool_tip="Zoom camera toward focus"
- top_pad="0"
min_val="0"
- max_val="1"
- width="18">
+ max_val="1"
+ >
<commit_callback function="Slider.value_changed"/>
</slider_bar>
<button
follows="top|left"
+ width="18"
height="18"
+ top_pad="0"
+ layout="topleft"
image_disabled="MinusItem_Disabled"
image_selected="MinusItem_Press"
image_unselected="MinusItem_Off"
- layout="topleft"
name="zoom_minus_btn"
- top_pad="0"
- width="18">
+ >
<commit_callback
function="Zoom.minus" />
<mouse_held_callback
@@ -111,35 +118,46 @@
</button>
<joystick_track
follows="top|left"
+ width="78"
height="78"
+ left_pad="4"
image_selected="Cam_Tracking_In"
image_unselected="Cam_Tracking_Out"
layout="topleft"
- left="133"
name="cam_track_stick"
quadrant="left"
- scale_image="false"
+ scale_image="true"
sound_flags="3"
tool_tip="Move camera up and down, left and right"
- top="25"
- width="78"/>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="15"
+ />
+ <button
+ follows="top|left"
+ width="18"
+ height="18"
+ top="8"
+ left_pad="6"
+ layout="topleft"
+ name="collapse_btn"
+ >
+ </button>
+ <button
+ follows="top|left"
+ width="18"
+ height="18"
+ top_pad="4"
layout="topleft"
- left="41"
- top_pad="9"
- name="precise_ctrs_label"
- width="200">
- Use precise controls
- </text>
+ name="precise_btn"
+ image_disabled="Cam_FreeCam_Off"
+ image_selected="Cam_FreeCam_Off"
+ image_unselected="Cam_FreeCam_Off"
+ tool_tip="Use precise controls"
+ >
+ </button>
</panel>
</panel>
<panel
follows="left|top"
- height="102"
+ height="90"
layout="topleft"
left_pad="2"
right="-2"
@@ -216,7 +234,7 @@
mouse_opaque="true"
name="preset_combo"
top_pad="10"
- width="136">
+ width="124">
<combo_list
mouse_wheel_opaque="true"/>
<combo_box.item
@@ -226,13 +244,13 @@
</combo_box>
<button
height="16"
- width="16"
+ width="16"
layout="topleft"
mouse_opaque="true"
name="gear_btn"
tool_tip="My Camera Presets"
top_delta="3"
- left_pad="10"
+ left_pad="10"
image_selected="Icon_Gear"
image_pressed="Icon_Gear"
image_unselected="Icon_Gear"
@@ -242,13 +260,16 @@
</button>
<button
follows="top|left"
- height="25"
- label="Save as preset..."
+ width="18"
+ height="18"
+ left_pad="4"
+ tooltip_text="Save as preset..."
layout="topleft"
- left="0"
name="save_preset_btn"
- top_pad="18"
- width="150">
+ image_disabled="Conv_toolbar_plus"
+ image_selected="Conv_toolbar_plus"
+ image_unselected="Conv_toolbar_plus"
+ >
<button.commit_callback
function="CameraPresets.Save"/>
</button>
@@ -259,7 +280,7 @@
top="135"
width="400"
height="150"
- border="true"
+ border="false"
visible="false"
background_visible="true"/>
<panel
@@ -268,7 +289,7 @@
top="285"
width="400"
height="150"
- border="true"
+ border="false"
visible="false"
background_visible="true"/>
</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml
index 832716c600..7fce91a2c3 100644
--- a/indra/newview/skins/default/xui/en/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_gesture.xml
@@ -52,7 +52,7 @@
width="80" />
</scroll_list>
<panel
- background_visible="true"
+ background_visible="false"
bevel_style="none"
top_pad="0"
follows="left|right|bottom"
diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml
index 7b06bed0a3..1ceafaf82e 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -291,7 +291,6 @@
height="20"
is_expandable="true"
text_tentative_color="TextFgTentativeColor"
- bg_writeable_color="ScriptBackground"
name="chat_editor"
max_length="1023"
spellcheck="true"
diff --git a/indra/newview/skins/default/xui/en/floater_live_material_editor.xml b/indra/newview/skins/default/xui/en/floater_live_material_editor.xml
index 5b7dab6a52..fbd3c81bad 100644
--- a/indra/newview/skins/default/xui/en/floater_live_material_editor.xml
+++ b/indra/newview/skins/default/xui/en/floater_live_material_editor.xml
@@ -20,8 +20,8 @@
width="250"
follows="all"
layout="topleft"
- color="DkGray2"
- opaque="true"
+ color="Transparent"
+ opaque="false"
tab_stop="true"
border="false"
reserve_scroll_corner="false">
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index eba5684819..5e7af80e42 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -50,6 +50,7 @@
Mini-map
</floater.string>
<net_map
+ bg_color="Transparent"
follows="top|left|bottom|right"
layout="topleft"
left="0"
diff --git a/indra/newview/skins/default/xui/en/floater_mp_performance.xml b/indra/newview/skins/default/xui/en/floater_mp_performance.xml
new file mode 100644
index 0000000000..d943a13f66
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_mp_performance.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<floater
+ positioning="cascading"
+ legacy_header_height="40"
+ top="12"
+ right="-324"
+ height="120"
+ min_height="120"
+ width="320"
+ min_width="320"
+ can_minimize="true"
+ can_close="true"
+ can_resize="false"
+ layout="topright"
+ name="mpv_performance"
+ single_instance="true"
+ save_rect="true"
+ save_visibility="true"
+ title="Megapahit Tuning">
+
+ <panel
+ name="panel_fps"
+ border="false"
+ width="300"
+ height="36"
+ left="10"
+ top="40"
+ follows="top|left"
+ layout="topleft"
+ >
+
+ <slider
+ name="fpsSlider"
+ width="300"
+ height="15"
+ layout="topleft"
+ enabled="true"
+ control_name="fpsSlider"
+ decimal_digits="0"
+ increment="5"
+ initial_value="0"
+ label="Max FPS"
+ label_width="50"
+ text_width="30"
+ can_edit_text="false"
+ show_text="true"
+ >
+ </slider>
+
+ </panel>
+
+ <panel
+ name="panel_mapping"
+ border="false"
+ width="300"
+ height="36"
+ left="10"
+ top="78"
+ follows="top|left"
+ layout="topleft"
+ >
+
+ <text
+ name="MPVBuffModeLabel"
+ width="100"
+ height="15"
+ left="2"
+ top="8">
+ Optimisations:
+ (needs restart):
+ </text>
+
+ <combo_box
+ control_name="MPVBuffModeControl"
+ name="MPVBuffModeComboBox"
+ width="150"
+ height="23"
+ left="130"
+ top="4"
+ >
+ <combo_box.item
+ enabled="true"
+ label="Normal"
+ name="Normal"
+ value="1" />
+ <combo_box.item
+ enabled="true"
+ label="Apple GPU (smoothie)"
+ name="Megapahit Optimisations"
+ value="2" />
+ <combo_box.item
+ enabled="true"
+ label="Apple GPU (LL)"
+ name="LL Optimisations"
+ value="3" />
+ </combo_box>
+
+ </panel>
+
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_my_environments.xml b/indra/newview/skins/default/xui/en/floater_my_environments.xml
index 8c9c450d7c..dd0795305e 100644
--- a/indra/newview/skins/default/xui/en/floater_my_environments.xml
+++ b/indra/newview/skins/default/xui/en/floater_my_environments.xml
@@ -26,8 +26,8 @@
bottom="-5"
orientation="vertical">
<layout_panel
- border="true"
- bevel_style="in"
+ border="false"
+ bevel_style="none"
auto_resize="false"
tab_group="1"
height="54"
@@ -147,7 +147,7 @@
name="pnl_control"
font="SansSerifBold">
<panel
- background_visible="true"
+ background_visible="false"
bevel_style="none"
top_pad="1"
follows="top|left|right"
diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml
index ae6e68de17..900319620d 100644
--- a/indra/newview/skins/default/xui/en/floater_script.xml
+++ b/indra/newview/skins/default/xui/en/floater_script.xml
@@ -7,7 +7,8 @@
name="script_floater"
can_dock="true"
can_minimize="true"
- visible="false"
+ save_rect="true"
+ visible="false"
width="350"
can_resize="false"
min_width="350"
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index d3a872c9d5..dba323a9e1 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -1194,7 +1194,7 @@ even though the user gets a free copy.
follows="left|top"
layout="topleft"
mouse_opaque="false"
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray"
name="perms_build"
left="0"
diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml
index 6883ec1cd0..de67edc2c2 100644
--- a/indra/newview/skins/default/xui/en/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_world_map.xml
@@ -90,7 +90,7 @@
width="238"
follows="right|top"
top="6"
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray2">
<text
text_color="White"
@@ -456,7 +456,7 @@
height="22"
top_pad="0"
width="238"
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray2"
name="layout_panel_3">
<text
@@ -597,7 +597,7 @@
</button>
<scroll_list
draw_stripes="false"
- bg_writeable_color="MouseGray"
+ bg_writeable_color="0.75 0.75 0.75 0.15"
follows="all"
height="121"
layout="topleft"
@@ -724,7 +724,7 @@
height="22"
top_pad="0"
width="238"
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray2"
name="layout_panel_5">
<text
diff --git a/indra/newview/skins/default/xui/en/language_settings.xml b/indra/newview/skins/default/xui/en/language_settings.xml
index 12a1b52a84..e6a55b3ca0 100644
--- a/indra/newview/skins/default/xui/en/language_settings.xml
+++ b/indra/newview/skins/default/xui/en/language_settings.xml
@@ -8,6 +8,7 @@
<string name="macOSLocale">C</string>
<string name="DarwinLocale">C</string>
<string name="LinuxLocale">C</string>
+ <string name="FreeBSDLocale">C</string>
<!-- Note: for plural nouns, see strings.xml. For example:
AgeYearsA = singular,
diff --git a/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml b/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml
index d8090070bd..d8ef139d37 100644
--- a/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_gallery_inventory.xml
@@ -731,6 +731,16 @@
function="Inventory.CanSetUploadLocation" />
</menu_item_call>
</menu>
+ <menu_item_call
+ label="Use as favorite folder"
+ layout="topleft"
+ name="Set favorite folder">
+ <menu_item_call.on_click
+ function="Inventory.SetFavoriteFolder"
+ parameter="favorite" />
+ <menu_item_call.on_visible
+ function="Inventory.CanSetFavoriteFolder" />
+ </menu_item_call>
<menu
label="Upload to folder"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
index 94022ef1e3..f1cf8b9995 100644
--- a/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
+++ b/indra/newview/skins/default/xui/en/menu_im_session_showmodes.xml
@@ -46,4 +46,12 @@
function="IMSession.Menu.ShowModes.Enable"
parameter="IMShowNamesForP2PConv" />
</menu_item_check>
+ <menu_item_check name="IMShowArrivalsDepartures" label="Show arrivals and departures">
+ <menu_item_check.on_click
+ function="IMSession.Menu.Action"
+ parameter="IMShowArrivalsDepartures" />
+ <menu_item_check.on_check
+ function="IMSession.Menu.ShowModes.CheckItem"
+ parameter="IMShowArrivalsDepartures" />
+ </menu_item_check>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml
index 1558343216..6912d41afc 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory.xml
@@ -1089,6 +1089,13 @@
parameter="def_pbr_material" />
</menu_item_call>
</menu>
+ <menu_item_call
+ label="Use as favorite folder"
+ layout="topleft"
+ name="Set favorite folder">
+ <menu_item_call.on_click
+ function="Inventory.SetFavoriteFolder" />
+ </menu_item_call>
<menu_item_separator
layout="topleft"
name="Marketplace Separator" />
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
index 7bd2c845a6..b7a296bf31 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml
@@ -101,6 +101,16 @@
parameter="can_zoom_in"/>
</menu_item_call>
<menu_item_call
+ label="Teleport To"
+ layout="topleft"
+ name="teleport_to">
+ <menu_item_call.on_click
+ function="Avatar.TeleportTo" />
+ <menu_item_call.on_enable
+ function="Avatar.EnableItem"
+ parameter="can_zoom_in"/>
+ </menu_item_call>
+ <menu_item_call
label="Map"
layout="topleft"
name="map">
diff --git a/indra/newview/skins/default/xui/en/menu_profile_other.xml b/indra/newview/skins/default/xui/en/menu_profile_other.xml
index 101ae33778..a505b38087 100644
--- a/indra/newview/skins/default/xui/en/menu_profile_other.xml
+++ b/indra/newview/skins/default/xui/en/menu_profile_other.xml
@@ -168,4 +168,12 @@
function="Profile.Commit"
parameter="copy_user_id"/>
</menu_item_call>
+ <menu_item_call
+ label="Copy Profile Link"
+ layout="topleft"
+ name="copy_link">
+ <menu_item_call.on_click
+ function="Profile.Commit"
+ parameter="copy_profile_link"/>
+ </menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_profile_self.xml b/indra/newview/skins/default/xui/en/menu_profile_self.xml
index 1b21c7ae61..0a03d7ac2b 100644
--- a/indra/newview/skins/default/xui/en/menu_profile_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_profile_self.xml
@@ -82,4 +82,12 @@
function="Profile.Commit"
parameter="copy_user_id"/>
</menu_item_call>
+ <menu_item_call
+ label="Copy Profile Link"
+ layout="topleft"
+ name="copy_link">
+ <menu_item_call.on_click
+ function="Profile.Commit"
+ parameter="copy_profile_link"/>
+ </menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 39e4e3220e..86016b3b30 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -37,6 +37,13 @@
parameter="" />
</menu_item_call>
<menu_item_call
+ label="Favorite Inventory Folder"
+ layout="topleft"
+ name="Favorite Folder">
+ <menu_item_call.on_click
+ function="Inventory.OpenFavoriteFolder" />
+ </menu_item_call>
+ <menu_item_call
label="Places..."
name="Places"
shortcut="control|L">
@@ -493,6 +500,13 @@
function="Avatar.ResetSelfSkeletonAndAnimations" />
</menu_item_call>
<menu_item_call
+ label="Refresh attachments"
+ name="Refresh attachments"
+ shortcut="alt|shift|R">
+ <menu_item_call.on_click
+ function="Advanced.RefreshAttachments" />
+ </menu_item_call>
+ <menu_item_call
label="Attachment scripts..."
name="MyScripts">
<menu_item_call.on_click
@@ -633,6 +647,14 @@
name="World"
tear_off="true">
<menu_item_call
+ label="Resync Animations"
+ name="Resync Animations"
+ shortcut="control|S">
+ <menu_item_call.on_click
+ function="Tools.ResyncAnimations" />
+ </menu_item_call>
+ <menu_item_separator/>
+ <menu_item_call
label="Landmark This Place"
name="Create Landmark Here">
<menu_item_call.on_click
@@ -986,6 +1008,7 @@
</menu_item_check>
<menu_item_check
label="Use Shared Environment"
+ shortcut="control|shift|X"
name="Use Shared Environment">
<menu_item_check.on_click
function="World.EnvSettings"
diff --git a/indra/newview/skins/default/xui/en/mime_types_linux.xml b/indra/newview/skins/default/xui/en/mime_types_linux.xml
index 87284f564b..e5c33809c8 100644
--- a/indra/newview/skins/default/xui/en/mime_types_linux.xml
+++ b/indra/newview/skins/default/xui/en/mime_types_linux.xml
@@ -130,7 +130,7 @@
movie
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</scheme>
<mimetype name="blank">
@@ -163,7 +163,7 @@
audio
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype name="video/*">
@@ -174,7 +174,7 @@
movie
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype name="image/*">
@@ -196,7 +196,7 @@
movie
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype name="application/javascript">
@@ -218,7 +218,7 @@
audio
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype name="application/pdf">
@@ -295,7 +295,7 @@
audio
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype name="audio/mpeg">
@@ -306,7 +306,7 @@
audio
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype name="audio/x-aiff">
@@ -317,7 +317,7 @@
audio
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype name="audio/x-wav">
@@ -328,7 +328,7 @@
audio
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype menu="1" name="image/bmp">
@@ -438,7 +438,7 @@
movie
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype name="video/mp4">
@@ -449,7 +449,7 @@
movie
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype menu="1" name="video/quicktime">
@@ -460,7 +460,7 @@
movie
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype name="video/x-ms-asf">
@@ -471,7 +471,7 @@
movie
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype name="video/x-ms-wmv">
@@ -482,7 +482,7 @@
movie
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
<mimetype menu="1" name="video/x-msvideo">
@@ -493,7 +493,7 @@
movie
</widgettype>
<impl>
- media_plugin_gstreamer
+ media_plugin_libvlc
</impl>
</mimetype>
</mimetypes>
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 053eed6c00..5a146904ba 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -12629,4 +12629,16 @@ are wearing now.
yestext="OK"/>
</notification>
+ <notification
+ icon="alertmodal.tga"
+ name="MissingFavoriteFolder"
+ type="alertmodal">
+Favorite folder is missing.
+
+Select the "use as favorite folder" from a folder's menu to set it as the favorite folder.
+ <tag>fail</tag>
+ <usetemplate
+ name="okbutton"
+ yestext="OK"/>
+ </notification>
</notifications>
diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
index 53551b2f79..420759507f 100644
--- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml
@@ -64,7 +64,31 @@
top="6"
use_ellipses="true"
value="(loading)"
- width="180" />
+ width="0" />
+ <text
+ follows="right"
+ font="SansSerifSmall"
+ height="15"
+ layout="topleft"
+ left_pad="5"
+ right="-47"
+ name="avatar_arrival_time"
+ top="5"
+ text_color="LtGray_50"
+ value="0s"
+ width="200" />
+ <text
+ follows="right"
+ font="SansSerifSmall"
+ height="15"
+ layout="topleft"
+ left_pad="5"
+ right="-132"
+ name="avatar_distance"
+ top="6"
+ text_color="LtGray_50"
+ value="0m"
+ width="60" />
<text
follows="right"
font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
index ab0e447028..f4ec27c027 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_alpha.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -23,8 +23,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="400"
left="0"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
index f1b2653340..89fa69bcef 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_eyes.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
@@ -41,8 +41,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="all"
height="300"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
index 6ae21e1273..14b20c7ba1 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_hair.xml b/indra/newview/skins/default/xui/en/panel_edit_hair.xml
index 25f7d8a572..9eec1120e3 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_hair.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_hair.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
@@ -41,8 +41,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="all"
height="300"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
index 62ee69b43c..c76a04ccf0 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pants.xml b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
index d2ba71f905..2f4d47f334 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pants.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_physics.xml b/indra/newview/skins/default/xui/en/panel_edit_physics.xml
index 837fb83b64..235025b1ef 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_physics.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_physics.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="all"
height="388"
label=""
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shape.xml b/indra/newview/skins/default/xui/en/panel_edit_shape.xml
index c1d743c3da..bd0335df6e 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shape.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shape.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
index 059103e233..faca0ab2e7 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
index 199b143719..2068f48327 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skin.xml b/indra/newview/skins/default/xui/en/panel_edit_skin.xml
index f3a5791ef8..8e80283bbb 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_skin.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_skin.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
index adb7632e0a..ef93c8d8d2 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_socks.xml b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
index 1658e5707b..8fb19c34bb 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_socks.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
index b4f09e262f..9cb2157896 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_tattoo.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -22,8 +22,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="all"
height="800"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
index 9ca67ed562..6376787b3c 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
index 4a340fe340..88e1d9bc3b 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -12,8 +12,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="top|left|right"
height="90"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_universal.xml b/indra/newview/skins/default/xui/en/panel_edit_universal.xml
index a71f6c6c2e..3a84f1733f 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_universal.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_universal.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="400"
layout="topleft"
@@ -22,8 +22,8 @@
border="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
- background_visible="true"
- background_opaque="true"
+ background_visible="false"
+ background_opaque="false"
follows="all"
height="800"
left="10"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
index 4d2069c9fe..df67f6ad46 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_wearable.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
bevel_style="in"
follows="all"
height="570"
@@ -178,8 +178,8 @@
use_ellipses="true"
width="274" />
<panel
- background_opaque="true"
- background_visible="true"
+ background_opaque="false"
+ background_visible="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
border="false"
diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
index ad9dbd1156..da900c783b 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
-background_visible="true"
+background_visible="false"
follows="all"
height="570"
label="Group Profile"
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
index 19599efdc2..9cb64e7a13 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="570"
layout="topleft"
@@ -87,7 +87,7 @@
value="Place Profile"
width="280" />
<scroll_container
- color="DkGray2"
+ color="Transparent"
follows="all"
height="534"
layout="topleft"
@@ -97,7 +97,7 @@
top_pad="9"
width="324">
<panel
- bg_alpha_color="DkGray2"
+ bg_alpha_color="Transparent"
follows="left|top|right"
height="654"
layout="topleft"
@@ -284,8 +284,8 @@
<line_editor
text_readonly_color="white"
enabled="false"
- use_bg_color="true"
- bg_color="DkGray0"
+ use_bg_color="false"
+ bg_color="Transparent"
follows="left|top|right"
height="22"
layout="topleft"
@@ -326,7 +326,7 @@
value="My notes:"
width="290" />
<text_editor
- bg_readonly_color="DkGray0"
+ bg_readonly_color="Transparent"
follows="all"
height="75"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml
index 27b74a46ce..0682a5d680 100644
--- a/indra/newview/skins/default/xui/en/panel_login.xml
+++ b/indra/newview/skins/default/xui/en/panel_login.xml
@@ -6,7 +6,7 @@
name="panel_login"
focus_root="true"
background_visible="true"
- bg_opaque_color="0.16 0.16 0.16 1"
+ bg_opaque_color="0.0 0.0 0.0 1"
background_opaque="true"
width="1024">
<panel.string
@@ -41,7 +41,7 @@
<icon
height="73"
width="165"
- image_name="login_sl_logo"
+ image_name="login_mp_logo"
left="0"
top="25"
name="sl_logo_small" />
diff --git a/indra/newview/skins/default/xui/en/panel_login_first.xml b/indra/newview/skins/default/xui/en/panel_login_first.xml
index d6ac71db94..0a8ae48b02 100644
--- a/indra/newview/skins/default/xui/en/panel_login_first.xml
+++ b/indra/newview/skins/default/xui/en/panel_login_first.xml
@@ -6,7 +6,7 @@
name="panel_login"
focus_root="true"
background_visible="true"
- bg_opaque_color="0.16 0.16 0.16 1"
+ bg_opaque_color="0.0 0.0 0.0 1"
background_opaque="true"
width="1024">
<panel.string
@@ -61,7 +61,7 @@
height="105">
<icon
height="94"
- image_name="login_sl_logo"
+ image_name="login_mp_logo"
left="0"
name="sl_logo"
top="0" />
diff --git a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
index 85cf4419a3..95787c16c5 100644
--- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_opaque="true"
- background_visible="true"
+ background_opaque="false"
+ background_visible="false"
bg_opaque_color="MouseGray"
follows="left|top|right"
height="34"
@@ -19,18 +19,18 @@
left="0"
top="0"
height="34"
- width="600"/>
+ width="800"/>
<icon
follows="all"
image_name="NavBar_BG_NoFav_Bevel"
mouse_opaque="false"
name="bg_icon_no_fav_bevel"
scale_image="true"
- visible="false"
+ visible="true"
left="0"
top="0"
height="34"
- width="600"/>
+ width="800"/>
<icon
follows="all"
image_name="NavBar_BG_NoNav_Bevel"
@@ -41,7 +41,7 @@
left="0"
top="0"
height="34"
- width="600"/>
+ width="800"/>
<icon
follows="all"
image_name="NavBar Separator"
diff --git a/indra/newview/skins/default/xui/en/panel_notify_textbox.xml b/indra/newview/skins/default/xui/en/panel_notify_textbox.xml
index 27d0f7d383..544d90a84f 100644
--- a/indra/newview/skins/default/xui/en/panel_notify_textbox.xml
+++ b/indra/newview/skins/default/xui/en/panel_notify_textbox.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
height="215"
label="instant_message"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
index a0e3344304..dc8ac425b6 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Side tray Outfit Edit panel -->
<panel
- background_visible="true"
+ background_visible="false"
border="false"
height="600"
follows="all"
@@ -87,8 +87,8 @@
<!-- "HEADER WITH ICON, STATUS TEXT AND OUTFIT NAME" -->
<panel
- background_visible="true"
- bg_alpha_color="DkGray2"
+ background_visible="false"
+ bg_alpha_color="MouseGray"
bevel_style="none"
follows="top|left|right"
height="40"
@@ -360,7 +360,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
<!-- BUTTON BAR -->
<panel
- background_visible="true"
+ background_visible="false"
bevel_style="none"
follows="bottom|left|right"
height="27"
@@ -407,7 +407,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap
<!-- BUTTON BAR - WEARABLES ADDING MODE -->
<panel
- background_visible="true"
+ background_visible="false"
bevel_style="none"
follows="left|right|bottom"
height="27"
diff --git a/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml b/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml
index 96624e7aa2..d49bf19c5d 100644
--- a/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfit_gallery.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray"
border="false"
follows="all"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
index d58c2ec2e9..8e21b4d5fe 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="Outfits"
- bg_alpha_color="DkGray"
- bg_opaque_color="DkGray"
- background_opaque="true"
- background_visible="true"
+ bg_alpha_color="MouseGray"
+ bg_opaque_color="MouseGray"
+ background_opaque="false"
+ background_visible="false"
follows="all"
height="575"
label="Things"
@@ -37,7 +37,7 @@
filename="panel_outfit_gallery.xml"
height="520"
name="outfit_gallery_tab"
- background_visible="true"
+ background_visible="false"
help_topic="outfit_gallery_tab"
follows="all"
label="OUTFIT GALLERY"
@@ -48,15 +48,15 @@
filename="panel_outfits_list.xml"
height="520"
name="outfitslist_tab"
- background_visible="true"
+ background_visible="false"
help_topic="my_outfits_tab"
follows="all"
label="MY OUTFITS"
layout="topleft"
width="315" />
<panel
- background_visible="true"
- bg_alpha_color="DkGray"
+ background_visible="false"
+ bg_alpha_color="MouseGray"
class="panel_wearing"
filename="panel_outfits_wearing.xml"
follows="all"
@@ -69,7 +69,7 @@
</tab_container>
<panel
- background_visible="true"
+ background_visible="false"
follows="bottom|left|right"
height="27"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
index b38e2b2b50..cd4e5ef1f6 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray"
border="false"
follows="all"
@@ -11,7 +11,7 @@
top="0"
width="312">
<accordion
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray2"
bg_opaque_color="DkGray2"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
index ceefe9f6fb..10073f0461 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray"
follows="all"
height="430"
@@ -22,7 +22,7 @@
single_expansion="true"
top="0"
name="wearables_accordion"
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray2"
width="309">
<accordion_tab
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index c31e6c94ea..f1c03fdaa8 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -223,6 +223,8 @@ Learn about [https://community.secondlife.com/knowledgebase/joining-and-particip
keep_one_selected="false"
multi_select="true"
name="avatar_list"
+ show_avatar_arrival_time="true"
+ show_avatar_distance="true"
right="-1"
top="2" />
</layout_panel>
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index bb877080b1..66cd1cacf1 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
- background_visible="true"
+ background_visible="false"
follows="all"
height="610"
layout="topleft"
@@ -192,17 +192,18 @@
value="Place Profile"
width="280" />
<scroll_container
- color="DkGray2"
+ color="Transparent"
follows="all"
height="575"
layout="topleft"
left="9"
name="place_scroll"
- opaque="true"
+ opaque="false"
top_pad="9"
width="324">
<panel
- bg_alpha_color="DkGray2"
+ bg_alpha_color="Transparent"
+ background_visible="false"
follows="left|top|right|bottom"
height="597"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 1bda5c019c..1005810145 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
-background_visible="true"
+background_visible="false"
default_tab_group="1"
follows="all"
height="570"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index d909a56733..53ae764ba6 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -340,7 +340,7 @@
follows="left|top"
top_delta="-6"
layout="topleft"
- left_pad="10"
+ left_pad="5"
width="360"
height="40"
name="media_ear_location">
@@ -360,7 +360,45 @@
name="1"
top_delta ="18"
width="200" />
- </radio_group>
+ </radio_group>
+ <text
+ type="string"
+ length="1"
+ follows="left|top"
+ layout="topleft"
+ left="270"
+ top_delta="6"
+ name="Listen from"
+ width="112">
+ Hear voice from:
+ </text>
+ <radio_group
+ enabled_control="EnableVoiceChat"
+ control_name="VoiceEarLocation"
+ follows="left|top"
+ layout="topleft"
+ left_pad="2"
+ top_delta="-6"
+ width="360"
+ height="40"
+ name="ear_location">
+ <radio_item
+ height="19"
+ label="Camera position"
+ follows="left|top"
+ layout="topleft"
+ name="0"
+ width="200"/>
+ <radio_item
+ height="19"
+ follows="left|top"
+ label="Avatar position"
+ layout="topleft"
+ left_delta="0"
+ name="1"
+ top_delta ="18"
+ width="200" />
+ </radio_group>
<check_box
name="media_show_on_others_btn"
control_name="MediaShowOnOthers"
@@ -406,14 +444,41 @@
name="autoplay_ask"
value="2"/>
</combo_box>
+ <check_box
+ control_name="StreamNotificationChannelEnabled"
+ height="30"
+ label="Custom stream notification channel"
+ layout="topleft"
+ left="20"
+ name="stream_notification_channel_enabled"
+ top_pad="-10"
+ width="256">
+ </check_box>
+ <spinner
+ control_name="StreamNotificationChannel"
+ enabled_control="StreamNotificationChannelEnabled"
+ decimal_digits="0"
+ follows="left|top"
+ height="30"
+ increment="1"
+ initial_value="751751"
+ label="Channel number:"
+ label_width="105"
+ layout="topleft"
+ left_pad="0"
+ max_val="2147483647"
+ min_val="-2147483648"
+ name="stream_notification_channel"
+ top_pad="-20"
+ width="170" />
<text
layout="topleft"
height="15"
left="260"
- top_pad="-18"
+ top_pad="-48"
width="100"
name="noise_suppression_label">
- Noise Suppression
+ Noise suppression
</text>
<combo_box
control_name="VoiceNoiseSuppressionLevel"
@@ -444,47 +509,12 @@
name="noise_suppression_max"
value="4"/>
</combo_box>
- <text
- type="string"
- length="1"
- follows="left|top"
- layout="topleft"
- left="23"
- top_delta="30"
- name="Listen from"
- width="112">
- Hear voice from:
+ <text>
+<!-- spacer -->
</text>
- <radio_group
- enabled_control="EnableVoiceChat"
- control_name="VoiceEarLocation"
- follows="left|top"
- layout="topleft"
- left_pad="10"
- top_delta="-6"
- width="360"
- height="40"
- name="ear_location">
- <radio_item
- height="19"
- label="Camera position"
- follows="left|top"
- layout="topleft"
- name="0"
- width="200"/>
- <radio_item
- height="19"
- follows="left|top"
- label="Avatar position"
- layout="topleft"
- left_delta="0"
- name="1"
- top_delta ="18"
- width="200" />
- </radio_group>
<check_box
control_name="LipSyncEnabled"
- follows="left|top"
+ follows="top|left"
height="15"
label="Move avatar lips when speaking"
layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml
index 242b96b695..0742cef7c7 100644
--- a/indra/newview/skins/default/xui/en/panel_progress.xml
+++ b/indra/newview/skins/default/xui/en/panel_progress.xml
@@ -163,7 +163,7 @@
line_spacing.pixels="2"
name="logos_lbl"
text_color="LoginProgressBoxTextColor">
- Second Life uses
+ Megapahit uses
</text>
</layout_panel>
</layout_stack>
diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml
index 4501e0df3a..5e05eb2837 100644
--- a/indra/newview/skins/default/xui/en/panel_status_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml
@@ -185,4 +185,19 @@
top="2"
name="volume_btn"
width="16" />
+ <button
+ type="string"
+ font="SansSerif"
+ label_color="FpsTextColor"
+ follows="right|top"
+ halign="center"
+ valign="center"
+ height="18"
+ top="1"
+ left_pad="4"
+ name="FpsText"
+ tool_tip="fps"
+ width="32">
+ 60
+ </button>
</panel>
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index a16b0b58da..3e9efb6f8b 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel
-background_visible="true"
+background_visible="false"
default_tab_group="1"
follows="all"
height="570"
@@ -25,8 +25,8 @@ width="333">
name="Changing outfits"
value="Changing outfits" />
<panel
- background_opaque="true"
- background_visible="true"
+ background_opaque="false"
+ background_visible="false"
bg_opaque_color="DkGray2"
left="10"
top="5"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
index 45bc73a0b7..471886aa0d 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_task_info.xml
@@ -93,7 +93,7 @@
name="properties_panel"
top="45"
width="313"
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray2">
<text
type="string"
@@ -299,7 +299,7 @@
follows="left|top"
layout="topleft"
mouse_opaque="false"
- background_visible="true"
+ background_visible="false"
bg_alpha_color="DkGray"
name="perms_inv"
left="0"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 1a81e67e3d..abc0a76f2a 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -7,8 +7,8 @@
<!-- Default Args - these arguments will be replaced in all strings -->
<string name="SECOND_LIFE">Second Life</string>
- <string name="APP_NAME">Second Life</string>
- <string name="CAPITALIZED_APP_NAME">SECOND LIFE</string>
+ <string name="APP_NAME">Megapahit</string>
+ <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
<string name="SECOND_LIFE_GRID">Second Life Grid</string>
<string name="SUPPORT_SITE">Second Life Support Portal</string>
@@ -334,7 +334,7 @@ are allowed.
<string name="ReleaseNotes">Release Notes</string>
<!-- Always mark translate="false" for strings that are nothing but URLs, as they don't need translation. -->
- <string name="RELEASE_NOTES_BASE_URL" translate="false">https://releasenotes.secondlife.com/viewer/</string>
+ <string name="RELEASE_NOTES_BASE_URL" translate="false">https://megapahit.net/</string>
<!-- Indicates something is being loaded. Maybe should be merged with RetrievingData -->
<string name="LoadingData">Loading...</string>
@@ -4222,6 +4222,8 @@ name="Command_360_Capture_Label">360 snapshot</string>
<string name="Command_Speak_Label">Speak</string>
<string name="Command_View_Label">Camera controls</string>
<string name="Command_Voice_Label">Voice settings</string>
+ <string name="Command_FavoriteFolder_Label">Favorite folder</string>
+ <string name="Command_ResyncAnimations_Label">Resync animations</string>
<string
name="Command_360_Capture_Tooltip">Capture a 360 equirectangular image</string>
@@ -4255,6 +4257,8 @@ name="Command_360_Capture_Tooltip">Capture a 360 equirectangular image</string>
<string name="Command_Speak_Tooltip">Speak with people nearby using your microphone</string>
<string name="Command_View_Tooltip">Changing camera angle</string>
<string name="Command_Voice_Tooltip">Volume controls for calls and people near you in world</string>
+ <string name="Command_FavoriteFolder_Tooltip">Open your favorite inventory folder</string>
+ <string name="Command_ResyncAnimations_Tooltip">Synchronizes avatar animations</string>
<string name="Toolbar_Bottom_Tooltip">currently in your bottom toolbar</string>
<string name="Toolbar_Left_Tooltip" >currently in your left toolbar</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/toolbar.xml b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
index 8345911525..51852dd6dd 100644
--- a/indra/newview/skins/default/xui/en/widgets/toolbar.xml
+++ b/indra/newview/skins/default/xui/en/widgets/toolbar.xml
@@ -9,9 +9,9 @@
read_only="false">
<button_panel name="button_panel"
bg_opaque_image="Rounded_Rect"
- background_visible="true"
+ background_visible="false"
bg_opaque_image_overlay="MouseGray"
- background_opaque="true"/>
+ background_opaque="false"/>
<button_icon_and_text imgoverlay_label_space="7"
label_color_selected="White"
halign="left"
diff --git a/indra/newview/skins/default/xui/es/language_settings.xml b/indra/newview/skins/default/xui/es/language_settings.xml
index 7a52f7cdae..45ddacaf77 100644
--- a/indra/newview/skins/default/xui/es/language_settings.xml
+++ b/indra/newview/skins/default/xui/es/language_settings.xml
@@ -8,6 +8,7 @@
<string name="macOSLocale">es_ES.UTF-8</string>
<string name="DarwinLocale">es_ES.UTF-8</string>
<string name="LinuxLocale">es_ES.UTF-8</string>
+ <string name="FreeBSDLocale">es_ES.UTF-8</string>
<!--
datetimeToCodes["wkday"] = "%a"; // Thu
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index 97e86e994c..8515108943 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" ?>
<strings>
- <string name="CAPITALIZED_APP_NAME">SECOND LIFE</string>
+ <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
<string name="SUPPORT_SITE">Portal de Soporte de Second Life</string>
<string name="StartupDetectingHardware">Identificando el hardware...</string>
<string name="StartupLoading">Instalando [APP_NAME]...</string>
@@ -264,7 +264,7 @@ pueden adjuntarse a las notas.</string>
<string name="NoneFound">No se ha encontrado.</string>
<string name="RetrievingData">Reintentando...</string>
<string name="ReleaseNotes">Notas de la versión</string>
- <string name="RELEASE_NOTES_BASE_URL">https://releasenotes.secondlife.com/viewer/</string>
+ <string name="RELEASE_NOTES_BASE_URL">https://megapahit.net/</string>
<string name="LoadingData">Cargando...</string>
<string name="AvatarNameNobody">(nadie)</string>
<string name="AvatarNameWaiting">(esperando)</string>
diff --git a/indra/newview/skins/default/xui/fr/language_settings.xml b/indra/newview/skins/default/xui/fr/language_settings.xml
index fdb119ec69..b84430bf13 100644
--- a/indra/newview/skins/default/xui/fr/language_settings.xml
+++ b/indra/newview/skins/default/xui/fr/language_settings.xml
@@ -8,6 +8,7 @@
<string name="macOSLocale">fr_FR.UTF-8</string>
<string name="DarwinLocale">fr_FR.UTF-8</string>
<string name="LinuxLocale">fr_FR.UTF-8</string>
+ <string name="FreeBSDLocale">fr_FR.UTF-8</string>
<!--
datetimeToCodes["wkday"] = "%a"; // Thu
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 60916ef92b..c0f990d86b 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" ?>
<strings>
<string name="SECOND_LIFE">Second Life</string>
- <string name="APP_NAME">Second Life</string>
- <string name="CAPITALIZED_APP_NAME">SECOND LIFE</string>
+ <string name="APP_NAME">Megapahit</string>
+ <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
<string name="SECOND_LIFE_GRID">Grille de Second Life</string>
<string name="SUPPORT_SITE">Portail Assistance Second Life</string>
<string name="StartupDetectingHardware">Détection du matériel...</string>
@@ -267,7 +267,7 @@ peuvent être joints aux notes.</string>
<string name="NoneFound">Aucun résultat.</string>
<string name="RetrievingData">En cours d'extraction...</string>
<string name="ReleaseNotes">Notes de version</string>
- <string name="RELEASE_NOTES_BASE_URL">https://releasenotes.secondlife.com/viewer/</string>
+ <string name="RELEASE_NOTES_BASE_URL">https://megapahit.net/</string>
<string name="LoadingData">Chargement...</string>
<string name="AvatarNameNobody">(personne)</string>
<string name="AvatarNameWaiting">(en attente)</string>
diff --git a/indra/newview/skins/default/xui/it/language_settings.xml b/indra/newview/skins/default/xui/it/language_settings.xml
index 7eb1b560bd..763e32e5d0 100644
--- a/indra/newview/skins/default/xui/it/language_settings.xml
+++ b/indra/newview/skins/default/xui/it/language_settings.xml
@@ -8,6 +8,7 @@
<string name="macOSLocale">it_IT.UTF-8</string>
<string name="DarwinLocale">it_IT.UTF-8</string>
<string name="LinuxLocale">it_IT.UTF-8</string>
+ <string name="FreeBSDLocale">it_IT.UTF-8</string>
<!--
datetimeToCodes["wkday"] = "%a"; // Thu
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index 88708a2b4d..4bd1285f2d 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -1,8 +1,8 @@
<?xml version="1.0" ?>
<strings>
<string name="SECOND_LIFE">Second Life</string>
- <string name="APP_NAME">Second Life</string>
- <string name="CAPITALIZED_APP_NAME">SECOND LIFE</string>
+ <string name="APP_NAME">Megapahit</string>
+ <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
<string name="SUPPORT_SITE">Portale di supporto di Second Life</string>
<string name="StartupDetectingHardware">Ricerca hardware...</string>
<string name="StartupLoading">Caricamento di [APP_NAME]...</string>
@@ -265,7 +265,7 @@ possono essere allegati ai biglietti.</string>
<string name="NoneFound">Nessun risultato.</string>
<string name="RetrievingData">Recupero dati in corso...</string>
<string name="ReleaseNotes">Note sulla versione</string>
- <string name="RELEASE_NOTES_BASE_URL">https://releasenotes.secondlife.com/viewer/</string>
+ <string name="RELEASE_NOTES_BASE_URL">https://megapahit.net/</string>
<string name="LoadingData">In caricamento...</string>
<string name="AvatarNameNobody">(nessuno)</string>
<string name="AvatarNameWaiting">(in attesa)</string>
diff --git a/indra/newview/skins/default/xui/ja/language_settings.xml b/indra/newview/skins/default/xui/ja/language_settings.xml
index c94a16cee0..af45065d58 100644
--- a/indra/newview/skins/default/xui/ja/language_settings.xml
+++ b/indra/newview/skins/default/xui/ja/language_settings.xml
@@ -15,6 +15,9 @@
<string name="LinuxLocale">
ja_JP.UTF-8
</string>
+ <string name="FreeBSDLocale">
+ ja_JP.UTF-8
+ </string>
<string name="TimeHour">
hour,datetime,slt
</string>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index abc5932943..d0e3cd87c4 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -4,10 +4,10 @@
Second Life
</string>
<string name="APP_NAME">
- Second Life
+ Megapahit
</string>
<string name="CAPITALIZED_APP_NAME">
- SECOND LIFE
+ MEGAPAHIT
</string>
<string name="SECOND_LIFE_GRID">
Second Lifeグリッド
@@ -616,7 +616,7 @@ support@secondlife.com にお問い合わせください。
リリースノート
</string>
<string name="RELEASE_NOTES_BASE_URL" translate="false">
- https://releasenotes.secondlife.com/viewer/
+ https://megapahit.net/
</string>
<string name="LoadingData">
読み込んでいます…
diff --git a/indra/newview/skins/default/xui/pl/language_settings.xml b/indra/newview/skins/default/xui/pl/language_settings.xml
index 9993062487..b719edc20f 100644
--- a/indra/newview/skins/default/xui/pl/language_settings.xml
+++ b/indra/newview/skins/default/xui/pl/language_settings.xml
@@ -5,6 +5,7 @@
<string name="macOSLocale">pl_PL.UTF-8</string>
<string name="DarwinLocale">pl_PL.UTF-8</string>
<string name="LinuxLocale">pl_PL.UTF-8</string>
+ <string name="FreeBSDLocale">pl_PL.UTF-8</string>
<string name="TimeHour">hour,datetime,slt</string>
<string name="TimeMin">min,datetime,slt</string>
<string name="TimeSec">second,datetime,slt</string>
diff --git a/indra/newview/skins/default/xui/pt/language_settings.xml b/indra/newview/skins/default/xui/pt/language_settings.xml
index d5be208eb3..721e74aaff 100644
--- a/indra/newview/skins/default/xui/pt/language_settings.xml
+++ b/indra/newview/skins/default/xui/pt/language_settings.xml
@@ -8,6 +8,7 @@
<string name="macOSLocale">pt_PT.UTF-8</string>
<string name="DarwinLocale">pt_PT.UTF-8</string>
<string name="LinuxLocale">pt_PT.UTF-8</string>
+ <string name="FreeBSDLocale">pt_PT.UTF-8</string>
<!--
datetimeToCodes["wkday"] = "%a"; // Thu
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index 9e66777b5a..c7fe195505 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" ?>
<strings>
- <string name="CAPITALIZED_APP_NAME">SECOND LIFE</string>
+ <string name="CAPITALIZED_APP_NAME">MEGAPAHIT</string>
<string name="SUPPORT_SITE">Portal de Supporte Second Life</string>
<string name="StartupDetectingHardware">Detectando hardware...</string>
<string name="StartupLoading">Carregando [APP_NAME]...</string>
@@ -229,7 +229,7 @@ ser anexado às anotações.</string>
<string name="NoneFound">Não encontrado.</string>
<string name="RetrievingData">Buscando...</string>
<string name="ReleaseNotes">Notas de versão</string>
- <string name="RELEASE_NOTES_BASE_URL">https://releasenotes.secondlife.com/viewer/</string>
+ <string name="RELEASE_NOTES_BASE_URL">https://megapahit.net/</string>
<string name="LoadingData">Carregando...</string>
<string name="AvatarNameNobody">(ninguém)</string>
<string name="AvatarNameWaiting">(aguardando)</string>
diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml
index 174999ea36..1f53723e92 100644
--- a/indra/newview/skins/default/xui/ru/strings.xml
+++ b/indra/newview/skins/default/xui/ru/strings.xml
@@ -8,10 +8,10 @@
Second Life
</string>
<string name="APP_NAME">
- Second Life
+ Megapahit
</string>
<string name="CAPITALIZED_APP_NAME">
- SECOND LIFE
+ MEGAPAHIT
</string>
<string name="SECOND_LIFE_GRID">
Сетка Second Life
diff --git a/indra/newview/skins/default/xui/tr/strings.xml b/indra/newview/skins/default/xui/tr/strings.xml
index 6c1f6506a2..c98de5aab9 100644
--- a/indra/newview/skins/default/xui/tr/strings.xml
+++ b/indra/newview/skins/default/xui/tr/strings.xml
@@ -8,10 +8,10 @@
Second Life
</string>
<string name="APP_NAME">
- Second Life
+ Megapahit
</string>
<string name="CAPITALIZED_APP_NAME">
- SECOND LIFE
+ MEGAPAHIT
</string>
<string name="SECOND_LIFE_GRID">
Second Life Ağı
diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt
index 8381803b03..d33b6d78f7 100644
--- a/indra/viewer_components/login/CMakeLists.txt
+++ b/indra/viewer_components/login/CMakeLists.txt
@@ -1,6 +1,6 @@
# -*- cmake -*-
-project(login)
+project(lllogin)
include(00-Common)
if(LL_TESTS)
@@ -9,21 +9,21 @@ endif(LL_TESTS)
include(LLCommon)
include(LLCoreHttp)
-set(login_SOURCE_FILES
+set(lllogin_SOURCE_FILES
lllogin.cpp
)
-set(login_HEADER_FILES
+set(lllogin_HEADER_FILES
lllogin.h
)
list(APPEND
- login_SOURCE_FILES
- ${login_HEADER_FILES}
+ lllogin_SOURCE_FILES
+ ${lllogin_HEADER_FILES}
)
add_library(lllogin
- ${login_SOURCE_FILES}
+ ${lllogin_SOURCE_FILES}
)
target_include_directories( lllogin INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
@@ -35,6 +35,8 @@ target_link_libraries(lllogin
llxml
)
+include(LibraryInstall)
+
if(LL_TESTS)
SET(lllogin_TEST_SOURCE_FILES
lllogin.cpp