Merge branch 'master' of https://vcs.firestormviewer.org/phoenix-firestorm
commit
e2eda8c2bd
|
|
@ -44,15 +44,28 @@ jobs:
|
|||
run: echo "FS_GRID=-DOPENSIM:BOOL=ON" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
|
||||
- name: Set channel name
|
||||
if: matrix.addrsize == '64'
|
||||
run: echo "FS_RELEASE_CHAN=Releasex64" >> $GITHUB_ENV
|
||||
- name: find channel from Branch name
|
||||
run: |
|
||||
if [[ "${{ github.ref_name }}" == *"Release"* ]]; then
|
||||
FS_RELEASE_CHAN="Release"
|
||||
else
|
||||
FS_RELEASE_CHAN="Beta"
|
||||
fi
|
||||
if [[ "${{ matrix.addrsize }}" == "64" ]]; then
|
||||
FS_RELEASE_CHAN="${FS_RELEASE_CHAN}x64"
|
||||
fi
|
||||
echo "FS_RELEASE_CHAN=\"${FS_RELEASE_CHAN}\"" >> $GITHUB_ENV
|
||||
echo "Building for channel ${FS_RELEASE_CHAN}"
|
||||
shell: bash
|
||||
|
||||
- name: Set channel name for 32 bit
|
||||
if: matrix.addrsize == '32'
|
||||
run: echo "FS_RELEASE_CHAN=Release" >> $GITHUB_ENV
|
||||
shell: bash
|
||||
# - name: Set channel name
|
||||
# if: matrix.addrsize == '64'
|
||||
# run: echo "FS_RELEASE_CHAN=Releasex64" >> $GITHUB_ENV
|
||||
# shell: bash
|
||||
|
||||
# - name: Set channel name for 32 bit
|
||||
# if: matrix.addrsize == '32'
|
||||
# shell: bash
|
||||
|
||||
- name: Set SL flag
|
||||
if: matrix.grid == 'sl'
|
||||
|
|
|
|||
|
|
@ -19,12 +19,8 @@ debian/files
|
|||
debian/secondlife-appearance-utility*
|
||||
debian/secondlife-viewer*
|
||||
indra/.distcc
|
||||
build-vc80/
|
||||
build-vc100/
|
||||
build-vc120/
|
||||
build-vc[0-9]*-32*/
|
||||
build-vc[0-9]*-64*/
|
||||
build-vc160-64/
|
||||
build-vc[0-9]*-32**
|
||||
build-vc[0-9]*-64**
|
||||
indra/CMakeFiles
|
||||
indra/build-vc[0-9]*
|
||||
indra/lib/mono/1.0/*.dll
|
||||
|
|
|
|||
|
|
@ -1098,11 +1098,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>a45bb657d668b7f1b4fa4c88eb81a80a</string>
|
||||
<string>e610f49fa7ed5b10b0cc6409b9bf4afc</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.09-linux64-222891103.tar.bz2</string>
|
||||
<string>file:///opt/firestorm/fmodstudio-2.02.11-linux64-230190114.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux64</string>
|
||||
|
|
@ -1112,11 +1112,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>6dd278518e791dbc2841e337feb295db</string>
|
||||
<string>8b2fff1a0a7e057da99fdade1f9e82ff</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.09-windows-222890940.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.11-windows-230181802.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
@ -1126,18 +1126,18 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>1b7ced6f750b12f0d014556705019534</string>
|
||||
<string>6cf457e2268ed83326c6d77f3475e8f5</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.09-windows64-222890941.tar.bz2</string>
|
||||
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-2.02.11-windows64-230181820.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>2.02.09</string>
|
||||
<string>2.02.11</string>
|
||||
</map>
|
||||
<key>fontconfig</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ for dir in dirs:
|
|||
full_file = os.path.join(args.path_to_directory, dir, file)
|
||||
md5 = get_md5(full_file)
|
||||
base_name = os.path.basename(file)
|
||||
if "-Release-" in base_name:
|
||||
if "-Release-" in base_name or "-Beta-" in base_name:
|
||||
wordsize = "32"
|
||||
else:
|
||||
wordsize = "64"
|
||||
|
|
@ -191,20 +191,24 @@ for dir in dirs:
|
|||
platform = f"{platforms_printable[dir]}"
|
||||
for grid in ["SL", "OS"]:
|
||||
grid_printable = f"{grids_printable[grid]}"
|
||||
print (f"{platform} for {grid_printable} ({wordsize}-bit)")
|
||||
print ( "{}/{}/{}".format(download_root,dir,os.path.basename(file_dict[f"{grid}{dir}{wordsize}"])) )
|
||||
print ()
|
||||
print ( "MD5: {}".format(md5_dict[f"{grid}{dir}{wordsize}"]) )
|
||||
print ()
|
||||
if(dir == "windows"):
|
||||
# Need to do 32 bit as well
|
||||
wordsize = "32"
|
||||
try:
|
||||
print (f"{platform} for {grid_printable} ({wordsize}-bit)")
|
||||
print ( "{}/{}/{}".format(download_root,dir,os.path.basename(file_dict[f"{grid}{dir}{wordsize}"])) )
|
||||
print ()
|
||||
print ( "MD5: {}".format(md5_dict[f"{grid}{dir}{wordsize}"]) )
|
||||
print ()
|
||||
wordsize = "64"
|
||||
if(dir == "windows"):
|
||||
# Need to do 32 bit as well
|
||||
wordsize = "32"
|
||||
print (f"{platform} for {grid_printable} ({wordsize}-bit)")
|
||||
print ( "{}/{}/{}".format(download_root,dir,os.path.basename(file_dict[f"{grid}{dir}{wordsize}"])) )
|
||||
print ()
|
||||
print ( "MD5: {}".format(md5_dict[f"{grid}{dir}{wordsize}"]) )
|
||||
print ()
|
||||
wordsize = "64"
|
||||
except KeyError:
|
||||
print (f"{platform} for {grid_printable} ({wordsize}-bit) - NOT AVAILABLE")
|
||||
print ()
|
||||
|
||||
print('''
|
||||
-------------------------------------------------------------------------------------------------------''')
|
||||
|
|
|
|||
|
|
@ -115,6 +115,9 @@ if(WINDOWS)
|
|||
elseif (MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1930) # Visual Studio 2019
|
||||
set(MSVC_VER 140)
|
||||
set(MSVC_TOOLSET_VER 142)
|
||||
elseif (MSVC_VERSION GREATER_EQUAL 1930 AND MSVC_VERSION LESS 1940) # Visual Studio 2022
|
||||
set(MSVC_VER 140)
|
||||
set(MSVC_TOOLSET_VER 143)
|
||||
else (MSVC80)
|
||||
MESSAGE(WARNING "New MSVC_VERSION ${MSVC_VERSION} of MSVC: adapt Copy3rdPartyLibs.cmake")
|
||||
endif (MSVC80)
|
||||
|
|
@ -253,8 +256,8 @@ elseif(LINUX)
|
|||
#libopenjpeg.so
|
||||
libuuid.so.16
|
||||
libuuid.so.16.0.22
|
||||
libfontconfig.so.1.10.1
|
||||
libfontconfig.so.1
|
||||
#libfontconfig.so.1.10.1 # <FS:PC> fontconfig and freetype should be taken from the
|
||||
#libfontconfig.so.1 # user's system, and not be packaged with the viewer
|
||||
libaprutil-1.so.0
|
||||
libapr-1.so.0
|
||||
)
|
||||
|
|
|
|||
|
|
@ -6,14 +6,14 @@ if (USESYSTEMLIBS)
|
|||
|
||||
pkg_check_modules(FREETYPE REQUIRED freetype2)
|
||||
else (USESYSTEMLIBS)
|
||||
use_prebuilt_binary(freetype)
|
||||
set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
|
||||
set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/freetype2) #<FS:ND/> Also add freetype2 to search dir, or some includes will fail.
|
||||
# <FS:ND> Linux links this via UI.cmake
|
||||
if( NOT LINUX )
|
||||
if (LINUX) # <FS:PC> linux fontconfig and freetype should come
|
||||
find_package(Freetype REQUIRED) # from the user's system
|
||||
else (LINUX) # Linux links this via llwindow/CMakeLists
|
||||
use_prebuilt_binary(freetype)
|
||||
set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
|
||||
set(FREETYPE_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include/freetype2) #<FS:ND/> Also add freetype2 to search dir, or some includes will fail.
|
||||
set(FREETYPE_LIBRARIES freetype)
|
||||
endif()
|
||||
# </FS:ND>
|
||||
endif (USESYSTEMLIBS)
|
||||
|
||||
link_directories(${FREETYPE_LIBRARY_DIRS})
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ else (USESYSTEMLIBS)
|
|||
if (LINUX)
|
||||
set(UI_LIB_NAMES
|
||||
libfltk.a
|
||||
libfreetype.a
|
||||
# libfreetype.a # <FS:PC> fontconfig and freetype should be taken from the user's system, and not be packaged with the viewer
|
||||
)
|
||||
|
||||
foreach(libname ${UI_LIB_NAMES})
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ include(Prebuilt)
|
|||
if (NOT USESYSTEMLIBS)
|
||||
if (LINUX)
|
||||
use_prebuilt_binary(libuuid)
|
||||
use_prebuilt_binary(fontconfig)
|
||||
find_package(Fontconfig REQUIRED) # <FS:PC> fontconfig and freetype should be taken from the
|
||||
# use_prebuilt_binary(fontconfig) # user's system, and not be packaged with the viewer
|
||||
endif (LINUX)
|
||||
use_prebuilt_binary(libhunspell)
|
||||
use_prebuilt_binary(slvoice)
|
||||
|
|
|
|||
|
|
@ -40,6 +40,12 @@
|
|||
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
// <FS:Ansariel> Disable C6011 code analyses warning for now popping up everywhere because of the LL_ENDL / LLERROR_CRASH macro
|
||||
#if LL_WINDOWS
|
||||
#pragma warning (disable : 6011)
|
||||
#endif
|
||||
// </FS:Ansariel>
|
||||
|
||||
// <FS:ND> Supress some false positives of PVS Studio.
|
||||
// They are misleading as there is opossibly a pointr taken behid the array and that pointer is passed down. But it's never dereferenced.
|
||||
//-V:llassert_always:557
|
||||
|
|
|
|||
|
|
@ -482,7 +482,7 @@ static apr_status_t tcp_blocking_handshake(LLSocket::ptr_t handle, char * dataou
|
|||
|
||||
apr_size_t expected_len = outlen;
|
||||
|
||||
handle->setBlocking(1000);
|
||||
handle->setBlocking(100000); // <FS:Beq/> extend the arbitrary timeout value to 100ms. this should be more than enough for most LAN proxies and plenty for a localhost
|
||||
|
||||
rv = apr_socket_send(apr_socket, dataout, &outlen);
|
||||
if (APR_SUCCESS != rv)
|
||||
|
|
@ -498,7 +498,7 @@ static apr_status_t tcp_blocking_handshake(LLSocket::ptr_t handle, char * dataou
|
|||
rv = -1;
|
||||
}
|
||||
|
||||
ms_sleep(1);
|
||||
// ms_sleep(1); // <FS:Beq/> remove the unnecessary sleep.
|
||||
|
||||
if (APR_SUCCESS == rv)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ bool LLTransUtil::parseStrings(const std::string& xml_filename, const std::set<s
|
|||
if (!success)
|
||||
{
|
||||
gDirUtilp->dumpCurrentDirectories(LLError::LEVEL_WARN);
|
||||
LL_ERRS() << "Couldn't load string table " << xml_filename << ". Please reinstall viewer from https://secondlife.com/support/downloads/ and contact https://support.secondlife.com if issue persists after reinstall." << LL_ENDL;
|
||||
LL_ERRS() << "Couldn't load string table " << xml_filename << ". Please reinstall viewer from https://www.firestormviewer.org/choose-your-platform/ and contact https://www.firestormviewer.org/support if issue persists after reinstall." << LL_ENDL;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ set(viewer_HEADER_FILES
|
|||
# Libraries on which this library depends, needed for Linux builds
|
||||
# Sort by high-level to low-level
|
||||
if (LINUX)
|
||||
find_package(Fontconfig REQUIRED) # <FS:PC> fontconfig and freetype should be taken from the user's system
|
||||
set(llwindow_LINK_LIBRARIES
|
||||
${LLCOMMON_LIBRARIES}
|
||||
${LLIMAGE_LIBRARIES}
|
||||
|
|
@ -77,8 +78,10 @@ if (LINUX)
|
|||
${LLXML_LIBRARIES}
|
||||
${UI_LIBRARIES} # for GTK
|
||||
sdl
|
||||
libfontconfig.a # For FCInit and other FC* functions.
|
||||
libfreetype.a
|
||||
# libfontconfig.a # <FS:PC> fontconfig and freetype should
|
||||
# libfreetype.a # be taken from the user's system,
|
||||
Freetype::Freetype # and not be packaged with
|
||||
Fontconfig::Fontconfig # the viewer
|
||||
)
|
||||
|
||||
if( USE_SDL1 )
|
||||
|
|
|
|||
|
|
@ -2267,18 +2267,17 @@ if (WINDOWS)
|
|||
# The following commented dependencies are determined at variably at build time. Can't do this here.
|
||||
${CMAKE_SOURCE_DIR}/../etc/message.xml
|
||||
${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg
|
||||
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/llcommon.dll
|
||||
# ${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/llcommon.dll # <FS:Ansariel> Doesn't exist
|
||||
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libapr-1.dll
|
||||
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libaprutil-1.dll
|
||||
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libapriconv-1.dll
|
||||
# <FS:Beq> Restore GLOD build dependencies
|
||||
${SHARED_LIB_STAGING_DIR}/Release/glod.dll
|
||||
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/glod.dll
|
||||
${SHARED_LIB_STAGING_DIR}/Debug/glod.dll
|
||||
# </FS:Beq>
|
||||
${SHARED_LIB_STAGING_DIR}/Release/libcollada14dom22.dll
|
||||
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/libcollada14dom22.dll
|
||||
${SHARED_LIB_STAGING_DIR}/Debug/libcollada14dom22-d.dll
|
||||
#${SHARED_LIB_STAGING_DIR}/Release/libcollada14dom22.dll # <FS:Ansariel> Doesn't exist
|
||||
#${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/libcollada14dom22.dll # <FS:Ansariel> Doesn't exist
|
||||
#${SHARED_LIB_STAGING_DIR}/Debug/libcollada14dom22-d.dll # <FS:Ansariel> Doesn't exist
|
||||
# <FS:Ansariel> Only copy OpenJPEG dll if needed
|
||||
#${SHARED_LIB_STAGING_DIR}/Release/openjp2.dll
|
||||
#${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/openjp2.dll
|
||||
|
|
@ -2286,13 +2285,13 @@ if (WINDOWS)
|
|||
# </FS:Ansariel>
|
||||
${SHARED_LIB_STAGING_DIR}/Release/libhunspell.dll
|
||||
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/libhunspell.dll
|
||||
${SHARED_LIB_STAGING_DIR}/Debug/libhunspell.dll
|
||||
# ${SHARED_LIB_STAGING_DIR}/Debug/libhunspell.dll # <FS:Ansariel> Doesn't exist
|
||||
${SHARED_LIB_STAGING_DIR}/Release/uriparser.dll
|
||||
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/uriparser.dll
|
||||
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/SLVoice.exe
|
||||
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libsndfile-1.dll
|
||||
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/vivoxoal.dll
|
||||
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/ca-bundle.crt
|
||||
#${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/SLVoice.exe # <FS:Ansariel> Doesn't exist
|
||||
#${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/libsndfile-1.dll # <FS:Ansariel> Doesn't exist
|
||||
#${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/vivoxoal.dll # <FS:Ansariel> Doesn't exist
|
||||
#${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/ca-bundle.crt # <FS:Ansariel> Doesn't exist
|
||||
${GOOGLE_PERF_TOOLS_SOURCE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/licenses-win32.txt
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/featuretable.txt
|
||||
|
|
@ -2334,7 +2333,7 @@ if (WINDOWS)
|
|||
list(APPEND COPY_INPUT_DEPENDENCIES
|
||||
${SHARED_LIB_STAGING_DIR}/Release/fmod.dll
|
||||
${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/fmod.dll
|
||||
${SHARED_LIB_STAGING_DIR}/Debug/fmodL.dll
|
||||
#${SHARED_LIB_STAGING_DIR}/Debug/fmodL.dll # <FS:Ansariel> Doesn't exist
|
||||
)
|
||||
endif (FMODSTUDIO)
|
||||
|
||||
|
|
|
|||
|
|
@ -149,7 +149,8 @@ public:
|
|||
mNeedsTimeBox(true),
|
||||
mTimeBoxTextBox(NULL),
|
||||
mHeaderLayoutStack(NULL),
|
||||
mAvatarNameCacheConnection()
|
||||
mAvatarNameCacheConnection(),
|
||||
mTime(0)
|
||||
{}
|
||||
|
||||
static FSChatHistoryHeader* createInstance(const std::string& file_name)
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ exportMutliArchDRIPath() {
|
|||
|
||||
## Help fontconfig find its default configuration file, otherwise the viewer will stall
|
||||
## with Fontconfig error: Cannot load default config file
|
||||
export FONTCONFIG_PATH=/etc/fonts
|
||||
# export FONTCONFIG_PATH=/etc/fonts
|
||||
|
||||
if [ "`uname -m`" = "x86_64" ]; then
|
||||
echo '64-bit Linux detected.'
|
||||
|
|
|
|||
|
|
@ -2931,15 +2931,15 @@ bool LLAppViewer::initConfiguration()
|
|||
if (gDirUtilp->fileExists(settings_file_list))
|
||||
{
|
||||
LL_ERRS() << "Cannot load default configuration file settings_files.xml. "
|
||||
<< "Please reinstall viewer from https://secondlife.com/support/downloads/ "
|
||||
<< "and contact https://support.secondlife.com if issue persists after reinstall."
|
||||
<< "Please reinstall viewer from https://www.firestormviewer.org/choose-your-platform/ "
|
||||
<< "and contact https://www.firestormviewer.org/support if issue persists after reinstall."
|
||||
<< LL_ENDL;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_ERRS() << "Default configuration file settings_files.xml not found. "
|
||||
<< "Please reinstall viewer from https://secondlife.com/support/downloads/ "
|
||||
<< "and contact https://support.secondlife.com if issue persists after reinstall."
|
||||
<< "Please reinstall viewer from https://www.firestormviewer.org/choose-your-platform/ "
|
||||
<< "and contact https://www.firestormviewer.org/support if issue persists after reinstall."
|
||||
<< LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -300,9 +300,9 @@ BOOL LLNameListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
|||
{
|
||||
LLNameListItem* hit_item = dynamic_cast<LLNameListItem*>(hitItem(x, y));
|
||||
LLFloater* floater = gFloaterView->getParentFloater(this);
|
||||
if (floater && floater->isFrontmost() && hit_item)
|
||||
if (floater && floater->isFrontmost() && hit_item && hit_item->isGroup()) // <FS:Ansariel> Fix wrong check
|
||||
{
|
||||
if(hit_item->isGroup())
|
||||
//if(hit_item->isGroup()) // <FS:Ansariel> Fix wrong check
|
||||
{
|
||||
ContextMenuType prev_menu = getContextMenuType();
|
||||
setContextMenu(MENU_GROUP);
|
||||
|
|
@ -311,7 +311,9 @@ BOOL LLNameListCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
|||
return handled;
|
||||
}
|
||||
}
|
||||
return LLScrollListCtrl::handleRightMouseDown(x, y, mask);
|
||||
// <FS:Ansariel> Inherit from FSScrollListCtrl for additional features
|
||||
//return LLScrollListCtrl::handleRightMouseDown(x, y, mask);
|
||||
return FSScrollListCtrl::handleRightMouseDown(x, y, mask);
|
||||
}
|
||||
|
||||
// public
|
||||
|
|
|
|||
|
|
@ -2235,7 +2235,7 @@ void LLPanelProfileSecondLife::onSaveDescriptionChanges()
|
|||
}
|
||||
// <FS:Beq> Restore UDP profiles
|
||||
#ifdef OPENSIM
|
||||
else if(LLGridManager::getInstance()->isInOpenSim())
|
||||
else if (LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
if (getIsLoaded() && getSelfProfile())
|
||||
{
|
||||
|
|
@ -2482,7 +2482,7 @@ void LLPanelProfileSecondLife::onCommitProfileImage(const LLUUID& id)
|
|||
{
|
||||
// <FS:Beq> Make OpenSim profiles work again
|
||||
#ifdef OPENSIM
|
||||
if(LLGridManager::getInstance()->isInOpenSim())
|
||||
if (LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
mImageId = id;
|
||||
// save immediately only if description changes are not pending.
|
||||
|
|
@ -2870,7 +2870,7 @@ void LLPanelProfileFirstLife::onCommitPhoto(const LLUUID& id)
|
|||
{
|
||||
// <FS:Beq> Make OpenSim profiles work again
|
||||
#ifdef OPENSIM
|
||||
if(LLGridManager::getInstance()->isInOpenSim())
|
||||
if (LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
mImageId = id;
|
||||
mImageId = id;
|
||||
|
|
@ -2915,7 +2915,7 @@ void LLPanelProfileFirstLife::onSaveDescriptionChanges()
|
|||
}
|
||||
// <FS:Beq> Restore UDP profiles
|
||||
#ifdef OPENSIM
|
||||
else if(LLGridManager::getInstance()->isInOpenSim())
|
||||
else if (LLGridManager::getInstance()->isInOpenSim())
|
||||
{
|
||||
if (getIsLoaded() && getSelfProfile())
|
||||
{
|
||||
|
|
@ -3069,7 +3069,7 @@ void LLPanelProfileNotes::updateData()
|
|||
}
|
||||
// <FS:Beq> Restore UDO profiles
|
||||
#ifdef OPENSIM
|
||||
else
|
||||
else if(LLGridManager::instance().isInOpenSim())
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarNotesRequest(avatar_id);
|
||||
}
|
||||
|
|
@ -3132,6 +3132,14 @@ void LLPanelProfileNotes::onSaveNotesChanges()
|
|||
LLCoros::instance().launch("putAgentUserInfoCoro",
|
||||
boost::bind(put_avatar_properties_coro, cap_url, getAvatarId(), LLSD().with("notes", mCurrentNotes)));
|
||||
}
|
||||
// <FS:Beq> Restore UDO profiles
|
||||
#ifdef OPENSIM
|
||||
else if (LLGridManager::instance().isInOpenSim())
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendNotes(getAvatarId(), mCurrentNotes);
|
||||
}
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
else
|
||||
{
|
||||
LL_WARNS("AvatarProperties") << "Failed to update profile data, no cap found" << LL_ENDL;
|
||||
|
|
@ -3250,19 +3258,25 @@ void LLPanelProfile::updateData()
|
|||
// include 'inited' or 'data_provided' state to not rerequest
|
||||
if (!getStarted() && avatar_id.notNull())
|
||||
{
|
||||
// <FS:Beq> Restore UDP profiles
|
||||
#ifdef OPENSIM
|
||||
if (LLGridManager::instance().isInOpenSim())
|
||||
{
|
||||
mPanelSecondlife->updateData();
|
||||
mPanelPicks->updateData();
|
||||
mPanelFirstlife->updateData();
|
||||
mPanelNotes->updateData();
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
// </FS:Beq>
|
||||
setIsLoading();
|
||||
mPanelSecondlife->setIsLoading();
|
||||
mPanelPicks->setIsLoading();
|
||||
mPanelFirstlife->setIsLoading();
|
||||
mPanelNotes->setIsLoading();
|
||||
// <FS:Beq> Restore UDP profiles
|
||||
#ifdef OPENSIM
|
||||
mPanelSecondlife->updateData();
|
||||
mPanelPicks->updateData();
|
||||
mPanelFirstlife->updateData();
|
||||
mPanelNotes->updateData();
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
} // <FS:Beq/> restore udp profiles
|
||||
std::string cap_url = gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP);
|
||||
if (!cap_url.empty())
|
||||
{
|
||||
|
|
@ -3270,10 +3284,12 @@ void LLPanelProfile::updateData()
|
|||
boost::bind(request_avatar_properties_coro, cap_url, avatar_id));
|
||||
}
|
||||
// <FS:Beq> Restore UDP profiles
|
||||
else
|
||||
#ifdef OPENSIM
|
||||
else if (LLGridManager::instance().isInOpenSim())
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(avatar_id);
|
||||
}
|
||||
#endif
|
||||
// </FS:Beq>
|
||||
}
|
||||
}
|
||||
|
|
@ -3331,7 +3347,7 @@ void LLPanelProfile::commitUnsavedChanges()
|
|||
mPanelNotes->commitUnsavedChanges();
|
||||
// <FS:Beq> restore UDP - this is effectvely the apply() method from the previous incarnation
|
||||
#ifdef OPENSIM
|
||||
if ( (gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP).empty()) && getSelfProfile() )
|
||||
if (LLGridManager::instance().isInOpenSim() && (gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP).empty()) && getSelfProfile())
|
||||
{
|
||||
//KC - Avatar data is spread over 3 different panels
|
||||
// collect data from the last 2 and give to the first to save
|
||||
|
|
|
|||
|
|
@ -1440,7 +1440,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
|
|||
LL_WARNS(LOG_TXT) << "trying to seek a non-default texture on the sim. Bad!" << LL_ENDL;
|
||||
}
|
||||
setUrl(http_url + "/?texture_id=" + mID.asString().c_str());
|
||||
LL_WARNS(LOG_TXT) << "Texture URL: " << mUrl << LL_ENDL;
|
||||
LL_DEBUGS(LOG_TXT) << "Texture URL: " << mUrl << LL_ENDL;
|
||||
mWriteToCacheState = CAN_WRITE ; //because this texture has a fixed texture id.
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -812,13 +812,12 @@ BOOL LLToolCompGun::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
|||
// NaCl - Rightclick-mousewheel zoom
|
||||
if (!(gKeyboard->currentMask(TRUE) & MASK_ALT))
|
||||
{
|
||||
static LLCachedControl<LLVector3> _NACL_MLFovValues(gSavedSettings,"_NACL_MLFovValues");
|
||||
static LLCachedControl<F32> CameraAngle(gSavedSettings,"CameraAngle");
|
||||
LLVector3 vTemp=_NACL_MLFovValues;
|
||||
vTemp.mV[0]=CameraAngle;
|
||||
vTemp.mV[2]=1.0f;
|
||||
gSavedSettings.setVector3("_NACL_MLFovValues",vTemp);
|
||||
gSavedSettings.setF32("CameraAngle",vTemp.mV[1]);
|
||||
LLVector3 _NACL_MLFovValues = gSavedSettings.getVector3("_NACL_MLFovValues");
|
||||
F32 CameraAngle = gSavedSettings.getF32("CameraAngle");
|
||||
_NACL_MLFovValues.mV[VX] = CameraAngle;
|
||||
_NACL_MLFovValues.mV[VZ] = 1.0f;
|
||||
gSavedSettings.setVector3("_NACL_MLFovValues", _NACL_MLFovValues);
|
||||
gSavedSettings.setF32("CameraAngle", _NACL_MLFovValues.mV[VY]);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -832,16 +831,15 @@ BOOL LLToolCompGun::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
|||
// NaCl - Rightclick-mousewheel zoom
|
||||
BOOL LLToolCompGun::handleRightMouseUp(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
static LLCachedControl<LLVector3> _NACL_MLFovValues(gSavedSettings,"_NACL_MLFovValues");
|
||||
static LLCachedControl<F32> CameraAngle(gSavedSettings,"CameraAngle");
|
||||
LLVector3 vTemp=_NACL_MLFovValues;
|
||||
LLVector3 _NACL_MLFovValues = gSavedSettings.getVector3("_NACL_MLFovValues");
|
||||
F32 CameraAngle = gSavedSettings.getF32("CameraAngle");
|
||||
// Only reset if zoomed
|
||||
if (vTemp.mV[2] == 1.0f)
|
||||
if (_NACL_MLFovValues.mV[VZ] == 1.0f)
|
||||
{
|
||||
vTemp.mV[1]=CameraAngle;
|
||||
vTemp.mV[2]=0.0f;
|
||||
gSavedSettings.setVector3("_NACL_MLFovValues",vTemp);
|
||||
gSavedSettings.setF32("CameraAngle",vTemp.mV[0]);
|
||||
_NACL_MLFovValues.mV[VY] = CameraAngle;
|
||||
_NACL_MLFovValues.mV[VZ] = 0.0f;
|
||||
gSavedSettings.setVector3("_NACL_MLFovValues", _NACL_MLFovValues);
|
||||
gSavedSettings.setF32("CameraAngle", _NACL_MLFovValues.mV[VX]);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -883,15 +881,14 @@ void LLToolCompGun::handleDeselect()
|
|||
BOOL LLToolCompGun::handleScrollWheel(S32 x, S32 y, S32 clicks)
|
||||
{
|
||||
// NaCl - Rightclick-mousewheel zoom
|
||||
static LLCachedControl<LLVector3> _NACL_MLFovValues(gSavedSettings, "_NACL_MLFovValues");
|
||||
static LLCachedControl<F32> CameraAngle(gSavedSettings, "CameraAngle");
|
||||
LLVector3 vTemp = _NACL_MLFovValues;
|
||||
vTemp.mV[VY] = CameraAngle;
|
||||
if (vTemp.mV[VZ] > 0.0f)
|
||||
LLVector3 _NACL_MLFovValues = gSavedSettings.getVector3("_NACL_MLFovValues");
|
||||
F32 CameraAngle = gSavedSettings.getF32("CameraAngle");
|
||||
_NACL_MLFovValues.mV[VY] = CameraAngle;
|
||||
if (_NACL_MLFovValues.mV[VZ] > 0.0f)
|
||||
{
|
||||
vTemp.mV[VY] = llclamp(vTemp.mV[VY] + (F32)(clicks * 0.1f), LLViewerCamera::getInstance()->getMinView(), LLViewerCamera::getInstance()->getMaxView());
|
||||
gSavedSettings.setVector3("_NACL_MLFovValues", vTemp);
|
||||
gSavedSettings.setF32("CameraAngle", vTemp.mV[VY]);
|
||||
_NACL_MLFovValues.mV[VY] = llclamp(_NACL_MLFovValues.mV[VY] + (F32)(clicks * 0.1f), LLViewerCamera::getInstance()->getMinView(), LLViewerCamera::getInstance()->getMaxView());
|
||||
gSavedSettings.setVector3("_NACL_MLFovValues", _NACL_MLFovValues);
|
||||
gSavedSettings.setF32("CameraAngle", _NACL_MLFovValues.mV[VY]);
|
||||
}
|
||||
else if (clicks > 0 && gSavedSettings.getBOOL("FSScrollWheelExitsMouselook"))
|
||||
// NaCl End
|
||||
|
|
|
|||
|
|
@ -1163,7 +1163,7 @@ LLPointer<LLControlVariable> setting_get_control(LLControlGroup& group, const st
|
|||
if (cntrl_ptr.isNull())
|
||||
{
|
||||
LL_ERRS() << "Unable to set up setting listener for " << setting
|
||||
<< ". Please reinstall viewer from https ://secondlife.com/support/downloads/ and contact https://support.secondlife.com if issue persists after reinstall."
|
||||
<< ". Please reinstall viewer from https://www.firestormviewer.org/choose-your-platform/ and contact https://www.firestormviewer.org/support if issue persists after reinstall."
|
||||
<< LL_ENDL;
|
||||
}
|
||||
return cntrl_ptr;
|
||||
|
|
@ -1239,7 +1239,7 @@ void settings_setup_listeners()
|
|||
setting_setup_signal_listener(gSavedSettings, "RenderDeferredSSAO", handleSetShaderChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderPerformanceTest", handleRenderPerfTestChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "TextureMemory", handleVideoMemoryChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "ChatFontSize", handleChatFontSizeChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "ChatConsoleFontSize", handleChatFontSizeChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "ChatPersistTime", handleChatPersistTimeChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "ConsoleMaxLines", handleConsoleMaxLinesChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "UploadBakedTexOld", handleUploadBakedTexOldChanged);
|
||||
|
|
|
|||
|
|
@ -5612,15 +5612,14 @@ class LLViewMouselook : public view_listener_t
|
|||
else
|
||||
{
|
||||
// NaCl - Rightclick-mousewheel zoom
|
||||
static LLCachedControl<LLVector3> _NACL_MLFovValues(gSavedSettings,"_NACL_MLFovValues");
|
||||
static LLCachedControl<F32> CameraAngle(gSavedSettings,"CameraAngle");
|
||||
LLVector3 vTemp=_NACL_MLFovValues;
|
||||
if(vTemp.mV[2] > 0.0f)
|
||||
LLVector3 _NACL_MLFovValues = gSavedSettings.getVector3("_NACL_MLFovValues");
|
||||
F32 CameraAngle = gSavedSettings.getF32("CameraAngle");
|
||||
if (_NACL_MLFovValues.mV[VZ] > 0.0f)
|
||||
{
|
||||
vTemp.mV[1]=CameraAngle;
|
||||
vTemp.mV[2]=0.0f;
|
||||
gSavedSettings.setVector3("_NACL_MLFovValues",vTemp);
|
||||
gSavedSettings.setF32("CameraAngle",vTemp.mV[0]);
|
||||
_NACL_MLFovValues.mV[VY] = CameraAngle;
|
||||
_NACL_MLFovValues.mV[VZ] = 0.0f;
|
||||
gSavedSettings.setVector3("_NACL_MLFovValues", _NACL_MLFovValues);
|
||||
gSavedSettings.setF32("CameraAngle", _NACL_MLFovValues.mV[VX]);
|
||||
}
|
||||
// NaCl End
|
||||
gAgentCamera.changeCameraToDefault();
|
||||
|
|
|
|||
|
|
@ -5194,7 +5194,8 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data)
|
|||
if (!avatarp)
|
||||
{
|
||||
// no agent by this ID...error?
|
||||
LL_WARNS("Messaging") << "Received animation state for unknown avatar " << uuid << LL_ENDL;
|
||||
if (!gSavedSettings.getBOOL("FSRenderFriendsOnly")) // <FS:Ansariel> FIRE-32520: Prevent log spam when show friends only is enabled
|
||||
LL_WARNS("Messaging") << "Received animation state for unknown avatar " << uuid << LL_ENDL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,21 @@
|
|||
<button label="Erlebnis" name="Expand Experience"/>
|
||||
<check_box label="Verwendet Erlebnis" name="enable_xp"/>
|
||||
<layout_stack name="xp_details">
|
||||
<layout_panel>
|
||||
<layout_panel name="xp_layout_panel">
|
||||
<text name="lbl_script">
|
||||
Skript:
|
||||
</text>
|
||||
<text name="lbl_associated">
|
||||
Assoziiert mit:
|
||||
</text>
|
||||
<text name="lbl_contribute">
|
||||
Sie können beitragen:
|
||||
</text>
|
||||
<text name="lbl_associate">
|
||||
Assoziieren mit:
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel name="xp_choose_panel">
|
||||
<combo_box label="Erlebnis auswählen..." name="Experiences..."/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
|
|
|||
|
|
@ -48,23 +48,28 @@
|
|||
layout="topleft"
|
||||
visible="false">
|
||||
<layout_panel width="120"
|
||||
height="140">
|
||||
<text >
|
||||
height="140"
|
||||
name="xp_layout_panel">
|
||||
<text name="lbl_script">
|
||||
Script:
|
||||
</text>
|
||||
<text bottom_delta="25">
|
||||
<text bottom_delta="25"
|
||||
name="lbl_associated">
|
||||
Associated with:
|
||||
</text>
|
||||
<text bottom_delta="25">
|
||||
<text bottom_delta="25"
|
||||
name="lbl_contribute">
|
||||
You can contribute:
|
||||
</text>
|
||||
<text bottom_delta="25">
|
||||
<text bottom_delta="25"
|
||||
name="lbl_associate">
|
||||
Associate with:
|
||||
</text>
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel width="250"
|
||||
height="140">
|
||||
height="140"
|
||||
name="xp_choose_panel">
|
||||
<text >
|
||||
EasySit Animator 1.2.4
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -3,13 +3,21 @@
|
|||
<button name="Expand Experience" label="Expérience"/>
|
||||
<check_box label="Utiliser de l'expérience" name="enable_xp"/>
|
||||
<layout_stack name="xp_details">
|
||||
<layout_panel>
|
||||
<text>Script :</text>
|
||||
<text>En association avec :</text>
|
||||
<text>Vous pouvez contribuer :</text>
|
||||
<text>Associé avec :</text>
|
||||
<layout_panel name="xp_layout_panel">
|
||||
<text name="lbl_script">
|
||||
Script :
|
||||
</text>
|
||||
<text name="lbl_associated">
|
||||
En association avec :
|
||||
</text>
|
||||
<text name="lbl_contribute">
|
||||
Vous pouvez contribuer :
|
||||
</text>
|
||||
<text name="lbl_associate">
|
||||
Associé avec :
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel>
|
||||
<layout_panel name="xp_choose_panel">
|
||||
<combo_box label="Sélectionner une expérience..." name="Experiences..."/>
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
|
|
|||
|
|
@ -3,21 +3,21 @@
|
|||
<button name="Expand Experience" label="Przygoda" />
|
||||
<check_box label="Używa przygody" name="enable_xp" />
|
||||
<layout_stack name="xp_details">
|
||||
<layout_panel>
|
||||
<text>
|
||||
<layout_panel name="xp_layout_panel">
|
||||
<text name="lbl_script">
|
||||
Skrypt:
|
||||
</text>
|
||||
<text>
|
||||
<text name="lbl_associated">
|
||||
Powiązane z:
|
||||
</text>
|
||||
<text>
|
||||
<text name="lbl_contribute">
|
||||
Możesz uczestniczyć:
|
||||
</text>
|
||||
<text>
|
||||
<text name="lbl_associate">
|
||||
Powiąż z:
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel>
|
||||
<layout_panel name="xp_choose_panel">
|
||||
<combo_box label="Wybierz przygodę..." name="Experiences..." />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<panel name="script_experience" title="Приключение">
|
||||
<button label="Приключение" name="Expand Experience"/>
|
||||
<check_box label="Используется приключение" name="enable_xp"/>
|
||||
<button name="Expand Experience" label="Приключение"/>
|
||||
<check_box name="enable_xp" label="Используется Приключение"/>
|
||||
<layout_stack name="xp_details">
|
||||
<layout_panel>
|
||||
<combo_box label="Выбрать приключение..." name="Experiences..."/>
|
||||
<layout_panel name="xp_layout_panel">
|
||||
<text name="lbl_script">
|
||||
Сценарий:
|
||||
</text>
|
||||
<text name="lbl_associated">
|
||||
Связано с:
|
||||
</text>
|
||||
<text name="lbl_contribute">
|
||||
Вы можете внести вклад:
|
||||
</text>
|
||||
<text name="lbl_associate">
|
||||
Связано с:
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel name="xp_choose_panel">
|
||||
<combo_box name="Experiences..." label="Выбрать Приключение..." />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
<text name="No Experiences">
|
||||
Вы не являетесь автором приключений.
|
||||
Вы не являетесь соучастником какого-либо приключения.
|
||||
</text>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public:
|
|||
~StreamTitleDisplay() { }
|
||||
|
||||
protected:
|
||||
void initSingleton() override;
|
||||
void initSingleton() /*override*/;
|
||||
void checkMetadata(const LLSD& metadata);
|
||||
void sendStreamTitleToChat(std::string_view Title);
|
||||
|
||||
|
|
|
|||
|
|
@ -630,8 +630,8 @@ class WindowsManifest(ViewerManifest):
|
|||
|
||||
# These need to be installed as a SxS assembly, currently a 'private' assembly.
|
||||
# See http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx
|
||||
self.path_optional("msvcp140.dll") # FS:ND make them optional to be able to build with VS2022, on a developer PC this will not be harmful
|
||||
self.path_optional("vcruntime140.dll") # FS:ND make them optional to be able to build with VS2022, on a developer PC this will not be harmful
|
||||
self.path("msvcp140.dll")
|
||||
self.path("vcruntime140.dll")
|
||||
self.path_optional("vcruntime140_1.dll")
|
||||
|
||||
# SLVoice executable
|
||||
|
|
@ -722,11 +722,10 @@ class WindowsManifest(ViewerManifest):
|
|||
self.path("v8_context_snapshot.bin")
|
||||
|
||||
# MSVC DLLs needed for CEF and have to be in same directory as plugin
|
||||
# FS:ND They are all optional, as when compilig with VS2022 they won't be available'
|
||||
with self.prefix(src=os.path.join(self.args['build'], os.pardir,
|
||||
'sharedlibs', 'Release')):
|
||||
self.path_optional("msvcp140.dll")
|
||||
self.path_optional("vcruntime140.dll")
|
||||
self.path("msvcp140.dll")
|
||||
self.path("vcruntime140.dll")
|
||||
self.path_optional("vcruntime140_1.dll")
|
||||
|
||||
# CEF files common to all configurations
|
||||
|
|
@ -2204,10 +2203,10 @@ class Linux_i686_Manifest(LinuxManifest):
|
|||
# particular wildcard specification gets us exactly what the
|
||||
# previous call did, without having to explicitly state the
|
||||
# version number.
|
||||
self.path("libfontconfig.so.*.*")
|
||||
# self.path("libfontconfig.so.*.*") # <FS:PC> fontconfig and freetype should be taken from the user's system
|
||||
|
||||
# Include libfreetype.so. but have it work as libfontconfig does.
|
||||
self.path("libfreetype.so.*.*")
|
||||
# self.path("libfreetype.so.*.*") # <FS:PC> fontconfig and freetype should be taken from the user's system
|
||||
|
||||
try:
|
||||
self.path("libtcmalloc.so*") #formerly called google perf tools
|
||||
|
|
|
|||
Loading…
Reference in New Issue