Merge Firestorm LGPL

master
Ansariel 2018-06-16 12:13:57 +02:00
commit 60ba289fbf
21 changed files with 241 additions and 92 deletions

View File

@ -257,23 +257,13 @@ namespace LLError
{
#ifdef __GNUC__
// GCC: type_info::name() returns a mangled class name,st demangle
static size_t abi_name_len = 100;
static char* abi_name_buf = (char*)malloc(abi_name_len);
// warning: above is voodoo inferred from the GCC manual,
// do NOT change
int status;
// We don't use status, and shouldn't have to pass apointer to it
// but gcc 3.3 libstc++'s implementation of demangling is broken
// and fails without.
char* name = abi::__cxa_demangle(mangled,
abi_name_buf, &abi_name_len, &status);
// this call can realloc the abi_name_buf pointer (!)
return name ? name : mangled;
// passing nullptr, 0 forces allocation of a unique buffer we can free
// fixing MAINT-8724 on OSX 10.14
int status = -1;
char* name = abi::__cxa_demangle(mangled, nullptr, 0, &status);
std::string result(name ? name : mangled);
free(name);
return result;
#elif LL_WINDOWS
// DevStudio: type_info::name() includes the text "class " at the start

View File

@ -3080,7 +3080,6 @@ void LLScrollListCtrl::onClickColumn(void *userdata)
}
// if this column is the primary sort key, reverse the direction
sort_column_t cur_sort_column;
if (!parent->mSortColumns.empty() && parent->mSortColumns.back().first == column_index)
{
ascending = !parent->mSortColumns.back().second;

View File

@ -191,5 +191,68 @@
<key>GrowlBody</key>
<string>[MESSAGE]</string>
</map>
<key>TeleportOffered</key>
<map>
<key>GrowlName</key>
<string>Teleport offer received</string>
<key>GrowlTitle</key>
<string>Teleport offer received</string>
<key>GrowlBody</key>
<string>[NAME_SLURL] has offered to teleport you to their location: [MESSAGE]</string>
</map>
<key>TeleportOffered_MaturityExceeded</key>
<map>
<key>GrowlName</key>
<string>Teleport offer received (Maturity exceeded)</string>
<key>GrowlTitle</key>
<string>Teleport offer received</string>
<key>GrowlBody</key>
<string>[NAME_SLURL] has offered to teleport you to their location: [MESSAGE]</string>
</map>
<key>TeleportOffered_MaturityBlocked</key>
<map>
<key>GrowlName</key>
<string>Teleport offer received (Maturity blocked)</string>
<key>GrowlTitle</key>
<string>Teleport offer received</string>
<key>GrowlBody</key>
<string>[NAME_SLURL] has offered to teleport you to their location: [MESSAGE]</string>
</map>
<key>TeleportOffered_SLUrl</key>
<map>
<key>GrowlName</key>
<string>Teleport offer received (SLUrl)</string>
<key>GrowlTitle</key>
<string>Teleport offer received</string>
<key>GrowlBody</key>
<string>[NAME_SLURL] has offered to teleport you to their location: [MESSAGE]</string>
</map>
<key>TeleportOffered_MaturityExceeded_SLUrl</key>
<map>
<key>GrowlName</key>
<string>Teleport offer received (SLURL, Maturity exceeded)</string>
<key>GrowlTitle</key>
<string>Teleport offer received</string>
<key>GrowlBody</key>
<string>[NAME_SLURL] has offered to teleport you to their location: [MESSAGE]</string>
</map>
<key>TeleportOffered_MaturityBlocked_SLUrl</key>
<map>
<key>GrowlName</key>
<string>Teleport offer received (SLUrl, Maturity blocked)</string>
<key>GrowlTitle</key>
<string>Teleport offer received</string>
<key>GrowlBody</key>
<string>[NAME_SLURL] has offered to teleport you to their location: [MESSAGE]</string>
</map>
<key>TeleportRequest</key>
<map>
<key>GrowlName</key>
<string>Teleport request received</string>
<key>GrowlTitle</key>
<string>Teleport request received</string>
<key>GrowlBody</key>
<string>[NAME_SLURL] is requesting to be teleported to your location: [MESSAGE]</string>
</map>
</map>
</llsd>

View File

@ -105,7 +105,7 @@ void FSData::processResponder(const LLSD& content, const std::string& url, bool
if (!save_to_file)
{
LLSD data;
LL_DEBUGS("fsdata") << "Loading fsdata.xml from " << mFSdataFilename << LL_ENDL;
LL_DEBUGS("fsdata") << "Loading fsdata.xml from " << mFSdataFilename << LL_ENDL;
if (loadFromFile(data, mFSdataFilename))
{
processData(data);
@ -127,8 +127,8 @@ void FSData::processResponder(const LLSD& content, const std::string& url, bool
if (!save_to_file)
{
LLSD data;
LL_DEBUGS("fsdata") << "Loading assets.xml from " << mAssestsFilename << LL_ENDL;
if (loadFromFile(data, mAssestsFilename))
LL_DEBUGS("fsdata") << "Loading assets.xml from " << mAssetsFilename << LL_ENDL;
if (loadFromFile(data, mAssetsFilename))
{
processAssets(data);
}
@ -140,7 +140,7 @@ void FSData::processResponder(const LLSD& content, const std::string& url, bool
else
{
processAssets(content);
saveLLSD(content, mAssestsFilename, last_modified);
saveLLSD(content, mAssetsFilename, last_modified);
}
}
else if (url == mAgentsURL)
@ -217,27 +217,39 @@ bool FSData::loadFromFile(LLSD& data, std::string filename)
void downloadComplete(LLSD const &aData, std::string const &aURL, bool success)
{
LL_DEBUGS("fsdata") << aData << LL_ENDL;
LL_DEBUGS("fsdata") << aURL << ": " << aData << " - success = " << success << LL_ENDL;
LLSD header = aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS][LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS];
LLDate lastModified;
if (header.has("last-modified"))
LLSD data;
if (success)
{
lastModified.secondsSinceEpoch(FSCommon::secondsSinceEpochFromString("%a, %d %b %Y %H:%M:%S %ZP", header["last-modified"].asString()));
LLSD header = aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS][LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS];
if (header.has("last-modified"))
{
lastModified.secondsSinceEpoch(FSCommon::secondsSinceEpochFromString("%a, %d %b %Y %H:%M:%S %ZP", header["last-modified"].asString()));
}
const LLSD::Binary& binary = aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_RAW].asBinary();
std::string content;
content.assign(binary.begin(), binary.end());
std::istringstream raw(content);
LLPointer<LLSDParser> parser = new LLSDXMLParser();
if (parser->parse(raw, data, content.size()) == LLSDParser::PARSE_FAILURE)
{
LL_WARNS("fsdata") << "Error parsing data received from " << aURL << ":" << LL_NEWLINE << content << LL_ENDL;
}
LL_DEBUGS("fsdata") << "data: " << data << LL_ENDL;
}
LLSD data = aData;
data.erase(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS);
FSData::getInstance()->processResponder(data, aURL, success, lastModified);
}
void downloadCompleteScript(LLSD const &aData, std::string const &aURL, std::string const &aFilename)
{
LL_DEBUGS("fsdata") << aData << LL_ENDL;
LL_DEBUGS("fsdata") << aURL << ": " << aData << LL_ENDL;
LLSD header = aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS][LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS];
LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS]);
LLDate lastModified;
if (header.has("last-modified"))
@ -246,12 +258,6 @@ void downloadCompleteScript(LLSD const &aData, std::string const &aURL, std::str
}
const LLSD::Binary &rawData = aData[LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_RAW].asBinary();
if (status.getType() == HTTP_NOT_MODIFIED)
{
LL_INFOS("fsdata") << "Got [304] not modified for " << aURL << LL_ENDL;
return;
}
if (rawData.size() <= 0)
{
LL_WARNS("fsdata") << "Received zero data for " << aURL << LL_ENDL;
@ -284,7 +290,16 @@ void downloadCompleteScript(LLSD const &aData, std::string const &aURL, std::str
void downloadError(LLSD const &aData, std::string const &aURL)
{
LL_WARNS("fsdata") << "Failed to download " << aURL << ": " << aData << LL_ENDL;
LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(aData);
if (status.getType() == HTTP_NOT_MODIFIED)
{
LL_INFOS("fsdata") << "Didn't download " << aURL << " - no newer version available" << LL_ENDL;
}
else
{
LL_WARNS("fsdata") << "Failed to download " << aURL << ": " << aData << LL_ENDL;
}
}
// call this just before the login screen and after the LLProxy has been setup.
@ -294,32 +309,44 @@ void FSData::startDownload()
mFSdataDefaultsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "fsdata_defaults.xml");
mClientTagsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "client_list_v2.xml");
// Stat the file to see if it exists and when it was last modified.
time_t last_modified = 0;
llstat stat_data;
if (!LLFile::stat(mFSdataFilename, &stat_data))
{
last_modified = stat_data.st_mtime;
// Stat the file to see if it exists and when it was last modified.
time_t last_modified = 0;
llstat stat_data;
if (!LLFile::stat(mFSdataFilename, &stat_data))
{
last_modified = stat_data.st_mtime;
}
LL_INFOS("fsdata") << "Downloading data.xml from " << mFSDataURL << " with last modified of " << last_modified << LL_ENDL;
LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
httpOpts->setWantHeaders(true);
httpOpts->setLastModified((long)last_modified);
FSCoreHttpUtil::callbackHttpGetRaw(mFSDataURL, boost::bind(downloadComplete, _1, mFSDataURL, true), boost::bind(downloadComplete, _1, mFSDataURL, false), LLCore::HttpHeaders::ptr_t(), httpOpts);
}
LL_INFOS("fsdata") << "Downloading data.xml from " << mFSDataURL << " with last modified of " << last_modified << LL_ENDL;
FSCoreHttpUtil::callbackHttpGet(mFSDataURL, last_modified, boost::bind(downloadComplete, _1, mFSDataURL, true), boost::bind(downloadComplete, _1, mFSDataURL, false));
last_modified = 0;
if (!LLFile::stat(mFSdataDefaultsFilename, &stat_data))
{
last_modified = stat_data.st_mtime;
time_t last_modified = 0;
llstat stat_data;
if (!LLFile::stat(mFSdataDefaultsFilename, &stat_data))
{
last_modified = stat_data.st_mtime;
}
std::string filename = llformat("defaults.%s.xml", LLVersionInfo::getShortVersion().c_str());
mFSdataDefaultsUrl = mBaseURL + "/" + filename;
LL_INFOS("fsdata") << "Downloading defaults.xml from " << mFSdataDefaultsUrl << " with last modified of " << last_modified << LL_ENDL;
LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
httpOpts->setWantHeaders(true);
httpOpts->setLastModified((long)last_modified);
FSCoreHttpUtil::callbackHttpGetRaw(mFSdataDefaultsUrl, boost::bind(downloadComplete, _1, mFSdataDefaultsUrl, true), boost::bind(downloadComplete, _1, mFSdataDefaultsUrl, false), LLCore::HttpHeaders::ptr_t(), httpOpts);
}
std::string filename = llformat("defaults.%s.xml", LLVersionInfo::getShortVersion().c_str());
mFSdataDefaultsUrl = mBaseURL + "/" + filename;
LL_INFOS("fsdata") << "Downloading defaults.xml from " << mFSdataDefaultsUrl << " with last modified of " << last_modified << LL_ENDL;
FSCoreHttpUtil::callbackHttpGet(mFSdataDefaultsUrl, last_modified, boost::bind(downloadComplete, _1, mFSdataDefaultsUrl, true), boost::bind(downloadComplete, _1, mFSdataDefaultsUrl, false));
#if OPENSIM
std::string filenames[] = {"scriptlibrary_ossl.xml", "scriptlibrary_aa.xml"};
BOOST_FOREACH(std::string script_name, filenames)
{
filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, script_name);
last_modified = 0;
std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, script_name);
time_t last_modified = 0;
llstat stat_data;
if (!LLFile::stat(filename, &stat_data))
{
last_modified = stat_data.st_mtime;
@ -370,20 +397,26 @@ void FSData::downloadAgents()
last_modified = stat_data.st_mtime;
}
LL_INFOS("fsdata") << "Downloading agents.xml from " << mAgentsURL << " with last modified of " << last_modified << LL_ENDL;
FSCoreHttpUtil::callbackHttpGet(mAgentsURL, last_modified, boost::bind(downloadComplete, _1, mAgentsURL, true), boost::bind(downloadComplete, _1, mAgentsURL, false));
LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
httpOpts->setWantHeaders(true);
httpOpts->setLastModified((long)last_modified);
FSCoreHttpUtil::callbackHttpGetRaw(mAgentsURL, boost::bind(downloadComplete, _1, mAgentsURL, true), boost::bind(downloadComplete, _1, mAgentsURL, false), LLCore::HttpHeaders::ptr_t(), httpOpts);
}
if (!mAssetsURL.empty())
{
mAssestsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename_prefix + "_assets.xml");
mAssetsFilename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, filename_prefix + "_assets.xml");
time_t last_modified = 0;
llstat stat_data;
if (!LLFile::stat(mAssestsFilename, &stat_data))
if (!LLFile::stat(mAssetsFilename, &stat_data))
{
last_modified = stat_data.st_mtime;
}
LL_INFOS("fsdata") << "Downloading assets.xml from " << mAssetsURL << " with last modified of " << last_modified << LL_ENDL;
FSCoreHttpUtil::callbackHttpGet(mAssetsURL, last_modified, boost::bind(downloadComplete, _1, mAssetsURL, true), boost::bind(downloadComplete, _1, mAssetsURL, false));
LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
httpOpts->setWantHeaders(true);
httpOpts->setLastModified((long)last_modified);
FSCoreHttpUtil::callbackHttpGetRaw(mAssetsURL, boost::bind(downloadComplete, _1, mAssetsURL, true), boost::bind(downloadComplete, _1, mAssetsURL, false), LLCore::HttpHeaders::ptr_t(), httpOpts);
}
}
@ -451,7 +484,10 @@ void FSData::processData(const LLSD& fs_data)
last_modified = stat_data.st_mtime;
}
LL_INFOS("fsdata") << "Downloading client_list_v2.xml from " << LEGACY_CLIENT_LIST_URL << " with last modified of " << last_modified << LL_ENDL;
FSCoreHttpUtil::callbackHttpGet(LEGACY_CLIENT_LIST_URL, last_modified, boost::bind(downloadComplete, _1, LEGACY_CLIENT_LIST_URL, true), boost::bind(downloadComplete, _1, LEGACY_CLIENT_LIST_URL, false));
LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
httpOpts->setWantHeaders(true);
httpOpts->setLastModified((long)last_modified);
FSCoreHttpUtil::callbackHttpGetRaw(LEGACY_CLIENT_LIST_URL, boost::bind(downloadComplete, _1, LEGACY_CLIENT_LIST_URL, true), boost::bind(downloadComplete, _1, LEGACY_CLIENT_LIST_URL, false), LLCore::HttpHeaders::ptr_t(), httpOpts);
}
else if (use_legacy_tags)
{
@ -547,7 +583,7 @@ void FSData::processAgents(const LLSD& data)
void FSData::processClientTags(const LLSD& tags)
{
if(tags.has("isComplete"))
if (tags.has("isComplete"))
{
mLegacyClientList = tags;
}

View File

@ -107,7 +107,7 @@ private:
std::string mFSdataDefaultsFilename;
std::string mFSdataDefaultsUrl;
std::string mAgentsFilename;
std::string mAssestsFilename;
std::string mAssetsFilename;
std::string mClientTagsFilename;
std::string mBaseURL;

View File

@ -50,7 +50,7 @@
#include "fscorehttputil.h"
#include "lfsimfeaturehandler.h" // <COLOSI opensim multi-currency support />
void downloadError( LLSD const &aData, LLGridManager* mOwner, GridEntry* mData, LLGridManager::AddState mState )
void gridDownloadError( LLSD const &aData, LLGridManager* mOwner, GridEntry* mData, LLGridManager::AddState mState )
{
LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD( aData );
@ -62,6 +62,15 @@ void downloadError( LLSD const &aData, LLGridManager* mOwner, GridEntry* mData,
}
}
else if (status.getType() == HTTP_NOT_MODIFIED && LLGridManager::TRYLEGACY != mState) // not modified
{
mOwner->addGrid(mData, LLGridManager::FINISH);
}
else if (HTTP_INTERNAL_ERROR == status.getType() && LLGridManager::LOCAL == mState) //add localhost even if its not up
{
mOwner->addGrid(mData, LLGridManager::FINISH);
//since we know now that its not up we cold also start it
}
else if (LLGridManager::TRYLEGACY == mState) //we did TRYLEGACY and faild
{
LLSD args;
@ -88,9 +97,9 @@ void downloadError( LLSD const &aData, LLGridManager* mOwner, GridEntry* mData,
}
}
void downloadComplete( LLSD const &aData, LLGridManager* mOwner, GridEntry* mData, LLGridManager::AddState mState )
void gridDownloadComplete( LLSD const &aData, LLGridManager* mOwner, GridEntry* mData, LLGridManager::AddState mState )
{
mOwner->decResponderCount();
//mOwner->decResponderCount();
LLSD header = aData[ LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS ][ LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_HEADERS];
LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD( aData[ LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS ] );
@ -126,10 +135,6 @@ void downloadComplete( LLSD const &aData, LLGridManager* mOwner, GridEntry* mDat
mOwner->addGrid(mData, LLGridManager::FAIL);
}
}
else if (HTTP_NOT_MODIFIED == status.getType() && LLGridManager::TRYLEGACY != mState)// not modified
{
mOwner->addGrid(mData, LLGridManager::FINISH);
}
else if (HTTP_INTERNAL_ERROR == status.getType() && LLGridManager::LOCAL == mState) //add localhost even if its not up
{
mOwner->addGrid(mData, LLGridManager::FINISH);
@ -137,7 +142,7 @@ void downloadComplete( LLSD const &aData, LLGridManager* mOwner, GridEntry* mDat
}
else
{
downloadError( aData[ LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS ], mOwner, mData, mState );
gridDownloadError( aData[ LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS ], mOwner, mData, mState );
}
}
@ -622,9 +627,12 @@ void LLGridManager::addGrid(GridEntry* grid_entry, AddState state)
LLDate saved_value = grid_entry->grid["LastModified"];
last_modified = (time_t)saved_value.secondsSinceEpoch();
}
LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
httpOpts->setWantHeaders(true);
httpOpts->setLastModified((long)last_modified);
FSCoreHttpUtil::callbackHttpGetRaw( uri, boost::bind( downloadComplete, _1, this, grid_entry, state ),
boost::bind( downloadError, _1, this, grid_entry, state ) );
FSCoreHttpUtil::callbackHttpGetRaw( uri, boost::bind( gridDownloadComplete, _1, this, grid_entry, state ),
boost::bind( gridDownloadError, _1, this, grid_entry, state ), LLCore::HttpHeaders::ptr_t(), httpOpts );
return;
}
}
@ -643,8 +651,8 @@ void LLGridManager::addGrid(GridEntry* grid_entry, AddState state)
LL_WARNS() << "No gridinfo found. Trying if legacy login page exists: " << uri << LL_ENDL;
FSCoreHttpUtil::callbackHttpGetRaw( uri, boost::bind( downloadComplete, _1, this, grid_entry, state ),
boost::bind( downloadError, _1, this, grid_entry, state ) );
FSCoreHttpUtil::callbackHttpGetRaw( uri, boost::bind( gridDownloadComplete, _1, this, grid_entry, state ),
boost::bind( gridDownloadError, _1, this, grid_entry, state ) );
return;
}

