Merge Firestorm LGPL

meow-7.2.2
Ansariel 2018-11-14 19:18:39 +01:00
commit d794014c90
7 changed files with 110 additions and 56 deletions

View File

@ -952,11 +952,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>f6834ad22f311cf1e7091b90339531c0</string>
<string>e137cd0eacda5df6204150b3bb51a971</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///opt/firestorm/fmodstudio-1.10.08-darwin-182341402.tar.bz2</string>
<string>file:///opt/firestorm/fmodstudio-1.10.09-darwin-183011234.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -966,11 +966,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>4fc2133e8ad5bb206671e7f9dffc7d2d</string>
<string>55abf769c33f10f9badb06eff85951f3</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///opt/firestorm/fmodstudio-1.10.08-linux-182341500.tar.bz2</string>
<string>file:///opt/firestorm/fmodstudio-1.10.09-linux-183002243.tar.bz2</string>
</map>
<key>name</key>
<string>linux</string>
@ -980,11 +980,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>05f7f1790a3c57ec9741bd45bade9c43</string>
<string>2318b66522d1247ae7887d39bcab4ec7</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///opt/firestorm/fmodstudio-1.10.08-linux64-182341501.tar.bz2</string>
<string>file:///opt/firestorm/fmodstudio-1.10.09-linux64-183002242.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>
@ -994,11 +994,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>ccce662b1f3d31868093c6a25fdee3f5</string>
<string>1693b43fbab6699e26d9f2767c336539</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-1.10.08-windows-182340821.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-1.10.09-windows-183001324.tar.bz2</string>
</map>
<key>name</key>
<string>windows</string>
@ -1008,11 +1008,11 @@
<key>archive</key>
<map>
<key>hash</key>
<string>d796487f8504586309981f4eaa12e985</string>
<string>2483cdd2b241bda235e7bbe7040e862f</string>
<key>hash_algorithm</key>
<string>md5</string>
<key>url</key>
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-1.10.08-windows64-182340822.tar.bz2</string>
<string>file:///c:/cygwin/opt/firestorm/fmodstudio-1.10.09-windows64-183001326.tar.bz2</string>
</map>
<key>name</key>
<string>windows64</string>
@ -1976,9 +1976,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>814bec3fa5045a18dce2bc4ce78b585d</string>
<string>1b87073540bf081136e60777d99f09f2</string>
<key>url</key>
<string>file:///opt/firestorm/kdu-7.A.4-darwin-180792321.tar.bz2</string>
<string>file:///opt/firestorm/kdu-7.A.5-darwin-182950050.tar.bz2</string>
</map>
<key>name</key>
<string>darwin</string>
@ -2000,9 +2000,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>fa8a0db7f4900663f5d58eaac2b782b5</string>
<string>daa35834257d08b59e876388d1244de8</string>
<key>url</key>
<string>file:///opt/firestorm/kdu-7.A.4-linux-180892203.tar.bz2</string>
<string>file:///opt/firestorm/kdu-7.A.5-linux-182931105.tar.bz2</string>
</map>
<key>name</key>
<string>linux</string>
@ -2012,9 +2012,9 @@
<key>archive</key>
<map>
<key>hash</key>
<string>fa8a0db7f4900663f5d58eaac2b782b5</string>
<string>daa35834257d08b59e876388d1244de8</string>
<key>url</key>
<string>file:///opt/firestorm/kdu-7.A.4-linux-180892203.tar.bz2</string>
<string>file:///opt/firestorm/kdu-7.A.5-linux-182931105.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>
@ -2898,9 +2898,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key>
<map>
<key>hash</key>
<string>e45ddfd82b5d18408f849c53800e468a</string>
<string>246ed298944fd5200e4cac3703d6e075</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/open_libndofdev-0.8.182090947-linux-182090947.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/open_libndofdev-0.9.183150124-linux-183150124.tar.bz2</string>
</map>
<key>name</key>
<string>linux</string>
@ -2910,9 +2910,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
<key>archive</key>
<map>
<key>hash</key>
<string>fc7ad14e06b4ac70a1d3849ef81ac844</string>
<string>db8a7126178e7230fd6917a28cd67bd7</string>
<key>url</key>
<string>http://downloads.phoenixviewer.com/open_libndofdev-0.8.182090946-linux64-182090946.tar.bz2</string>
<string>http://downloads.phoenixviewer.com/open_libndofdev-0.9.183150121-linux64-183150121.tar.bz2</string>
</map>
<key>name</key>
<string>linux64</string>

