diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 8323ba1ce7..365fa52fb7 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -25623,5 +25623,16 @@ Change of this parameter will affect the layout of buttons in notification toast
Value
0
+ FSStatusBarTimeFormat
+
diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp
index b4236c406b..5a7ea32711 100644
--- a/indra/newview/lllandmarklist.cpp
+++ b/indra/newview/lllandmarklist.cpp
@@ -106,12 +106,14 @@ LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t
mWaitList.insert(asset_uuid);
return NULL;
}
-
+ // fIRE-14457 Fix CopySLURL fails / landmakrs not loading - based on snippet from Chorazin Allen
+ mRequestedList[asset_uuid] = gFrameTimeSeconds;
gAssetStorage->getAssetData(asset_uuid,
LLAssetType::AT_LANDMARK,
LLLandmarkList::processGetAssetReply,
NULL);
- mRequestedList[asset_uuid] = gFrameTimeSeconds;
+ // fIRE-14457 Fix CopySLURL fails / landmakrs not loading - based on snippet from Chorazin Allen
+ // mRequestedList[asset_uuid] = gFrameTimeSeconds;
}
return NULL;
}
diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp
index 134dfd5a73..0ce7258e59 100644
--- a/indra/newview/llstatusbar.cpp
+++ b/indra/newview/llstatusbar.cpp
@@ -519,9 +519,49 @@ BOOL LLStatusBar::postBuild()
updateVolumeControlsVisibility(LLSD(FALSE));
}
//
+
+ // FIRE-20390, FIRE-4269 - Option for 12/24 hour clock and seconds display
+ mClockFormatChoices["12 Hour"] = "[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt]";
+ mClockFormatChoices["12 Hour Seconds"] = "[hour12, datetime, slt]:[min, datetime, slt]:[second, datetime, slt] [ampm, datetime, slt]";
+ mClockFormatChoices["12 Hour TZ"] = "[hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]";
+ mClockFormatChoices["12 Hour TZ Seconds"] = "[hour12, datetime, slt]:[min, datetime, slt]:[second, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt]";
+ mClockFormatChoices["24 Hour"] = "[hour24, datetime, slt]:[min, datetime, slt]";
+ mClockFormatChoices["24 Hour Seconds"] = "[hour24, datetime, slt]:[min, datetime, slt]:[second, datetime, slt]";
+ mClockFormatChoices["24 Hour TZ"] = "[hour24, datetime, slt]:[min, datetime, slt] [timezone, datetime, slt]";
+ mClockFormatChoices["24 Hour TZ Seconds"] = "[hour24, datetime, slt]:[min, datetime, slt]:[second, datetime, slt] [timezone, datetime, slt]";
+
+ // use the time format defined in the language's panel_status_bar.xml (default)
+ mClockFormatChoices["Language"] = getString("time");
+
+ mClockFormat = gSavedSettings.getString("FSStatusBarTimeFormat");
+ //
+
return TRUE;
}
+// FIRE-20390, FIRE-4269 - Option for 12/24 hour clock and seconds display
+void LLStatusBar::updateClockDisplay()
+{
+ // Get current UTC time, adjusted for the user's clock
+ // being off.
+ time_t utc_time;
+ utc_time = time_corrected();
+
+ std::string timeStr = mClockFormatChoices[mClockFormat];
+ LLSD substitution;
+ substitution["datetime"] = (S32) utc_time;
+ LLStringUtil::format (timeStr, substitution);
+ mTextTime->setText(timeStr);
+
+ // Add seconds to clock
+ static const std::string tooltip_template = getString("timeTooltip");
+ std::string dtStr = tooltip_template;
+ //
+ LLStringUtil::format (dtStr, substitution);
+ mTextTime->setToolTip (dtStr);
+}
+//
+
// Per-frame updates of visibility
void LLStatusBar::refresh()
{
@@ -562,29 +602,25 @@ void LLStatusBar::refresh()
{
mClockUpdateTimer.reset();
- // Get current UTC time, adjusted for the user's clock
- // being off.
- time_t utc_time;
- utc_time = time_corrected();
+ // FIRE-20390, FIRE-4269 - Option for 12/24 hour clock and seconds display
+ // // Get current UTC time, adjusted for the user's clock
+ // // being off.
+ // time_t utc_time;
+ // utc_time = time_corrected();
- // Add seconds to clock
- //std::string timeStr = getString("time");
- static const std::string time_template = getString("time");
- std::string timeStr = time_template;
- //
- LLSD substitution;
- substitution["datetime"] = (S32) utc_time;
- LLStringUtil::format (timeStr, substitution);
- mTextTime->setText(timeStr);
+ // std::string timeStr = getString("time");
+ // LLSD substitution;
+ // substitution["datetime"] = (S32) utc_time;
+ // LLStringUtil::format (timeStr, substitution);
+ // mTextTime->setText(timeStr);
- // set the tooltip to have the date
- // Add seconds to clock
- //std::string dtStr = getString("timeTooltip");
- static const std::string tooltip_template = getString("timeTooltip");
- std::string dtStr = tooltip_template;
- //
- LLStringUtil::format (dtStr, substitution);
- mTextTime->setToolTip (dtStr);
+ // // set the tooltip to have the date
+ // std::string dtStr = getString("timeTooltip");
+ // LLStringUtil::format (dtStr, substitution);
+ // mTextTime->setToolTip (dtStr);
+
+ updateClockDisplay();
+ //
}
// Pathfinding rebake functions
@@ -1717,6 +1753,14 @@ void LLStatusBar::onPopupRolloverChanged(const LLSD& newvalue)
}
}
+// FIRE-20390, FIRE-4269 - Option for 12/24 hour clock and seconds display
+void LLStatusBar::onTimeFormatChanged(const std::string& format)
+{
+ mClockFormat = format;
+ updateClockDisplay();
+}
+//
+
// Implements secondlife:///app/balance/request to request a L$ balance
// update via UDP message system. JC
class LLBalanceHandler : public LLCommandHandler
diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h
index a14a1f8370..81d427cfd4 100644
--- a/indra/newview/llstatusbar.h
+++ b/indra/newview/llstatusbar.h
@@ -157,6 +157,9 @@ public:
void updateCurrencySymbols();
//
+ // FIRE-20390, FIRE-4269 - Option for 12/24 hour clock and seconds display
+ void onTimeFormatChanged(const std::string& format);
+
private:
void onClickBuyCurrency();
@@ -166,7 +169,8 @@ private:
void onMouseEnterPresets();
void onMouseEnterVolume();
void onMouseEnterNearbyMedia();
- void onClickScreen(S32 x, S32 y);
+ // Does not exist 15-02-2021
+ //void onClickScreen(S32 x, S32 y);
static void onClickStreamToggle(void* data); // Media/Stream separation
static void onClickMediaToggle(void* data);
@@ -259,16 +263,11 @@ private:
/**
* Updates the visibility state of the parcel icons according to parcel properties
*/
- void updateParcelIconVisibility();
+ // Does not exist 15-02-2021
+ //void updateParcelIconVisibility();
void onBuyLandClicked();
- // Pathfinding support
- void onRegionBoundaryCrossed();
- void onNavMeshStatusChange(const LLPathfindingNavMeshStatus &pNavMeshStatus);
- void createNavMeshStatusListenerForCurrentRegion();
- // Pathfinding support
-
// FIRE-19697: Add setting to disable graphics preset menu popup on mouse over
void onPopupRolloverChanged(const LLSD& newvalue);
@@ -395,6 +394,13 @@ private:
void onMouseLeaveParcelInfo();
//
+// FIRE-20390, FIRE-4269 - Option for 12/24 hour clock and seconds display
+ std::map mClockFormatChoices;
+ std::string mClockFormat;
+
+ void updateClockDisplay();
+//
+
std::string mCurrentLocationString;
};
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 1904b7e63c..2f4b91a114 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -1048,6 +1048,17 @@ void handleSmallCameraFloaterChanged(const LLSD& newValue)
}
//
+// FIRE-20390, FIRE-4269 - Option for 12/24 hour clock and seconds display
+void handleStatusbarTimeformatChanged(const LLSD& newValue)
+{
+ const std::string format = newValue.asString();
+ if (gStatusBar)
+ {
+ gStatusBar->onTimeFormatChanged(format);
+ }
+}
+//
+
////////////////////////////////////////////////////////////////////////////
void settings_setup_listeners()
@@ -1298,6 +1309,9 @@ void settings_setup_listeners()
// Optional small camera floater
gSavedSettings.getControl("FSUseSmallCameraFloater")->getSignal()->connect(boost::bind(&handleSmallCameraFloaterChanged, _2));
+
+ // FIRE-20390, FIRE-4269 - Option for 12/24 hour clock and seconds display
+ gSavedSettings.getControl("FSStatusBarTimeFormat")->getSignal()->connect(boost::bind(&handleStatusbarTimeformatChanged, _2));
}
#if TEST_CACHED_CONTROL
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index cd60588896..dc040019f0 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -83,6 +83,7 @@
#include
#include
+#include // FIRE-30694 DeadObject Spamming cleanup
#include "fsassetblacklist.h"
#include "fsfloaterimport.h"
#include "fscommon.h"
@@ -1410,15 +1411,30 @@ void LLViewerObjectList::clearDebugText()
void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp)
{
- bool new_dead_object = true;
+ // FIRE-30694 DeadObject Spam - handle new_dead_object properly and closer to source
+ // bool new_dead_object = true;
if (mDeadObjects.find(objectp->mID) != mDeadObjects.end())
{
LL_INFOS() << "Object " << objectp->mID << " already on dead list!" << LL_ENDL;
- new_dead_object = false;
+ // FIRE-30694 DeadObject Spam
+ // new_dead_object = false;
}
else
{
- mDeadObjects.insert(objectp->mID);
+ // FIRE-30694 DeadObject Spam
+ // mDeadObjects.insert(objectp->mID);
+ bool success;
+ std::tie( std::ignore, success ) = mDeadObjects.insert( objectp->mID );
+ if( success )
+ {
+ mNumDeadObjects++;
+ llassert( mNumDeadObjects == mDeadObjects.size() );
+ }
+ else
+ {
+ LL_WARNS() << "Object " << objectp->mID << " failed to insert on dead list!" << LL_ENDL;
+ }
+ //
}
// Cleanup any references we have to this object
@@ -1454,10 +1470,11 @@ void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp)
// Also, not cleaned up
removeDrawable(objectp->mDrawable);
- if(new_dead_object)
- {
- mNumDeadObjects++;
- }
+ // FIRE-30694 DeadObject Spam
+ // if(new_dead_object)
+ // {
+ // mNumDeadObjects++;
+ // }
}
static LLTrace::BlockTimerStatHandle FTM_REMOVE_DRAWABLE("Remove Drawable");
@@ -1589,12 +1606,17 @@ void LLViewerObjectList::killAllObjects()
void LLViewerObjectList::cleanDeadObjects(BOOL use_timer)
{
+ // FIRE-30694 DeadObject Spam
+ llassert( mNumDeadObjects == mDeadObjects.size() );
+
if (!mNumDeadObjects)
{
// No dead objects, don't need to scan object list.
return;
}
+ // FIRE-30694 DeadObject Spam
+ S32 num_divergent = 0;
S32 num_removed = 0;
LLViewerObject *objectp;
@@ -1617,7 +1639,13 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer)
if (objectp->isDead())
{
- mDeadObjects.erase(objectp->mID); // Use timer for cleaning up dead objects
+ // FIRE-30694 DeadObject Spam
+ // mDeadObjects.erase(objectp->mID); // Use timer for cleaning up dead objects
+ if(mDeadObjects.erase(objectp->mID)==0)
+ {
+ LL_WARNS() << "Attempt to delete object " << objectp->mID << " but object not in dead list" << LL_ENDL;
+ num_divergent++; // this is the number we are adrift in the count
+ }
LLPointer::swap(*iter, *target);
*target = NULL;
++target;
@@ -1651,9 +1679,10 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer)
mObjects.erase(mObjects.begin()+(mObjects.size()-num_removed), mObjects.end());
mNumDeadObjects -= num_removed;
- if (mNumDeadObjects != mDeadObjects.size())
+ // TODO(Beq) If this still happens, we ought to realign at this point. Do a full sweep and reset.
+ if ( mNumDeadObjects != mDeadObjects.size() )
{
- LL_WARNS() << "Num dead objects != dead object list size" << LL_ENDL;
+ LL_WARNS() << "Num dead objects (" << mNumDeadObjects << ") != dead object list size (" << mDeadObjects.size() << "), deadlist discrepancy (" << num_divergent << ")" << LL_ENDL;
}
//
}
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 1718435225..bb85c9054d 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -1017,7 +1017,7 @@ void LLViewerTextureList::updateOneImageDecodePriority(LLPointergetProgressView()->getVisible();
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 7975b771ca..751df0582d 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -5939,7 +5939,10 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
if ((image_width <= gGLManager.mGLMaxTextureSize && image_height <= gGLManager.mGLMaxTextureSize) &&
(image_width > window_width || image_height > window_height) && LLPipeline::sRenderDeferred && !show_ui)
{
- U32 color_fmt = type == LLSnapshotModel::SNAPSHOT_TYPE_DEPTH ? GL_DEPTH_COMPONENT : GL_RGBA;
+ // FIRE-15667: 24bit depth maps
+ //U32 color_fmt = type == LLSnapshotModel::SNAPSHOT_TYPE_DEPTH ? GL_DEPTH_COMPONENT : GL_RGBA;
+ U32 color_fmt = (type == LLSnapshotModel::SNAPSHOT_TYPE_DEPTH || type == LLSnapshotModel::SNAPSHOT_TYPE_DEPTH24) ? GL_DEPTH_COMPONENT : GL_RGBA;
+ //
if (scratch_space.allocate(image_width, image_height, color_fmt, true, true))
{
original_width = gPipeline.mDeferredScreen.getWidth();
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_UI.xml b/indra/newview/skins/default/xui/de/panel_preferences_UI.xml
index bab6df298b..8ec019d1cd 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_UI.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_UI.xml
@@ -104,6 +104,20 @@
+
+ Zeitformat:
+
+
+
+
+
+
+
+
+
+
+
+
Navigations- und Favoriten-Leiste:
diff --git a/indra/newview/skins/default/xui/de/rlva_strings.xml b/indra/newview/skins/default/xui/de/rlva_strings.xml
index f1ac38cf4b..6c0e648605 100644
--- a/indra/newview/skins/default/xui/de/rlva_strings.xml
+++ b/indra/newview/skins/default/xui/de/rlva_strings.xml
@@ -81,6 +81,11 @@
value
"[OBJECT]" wurde aufgrund von RLV-Einschränkungen verweigert, dich zu teleportieren.
+ blocked_scriptdialog
+
blocked_startim
+ blocked_scriptdialog
+
blocked_startim
+ blocked_scriptdialog
+
blocked_startim