Ansariel 2023-01-25 14:41:15 +01:00
commit e2eda8c2bd
30 changed files with 228 additions and 147 deletions

View File

@ -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'

8
.gitignore vendored
View File

@ -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

View File

@ -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>

View File

@ -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('''
-------------------------------------------------------------------------------------------------------''')

View File

@ -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
)

View File

@ -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})

View File

@ -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})

View File

@ -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)

View File

@ -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

View File

@ -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)
{

View File

@ -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;
}

View File

@ -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 )

View File

@ -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)

View File

@ -149,7 +149,8 @@ public:
mNeedsTimeBox(true),
mTimeBoxTextBox(NULL),
mHeaderLayoutStack(NULL),
mAvatarNameCacheConnection()
mAvatarNameCacheConnection(),
mTime(0)
{}
static FSChatHistoryHeader* createInstance(const std::string& file_name)

View File

@ -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.'

View File

@ -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;
}
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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();

View File

@ -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;
}

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -40,7 +40,7 @@ public:
~StreamTitleDisplay() { }
protected:
void initSingleton() override;
void initSingleton() /*override*/;
void checkMetadata(const LLSD& metadata);
void sendStreamTitleToChat(std::string_view Title);

View File

@ -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