View File

@ -268,6 +268,39 @@ int LLFile::rename(const std::string& filename, const std::string& newname, int
int rc = _wrename(utf16filename.c_str(),utf16newname.c_str());
#else
int rc = ::rename(filename.c_str(),newname.c_str());
//<FS:Beq> FIRE-21669 & FIRE-11276 cross volume link rename workaround.
// Note: This workaround generalises the solution previously applied in llxfer_file.
// In doing this we add more failure modes to the operation, the copy can fail, the unlink can fail, in fact the copy can fail for multiple reasons.
// "A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools." - Douglas Adams, Mostly harmless
if (rc)
{
S32 error_number = errno;
LL_INFOS("LLFile") << "Rename failure (" << error_number << ") - " << filename << " to " << newname << LL_ENDL;
if (EXDEV == error_number)
{
if (copy(filename, newname)==true) // sigh in their wisdom LL decided that copy returns bool true not 0 whjen no error. using == true to make that clear.
{
LL_INFOS("LLFile") << "Rename across mounts not supported; copying+unlinking the file instead." << LL_ENDL;
rc = LLFile::remove(filename);
if (rc)
{
LL_WARNS("LLFile") << "unlink failed during copy/unlink workaround. Please check for stray file: " << filename << LL_ENDL;
}
}
else
{
LL_WARNS("LLFile") << "Copy failure during rename workaround for rename " << filename << " to " << newname << " (check both filenames and maunally rectify)" << LL_ENDL;
}
rc=0; // We need to reset rc here to avoid the higher level function taking corrective action on what could be bad files.
}
else
{
LL_WARNS("LLFile") << "Rename fatally failed, no workaround attempted for errno="
<< errno << "." << LL_ENDL;
// rc will propogate alllowing corrective action above. Not entirely happy with this but it is what already happens so we're not making it worse.
}
}
//</FS:Beq>
#endif
return warnif(STRINGIZE("rename to '" << newname << "' from"), filename, rc, supress_error);
}

View File

@ -362,40 +362,44 @@ S32 LLXfer_File::processEOF()
{
if (LLFile::rename(mTempFilename,mLocalFilename))
{
#if !LL_WINDOWS
S32 error_number = errno;
LL_INFOS("Xfer") << "Rename failure (" << error_number << ") - "
<< mTempFilename << " to " << mLocalFilename << LL_ENDL;
if(EXDEV == error_number)
{
if(copy_file(mTempFilename, mLocalFilename) == 0)
{
LL_INFOS("Xfer") << "Rename across mounts; copying+unlinking the file instead." << LL_ENDL;
unlink(mTempFilename.c_str());
}
else
{
LL_WARNS("Xfer") << "Copy failure - " << mTempFilename << " to "
<< mLocalFilename << LL_ENDL;
}
}
else
{
//LLFILE* fp = LLFile::fopen(mTempFilename, "r");
//LL_WARNS() << "File " << mTempFilename << " does "
// << (!fp ? "not" : "" ) << " exit." << LL_ENDL;
//if(fp) fclose(fp);
//fp = LLFile::fopen(mLocalFilename, "r");
//LL_WARNS() << "File " << mLocalFilename << " does "
// << (!fp ? "not" : "" ) << " exit." << LL_ENDL;
//if(fp) fclose(fp);
LL_WARNS("Xfer") << "Rename fatally failed, can only handle EXDEV ("
<< EXDEV << ")" << LL_ENDL;
}
#else
//<FS:Beq> FIRE-21669/FIRE-11276 : move similar fucntionality down into LLFile
//#if !LL_WINDOWS
// S32 error_number = errno;
// LL_INFOS("Xfer") << "Rename failure (" << error_number << ") - "
// << mTempFilename << " to " << mLocalFilename << LL_ENDL;
// if(EXDEV == error_number)
// {
// if(copy_file(mTempFilename, mLocalFilename) == 0)
// {
// LL_INFOS("Xfer") << "Rename across mounts; copying+unlinking the file instead." << LL_ENDL;
// unlink(mTempFilename.c_str());
// }
// else
// {
// LL_WARNS("Xfer") << "Copy failure - " << mTempFilename << " to "
// << mLocalFilename << LL_ENDL;
// }
// }
// else
// {
// //LLFILE* fp = LLFile::fopen(mTempFilename, "r");
// //LL_WARNS() << "File " << mTempFilename << " does "
// // << (!fp ? "not" : "" ) << " exit." << LL_ENDL;
// //if(fp) fclose(fp);
// //fp = LLFile::fopen(mLocalFilename, "r");
// //LL_WARNS() << "File " << mLocalFilename << " does "
// // << (!fp ? "not" : "" ) << " exit." << LL_ENDL;
// //if(fp) fclose(fp);
// LL_WARNS("Xfer") << "Rename fatally failed, can only handle EXDEV ("
// << EXDEV << ")" << LL_ENDL;
// }
//#else
// LL_WARNS("Xfer") << "Rename failure - " << mTempFilename << " to "
// << mLocalFilename << LL_ENDL;
//#endif
//</FS:Beq>
LL_WARNS("Xfer") << "Rename failure - " << mTempFilename << " to "
<< mLocalFilename << LL_ENDL;
#endif
}
}