View File

@ -248,8 +248,8 @@ public:
private:
friend class GridInfoRequestResponder;
friend void downloadComplete( LLSD const &aData, LLGridManager* mOwner, GridEntry* mData, LLGridManager::AddState mState );
friend void downloadError( LLSD const &aData, LLGridManager* mOwner, GridEntry* mData, LLGridManager::AddState mState );
friend void gridDownloadComplete( LLSD const &aData, LLGridManager* mOwner, GridEntry* mData, LLGridManager::AddState mState );
friend void gridDownloadError( LLSD const &aData, LLGridManager* mOwner, GridEntry* mData, LLGridManager::AddState mState );
void incResponderCount(){++mResponderCount;}
void decResponderCount(){--mResponderCount;}

View File

@ -1153,7 +1153,7 @@ FSLSLBridgeScriptCallback::~FSLSLBridgeScriptCallback()
class FSMonoScriptAssetUpload: public LLScriptAssetUpload
{
public:
FSMonoScriptAssetUpload(LLUUID itemId, std::string buffer, invnUploadFinish_f finish)
FSMonoScriptAssetUpload(LLUUID itemId, std::string buffer, invnUploadFinish_f finish)
: LLScriptAssetUpload( itemId, buffer, finish)
{
}
@ -1207,12 +1207,12 @@ void FSLSLBridgeScriptCallback::fire(const LLUUID& inv_item)
bool cleanup = false;
if (!url.empty() && obj)
{
std::string buffer;
std::string buffer;
const std::string fName = prepUploadFile(buffer);
if (!fName.empty())
{
LLResourceUploadInfo::ptr_t uploadInfo(new FSMonoScriptAssetUpload( inv_item, buffer, uploadDone ));
LLViewerAssetUpload::EnqueueInventoryUpload(url, uploadInfo);
LLResourceUploadInfo::ptr_t uploadInfo(new FSMonoScriptAssetUpload( inv_item, buffer, uploadDone ));
LLViewerAssetUpload::EnqueueInventoryUpload(url, uploadInfo);
LL_INFOS("FSLSLBridge") << "updating script ID for bridge" << LL_ENDL;
FSLSLBridge::instance().mScriptItemID = inv_item;
@ -1330,8 +1330,8 @@ void FSLSLBridge::checkBridgeScriptName()
BOOL FSLSLBridgeCleanupTimer::tick()
{
FSLSLBridge::instance().finishBridge();
stopTimer();
FSLSLBridge::instance().finishBridge();
return TRUE;
}
@ -1360,18 +1360,21 @@ void FSLSLBridge::finishBridge()
mIsFirstCallDone = false;
cleanUpOldVersions();
cleanUpBridgeFolder();
LL_INFOS("FSLSLBridge") << "Bridge cleaned up. Detaching bridge" << LL_ENDL;
LL_INFOS("FSLSLBridge") << "Bridge cleaned up" << LL_ENDL;
mAllowDetach = true;
mFinishCreation = true;
if (getBridge())
{
LL_INFOS("FSLSLBridge") << "Detaching bridge after cleanup" << LL_ENDL;
LLVOAvatarSelf::detachAttachmentIntoInventory(getBridge()->getUUID());
}
else
{
LL_WARNS("FSLSLBridge") << "Cannot detach bridge - mpBridge = NULL" << LL_ENDL;
}
LL_INFOS("FSLSLBridge") << "End finishing bridge" << LL_ENDL;
}
//
@ -1589,6 +1592,7 @@ void FSLSLBridge::detachOtherBridges()
BOOL FSLSLBridgeReAttachTimer::tick()
{
LL_INFOS("FSLSLBridge") << "Re-attaching bridge after creation..." << LL_ENDL;
mEventTimer.stop();
LLViewerInventoryItem* inv_object = gInventory.getItem(mBridgeUUID);
if (inv_object && FSLSLBridge::instance().mpBridge && FSLSLBridge::instance().mpBridge->getUUID() == inv_object->getUUID())
{

View File

@ -218,6 +218,7 @@ void GrowlManager::loadConfig()
}
static LLTrace::BlockTimerStatHandle FTM_GROWL_NOTIFY("Growl Notify");
void GrowlManager::performNotification(const std::string& title, const std::string& message, const std::string& type)
{
if (LLAppViewer::instance()->isExiting())
@ -250,7 +251,11 @@ void GrowlManager::performNotification(const std::string& title, const std::stri
}
mTitleTimers[title] = now;
}
mNotifier->showNotification(title, message.substr(0, GROWL_MAX_BODY_LENGTH), type);
{
LL_RECORD_BLOCK_TIME(FTM_GROWL_NOTIFY);
mNotifier->showNotification(title, message.substr(0, GROWL_MAX_BODY_LENGTH), type);
}
}
BOOL GrowlManager::tick()
@ -293,7 +298,8 @@ bool GrowlManager::onLLNotification(const LLSD& notice)
LLStringUtil::format(body, substitutions);
}
if (name == "ObjectGiveItem" || name == "OwnObjectGiveItem" || name == "ObjectGiveItemUnknownUser" || name == "UserGiveItem" || name == "SystemMessageTip")
if (name == "ObjectGiveItem" || name == "OwnObjectGiveItem" || name == "ObjectGiveItemUnknownUser" || name == "UserGiveItem" || name == "SystemMessageTip"
|| LLStringUtil::startsWith(name, "TeleportOffered") || name == "TeleportRequest")
{
LLUrlMatch urlMatch;
LLWString newLine = utf8str_to_wstring(body);

View File

@ -966,7 +966,7 @@ void LLFloaterPreference::apply()
// <FS:Ansariel> Sound cache
setSoundCacheLocation(gSavedSettings.getString("FSSoundCacheLocation"));
LLViewerMedia::setCookiesEnabled(getChild<LLUICtrl>("cookies_enabled")->getValue());
//LLViewerMedia::setCookiesEnabled(getChild<LLUICtrl>("cookies_enabled")->getValue()); // <FS:Ansariel> Doesn't exist anymore as of 13-06-2018
if (hasChild("web_proxy_enabled", TRUE) &&hasChild("web_proxy_editor", TRUE) && hasChild("web_proxy_port", TRUE))
{

View File

@ -564,6 +564,8 @@ void LLHUDEffectLookAt::render()
if ((hide_own || is_private) && ((LLVOAvatar*)(LLViewerObject*)mSourceObject)->isSelf())
return;
LLGLDisable gls_stencil(GL_STENCIL_TEST); // <FS:Ansariel> HUD items hidden by new mesh selection outlining
LLVector3 target = mTargetPos + ((LLVOAvatar*)(LLViewerObject*)mSourceObject)->mHeadp->getWorldPosition();
LLColor3 lookAtColor = (*mAttentions)[mTargetType].mColor;

View File

@ -346,6 +346,7 @@ void LLHUDEffectPointAt::render()
update();
if (sDebugPointAt && mTargetType != POINTAT_TARGET_NONE)
{
LLGLDisable gls_stencil(GL_STENCIL_TEST); // <FS:Ansariel> HUD items hidden by new mesh selection outlining
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
LLVector3 target = mTargetPos + mSourceObject->getRenderPosition();

View File

@ -85,6 +85,7 @@ void LLHUDIcon::renderIcon(BOOL for_select)
{
LLGLSUIDefault texture_state;
LLGLDepthTest gls_depth(GL_TRUE);
LLGLDisable gls_stencil(GL_STENCIL_TEST); // <FS:Ansariel> HUD items hidden by new mesh selection outlining
if (for_select)
{
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);

View File

@ -229,6 +229,7 @@ void LLHUDNameTag::render()
if (sDisplayText)
{
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
LLGLDisable gls_stencil(GL_STENCIL_TEST); // <FS:Ansariel> HUD items hidden by new mesh selection outlining
renderText(FALSE);
}
}

View File

@ -109,6 +109,7 @@ void LLHUDText::render()
if (!mOnHUDAttachment && sDisplayText)
{
LLGLDepthTest gls_depth(GL_TRUE, GL_FALSE);
LLGLDisable gls_stencil(GL_STENCIL_TEST); // <FS:Ansariel> HUD items hidden by new mesh selection outlining
renderText();
}
}

View File

@ -256,10 +256,24 @@ void LLPanelLandAudio::onBtnStreamAdd()
if (!music_url.empty())
{
LLSD streamlist = gSavedSettings.getLLSD("FSStreamList");
streamlist["version"] = 1;
streamlist["audio"].append(music_url);
gSavedSettings.setLLSD("FSStreamList", streamlist);
refresh();
bool has_url = false;
for (LLSD::array_const_iterator it = streamlist["audio"].beginArray(); it != streamlist["audio"].endArray(); ++it)
{
if ((*it).asString() == music_url)
{
has_url = true;
break;
}
}
if (!has_url)
{
streamlist["version"] = 1;
streamlist["audio"].append(music_url);
gSavedSettings.setLLSD("FSStreamList", streamlist);
refresh();
}
}
}

View File

@ -370,7 +370,7 @@ void downloadGridlistComplete( LLSD const &aData )
llofstream out_file;
out_file.open(filename.c_str());
LLSDSerialize::toPrettyXML( aData, out_file);
LLSDSerialize::toPrettyXML( data, out_file);
out_file.close();
LL_INFOS() << "GridListRequest: got new list." << LL_ENDL;
sGridListRequestReady = true;
@ -378,7 +378,17 @@ void downloadGridlistComplete( LLSD const &aData )
void downloadGridlistError( LLSD const &aData, std::string const &aURL )
{
LL_WARNS() << "Failed to download grid list from " << aURL << LL_ENDL;
LLCore::HttpStatus status = LLCoreHttpUtil::HttpCoroutineAdapter::getStatusFromLLSD(aData);
if (status.getType() == HTTP_NOT_MODIFIED)
{
LL_INFOS("fsdata") << "Didn't download grid list from " << aURL << " - no newer version available" << LL_ENDL;
}
else
{
LL_WARNS() << "Failed to download grid list from " << aURL << LL_ENDL;
}
sGridListRequestReady = true;
}

View File

@ -3521,6 +3521,15 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**)
}
// <FS:Ansariel> Crash fix
if (!gAgent.getRegion())
{
LL_WARNS("Messaging") << "Agent was disconnected from the region" << LL_ENDL;
LLAppViewer::instance()->forceDisconnect(LLTrans::getString("YouHaveBeenDisconnected"));
return;
}
// </FS:Ansariel>
LL_INFOS("Messaging") << "Changing home region to " << x << ":" << y << LL_ENDL;
// set our upstream host the new simulator and shuffle things as

View File

@ -356,6 +356,7 @@ void LLVoiceVisualizer::render()
//---------------------------------------------------------------
LLGLSPipelineAlpha alpha_blend;
LLGLDepthTest depth(GL_TRUE, GL_FALSE);
LLGLDisable gls_stencil(GL_STENCIL_TEST); // <FS:Ansariel> HUD items hidden by new mesh selection outlining
//-------------------------------------------------------------
// create coordinates of the geometry for the dot

View File

@ -724,7 +724,7 @@
left_pad="5"
increment="1"
initial_value="362394"
max_val="2147483647"
max_val="16777216"
min_val="1"
name="StreamMetadataAnnounceChannel"
width="90" />

View File

@ -5611,6 +5611,9 @@ Spróbuj załączyć ścieżkę do edytora w cytowaniu.
<string name="RLVaToggleDisabled">
wyłączone
</string>
<string name="RLVaStatusDisabled">
(wyłączone)
</string>
<string name="UserDictionary">
[Użytkownika]
</string>