Merge branch 'DRTVWR-600-maint-A' of https://github.com/secondlife/viewer
# Conflicts: # .github/ISSUE_TEMPLATE/10-bug.yaml # .github/ISSUE_TEMPLATE/20-enhancement.md # .github/ISSUE_TEMPLATE/config.yml # indra/newview/app_settings/settings.xml # indra/newview/llagent.cpp # indra/newview/llfloaterpreference.h # indra/newview/llpanelpeople.cpp # indra/newview/llpanelpeople.h # indra/newview/llviewermenu.cpp # indra/newview/llvoavatar.h # indra/newview/skins/default/xui/en/panel_performance_nearby.xml # indra/newview/skins/default/xui/en/panel_preferences_graphics1.xmlmaster
commit
7bcb96b2f9
|
|
@ -317,7 +317,7 @@ void HttpService::threadRun(LLCoreInt::HttpThread * thread)
|
|||
}
|
||||
catch (std::bad_alloc&)
|
||||
{
|
||||
LLMemory::logMemoryInfo(TRUE);
|
||||
LLMemory::logMemoryInfo(true);
|
||||
|
||||
//output possible call stacks to log file.
|
||||
LLError::LLCallStacks::print();
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ namespace tut
|
|||
ensure("LLImageDecodeThread: threaded constructor failed", mThread != NULL);
|
||||
// Insert something in the queue
|
||||
bool done = false;
|
||||
LLImageDecodeThread::handle_t decodeHandle = mThread->decodeImage(NULL, 0, FALSE, new responder_test(&done));
|
||||
LLImageDecodeThread::handle_t decodeHandle = mThread->decodeImage(NULL, 0, false, new responder_test(&done));
|
||||
// Verifies we get back a valid handle
|
||||
ensure("LLImageDecodeThread: threaded decodeImage(), returned handle is null", decodeHandle != 0);
|
||||
// Wait till the thread has time to handle the work order (though it doesn't do much per work order...)
|
||||
|
|
|
|||
|
|
@ -374,7 +374,7 @@ namespace tut
|
|||
LLPointer<LLInventoryItem> src1 = create_random_inventory_item();
|
||||
|
||||
std::ostringstream ostream;
|
||||
src1->exportLegacyStream(ostream, TRUE);
|
||||
src1->exportLegacyStream(ostream, true);
|
||||
|
||||
std::istringstream istream(ostream.str());
|
||||
LLPointer<LLInventoryItem> src2 = new LLInventoryItem();
|
||||
|
|
@ -496,7 +496,7 @@ namespace tut
|
|||
LLPointer<LLInventoryCategory> src1 = create_random_inventory_cat();
|
||||
|
||||
std::ostringstream ostream;
|
||||
src1->exportLegacyStream(ostream, TRUE);
|
||||
src1->exportLegacyStream(ostream, true);
|
||||
|
||||
std::istringstream istream(ostream.str());
|
||||
LLPointer<LLInventoryCategory> src2 = new LLInventoryCategory();
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ namespace tut
|
|||
mMessageName = "MessageName";
|
||||
gUdpDispatchWasCalled = false;
|
||||
gClearRecvWasCalled = false;
|
||||
gValidateMessage = FALSE;
|
||||
gValidateMessage = false;
|
||||
mMessage["body"]["binary-template-data"] = std::vector<U8>();
|
||||
}
|
||||
|
||||
|
|
@ -121,7 +121,7 @@ namespace tut
|
|||
{
|
||||
LLTemplateMessageReader* pReader = NULL;
|
||||
LLTemplateMessageDispatcher t(*pReader);
|
||||
gValidateMessage = TRUE;
|
||||
gValidateMessage = true;
|
||||
std::vector<U8> vector_data;
|
||||
fillVector(vector_data, gBinaryTemplateData);
|
||||
mMessage["body"]["binary-template-data"] = vector_data;
|
||||
|
|
@ -138,7 +138,7 @@ namespace tut
|
|||
std::vector<U8> vector_data;
|
||||
fillVector(vector_data, gBinaryTemplateData);
|
||||
mMessage["body"]["binary-template-data"] = vector_data;
|
||||
gValidateMessage = FALSE;
|
||||
gValidateMessage = false;
|
||||
t.dispatch(mMessageName, mMessage, mResponsePtr);
|
||||
ensure("clear received message was called", gClearRecvWasCalled);
|
||||
}
|
||||
|
|
@ -149,7 +149,7 @@ namespace tut
|
|||
{
|
||||
LLTemplateMessageReader* pReader = NULL;
|
||||
LLTemplateMessageDispatcher t(*pReader);
|
||||
gValidateMessage = TRUE;
|
||||
gValidateMessage = true;
|
||||
std::vector<U8> vector_data;
|
||||
fillVector(vector_data, gBinaryTemplateData);
|
||||
mMessage["body"]["binary-template-data"] = vector_data;
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ namespace tut
|
|||
oversized_filename += 'X';
|
||||
}
|
||||
|
||||
LLXfer_File xff(oversized_filename, FALSE, 1);
|
||||
LLXfer_File xff(oversized_filename, false, 1);
|
||||
ensure("oversized local_filename nul-terminated",
|
||||
xff.getFileName().length() < LL_MAX_PATH);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public:
|
|||
if (mVolumeTest.isNull() || volume_params != mCurrParamsTest || detail != mCurrDetailTest)
|
||||
{
|
||||
F32 volume_detail = LLVolumeLODGroup::getVolumeScaleFromDetail(detail);
|
||||
mVolumeTest = new LLVolume(volume_params, volume_detail, FALSE, FALSE);
|
||||
mVolumeTest = new LLVolume(volume_params, volume_detail, false, false);
|
||||
mCurrParamsTest = volume_params;
|
||||
mCurrDetailTest = detail;
|
||||
return mVolumeTest;
|
||||
|
|
@ -193,7 +193,7 @@ namespace tut
|
|||
ensure(!primitive.isChanged(LLXform::GEOMETRY));
|
||||
|
||||
// Make sure setVolume returns true
|
||||
ensure(primitive.setVolume(params, 0, true) == TRUE);
|
||||
ensure(primitive.setVolume(params, 0, true) == true);
|
||||
LLVolume* new_volume = primitive.getVolume();
|
||||
|
||||
// make sure new volume was actually created
|
||||
|
|
@ -210,12 +210,12 @@ namespace tut
|
|||
ensure(primitive.isChanged(LLXform::GEOMETRY));
|
||||
|
||||
// Run it twice to make sure it doesn't create a different one if params are the same
|
||||
ensure(primitive.setVolume(params, 0, true) == FALSE);
|
||||
ensure(primitive.setVolume(params, 0, true) == false);
|
||||
ensure(new_volume == primitive.getVolume());
|
||||
|
||||
// Change the param definition and try setting it again.
|
||||
params.setRevolutions(4);
|
||||
ensure(primitive.setVolume(params, 0, true) == TRUE);
|
||||
ensure(primitive.setVolume(params, 0, true) == true);
|
||||
|
||||
// Ensure that we now have a different volume
|
||||
ensure(new_volume != primitive.getVolume());
|
||||
|
|
@ -238,7 +238,7 @@ namespace tut
|
|||
ensure(!primitive.isChanged(LLXform::GEOMETRY));
|
||||
|
||||
// Make sure setVolume returns true
|
||||
ensure(primitive.setVolume(params, 0, false) == TRUE);
|
||||
ensure(primitive.setVolume(params, 0, false) == true);
|
||||
|
||||
LLVolume* new_volume = primitive.getVolume();
|
||||
|
||||
|
|
@ -256,12 +256,12 @@ namespace tut
|
|||
ensure(primitive.isChanged(LLXform::GEOMETRY));
|
||||
|
||||
// Run it twice to make sure it doesn't create a different one if params are the same
|
||||
ensure(primitive.setVolume(params, 0, false) == FALSE);
|
||||
ensure(primitive.setVolume(params, 0, false) == false);
|
||||
ensure(new_volume == primitive.getVolume());
|
||||
|
||||
// Change the param definition and try setting it again.
|
||||
params.setRevolutions(4);
|
||||
ensure(primitive.setVolume(params, 0, false) == TRUE);
|
||||
ensure(primitive.setVolume(params, 0, false) == true);
|
||||
|
||||
// Ensure that we now have a different volume
|
||||
ensure(new_volume != primitive.getVolume());
|
||||
|
|
|
|||
|
|
@ -104,6 +104,13 @@ LLSearchEditor::LLSearchEditor(const LLSearchEditor::Params& p)
|
|||
}
|
||||
}
|
||||
|
||||
LLSearchEditor::~LLSearchEditor()
|
||||
{
|
||||
mKeystrokeCallback = NULL;
|
||||
mTextChangedCallback = NULL;
|
||||
setCommitOnFocusLost(false);
|
||||
}
|
||||
|
||||
//virtual
|
||||
void LLSearchEditor::draw()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ protected:
|
|||
friend class LLUICtrlFactory;
|
||||
|
||||
public:
|
||||
virtual ~LLSearchEditor() {}
|
||||
virtual ~LLSearchEditor();
|
||||
|
||||
/*virtual*/ void draw();
|
||||
|
||||
|
|
|
|||
|
|
@ -1105,7 +1105,7 @@ U32 LLControlGroup::loadFromFile(const std::string& filename, bool set_default_v
|
|||
{
|
||||
infile.close();
|
||||
LL_WARNS("Settings") << "Unable to parse LLSD control file " << filename << ". Trying Legacy Method." << LL_ENDL;
|
||||
return loadFromFileLegacy(filename, TRUE, TYPE_STRING);
|
||||
return loadFromFileLegacy(filename, true, TYPE_STRING);
|
||||
}
|
||||
|
||||
U32 validitems = 0;
|
||||
|
|
@ -1304,7 +1304,7 @@ void main()
|
|||
|
||||
// ...invalid data type
|
||||
getfoo = (F32_CONTROL) gGlobals.resolveName("gFoo");
|
||||
getfoo->set(TRUE);
|
||||
getfoo->set(true);
|
||||
getfoo->dump();
|
||||
|
||||
// ...out of range data
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ namespace tut
|
|||
LLControlGroup test_cg("foo2");
|
||||
std::string temp_test_file = (mTestConfigDir + "setting_llsd_temp.xml");
|
||||
mCleanups.push_back(temp_test_file);
|
||||
mCG->saveToFile(temp_test_file.c_str(), TRUE);
|
||||
mCG->saveToFile(temp_test_file.c_str(), true);
|
||||
results = test_cg.loadFromFile(temp_test_file.c_str());
|
||||
ensure("number of changed settings loaded", (results == 1));
|
||||
ensure("value of changed settings loaded", (test_cg.getU32("TestSetting") == 13));
|
||||
|
|
@ -129,12 +129,12 @@ namespace tut
|
|||
int results = mCG->loadFromFile(mTestConfigFile.c_str(), true);
|
||||
LLControlVariable* control = mCG->getControl("TestSetting");
|
||||
LLSD new_value = 13;
|
||||
control->setValue(new_value, FALSE);
|
||||
control->setValue(new_value, false);
|
||||
ensure_equals("value of changed setting", mCG->getU32("TestSetting"), 13);
|
||||
LLControlGroup test_cg("foo3");
|
||||
std::string temp_test_file = (mTestConfigDir + "setting_llsd_persist_temp.xml");
|
||||
mCleanups.push_back(temp_test_file);
|
||||
mCG->saveToFile(temp_test_file.c_str(), TRUE);
|
||||
mCG->saveToFile(temp_test_file.c_str(), true);
|
||||
results = test_cg.loadFromFile(temp_test_file.c_str());
|
||||
//If we haven't changed any settings, then we shouldn't have any settings to load
|
||||
ensure("number of non-persisted changed settings loaded", (results == 0));
|
||||
|
|
|
|||
|
|
@ -1610,7 +1610,6 @@ set(viewer_HEADER_FILES
|
|||
llworldmapview.h
|
||||
llxmlrpclistener.h
|
||||
llxmlrpctransaction.h
|
||||
macmain.h
|
||||
noise.h
|
||||
particleeditor.h
|
||||
permissionstracker.h
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
<string>RenderAttachedParticles</string>
|
||||
<string>RenderAutoMaskAlphaDeferred</string>
|
||||
<string>RenderAutoMaskAlphaNonDeferred</string>
|
||||
<string>RenderAvatarComplexityMode</string>
|
||||
<string>RenderAvatarLODFactor</string>
|
||||
<string>RenderAvatarMaxComplexity</string>
|
||||
<string>RenderAvatarMaxNonImpostors</string>
|
||||
|
|
|
|||
|
|
@ -11761,17 +11761,6 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Value</key>
|
||||
<integer>1</integer>
|
||||
</map>
|
||||
<key>AlwaysRenderFriends</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Always render friends regardless of max complexity</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>RenderAvatar</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
@ -14055,16 +14044,16 @@ Change of this parameter will affect the layout of buttons in notification toast
|
|||
<key>Backup</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>RenderUseImpostors</key>
|
||||
<key>RenderAvatarComplexityMode</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>OBSOLETE and UNUSED. See RenderAvatarMaxNonImpostors and RenderAvatarMaxComplexity.</string>
|
||||
<key>Persist</key>
|
||||
<integer>0</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
<key>Comment</key>
|
||||
<string>0 - complexity limit applies to everyone, 1 - always show friends, 2 - only show friends</string>
|
||||
<key>Persist</key>
|
||||
<integer>0</integer>
|
||||
<key>Type</key>
|
||||
<string>S32</string>
|
||||
<key>Value</key>
|
||||
<real>0</real>
|
||||
</map>
|
||||
<key>RenderAvatarMaxNonImpostors</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ FSAreaSearch::FSAreaSearch(const LLSD& key) :
|
|||
mRlvBehaviorCallbackConnection()
|
||||
{
|
||||
gAgent.setFSAreaSearchActive(true);
|
||||
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360);
|
||||
gAgent.changeInterestListMode(IL_MODE_360);
|
||||
mFactoryMap["area_search_list_panel"] = LLCallbackMap(createPanelList, this);
|
||||
mFactoryMap["area_search_find_panel"] = LLCallbackMap(createPanelFind, this);
|
||||
mFactoryMap["area_search_filter_panel"] = LLCallbackMap(createPanelFilter, this);
|
||||
|
|
@ -197,7 +197,7 @@ FSAreaSearch::~FSAreaSearch()
|
|||
// list updates.
|
||||
if( !LLApp::isExiting() )
|
||||
{
|
||||
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_DEFAULT);
|
||||
gAgent.changeInterestListMode(IL_MODE_DEFAULT);
|
||||
}
|
||||
|
||||
if (!gIdleCallbacks.deleteFunction(idle, this))
|
||||
|
|
|
|||
|
|
@ -444,7 +444,7 @@ LLAgent::LLAgent() :
|
|||
mHttpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID),
|
||||
mTeleportState(TELEPORT_NONE),
|
||||
mRegionp(NULL),
|
||||
mInterestListMode(LLViewerRegion::IL_MODE_DEFAULT),
|
||||
mInterestListMode(IL_MODE_DEFAULT),
|
||||
|
||||
mAgentOriginGlobal(),
|
||||
mPositionGlobal(),
|
||||
|
|
@ -1161,11 +1161,11 @@ void LLAgent::capabilityReceivedCallback(const LLUUID ®ion_id, LLViewerRegion
|
|||
LLAppViewer::instance()->updateNameLookupUrl(regionp);
|
||||
}
|
||||
|
||||
if (gAgent.getInterestListMode() == LLViewerRegion::IL_MODE_360)
|
||||
if (gAgent.getInterestListMode() == IL_MODE_360)
|
||||
{
|
||||
// <FS:Beq> make this actually work
|
||||
// gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360);
|
||||
regionp->setInterestListMode(LLViewerRegion::IL_MODE_360);
|
||||
// gAgent.changeInterestListMode(IL_MODE_360);
|
||||
regionp->setInterestListMode(IL_MODE_360);
|
||||
// </FS:Beq>
|
||||
}
|
||||
}
|
||||
|
|
@ -1220,10 +1220,10 @@ void LLAgent::setRegion(LLViewerRegion *regionp)
|
|||
LLAppViewer::instance()->updateNameLookupUrl(regionp);
|
||||
// <FS:Beq> move the interestlist update to a place where it is safe.
|
||||
// Set the region to the desired interest list mode
|
||||
if (getInterestListMode() == LLViewerRegion::IL_MODE_360)
|
||||
if (getInterestListMode() == IL_MODE_360)
|
||||
{
|
||||
changeInterestListMode(LLViewerRegion::IL_MODE_360);
|
||||
regionp->setCapabilitiesReceivedCallback(LLAgent::capabilityReceivedCallback);
|
||||
changeInterestListMode(IL_MODE_360);
|
||||
regionp->setCapabilitiesReceivedCallback(LLAgent::capabilityReceivedCallback);
|
||||
}
|
||||
// </FS:Beq>
|
||||
}
|
||||
|
|
@ -3604,8 +3604,8 @@ void LLAgent::changeInterestListMode(const std::string &new_mode)
|
|||
if (new_mode != mInterestListMode)
|
||||
{
|
||||
// <FS:Beq> Fix area search again
|
||||
if ( (new_mode == LLViewerRegion::IL_MODE_DEFAULT && (!mFSAreaSearchActive && !m360CaptureActive)) ||
|
||||
(new_mode == LLViewerRegion::IL_MODE_360) )
|
||||
if ( (new_mode == IL_MODE_DEFAULT && (!mFSAreaSearchActive && !m360CaptureActive)) ||
|
||||
(new_mode == IL_MODE_360) )
|
||||
{
|
||||
LL_DEBUGS("360Capture") << "Setting Agent interest list mode to " << new_mode << " and updating regions" << LL_ENDL;
|
||||
// </FS:Beq>
|
||||
|
|
|
|||
|
|
@ -355,22 +355,20 @@ void LLConversationItemSession::clearParticipants()
|
|||
|
||||
void LLConversationItemSession::clearAndDeparentModels()
|
||||
{
|
||||
std::for_each(mChildren.begin(), mChildren.end(),
|
||||
[](LLFolderViewModelItem* c)
|
||||
for (LLFolderViewModelItem* child : mChildren)
|
||||
{
|
||||
if (child->getNumRefs() == 0)
|
||||
{
|
||||
if (c->getNumRefs() == 0)
|
||||
{
|
||||
// LLConversationItemParticipant can be created but not assigned to any view,
|
||||
// it was waiting for an "add_participant" event to be processed
|
||||
delete c;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Model is still assigned to some view/widget
|
||||
c->setParent(NULL);
|
||||
}
|
||||
// LLConversationItemParticipant can be created but not assigned to any view,
|
||||
// it was waiting for an "add_participant" event to be processed
|
||||
delete child;
|
||||
}
|
||||
);
|
||||
else
|
||||
{
|
||||
// Model is still assigned to some view/widget
|
||||
child->setParent(NULL);
|
||||
}
|
||||
}
|
||||
mChildren.clear();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ LLFloater360Capture::LLFloater360Capture(const LLSD& key)
|
|||
mStartILMode = gAgent.getInterestListMode();
|
||||
gAgent.set360CaptureActive(true); // <FS:Beq/> make FS area search work aga
|
||||
// send everything to us for as long as this floater is open
|
||||
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360);
|
||||
gAgent.changeInterestListMode(IL_MODE_360);
|
||||
}
|
||||
|
||||
LLFloater360Capture::~LLFloater360Capture()
|
||||
|
|
@ -94,7 +94,7 @@ LLFloater360Capture::~LLFloater360Capture()
|
|||
if ( !LLApp::isExiting() )
|
||||
{
|
||||
gAgent.set360CaptureActive(false); // <FS:Beq/> make FS Area search work again
|
||||
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_DEFAULT);// The Change Interest Mode target mode is indicative only. If something else is holding the 360 mode open then this will be ignored.
|
||||
gAgent.changeInterestListMode(IL_MODE_DEFAULT);// The Change Interest Mode target mode is indicative only. If something else is holding the 360 mode open then this will be ignored.
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -101,6 +101,26 @@ LLFloaterIMSessionTab::LLFloaterIMSessionTab(const LLSD& session_id)
|
|||
LLFloaterIMSessionTab::~LLFloaterIMSessionTab()
|
||||
{
|
||||
delete mRefreshTimer;
|
||||
|
||||
LLFloaterIMContainer* im_container = LLFloaterIMContainer::findInstance();
|
||||
if (im_container)
|
||||
{
|
||||
LLParticipantList* session = dynamic_cast<LLParticipantList*>(im_container->getSessionModel(mSessionID));
|
||||
if (session)
|
||||
{
|
||||
for (const conversations_widgets_map::value_type& widget_pair : mConversationsWidgets)
|
||||
{
|
||||
LLFolderViewItem* widget = widget_pair.second;
|
||||
LLFolderViewModelItem* item_vmi = widget->getViewModelItem();
|
||||
if (item_vmi && item_vmi->getNumRefs() == 1)
|
||||
{
|
||||
// This is the last pointer, remove participant from session
|
||||
// before participant gets deleted on destroyView.
|
||||
session->removeChild(item_vmi);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//static
|
||||
|
|
@ -452,7 +472,6 @@ void LLFloaterIMSessionTab::appendMessage(const LLChat& chat, const LLSD &args)
|
|||
{
|
||||
im_box->setTimeNow(mSessionID,chat.mFromID);
|
||||
}
|
||||
|
||||
|
||||
LLChat& tmp_chat = const_cast<LLChat&>(chat);
|
||||
|
||||
|
|
@ -547,6 +566,27 @@ void LLFloaterIMSessionTab::removeConversationViewParticipant(const LLUUID& part
|
|||
LLFolderViewItem* widget = get_ptr_in_map(mConversationsWidgets,participant_id);
|
||||
if (widget)
|
||||
{
|
||||
LLFolderViewModelItem* item_vmi = widget->getViewModelItem();
|
||||
if (item_vmi && item_vmi->getNumRefs() == 1)
|
||||
{
|
||||
// This is the last pointer, remove participant from session
|
||||
// before participant gets deleted on destroyView.
|
||||
//
|
||||
// Floater (widget) and participant's view can simultaneously
|
||||
// co-own the model, in which case view is responsible for
|
||||
// the deletion and floater is free to clear and recreate
|
||||
// the list, yet there are cases where only widget owns
|
||||
// the pointer so it should do the cleanup.
|
||||
// See "add_participant".
|
||||
//
|
||||
// Todo: If it keeps causing issues turn participants
|
||||
// into LLPointers in the session
|
||||
LLParticipantList* session = getParticipantList();
|
||||
if (session)
|
||||
{
|
||||
session->removeChild(item_vmi);
|
||||
}
|
||||
}
|
||||
widget->destroyView();
|
||||
}
|
||||
mConversationsWidgets.erase(participant_id);
|
||||
|
|
|
|||
|
|
@ -662,6 +662,12 @@ bool LLFloaterPreference::postBuild()
|
|||
|
||||
gSavedSettings.getControl("PreferredMaturity")->getSignal()->connect(boost::bind(&LLFloaterPreference::onChangeMaturity, this));
|
||||
|
||||
gSavedSettings.getControl("RenderAvatarComplexityMode")->getSignal()->connect(
|
||||
[this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val)
|
||||
{
|
||||
onChangeComplexityMode(new_val);
|
||||
});
|
||||
|
||||
gSavedPerAccountSettings.getControl("ModelUploadFolder")->getSignal()->connect(boost::bind(&LLFloaterPreference::onChangeModelFolder, this));
|
||||
gSavedPerAccountSettings.getControl("PBRUploadFolder")->getSignal()->connect(boost::bind(&LLFloaterPreference::onChangePBRFolder, this));
|
||||
gSavedPerAccountSettings.getControl("TextureUploadFolder")->getSignal()->connect(boost::bind(&LLFloaterPreference::onChangeTextureFolder, this));
|
||||
|
|
@ -716,6 +722,9 @@ bool LLFloaterPreference::postBuild()
|
|||
LLSliderCtrl* fov_slider = getChild<LLSliderCtrl>("camera_fov");
|
||||
fov_slider->setMinValue(LLViewerCamera::getInstance()->getMinView());
|
||||
fov_slider->setMaxValue(LLViewerCamera::getInstance()->getMaxView());
|
||||
|
||||
bool enable_complexity = gSavedSettings.getS32("RenderAvatarComplexityMode") != LLVOAvatar::AV_RENDER_ONLY_SHOW_FRIENDS;
|
||||
getChild<LLSliderCtrl>("IndirectMaxComplexity")->setEnabled(enable_complexity);
|
||||
|
||||
// Hook up and init for filtering
|
||||
mFilterEdit = getChild<LLSearchEditor>("search_prefs_edit");
|
||||
|
|
@ -2841,6 +2850,12 @@ void LLFloaterPreference::onChangeMaturity()
|
|||
getChild<LLIconCtrl>("rating_icon_adult")->setVisible(sim_access == SIM_ACCESS_ADULT);
|
||||
}
|
||||
|
||||
void LLFloaterPreference::onChangeComplexityMode(const LLSD& newvalue)
|
||||
{
|
||||
bool enable_complexity = newvalue.asInteger() != LLVOAvatar::AV_RENDER_ONLY_SHOW_FRIENDS;
|
||||
getChild<LLSliderCtrl>("IndirectMaxComplexity")->setEnabled(enable_complexity);
|
||||
}
|
||||
|
||||
std::string get_category_path(LLUUID cat_id)
|
||||
{
|
||||
LLViewerInventoryCategory* cat = gInventory.getCategory(cat_id);
|
||||
|
|
|
|||
|
|
@ -229,7 +229,6 @@ public:
|
|||
bool moveTranscriptsAndLog();
|
||||
//[FIX FIRE-2765 : SJ] Making sure Reset button resets works
|
||||
void onClickResetLogPath();
|
||||
void enableHistory();
|
||||
// <FS:Ansariel> Show email address in preferences (FIRE-1071) and keep for OpenSim
|
||||
//void setPersonalInfo(const std::string& visibility);
|
||||
void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email);
|
||||
|
|
@ -260,10 +259,8 @@ public:
|
|||
|
||||
void refreshUI();
|
||||
|
||||
void onCommitMediaEnabled();
|
||||
void onCommitMusicEnabled();
|
||||
void applyResolution();
|
||||
void onChangeMaturity();
|
||||
void onChangeComplexityMode(const LLSD& newvalue);
|
||||
void onChangeModelFolder();
|
||||
void onChangePBRFolder();
|
||||
void onChangeTextureFolder();
|
||||
|
|
|
|||
|
|
@ -52,14 +52,14 @@ LLFloaterPreferenceGraphicsAdvanced::LLFloaterPreferenceGraphicsAdvanced(const L
|
|||
|
||||
mCommitCallbackRegistrar.add("Pref.Cancel", boost::bind(&LLFloaterPreferenceGraphicsAdvanced::onBtnCancel, this, _2));
|
||||
mCommitCallbackRegistrar.add("Pref.OK", boost::bind(&LLFloaterPreferenceGraphicsAdvanced::onBtnOK, this, _2));
|
||||
|
||||
gSavedSettings.getControl("RenderAvatarMaxNonImpostors")->getSignal()->connect(boost::bind(&LLFloaterPreferenceGraphicsAdvanced::updateIndirectMaxNonImpostors, this, _2));
|
||||
}
|
||||
|
||||
LLFloaterPreferenceGraphicsAdvanced::~LLFloaterPreferenceGraphicsAdvanced()
|
||||
{
|
||||
mComplexityChangedSignal.disconnect();
|
||||
mComplexityModeChangedSignal.disconnect();
|
||||
mLODFactorChangedSignal.disconnect();
|
||||
mNumImpostorsChangedSignal.disconnect();
|
||||
}
|
||||
|
||||
bool LLFloaterPreferenceGraphicsAdvanced::postBuild()
|
||||
|
|
@ -79,8 +79,26 @@ bool LLFloaterPreferenceGraphicsAdvanced::postBuild()
|
|||
use_HiDPI->setVisible(false);
|
||||
#endif
|
||||
|
||||
mComplexityChangedSignal = gSavedSettings.getControl("RenderAvatarMaxComplexity")->getCommitSignal()->connect(boost::bind(&LLFloaterPreferenceGraphicsAdvanced::updateComplexityText, this));
|
||||
mLODFactorChangedSignal = gSavedSettings.getControl("RenderVolumeLODFactor")->getCommitSignal()->connect(boost::bind(&LLFloaterPreferenceGraphicsAdvanced::updateObjectMeshDetailText, this));
|
||||
mComplexityChangedSignal = gSavedSettings.getControl("RenderAvatarMaxComplexity")->getCommitSignal()->connect(
|
||||
[this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val)
|
||||
{
|
||||
updateComplexityText();
|
||||
});
|
||||
mComplexityModeChangedSignal = gSavedSettings.getControl("RenderAvatarComplexityMode")->getSignal()->connect(
|
||||
[this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val)
|
||||
{
|
||||
updateComplexityMode(new_val);
|
||||
});
|
||||
mLODFactorChangedSignal = gSavedSettings.getControl("RenderVolumeLODFactor")->getCommitSignal()->connect(
|
||||
[this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val)
|
||||
{
|
||||
updateObjectMeshDetailText();
|
||||
});
|
||||
mNumImpostorsChangedSignal = gSavedSettings.getControl("RenderAvatarMaxNonImpostors")->getSignal()->connect(
|
||||
[this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val)
|
||||
{
|
||||
updateIndirectMaxNonImpostors(new_val);
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -145,6 +163,10 @@ void LLFloaterPreferenceGraphicsAdvanced::refresh()
|
|||
gSavedSettings.getU32("RenderAvatarMaxComplexity"),
|
||||
getChild<LLTextBox>("IndirectMaxComplexityText", true));
|
||||
refreshEnabledState();
|
||||
|
||||
bool enable_complexity = gSavedSettings.getS32("RenderAvatarComplexityMode") != LLVOAvatar::AV_RENDER_ONLY_SHOW_FRIENDS;
|
||||
getChild<LLSliderCtrl>("IndirectMaxComplexity")->setEnabled(enable_complexity);
|
||||
getChild<LLSliderCtrl>("IndirectMaxNonImpostors")->setEnabled(enable_complexity);
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::refreshEnabledGraphics()
|
||||
|
|
@ -160,6 +182,13 @@ void LLFloaterPreferenceGraphicsAdvanced::updateMaxComplexity()
|
|||
getChild<LLTextBox>("IndirectMaxComplexityText"));
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::updateComplexityMode(const LLSD& newvalue)
|
||||
{
|
||||
bool enable_complexity = newvalue.asInteger() != LLVOAvatar::AV_RENDER_ONLY_SHOW_FRIENDS;
|
||||
getChild<LLSliderCtrl>("IndirectMaxComplexity")->setEnabled(enable_complexity);
|
||||
getChild<LLSliderCtrl>("IndirectMaxNonImpostors")->setEnabled(enable_complexity);
|
||||
}
|
||||
|
||||
void LLFloaterPreferenceGraphicsAdvanced::updateComplexityText()
|
||||
{
|
||||
LLAvatarComplexityControls::setText(gSavedSettings.getU32("RenderAvatarMaxComplexity"),
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ public:
|
|||
void updateIndirectMaxNonImpostors(const LLSD& newvalue);
|
||||
void setMaxNonImpostorsText(U32 value, LLTextBox* text_box);
|
||||
void updateMaxComplexity();
|
||||
void updateComplexityMode(const LLSD& newvalue);
|
||||
void updateComplexityText();
|
||||
void updateObjectMeshDetailText();
|
||||
void refresh();
|
||||
|
|
@ -61,7 +62,9 @@ protected:
|
|||
void onBtnCancel(const LLSD& userdata);
|
||||
|
||||
boost::signals2::connection mComplexityChangedSignal;
|
||||
boost::signals2::connection mComplexityModeChangedSignal;
|
||||
boost::signals2::connection mLODFactorChangedSignal;
|
||||
boost::signals2::connection mNumImpostorsChangedSignal;
|
||||
};
|
||||
|
||||
#endif //LLFLOATERPREFERENCEGRAPHICSADVANCED_H
|
||||
|
|
|
|||
|
|
@ -452,6 +452,7 @@ LLPanelGroupSubTab::LLPanelGroupSubTab()
|
|||
|
||||
LLPanelGroupSubTab::~LLPanelGroupSubTab()
|
||||
{
|
||||
mSearchCommitConnection.disconnect();
|
||||
}
|
||||
|
||||
bool LLPanelGroupSubTab::postBuildSubTab(LLView* root)
|
||||
|
|
@ -484,7 +485,8 @@ bool LLPanelGroupSubTab::postBuild()
|
|||
mSearchEditor = findChild<LLFilterEditor>("filter_input", recurse);
|
||||
if (mSearchEditor) // SubTab doesn't implement this, only some of derived classes
|
||||
{
|
||||
mSearchEditor->setCommitCallback(boost::bind(&LLPanelGroupSubTab::setSearchFilter, this, _2));
|
||||
// panel
|
||||
mSearchCommitConnection = mSearchEditor->setCommitCallback(boost::bind(&LLPanelGroupSubTab::setSearchFilter, this, _2));
|
||||
}
|
||||
|
||||
return LLPanelGroupTab::postBuild();
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@ protected:
|
|||
LLPanel* mFooter;
|
||||
|
||||
LLFilterEditor* mSearchEditor;
|
||||
boost::signals2::connection mSearchCommitConnection;
|
||||
|
||||
std::string mSearchFilter;
|
||||
|
||||
|
|
|
|||
|
|
@ -625,6 +625,11 @@ LLPanelPeople::~LLPanelPeople()
|
|||
delete mFriendListUpdater;
|
||||
delete mRecentListUpdater;
|
||||
|
||||
mNearbyFilterCommitConnection.disconnect();
|
||||
mFriedsFilterCommitConnection.disconnect();
|
||||
mGroupsFilterCommitConnection.disconnect();
|
||||
mRecentFilterCommitConnection.disconnect();
|
||||
|
||||
if(LLVoiceClient::instanceExists())
|
||||
{
|
||||
LLVoiceClient::getInstance()->removeObserver(this);
|
||||
|
|
@ -669,10 +674,10 @@ bool LLPanelPeople::postBuild()
|
|||
// </FS:Ansariel>
|
||||
|
||||
// <FS:Ansariel> Firestorm radar
|
||||
//getChild<LLFilterEditor>("nearby_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
getChild<LLFilterEditor>("friends_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
getChild<LLFilterEditor>("groups_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
getChild<LLFilterEditor>("recent_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
//mNearbyFilterCommitConnection = getChild<LLFilterEditor>("nearby_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
mFriedsFilterCommitConnection = getChild<LLFilterEditor>("friends_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
mGroupsFilterCommitConnection = getChild<LLFilterEditor>("groups_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
mRecentFilterCommitConnection = getChild<LLFilterEditor>("recent_filter_input")->setCommitCallback(boost::bind(&LLPanelPeople::onFilterEdit, this, _2));
|
||||
|
||||
// <FS:Ansariel> Don't bother with "want more?" advertisement
|
||||
//if(LLAgentBenefitsMgr::current().getGroupMembershipLimit() < max_premium)
|
||||
|
|
|
|||
|
|
@ -176,6 +176,11 @@ private:
|
|||
Updater* mRecentListUpdater;
|
||||
Updater* mButtonsUpdater;
|
||||
LLHandle< LLFloater > mPicker;
|
||||
|
||||
boost::signals2::connection mNearbyFilterCommitConnection;
|
||||
boost::signals2::connection mFriedsFilterCommitConnection;
|
||||
boost::signals2::connection mGroupsFilterCommitConnection;
|
||||
boost::signals2::connection mRecentFilterCommitConnection;
|
||||
|
||||
// [FS:CR] Contact sets
|
||||
bool onContactSetsEnable(const LLSD& userdata);
|
||||
|
|
|
|||
|
|
@ -1082,8 +1082,13 @@ void handlePerformanceStatsEnabledChanged(const LLSD& newValue)
|
|||
}
|
||||
void handleUserImpostorByDistEnabledChanged(const LLSD& newValue)
|
||||
{
|
||||
const auto newval = gSavedSettings.getBOOL("AutoTuneImpostorByDistEnabled");
|
||||
LLPerfStats::tunables.userImpostorDistanceTuningEnabled = newval;
|
||||
bool auto_tune_newval = false;
|
||||
S32 mode = gSavedSettings.getS32("RenderAvatarComplexityMode");
|
||||
if (mode != LLVOAvatar::AV_RENDER_ONLY_SHOW_FRIENDS)
|
||||
{
|
||||
auto_tune_newval = gSavedSettings.getBOOL("AutoTuneImpostorByDistEnabled");
|
||||
}
|
||||
LLPerfStats::tunables.userImpostorDistanceTuningEnabled = auto_tune_newval;
|
||||
}
|
||||
void handleUserImpostorDistanceChanged(const LLSD& newValue)
|
||||
{
|
||||
|
|
@ -1171,6 +1176,7 @@ void settings_setup_listeners()
|
|||
setting_setup_signal_listener(gSavedSettings, "RenderGlowNoise", handleSetShaderChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderGammaFull", handleSetShaderChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderVolumeLODFactor", handleVolumeLODChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderAvatarComplexityMode", handleUserImpostorByDistEnabledChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderAvatarLODFactor", handleAvatarLODChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderAvatarPhysicsLODFactor", handleAvatarPhysicsLODChanged);
|
||||
setting_setup_signal_listener(gSavedSettings, "RenderTerrainLODFactor", handleTerrainLODChanged);
|
||||
|
|
|
|||
|
|
@ -1451,20 +1451,20 @@ public:
|
|||
bool handleEvent(const LLSD &userdata)
|
||||
{
|
||||
// Toggle the mode - regions will get updated
|
||||
if (gAgent.getInterestListMode() == LLViewerRegion::IL_MODE_360)
|
||||
if (gAgent.getInterestListMode() == IL_MODE_360)
|
||||
{
|
||||
// <FS:Beq> we need to force the 360 mode "users" to false or this override will fail
|
||||
gAgent.setFSAreaSearchActive(false);
|
||||
gAgent.set360CaptureActive(false);
|
||||
// <FS:Beq/>
|
||||
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_DEFAULT);
|
||||
gAgent.changeInterestListMode(IL_MODE_DEFAULT);
|
||||
}
|
||||
else
|
||||
{
|
||||
// <FS:Beq> we need to force the 360 mode user flag to true or this override will fail. Don;t set area search though as that can have other effects.
|
||||
gAgent.set360CaptureActive(false);
|
||||
// <FS:Beq/>
|
||||
gAgent.changeInterestListMode(LLViewerRegion::IL_MODE_360);
|
||||
gAgent.changeInterestListMode(IL_MODE_360);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1474,7 +1474,7 @@ class LLAdvancedCheckInterestList360Mode : public view_listener_t
|
|||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
return (gAgent.getInterestListMode() == LLViewerRegion::IL_MODE_360);
|
||||
return (gAgent.getInterestListMode() == IL_MODE_360);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -112,9 +112,6 @@ S32 LLViewerRegion::sLastCameraUpdated = 0;
|
|||
S32 LLViewerRegion::sNewObjectCreationThrottle = -1;
|
||||
LLViewerRegion::vocache_entry_map_t LLViewerRegion::sRegionCacheCleanup;
|
||||
|
||||
const std::string LLViewerRegion::IL_MODE_DEFAULT = "default";
|
||||
const std::string LLViewerRegion::IL_MODE_360 = "360";
|
||||
|
||||
typedef std::map<std::string, std::string> CapabilityMap;
|
||||
|
||||
static void log_capabilities(const CapabilityMap &capmap);
|
||||
|
|
@ -3692,7 +3689,7 @@ void LLViewerRegion::setInterestListMode(const std::string &new_mode)
|
|||
{
|
||||
mInterestListMode = new_mode;
|
||||
|
||||
if (mInterestListMode != std::string(IL_MODE_DEFAULT) && mInterestListMode != std::string(IL_MODE_360))
|
||||
if (mInterestListMode != IL_MODE_DEFAULT && mInterestListMode != IL_MODE_360)
|
||||
{
|
||||
LL_WARNS("360Capture") << "Region " << getRegionID() << " setInterestListMode() invalid interest list mode: "
|
||||
<< mInterestListMode << ", setting to default" << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -52,6 +52,11 @@ const U32 MAX_OBJECT_CACHE_ENTRIES = 50000;
|
|||
// Region handshake flags
|
||||
const U32 REGION_HANDSHAKE_SUPPORTS_SELF_APPEARANCE = 1U << 2;
|
||||
|
||||
// Interest list mode,
|
||||
// in use by agent and region classes so must exist before region classes
|
||||
const std::string IL_MODE_DEFAULT = "default";
|
||||
const std::string IL_MODE_360 = "360";
|
||||
|
||||
class LLEventPoll;
|
||||
class LLVLComposition;
|
||||
class LLViewerObject;
|
||||
|
|
@ -536,9 +541,6 @@ public:
|
|||
|
||||
void resetInterestList();
|
||||
|
||||
static const std::string IL_MODE_DEFAULT;
|
||||
static const std::string IL_MODE_360;
|
||||
|
||||
private:
|
||||
static S32 sNewObjectCreationThrottle;
|
||||
LLViewerRegionImpl * mImpl;
|
||||
|
|
|
|||
|
|
@ -913,10 +913,6 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
min_scale = llmax(min_scale*min_scale, 0.1f);
|
||||
|
||||
vsize /= min_scale;
|
||||
|
||||
#if LL_DARWIN
|
||||
vsize /= 1.f + LLViewerTexture::sDesiredDiscardBias*(1.f+face->getDrawable()->mDistanceWRTCamera*bias_distance_scale);
|
||||
#else
|
||||
vsize /= LLViewerTexture::sDesiredDiscardBias;
|
||||
vsize /= llmax(1.f, (LLViewerTexture::sDesiredDiscardBias-1.f) * (1.f + face->getDrawable()->mDistanceWRTCamera * bias_distance_scale));
|
||||
|
||||
|
|
@ -927,7 +923,6 @@ void LLViewerTextureList::updateImageDecodePriority(LLViewerFetchedTexture* imag
|
|||
{ // further reduce by discard bias when off screen or occluded
|
||||
vsize /= LLViewerTexture::sDesiredDiscardBias;
|
||||
}
|
||||
#endif
|
||||
// if a GLTF material is present, ignore that face
|
||||
// as far as this texture stats go, but update the GLTF material
|
||||
// stats
|
||||
|
|
|
|||
|
|
@ -9278,13 +9278,17 @@ bool LLVOAvatar::isFullyLoaded() const
|
|||
bool LLVOAvatar::isTooComplex() const
|
||||
{
|
||||
bool too_complex;
|
||||
static LLCachedControl<bool> always_render_friends(gSavedSettings, "AlwaysRenderFriends");
|
||||
bool render_friend = (LLAvatarTracker::instance().isBuddy(getID()) && always_render_friends);
|
||||
static LLCachedControl<S32> compelxity_render_mode(gSavedSettings, "RenderAvatarComplexityMode");
|
||||
bool render_friend = (LLAvatarTracker::instance().isBuddy(getID()) && compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY);
|
||||
|
||||
if (isSelf() || render_friend || mVisuallyMuteSetting == AV_ALWAYS_RENDER)
|
||||
{
|
||||
too_complex = false;
|
||||
}
|
||||
else if (compelxity_render_mode == AV_RENDER_ONLY_SHOW_FRIENDS && !mIsControlAvatar)
|
||||
{
|
||||
too_complex = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Determine if visually muted or not
|
||||
|
|
@ -9304,13 +9308,17 @@ bool LLVOAvatar::isTooComplex() const
|
|||
|
||||
bool LLVOAvatar::isTooSlow() const
|
||||
{
|
||||
static LLCachedControl<bool> always_render_friends(gSavedSettings, "AlwaysRenderFriends");
|
||||
bool render_friend = (LLAvatarTracker::instance().isBuddy(getID()) && always_render_friends);
|
||||
static LLCachedControl<S32> compelxity_render_mode(gSavedSettings, "RenderAvatarComplexityMode");
|
||||
bool render_friend = (LLAvatarTracker::instance().isBuddy(getID()) && compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY);
|
||||
|
||||
if (render_friend || mVisuallyMuteSetting == AV_ALWAYS_RENDER)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (compelxity_render_mode == AV_RENDER_ONLY_SHOW_FRIENDS && !mIsControlAvatar)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return mTooSlow;
|
||||
}
|
||||
|
||||
|
|
@ -9318,7 +9326,7 @@ bool LLVOAvatar::isTooSlow() const
|
|||
void LLVOAvatar::updateTooSlow()
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED_CATEGORY_AVATAR;
|
||||
static LLCachedControl<bool> alwaysRenderFriends(gSavedSettings, "AlwaysRenderFriends");
|
||||
static LLCachedControl<S32> compelxity_render_mode(gSavedSettings, "RenderAvatarComplexityMode");
|
||||
static LLCachedControl<bool> allowSelfImpostor(gSavedSettings, "AllowSelfImpostor");
|
||||
const auto id = getID();
|
||||
bool changed_slow_state{false}; // <FS:Beq> Post LL merge, force dirty when slowness state changes
|
||||
|
|
@ -9352,12 +9360,14 @@ void LLVOAvatar::updateTooSlow()
|
|||
|
||||
if(!mTooSlowWithoutShadows) // if we were not previously above the full impostor cap
|
||||
{
|
||||
bool render_friend_or_exception = ( alwaysRenderFriends && LLAvatarTracker::instance().isBuddy( id ) ) ||
|
||||
bool always_render_friends = compelxity_render_mode > AV_RENDER_LIMIT_BY_COMPLEXITY;
|
||||
bool render_friend_or_exception = (always_render_friends && LLAvatarTracker::instance().isBuddy( id ) ) ||
|
||||
( getVisualMuteSettings() == LLVOAvatar::AV_ALWAYS_RENDER );
|
||||
if( (!isSelf() || allowSelfImpostor) && !render_friend_or_exception )
|
||||
if( (!isSelf() || allowSelfImpostor) && !render_friend_or_exception)
|
||||
{
|
||||
// Note: slow rendering Friends still get their shadows zapped.
|
||||
mTooSlowWithoutShadows = getGPURenderTime()*2.f >= max_art_ms; // NOTE: assumes shadow rendering doubles render time
|
||||
mTooSlowWithoutShadows = (getGPURenderTime()*2.f >= max_art_ms) // NOTE: assumes shadow rendering doubles render time
|
||||
|| (compelxity_render_mode == AV_RENDER_ONLY_SHOW_FRIENDS && !mIsControlAvatar);
|
||||
}
|
||||
if(mTooSlowWithoutShadows)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -508,7 +508,14 @@ public:
|
|||
// [RLVa:KB] - Checked: RLVa-2.2 (@setcam_avdist)
|
||||
bool isRlvSilhouette() const;
|
||||
// [/RLVa:KB]
|
||||
void forceUpdateVisualMuteSettings();
|
||||
|
||||
// states for RenderAvatarComplexityMode
|
||||
enum ERenderComplexityMode
|
||||
{
|
||||
AV_RENDER_LIMIT_BY_COMPLEXITY = 0,
|
||||
AV_RENDER_ALWAYS_SHOW_FRIENDS = 1,
|
||||
AV_RENDER_ONLY_SHOW_FRIENDS = 2
|
||||
};
|
||||
|
||||
// Visual Mute Setting is an input. Does not necessarily determine
|
||||
// what the avatar looks like, because it interacts with other
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
/**
|
||||
* @file macmain.h
|
||||
* @brief Main Mac viewer defines
|
||||
*
|
||||
* $LicenseInfo:firstyear=2003&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
/* main.h */
|
||||
|
||||
#define rMenuBar 128 /* menu bar */
|
||||
|
||||
#define mApple 128 /* Apple menu */
|
||||
#define iAbout 1
|
||||
|
||||
#define mFile 129 /* File menu */
|
||||
#define iNew 1
|
||||
#define iClose 4
|
||||
#define iQuitSeparator 10
|
||||
#define iQuit 11
|
||||
|
||||
#define mEdit 130 /* Edit menu */
|
||||
|
||||
#define kAboutBox 200 /* Dialog resource for About box */
|
||||
|
||||
#define kSleepTime 32767
|
||||
|
|
@ -173,7 +173,6 @@
|
|||
<menu_item_call label="Animasiya kəşfi" name="Animation Explorer"/>
|
||||
<menu_item_call label="Aktivlərin qara siyahısı" name="asset_blacklist"/>
|
||||
<menu_item_call label="Avatarların görüntü ayarları" name="Avatar Render Settings"/>
|
||||
<menu_item_check label="Həmişə dostlarını tam göstərmək" name="Always show Friends normally"/>
|
||||
<menu_item_check label="Yalnız dostları göstərmək" name="Render Friends Only"/>
|
||||
</menu>
|
||||
|
||||
|
|
|
|||
|
|
@ -172,7 +172,6 @@
|
|||
<menu_item_call label="Animation-Explorer" name="Animation Explorer"/>
|
||||
<menu_item_call label="Asset-Blacklist" name="asset_blacklist"/>
|
||||
<menu_item_call label="Avatar-Anzeigeeinstellungen" name="Avatar Render Settings"/>
|
||||
<menu_item_check label="Freunde immer komplett anzeigen" name="Always show Friends normally"/>
|
||||
<menu_item_check label="Nur Freunde anzeigen" name="Render Friends Only"/>
|
||||
</menu>
|
||||
<menu label="Bauen" name="BuildTools">
|
||||
|
|
|
|||
|
|
@ -83,6 +83,14 @@
|
|||
m
|
||||
</text>
|
||||
<slider label="Max. Partikelanzahl:" name="MaxParticleCount"/>
|
||||
<text width="125" name="AvatarComplexityModeLabel">
|
||||
Avatar-Darstellung:
|
||||
</text>
|
||||
<combo_box name="AvatarComplexityMode" width="175">
|
||||
<combo_box.item label="Komplexitätsbegrenzung" name="0"/>
|
||||
<combo_box.item label="Freunde immer anzeigen" name="1"/>
|
||||
<combo_box.item label="Nur Freunde anzeigen" name="2"/>
|
||||
</combo_box>
|
||||
<slider label="Max. Komplexität:" name="IndirectMaxComplexity" tool_tip="Legt fest, ab welchem Wert ein visuell komplexer Avatar als JellyDoll dargestellt wird."/>
|
||||
<slider label="Max. voll dargestellte Avatare:" name="IndirectMaxNonImpostors"/>
|
||||
<slider label="Post-Processing-Qualität:" name="RenderPostProcess"/>
|
||||
|
|
|
|||
|
|
@ -128,6 +128,42 @@
|
|||
Avatar
|
||||
</text>
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
top_delta="16"
|
||||
width="128"
|
||||
name="AvatarComplexityModeLabel"
|
||||
text_readonly_color="LabelDisabledColor">
|
||||
Avatar display:
|
||||
</text>
|
||||
|
||||
<combo_box
|
||||
control_name="RenderAvatarComplexityMode"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_delta="130"
|
||||
top_delta="0"
|
||||
name="AvatarComplexityMode"
|
||||
width="150">
|
||||
<combo_box.item
|
||||
label="Limit by complexity"
|
||||
name="0"
|
||||
value="0"/>
|
||||
<combo_box.item
|
||||
label="Always show friends"
|
||||
name="1"
|
||||
value="1"/>
|
||||
<combo_box.item
|
||||
label="Only show friends"
|
||||
name="2"
|
||||
value="2"/>
|
||||
</combo_box>
|
||||
|
||||
<slider
|
||||
control_name="IndirectMaxComplexity"
|
||||
tool_tip="Controls at what point a visually complex avatar is drawn as a JellyDoll"
|
||||
|
|
|
|||
|
|
@ -1614,16 +1614,6 @@
|
|||
function="Floater.Toggle"
|
||||
parameter="fs_avatar_render_settings" />
|
||||
</menu_item_call>
|
||||
<menu_item_check
|
||||
label="Always show Friends fully"
|
||||
name="Always show Friends normally">
|
||||
<menu_item_check.on_click
|
||||
function="ToggleControl"
|
||||
parameter="AlwaysRenderFriends"/>
|
||||
<menu_item_check.on_check
|
||||
function="CheckControl"
|
||||
parameter="AlwaysRenderFriends"/>
|
||||
</menu_item_check>
|
||||
<menu_item_check
|
||||
label="Show Friends only"
|
||||
name="Render Friends Only">
|
||||
|
|
|
|||
|
|
@ -194,18 +194,41 @@ top="0">
|
|||
width="580">
|
||||
Note: Your own avatar includes viewer overheads. Use the attachment tab to see how you affect others.
|
||||
</text>
|
||||
<check_box
|
||||
control_name="AlwaysRenderFriends"
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
initial_value="true"
|
||||
label="Always display friends in full detail"
|
||||
label_text.text_color="White"
|
||||
layout="topleft"
|
||||
name="display_friends"
|
||||
top_pad="2"
|
||||
left="18"
|
||||
width="256">
|
||||
</check_box>
|
||||
top_pad="2"
|
||||
name="AvatarComplexityModeLabel"
|
||||
text_readonly_color="LabelDisabledColor"
|
||||
width="128">
|
||||
Avatar display:
|
||||
</text>
|
||||
<combo_box
|
||||
control_name="RenderAvatarComplexityMode"
|
||||
height="23"
|
||||
layout="topleft"
|
||||
left_delta="130"
|
||||
top_delta="-4"
|
||||
name="AvatarComplexityMode"
|
||||
width="150">
|
||||
<combo_box.item
|
||||
label="Limit by complexity"
|
||||
name="0"
|
||||
value="0"/>
|
||||
<combo_box.item
|
||||
label="Always show friends"
|
||||
name="1"
|
||||
value="1"/>
|
||||
<combo_box.item
|
||||
label="Only show friends"
|
||||
name="2"
|
||||
value="2"/>
|
||||
</combo_box>
|
||||
<button
|
||||
height="23"
|
||||
label="Exceptions..."
|
||||
|
|
|
|||
|
|
@ -472,6 +472,39 @@
|
|||
name="MaxParticleCount"
|
||||
top_pad="6"
|
||||
width="301" />
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="200"
|
||||
top_pad="8"
|
||||
width="150"
|
||||
name="AvatarComplexityModeLabel">
|
||||
Avatar display
|
||||
</text>
|
||||
<combo_box
|
||||
control_name="RenderAvatarComplexityMode"
|
||||
height="23"
|
||||
layout="topleft"
|
||||
left_pad="2"
|
||||
top_delta="-4"
|
||||
name="AvatarComplexityMode"
|
||||
width="150">
|
||||
<combo_box.item
|
||||
label="Limit by complexity"
|
||||
name="0"
|
||||
value="0"/>
|
||||
<combo_box.item
|
||||
label="Always show friends"
|
||||
name="1"
|
||||
value="1"/>
|
||||
<combo_box.item
|
||||
label="Only show friends"
|
||||
name="2"
|
||||
value="2"/>
|
||||
</combo_box>
|
||||
<slider
|
||||
control_name="IndirectMaxComplexity"
|
||||
tool_tip="Controls at what point a visually complex avatar is drawn as a JellyDoll"
|
||||
|
|
@ -480,10 +513,10 @@
|
|||
height="15"
|
||||
increment="1"
|
||||
initial_value="101"
|
||||
label="Maximum complexity"
|
||||
label="Avatar maximum complexity"
|
||||
label_width="185"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
left="200"
|
||||
max_val="101"
|
||||
min_val="1"
|
||||
show_text="false"
|
||||
|
|
|
|||
|
|
@ -160,7 +160,6 @@
|
|||
<menu_item_call label="Explorateur d'animations" name="Animation Explorer"/>
|
||||
<menu_item_call label="Liste noire d'éléments" name="asset_blacklist"/>
|
||||
<menu_item_call label="Paramètres d'affichage de l'avatar" name="Avatar Render Settings"/>
|
||||
<menu_item_check label="Toujours afficher complètement les amis" name="Always show Friends normally"/>
|
||||
<menu_item_check label="N'afficher que les amis" name="Render Friends Only"/>
|
||||
</menu>
|
||||
<menu label="Construire" name="BuildTools">
|
||||
|
|
|
|||
|
|
@ -175,7 +175,6 @@
|
|||
<menu_item_call label="Esplora Animazioni" name="Animation Explorer"/>
|
||||
<menu_item_call label="Lista Nera" name="asset_blacklist"/>
|
||||
<menu_item_call label="Impostazioni Rendering Avatar" name="Avatar Render Settings"/>
|
||||
<menu_item_check label="Mostra amici sempre con il massimo dettaglio" name="Always show Friends normally"/>
|
||||
<menu_item_check label="Mostra solo amici" name="Render Friends Only"/>
|
||||
</menu>
|
||||
<menu label="Costruisci" name="BuildTools">
|
||||
|
|
|
|||
|
|
@ -180,7 +180,6 @@
|
|||
<menu_item_call label="アニメーションエクスプローラ" name="Animation Explorer" />
|
||||
<menu_item_call label="非表示アイテムリスト" name="asset_blacklist"/>
|
||||
<menu_item_call label="アバターの表示設定" name="Avatar Render Settings" />
|
||||
<menu_item_check label="フレンドは常に通常表示" name="Always show Friends normally" />
|
||||
<menu_item_check label="フレンドのみ表示" name="Render Friends Only" />
|
||||
</menu>
|
||||
|
||||
|
|
|
|||
|
|
@ -175,7 +175,6 @@
|
|||
<menu_item_call label="Eksplorator animacji" name="Animation Explorer"/>
|
||||
<menu_item_call label="Czarna lista zasobów danych (assetów)" name="asset_blacklist"/>
|
||||
<menu_item_call label="Ustawienia renderowania awatarów" name="Avatar Render Settings"/>
|
||||
<menu_item_check label="Zawsze renderuj znajomych w pełni" name="Always show Friends normally"/>
|
||||
<menu_item_check label="Renderuj tylko znajomych" name="Render Friends Only"/>
|
||||
</menu>
|
||||
<menu label="Buduj" name="BuildTools">
|
||||
|
|
|
|||
|
|
@ -202,7 +202,6 @@
|
|||
<menu_item_call label="Проводник анимаций" name="Animation Explorer"/>
|
||||
<menu_item_call label="Черный список активов" name="asset_blacklist"/>
|
||||
<menu_item_call label="Настройки отображения аватаров" name="Avatar Render Settings"/>
|
||||
<menu_item_check label="Всегда показывать друзей полностью" name="Always show Friends normally"/>
|
||||
<menu_item_check label="Показывать только друзей" name="Render Friends Only"/>
|
||||
</menu>
|
||||
|
||||
|
|
|
|||
|
|
@ -367,13 +367,13 @@ namespace tut
|
|||
gTOSReplyPump = 0; // clear the callback.
|
||||
|
||||
|
||||
gSavedSettings.declareBOOL("NoInventoryLibrary", FALSE, "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareBOOL("ConnectAsGod", FALSE, "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareBOOL("UseDebugMenus", FALSE, "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareBOOL("NoInventoryLibrary", false, "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareBOOL("ConnectAsGod", false, "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareBOOL("UseDebugMenus", false, "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareString("ClientSettingsFile", "test_settings.xml", "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareString("NextLoginLocation", "", "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareBOOL("LoginLastLocation", FALSE, "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareBOOL("CmdLineSkipUpdater", TRUE, "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareBOOL("LoginLastLocation", false, "", LLControlVariable::PERSIST_NO);
|
||||
gSavedSettings.declareBOOL("CmdLineSkipUpdater", true, "", LLControlVariable::PERSIST_NO);
|
||||
|
||||
LLSD authenticator = LLSD::emptyMap();
|
||||
LLSD identifier = LLSD::emptyMap();
|
||||
|
|
|
|||
|
|
@ -964,7 +964,7 @@ namespace tut
|
|||
// test creation of credentials
|
||||
my_cred = handler->createCredential("mysavedgrid", my_id, my_authenticator);
|
||||
// test save without saving authenticator.
|
||||
handler->saveCredential(my_cred, FALSE);
|
||||
handler->saveCredential(my_cred, false);
|
||||
my_new_cred = handler->loadCredential("mysavedgrid");
|
||||
ensure_equals("saved credential without auth",
|
||||
(const std::string)my_new_cred->getIdentifier()["type"], "test_type");
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ static void substitute_string(std::string &input, const std::string &search, con
|
|||
#include "../llagent.h"
|
||||
LLAgent::LLAgent() : mAgentAccess(NULL) { }
|
||||
LLAgent::~LLAgent() { }
|
||||
bool LLAgent::isGodlike() const { return FALSE; }
|
||||
bool LLAgent::isGodlike() const { return false; }
|
||||
|
||||
LLAgent gAgent;
|
||||
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ namespace tut
|
|||
LLSaleInfo saleinfo1 = ll_sale_info_from_sd(llsd_obj1);
|
||||
|
||||
ensure("1. The getSaleType() fn failed", LLSaleInfo::FS_COPY == llsaleinfo.getSaleType());
|
||||
ensure("2. LLSaleInfo::isForSale() fn failed", TRUE == llsaleinfo.isForSale());
|
||||
ensure("2. LLSaleInfo::isForSale() fn failed", true == llsaleinfo.isForSale());
|
||||
ensure("3. The getSalePrice() fn failed", sale_price == llsaleinfo.getSalePrice());
|
||||
ensure("4. The getCRC32() fn failed", 235833404 == llsaleinfo.getCRC32());
|
||||
ensure("5. LLSaleInfo::lookup(const char* name) fn failed", LLSaleInfo::FS_COPY == llsaleinfo.lookup(sale));
|
||||
|
|
@ -68,7 +68,7 @@ namespace tut
|
|||
saleinfo1 = ll_sale_info_from_sd(llsd_obj1);
|
||||
|
||||
ensure("8. The getSaleType() and setSaleType() fn failed", LLSaleInfo::FS_ORIGINAL == llsaleinfo.getSaleType());
|
||||
ensure("9. LLSaleInfo::isForSale() fn failed", TRUE == llsaleinfo.isForSale());
|
||||
ensure("9. LLSaleInfo::isForSale() fn failed", true == llsaleinfo.isForSale());
|
||||
ensure("10. The getSalePrice() fn failed", 10000000 == llsaleinfo.getSalePrice());
|
||||
ensure("11. The getCRC32() fn failed", 127911702 == llsaleinfo.getCRC32());
|
||||
ensure("12. LLSaleInfo::lookup(const char* name) fn failed", LLSaleInfo::FS_CONTENTS == llsaleinfo.lookup(sale));
|
||||
|
|
@ -82,7 +82,7 @@ namespace tut
|
|||
saleinfo1 = ll_sale_info_from_sd(llsd_obj1);
|
||||
|
||||
ensure("15. The getSaleType() and setSaleType() fn failed", LLSaleInfo::FS_CONTENTS == llsaleinfo.getSaleType());
|
||||
ensure("16. LLSaleInfo::isForSale() fn failed", TRUE == llsaleinfo.isForSale());
|
||||
ensure("16. LLSaleInfo::isForSale() fn failed", true == llsaleinfo.isForSale());
|
||||
ensure("17. The getSalePrice() fn failed", 55000550 == llsaleinfo.getSalePrice());
|
||||
ensure("18. The getCRC32() fn failed", 408735656 == llsaleinfo.getCRC32());
|
||||
ensure("19. LLSaleInfo::lookup(const char* name) fn failed", LLSaleInfo::FS_ORIGINAL == llsaleinfo.lookup(sale));
|
||||
|
|
@ -96,7 +96,7 @@ namespace tut
|
|||
saleinfo1 = ll_sale_info_from_sd(llsd_obj1);
|
||||
|
||||
ensure("22. The getSaleType() and setSaleType() fn failed", LLSaleInfo::FS_NOT == llsaleinfo.getSaleType());
|
||||
ensure("23. LLSaleInfo::isForSale() fn failed", FALSE == llsaleinfo.isForSale());
|
||||
ensure("23. LLSaleInfo::isForSale() fn failed", false == llsaleinfo.isForSale());
|
||||
ensure("24. The getSalePrice() fn failed", 0 == llsaleinfo.getSalePrice());
|
||||
ensure("25. The getCRC32() fn failed", 0 == llsaleinfo.getCRC32());
|
||||
ensure("26. LLSaleInfo::lookup(const char* name) fn failed", LLSaleInfo::FS_NOT == llsaleinfo.lookup(sale));
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ namespace tut
|
|||
1,
|
||||
0,
|
||||
0,
|
||||
FALSE,
|
||||
false,
|
||||
"notasharedsecret",
|
||||
NULL,
|
||||
false,
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ namespace tut
|
|||
1,
|
||||
0,
|
||||
0,
|
||||
FALSE,
|
||||
false,
|
||||
"notasharedsecret",
|
||||
NULL,
|
||||
false,
|
||||
|
|
|
|||
Loading…
Reference in New Issue