View File

@ -137,7 +137,15 @@ void FloaterAO::updateList()
currentSetName = AOEngine::instance().getCurrentSetName();
}
// Lambda provides simple Alpha sorting, note this is case sensitive.
auto sortRuleLambda = [](const AOSet* s1, const AOSet* s2) -> bool
{
return s1->getName() < s2->getName();
};
mSetList=AOEngine::instance().getSetList();
std::sort(mSetList.begin(), mSetList.end(), sortRuleLambda);
mSetSelector->removeall();
mSetSelectorSmall->removeall();
mSetSelector->clear();

View File

@ -2600,6 +2600,9 @@ void LLAppViewer::initLoggingAndGetLastDuration()
LLError::setFatalFunction(errorCallback);
//LLError::setTimeFunction(getRuntime);
// <FS:Ansariel> Remove old CEF log file (defined in dullahan.h)
LLFile::remove(gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "cef_log.txt"));
// Remove the last ".old" log file.
std::string old_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,
APP_NAME + ".old");

View File

@ -2116,11 +2116,17 @@ void LLIMProcessing::requestOfflineMessages()
{
std::string cap_url = gAgent.getRegionCapability("ReadOfflineMsgs");
// <FS:Ansariel> Optional legacy offline messages
if (!gSavedSettings.getBOOL("FSUseReadOfflineMsgsCap"))
{
cap_url = "";
}
// </FS:Ansariel>
// Auto-accepted inventory items may require the avatar object
// to build a correct name. Likewise, inventory offers from
// muted avatars require the mute list to properly mute.
if (cap_url.empty()
|| gSavedSettings.getBOOL("FSUseReadOfflineMsgsCap") // <FS:Ansariel> Optional legacy offline messages
|| gAgent.getRegionCapability("AcceptFriendship").empty()
|| gAgent.getRegionCapability("AcceptGroupInvite").empty())
{

View File

@ -6553,7 +6553,9 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
if (LLSelectMgr::sRenderHiddenSelections) // && gFloaterTools && gFloaterTools->getVisible())
bool wireframe_selection = (gFloaterTools && gFloaterTools->getVisible()) || LLSelectMgr::sRenderHiddenSelections;
if (LLSelectMgr::sRenderHiddenSelections)
{
gGL.blendFunc(LLRender::BF_SOURCE_COLOR, LLRender::BF_ONE);
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE, GL_GEQUAL);
@ -6593,8 +6595,6 @@ void LLSelectNode::renderOneWireframe(const LLColor4& color)
gGL.diffuseColor4f(color.mV[VRED] * 2, color.mV[VGREEN] * 2, color.mV[VBLUE] * 2, LLSelectMgr::sHighlightAlpha * 2);
{
bool wireframe_selection = gFloaterTools && gFloaterTools->getVisible();
LLGLDisable depth(wireframe_selection ? 0 : GL_BLEND);
LLGLEnable stencil(wireframe_selection ? 0 : GL_STENCIL_TEST);