summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorErik Kundiman <erik@megapahit.org>2026-09-22 14:47:19 +0800
committerErik Kundiman <erik@megapahit.org>2026-09-22 14:47:19 +0800
commit8557e9659ca5b71aabcbb21758be03a959c2098d (patch)
treee9c2cb659b646169e8d0c502b0ff873fec05ac02 /indra
parent235a9d87ecf0447bd4aca3287548c715f1ada2ad (diff)
parentf767219366b8dbaeea95a22bd9953a587f473298 (diff)
Merge tag 'Second_Life_Release#f7672193-26.4' into 26.4
Diffstat (limited to 'indra')
-rw-r--r--indra/llmath/llvolume.cpp8
-rw-r--r--indra/llmath/llvolume.h2
-rw-r--r--indra/llui/llfolderviewitem.cpp17
-rw-r--r--indra/llwebrtc/llwebrtc.cpp38
-rw-r--r--indra/llwebrtc/llwebrtc_impl.h5
-rw-r--r--indra/newview/CMakeLists.txt2
-rw-r--r--indra/newview/app_settings/settings.xml46
-rw-r--r--indra/newview/llagent.cpp12
-rw-r--r--indra/newview/llappviewer.cpp41
-rw-r--r--indra/newview/llappviewer.h13
-rw-r--r--indra/newview/llappviewerlinux.cpp182
-rw-r--r--indra/newview/llappviewerlinux.h10
-rw-r--r--indra/newview/llappviewermacosx-objc.h1
-rw-r--r--indra/newview/llappviewermacosx-objc.mm66
-rw-r--r--indra/newview/llappviewermacosx.cpp7
-rw-r--r--indra/newview/llappviewermacosx.h1
-rw-r--r--indra/newview/llappviewerwin32.cpp50
-rw-r--r--indra/newview/llappviewerwin32.h1
-rw-r--r--indra/newview/llfloateraddpaymentmethod.cpp84
-rw-r--r--indra/newview/llfloateraddpaymentmethod.h52
-rw-r--r--indra/newview/llfloaterbuycurrency.cpp7
-rw-r--r--indra/newview/llfloaterimagepreview.cpp3
-rw-r--r--indra/newview/llinventorypanel.cpp3
-rw-r--r--indra/newview/llscripteditorws.cpp3
-rw-r--r--indra/newview/llselectmgr.cpp10
-rw-r--r--indra/newview/llvelopack.cpp19
-rw-r--r--indra/newview/llviewerfloaterreg.cpp3
-rw-r--r--indra/newview/llviewerwindow.cpp30
-rw-r--r--indra/newview/llvoicewebrtc.cpp51
-rw-r--r--indra/newview/llvoicewebrtc.h7
-rw-r--r--indra/newview/llvovolume.cpp3
-rw-r--r--indra/newview/skins/default/xui/da/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/de/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/en/floater_add_payment_method.xml142
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_setup.xml37
-rw-r--r--indra/newview/skins/default/xui/en/panel_script_ed.xml2
-rw-r--r--indra/newview/skins/default/xui/es/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/fr/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/it/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/ja/floater_add_payment_method.xml25
-rw-r--r--indra/newview/skins/default/xui/ja/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/floater_add_payment_method.xml19
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/pt/settings_comments.xml2
-rw-r--r--indra/newview/skins/default/xui/ru/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/tr/panel_preferences_setup.xml8
-rw-r--r--indra/newview/skins/default/xui/zh/panel_preferences_setup.xml8
48 files changed, 173 insertions, 919 deletions
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index c49d5ff7d3..a029fea992 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -3289,7 +3289,7 @@ S32 sculpt_sides(F32 detail)
}
}
-static bool validate_sculpt_geometry(const LLVolume* volume)
+static bool validate_sculpt_geometry(const LLVolume* volume, bool validate_area)
{
if (!volume || volume->getNumVolumeFaces() == 0)
{
@@ -3365,7 +3365,7 @@ static bool validate_sculpt_geometry(const LLVolume* volume)
F32 area_ratio = total_triangle_area / bounding_surface;
constexpr F32 MAX_AREA_TO_AREA_RATIO = 16.0f;
- if (area_ratio > MAX_AREA_TO_AREA_RATIO)
+ if (validate_area && area_ratio > MAX_AREA_TO_AREA_RATIO)
{
LL_DEBUGS("LLVOLUME") << "Sculpt rejected: excessive triangle area."
<< " Face index: " << face_idx
@@ -3417,7 +3417,7 @@ static void sculpt_calc_mesh_resolution(U16 width, U16 height, U8 type, F32 deta
}
// sculpt replaces generate() for sculpted surfaces
-void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data, S32 sculpt_level, bool visible_placeholder)
+void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data, S32 sculpt_level, bool visible_placeholder, bool validate_area)
{
U8 sculpt_type = mParams.getSculptType();
@@ -3528,7 +3528,7 @@ void LLVolume::sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components,
// Todo: can this be backed into createVolumeFaces?
// Or calculated without having to call createVolumeFaces first?
// Todo 2: should the same be done for meshes?
- valid_geometry = validate_sculpt_geometry(this);
+ valid_geometry = validate_sculpt_geometry(this, validate_area);
mSculptValidationCache[sculpt_level] = valid_geometry ? LLSculptValidationState::Valid : LLSculptValidationState::Invalid;
if (!valid_geometry)
diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h
index 86a7bf0e6a..40e6f8e220 100644
--- a/indra/llmath/llvolume.h
+++ b/indra/llmath/llvolume.h
@@ -1095,7 +1095,7 @@ public:
U32 mFaceMask; // bit array of which faces exist in this volume
LLVector3 mLODScaleBias; // vector for biasing LOD based on scale
- void sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data, S32 sculpt_level, bool visible_placeholder);
+ void sculpt(U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8* sculpt_data, S32 sculpt_level, bool visible_placeholder, bool validate_area);
void copyVolumeFaces(const LLVolume* volume);
void copyFacesTo(std::vector<LLVolumeFace> &faces) const;
void copyFacesFrom(const std::vector<LLVolumeFace> &faces);
diff --git a/indra/llui/llfolderviewitem.cpp b/indra/llui/llfolderviewitem.cpp
index c8ef421677..7c51574fc2 100644
--- a/indra/llui/llfolderviewitem.cpp
+++ b/indra/llui/llfolderviewitem.cpp
@@ -234,7 +234,11 @@ LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p)
// Destroys the object
LLFolderViewItem::~LLFolderViewItem()
{
- mViewModelItem = NULL;
+ if (mViewModelItem)
+ {
+ mViewModelItem->setFolderViewItem(nullptr);
+ mViewModelItem = nullptr;
+ }
gFocusMgr.removeKeyboardFocusWithoutCallback(this);
}
@@ -356,7 +360,12 @@ bool LLFolderViewItem::isPotentiallyVisible(S32 filter_generation)
void LLFolderViewItem::refresh()
{
- LLFolderViewModelItem& vmi = *getViewModelItem();
+ LLFolderViewModelItem* vmi_ptr = getViewModelItem();
+ if (!vmi_ptr)
+ {
+ return;
+ }
+ LLFolderViewModelItem& vmi = *vmi_ptr;
mLabel = utf8str_to_wstring(vmi.getDisplayName());
mLabelFontBuffer.reset();
@@ -387,6 +396,10 @@ void LLFolderViewItem::refresh()
void LLFolderViewItem::refreshSuffix()
{
LLFolderViewModelItem const* vmi = getViewModelItem();
+ if (!vmi)
+ {
+ return;
+ }
// icons are slightly expensive to get, can be optimized
// see LLInventoryIcon::getIcon()
diff --git a/indra/llwebrtc/llwebrtc.cpp b/indra/llwebrtc/llwebrtc.cpp
index 4b98944d10..15eee9b39c 100644
--- a/indra/llwebrtc/llwebrtc.cpp
+++ b/indra/llwebrtc/llwebrtc.cpp
@@ -496,7 +496,7 @@ bool LLWebRTCImpl::terminate()
{
for (auto& connection : connections)
{
- connection->closeOnSignalingThread();
+ connection->closeOnSignalingThread(true);
}
// Destroy the connections here, on the signaling thread, while
// it's still running.
@@ -792,8 +792,14 @@ void LLWebRTCImpl::workerDeployDevices()
// Stop first so the start helpers (which no-op when already running) will
// re-select the now-current device.
- mDeviceModule->StopPlayout();
- mDeviceModule->ForceStopRecording();
+ if (mDeviceModule->Playing())
+ {
+ mDeviceModule->StopPlayout();
+ }
+ if (mDeviceModule->Recording())
+ {
+ mDeviceModule->ForceStopRecording();
+ }
workerStartRecording();
workerStartPlayout();
@@ -1085,7 +1091,10 @@ void LLWebRTCImpl::freePeerConnection(LLWebRTCPeerConnectionInterface* peer_conn
{
if (mDeviceModule)
{
- mDeviceModule->StopPlayout();
+ if (mDeviceModule->Playing())
+ {
+ mDeviceModule->StopPlayout();
+ }
if (!mVoiceEnabled)
{
mDeviceModule->ForceStopRecording();
@@ -1161,13 +1170,13 @@ void LLWebRTCPeerConnectionImpl::terminate()
mWebRTCImpl->PostSignalingTask(
[self]()
{
- self->closeOnSignalingThread();
+ self->closeOnSignalingThread(false);
self->mPendingJobs--;
});
}
// Signaling thread only.
-void LLWebRTCPeerConnectionImpl::closeOnSignalingThread()
+void LLWebRTCPeerConnectionImpl::closeOnSignalingThread(bool webrtc_terminate)
{
// Stop issuing stats requests; one may already be in flight, and
// Close() below will flush it.
@@ -1218,13 +1227,16 @@ void LLWebRTCPeerConnectionImpl::closeOnSignalingThread()
observer->OnPeerConnectionClosed();
}
- // Nothing may call back into the viewer past this point. Connections
- // closed while the viewer is still running unset themselves as observers
- // when they're destroyed, but any that are left for llwebrtc::terminate()
- // to close deliberately don't -- they're torn down as soon as it returns,
- // so a late callback would be reaching into freed memory.
- mSignalingObserverList.clear();
- mDataObserverList.clear();
+ if (webrtc_terminate)
+ {
+ // Nothing may call back into the viewer past this point. Connections
+ // closed while the viewer is still running unset themselves as observers
+ // when they're destroyed, but any that are left for llwebrtc::terminate()
+ // to close deliberately don't -- they're torn down as soon as it returns,
+ // so a late callback would be reaching into freed memory.
+ mSignalingObserverList.clear();
+ mDataObserverList.clear();
+ }
}
void LLWebRTCPeerConnectionImpl::setSignalingObserver(LLWebRTCSignalingObserver *observer) { mSignalingObserverList.emplace_back(observer); }
diff --git a/indra/llwebrtc/llwebrtc_impl.h b/indra/llwebrtc/llwebrtc_impl.h
index f78b129da5..8bf72890cf 100644
--- a/indra/llwebrtc/llwebrtc_impl.h
+++ b/indra/llwebrtc/llwebrtc_impl.h
@@ -610,10 +610,13 @@ class LLWebRTCPeerConnectionImpl : public LLWebRTCPeerConnectionInterface,
void init(LLWebRTCImpl * webrtc_impl);
// Posts closeOnSignalingThread() and returns immediately.
void terminate();
+
// The actual close. Signaling thread only. Callable directly (via a
// BlockingCall) when the caller needs the connection to be fully closed
// before it continues -- see LLWebRTCImpl::terminate().
- void closeOnSignalingThread();
+ // webrtc_terminate indicates we're shutting down the webrtc library,
+ // if not, we'll be reusing the peer connection for a reconnection
+ void closeOnSignalingThread(bool webrtc_terminate);
virtual void AddRef() const override = 0;
virtual webrtc::RefCountReleaseStatus Release() const override = 0;
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 9489d724ac..f1e49799cb 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -195,7 +195,6 @@ set(viewer_SOURCE_FILES
llfloaterabout.cpp
llfloateravatarwelcomepack.cpp
llfloaterbvhpreview.cpp
- llfloateraddpaymentmethod.cpp
llfloaterauction.cpp
llfloaterautoreplacesettings.cpp
llfloateravatarpicker.cpp
@@ -888,7 +887,6 @@ set(viewer_HEADER_FILES
llfloaterabout.h
llfloateravatarwelcomepack.h
llfloaterbvhpreview.h
- llfloateraddpaymentmethod.h
llfloaterauction.h
llfloaterautoreplacesettings.h
llfloateravatarpicker.h
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 3b067b7a61..12da2c67a7 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -1216,6 +1216,28 @@
<key>Value</key>
<string>https://accounts.secondlife.com/packs/floater?lang=[LANGUAGE]&amp;shortfall=[SHORTFALL]</string>
</map>
+ <key>PaymentMethodURL</key>
+ <map>
+ <key>Comment</key>
+ <string>URL for adding a payment method</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string>https://secondlife.com/my/lindex/buy.php?associate_for_viewer=1</string>
+ </map>
+ <key>PaymentMethodStagingURL</key>
+ <map>
+ <key>Comment</key>
+ <string>URL for adding a payment method on the Damballah</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>String</string>
+ <key>Value</key>
+ <string>https://secondlife-staging.com/my/lindex/buy.php?associate_for_viewer=1</string>
+ </map>
<key>EnableButtonFlashing</key>
<map>
<key>Comment</key>
@@ -13642,7 +13664,7 @@
<key>Type</key>
<string>Boolean</string>
<key>Value</key>
- <integer>1</integer>
+ <integer>0</integer>
</map>
<key>PreferredBrowserBehavior</key>
<map>
@@ -15403,17 +15425,6 @@
<key>Value</key>
<integer>180</integer>
</map>
- <key>OSHibernationMode</key>
- <map>
- <key>Comment</key>
- <string>Whether to prevent OS from hibernating. 0 - can hibernate; 1 - can't hibernate, can turn screen off; 2 - can't hibernate, can't turn screen off </string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>S32</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
<key>HeightUnits</key>
<map>
<key>Comment</key>
@@ -16811,6 +16822,17 @@
<key>Value</key>
<integer>1000</integer>
</map>
+ <key>ValidateSculptyAreaRatio</key>
+ <map>
+ <key>Comment</key>
+ <string>Version information generated by running the viewer</string>
+ <key>Persist</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Boolean</string>
+ <key>Value</key>
+ <integer>1</integer>
+ </map>
<key>VersionChannelName</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
index a521170c61..b29d1706c4 100644
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -583,6 +583,9 @@ void LLAgent::setFirstLogin(bool b)
{
setFeatureVersion(UI_FEATURE_VERSION, UI_FEATURE_FLAGS);
}
+
+ // Shared environment on teleport should only be enabled by default for new users;
+ gSavedSettings.setBOOL("SwitchToSharedEnvAfterTeleport", true);
}
}
@@ -1566,8 +1569,6 @@ void LLAgent::setAFK()
setControlFlags(AGENT_CONTROL_AWAY | AGENT_CONTROL_STOP);
gAwayTimer.start();
}
-
- LLAppViewer::instance()->setPermitOSHibernation(true);
}
//-----------------------------------------------------------------------------
@@ -1586,13 +1587,6 @@ void LLAgent::clearAFK()
sendAnimationRequest(ANIM_AGENT_AWAY, ANIM_REQUEST_STOP);
clearControlFlags(AGENT_CONTROL_AWAY);
}
-
- if (isAgentAvatarValid())
- {
- // Only set this if agent is inworld, login screen
- // shouldn't prevent hibernation.
- LLAppViewer::instance()->setPermitOSHibernation(false);
- }
}
//-----------------------------------------------------------------------------
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 8b99657618..d48ccdb9ea 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -667,12 +667,6 @@ bool LLAppViewer::sendURLToOtherInstance(const std::string& url)
return false;
}
-//virtual
-void LLAppViewer::setOSHibernationMode(eHibernationMode mode)
-{
- // See OS specific files
-}
-
//----------------------------------------------------------------------------
// LLAppViewer definition
@@ -6058,29 +6052,6 @@ void LLAppViewer::outOfMemorySoftQuit()
}
}
-void LLAppViewer::setPermitOSHibernation(bool permit)
-{
- if (permit)
- {
- if (mCurrentHibernationMode != LL_HIBERNATE_MODE_DEFAULT)
- {
- // Will call OS specific code to let OS hibernate when idle
- setOSHibernationMode(LL_HIBERNATE_MODE_DEFAULT);
- mCurrentHibernationMode = LL_HIBERNATE_MODE_DEFAULT;
- }
- }
- else
- {
- static LLCachedControl<S32> os_hibernation_mode(gSavedSettings, "OSHibernationMode", 0);
- eHibernationMode mode = static_cast<eHibernationMode>(os_hibernation_mode());
- if (mode != LL_HIBERNATE_MODE_DEFAULT && mCurrentHibernationMode != mode)
- {
- setOSHibernationMode(mode);
- mCurrentHibernationMode = mode;
- }
- }
-}
-
void LLAppViewer::idleNameCache()
{
// Neither old nor new name cache can function before agent has a region
@@ -6288,9 +6259,6 @@ void LLAppViewer::disconnectViewer()
// Pass the connection state to LLUrlEntryParcel not to attempt
// parcel info requests while disconnected.
LLUrlEntryParcel::setDisconnected(gDisconnected);
-
- // Restore default OS hibernation mode
- setPermitOSHibernation(true);
}
void LLAppViewer::forceErrorLLError()
@@ -6582,15 +6550,6 @@ void LLAppViewer::handleLoginComplete()
// we logged in successfully, so save settings on logout
LL_INFOS() << "Login successful, per account settings will be saved on log out." << LL_ENDL;
mSavePerAccountSettings=true;
-
- // Don't allow hibernation while we're running
- setPermitOSHibernation(false);
- // Track 'hibernation' mode changes
- mOSHibernationModeChangeConnection = gSavedSettings.getControl("OSHibernationMode")->getSignal()->connect([](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val)
- {
- // setPermitOSHibernation will sort itself out based on new mode.
- LLAppViewer::instance()->setPermitOSHibernation(false);
- });
}
//virtual
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 837b598ae5..54f94fe98c 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -270,8 +270,6 @@ public:
// Note: mQuitRequested can be aborted by user.
void outOfMemorySoftQuit();
- virtual void setPermitOSHibernation(bool permit);
-
#ifdef LL_DISCORD
static void initDiscordSocial();
static void updateDiscordActivity();
@@ -288,14 +286,6 @@ protected:
virtual bool initSLURLHandler();
virtual bool sendURLToOtherInstance(const std::string& url);
- typedef enum
- {
- LL_HIBERNATE_MODE_DEFAULT = 0, // Use the platform's default behavior.
- LL_HIBERNATE_MODE_PREVENT = 1,
- LL_HIBERNATE_MODE_PREVENT_SCREEN = 2,
- } eHibernationMode;
- virtual void setOSHibernationMode(eHibernationMode mode);
-
virtual bool initParseCommandLine(LLCommandLineParser& clp)
{ return true; } // Allow platforms to specify the command line args.
@@ -403,9 +393,6 @@ private:
LLAppCoreHttp mAppCoreHttp;
bool mIsFirstRun;
-
- eHibernationMode mCurrentHibernationMode = LL_HIBERNATE_MODE_DEFAULT;
- boost::signals2::scoped_connection mOSHibernationModeChangeConnection;
};
// Globals with external linkage. From viewer.h
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
index cb899ef577..e7017655c2 100644
--- a/indra/newview/llappviewerlinux.cpp
+++ b/indra/newview/llappviewerlinux.cpp
@@ -79,10 +79,6 @@ namespace
void (*gOldTerminateHandler)() = NULL;
}
-// Initialize static members
-guint32 LLAppViewerLinux::sPowerInhibitCookie = 0;
-bool LLAppViewerLinux::sPowerInhibitActive = false;
-
void check_vm_bloat()
{
#if LL_LINUX
@@ -174,7 +170,6 @@ finally:
}
#endif // LL_LINUX
}
-
static void exceptionTerminateHandler()
{
// reinstall default terminate() handler in case we re-terminate.
@@ -292,11 +287,6 @@ LLAppViewerLinux::LLAppViewerLinux()
LLAppViewerLinux::~LLAppViewerLinux()
{
- // Clean up any power management inhibition on exit
- if (sPowerInhibitActive)
- {
- uninhibitPowerManagement();
- }
}
bool LLAppViewerLinux::init()
@@ -472,178 +462,6 @@ bool LLAppViewerLinux::sendURLToOtherInstance(const std::string& url)
}
#endif // LL_GLIB
-
-#if LL_GLIB
-
-namespace
-{
- // Session-bus sleep inhibitors, tried in order; both hand back a uint cookie.
- struct PowerInhibitor
- {
- const char* service;
- const char* path;
- const char* iface;
- const char* uninhibit;
- bool gnome_args;
- };
-
- const PowerInhibitor POWER_INHIBITORS[] =
- {
- { "org.freedesktop.PowerManagement", "/org/freedesktop/PowerManagement/Inhibit",
- "org.freedesktop.PowerManagement.Inhibit", "UnInhibit", false },
- { "org.gnome.SessionManager", "/org/gnome/SessionManager",
- "org.gnome.SessionManager", "Uninhibit", true }
- };
-
- const PowerInhibitor* sActiveInhibitor = nullptr;
-
- // Returns the reply, or null on failure. Takes ownership of args.
- GVariant* call_power_manager(const PowerInhibitor& inhibitor, const char* method, GVariant* args,
- const GVariantType* reply_type)
- {
- g_variant_ref_sink(args);
-
- GDBusConnection* bus = g_bus_get_sync(G_BUS_TYPE_SESSION, nullptr, nullptr);
- if (!bus)
- {
- LL_WARNS("OS") << "Getting dbus failed." << LL_ENDL;
- g_variant_unref(args);
- return nullptr;
- }
-
- GError* error = nullptr;
- GVariant* result = g_dbus_connection_call_sync(bus, inhibitor.service, inhibitor.path,
- inhibitor.iface, method, args, reply_type,
- G_DBUS_CALL_FLAGS_NONE, -1, nullptr, &error);
- if (!result)
- {
- LL_DEBUGS("OS") << inhibitor.service << "." << method << " failed: "
- << (error ? error->message : "unknown error") << LL_ENDL;
- }
- if (error)
- {
- g_error_free(error);
- }
-
- g_variant_unref(args);
- g_object_unref(bus);
- return result;
- }
-}
-
-#endif // LL_GLIB
-
-void LLAppViewerLinux::setOSHibernationMode(eHibernationMode mode)
-{
- if (mode == LL_HIBERNATE_MODE_DEFAULT)
- {
- // Allow OS to sleep/hibernate - remove any inhibition
- if (sPowerInhibitActive)
- {
- uninhibitPowerManagement();
- LL_INFOS("OS") << "Permitted OS hibernation/sleep" << LL_ENDL;
- }
- }
- else if (mode == LL_HIBERNATE_MODE_PREVENT)
- {
- // Prevent system sleep, but allow display to turn off
- // Release any existing inhibition first to allow mode switching
- if (sPowerInhibitActive)
- {
- uninhibitPowerManagement();
- }
-
- if (inhibitPowerManagement(false))
- {
- LL_INFOS("OS") << "Prevented OS hibernation/sleep, display sleep allowed" << LL_ENDL;
- }
- else
- {
- LL_WARNS("OS") << "Failed to prevent OS hibernation/sleep" << LL_ENDL;
- }
- }
- else if (mode == LL_HIBERNATE_MODE_PREVENT_SCREEN)
- {
- // Prevent both system and display sleep
- // Release any existing inhibition first to allow mode switching
- if (sPowerInhibitActive)
- {
- uninhibitPowerManagement();
- }
-
- if (inhibitPowerManagement(true))
- {
- LL_INFOS("OS") << "Prevented OS hibernation/sleep and display sleep" << LL_ENDL;
- }
- else
- {
- LL_WARNS("OS") << "Failed to prevent OS hibernation/sleep and display sleep" << LL_ENDL;
- }
- }
-}
-
-// TODO: This is AI Generated!!!, needs review and testing.
-bool LLAppViewerLinux::inhibitPowerManagement(bool inhibit_display)
-{
-#if LL_GLIB
- const char* reason = inhibit_display ?
- "Viewer active - preventing system and display sleep" :
- "Viewer active - preventing system sleep";
-
- for (const PowerInhibitor& inhibitor : POWER_INHIBITORS)
- {
- // Inhibit(app: s, reason: s) -> u, or GNOME's Inhibit(app: s, xid: u, reason: s, flags: u) -> u
- // GNOME flags: 4 = suspend, 8 = idle (display), 12 = both
- GVariant* args = inhibitor.gnome_args ?
- g_variant_new("(susu)", "SecondLifeViewer", (guint32)0, reason,
- (guint32)(inhibit_display ? 12 : 4)) :
- g_variant_new("(ss)", "Second Life Viewer", reason);
-
- GVariant* result = call_power_manager(inhibitor, "Inhibit", args, G_VARIANT_TYPE("(u)"));
- if (!result)
- {
- continue;
- }
-
- guint32 cookie = 0;
- g_variant_get(result, "(u)", &cookie);
- g_variant_unref(result);
-
- sPowerInhibitCookie = cookie;
- sPowerInhibitActive = true;
- sActiveInhibitor = &inhibitor;
- LL_INFOS("OS") << "Successfully inhibited power management using "
- << inhibitor.service << LL_ENDL;
- return true;
- }
-#endif // LL_GLIB
-
- return false;
-}
-
-void LLAppViewerLinux::uninhibitPowerManagement()
-{
-#if LL_GLIB
- if (sPowerInhibitActive && sActiveInhibitor)
- {
- GVariant* result = call_power_manager(*sActiveInhibitor, sActiveInhibitor->uninhibit,
- g_variant_new("(u)", (guint32)sPowerInhibitCookie),
- nullptr);
- if (result)
- {
- g_variant_unref(result);
- LL_INFOS("OS") << "Successfully uninhibited power management using "
- << sActiveInhibitor->service << LL_ENDL;
- }
-
- sActiveInhibitor = nullptr;
- }
-#endif // LL_GLIB
-
- sPowerInhibitCookie = 0;
- sPowerInhibitActive = false;
-}
-
void LLAppViewerLinux::initCrashReporting(bool reportFreeze)
{
}
diff --git a/indra/newview/llappviewerlinux.h b/indra/newview/llappviewerlinux.h
index faac3c0a05..6f4e087726 100644
--- a/indra/newview/llappviewerlinux.h
+++ b/indra/newview/llappviewerlinux.h
@@ -60,16 +60,6 @@ protected:
bool initSLURLHandler() override;
bool sendURLToOtherInstance(const std::string& url) override;
- void setOSHibernationMode(eHibernationMode mode) override;
-
-private:
- // Power management state tracking
- static guint32 sPowerInhibitCookie;
- static bool sPowerInhibitActive;
-
- // Helper methods for power management
- bool inhibitPowerManagement(bool inhibit_display);
- void uninhibitPowerManagement();
};
#endif // LL_LLAPPVIEWERLINUX_H
diff --git a/indra/newview/llappviewermacosx-objc.h b/indra/newview/llappviewermacosx-objc.h
index 13b8056193..bfbb48dadb 100644
--- a/indra/newview/llappviewermacosx-objc.h
+++ b/indra/newview/llappviewermacosx-objc.h
@@ -32,6 +32,5 @@
void force_ns_sxeption();
void register_url_schemes();
-void set_os_hibernation_mode(int mode);
#endif // LL_LLAPPVIEWERMACOSX_OBJC_H
diff --git a/indra/newview/llappviewermacosx-objc.mm b/indra/newview/llappviewermacosx-objc.mm
index ab4ae428b9..75d6b56e3e 100644
--- a/indra/newview/llappviewermacosx-objc.mm
+++ b/indra/newview/llappviewermacosx-objc.mm
@@ -29,7 +29,6 @@
#endif
#import <Cocoa/Cocoa.h>
-#import <IOKit/pwr_mgt/IOPMLib.h>
#include <iostream>
#include "llappviewermacosx-objc.h"
@@ -64,68 +63,3 @@ void register_url_schemes()
}
}
}
-
-// Add these as static variables at file scope
-static IOPMAssertionID gPowerAssertionID = kIOPMNullAssertionID;
-
-void set_os_hibernation_mode(int mode)
-{
- // Release existing assertion
- if (gPowerAssertionID != kIOPMNullAssertionID)
- {
- IOReturn result = IOPMAssertionRelease(gPowerAssertionID);
- if (result == kIOReturnSuccess)
- {
- gPowerAssertionID = kIOPMNullAssertionID;
- NSLog(@"Permitted OS hibernation/sleep");
- }
- else
- {
- NSLog(@"Failed to release power assertion: %d", result);
- }
- }
-
- if (mode == 1)
- {
- // Prevent OS from sleeping/hibernating
- CFStringRef assertionName = CFSTR("Second Life Viewer");
- // kIOPMAssertionTypeNoIdleSleep prevents idle sleep
- IOReturn result = IOPMAssertionCreateWithName(
- kIOPMAssertionTypeNoIdleSleep,
- kIOPMAssertionLevelOn,
- assertionName,
- &gPowerAssertionID
- );
-
- if (result == kIOReturnSuccess)
- {
- NSLog(@"Prevented OS hibernation/sleep, allow display sleep");
- }
- else
- {
- NSLog(@"Failed to create power assertion: %d", result);
- }
- }
- else if (mode == 2)
- {
- // Prevent OS from sleeping/hibernating, prevent screen from going off
- CFStringRef assertionName = CFSTR("Second Life Viewer");
- // kIOPMAssertionTypeNoIdleSleep prevents idle sleep
- // kIOPMAssertionTypeNoDisplaySleep prevents display sleep
- IOReturn result = IOPMAssertionCreateWithName(
- kIOPMAssertionTypeNoDisplaySleep,
- kIOPMAssertionLevelOn,
- assertionName,
- &gPowerAssertionID
- );
-
- if (result == kIOReturnSuccess)
- {
- NSLog(@"Prevented OS hibernation/sleep or screen from turning off");
- }
- else
- {
- NSLog(@"Failed to create power assertion: %d", result);
- }
- }
-}
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index c188bb459f..f914a76fc6 100644
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -126,7 +126,6 @@ bool pumpMainLoop()
void cleanupViewer()
{
- set_os_hibernation_mode(0); // restore default OS hibernation behavior
if(!LLApp::isError())
{
if (gViewerAppPtr)
@@ -429,12 +428,6 @@ bool LLAppViewerMacOSX::initSLURLHandler()
return true;
}
-void LLAppViewerMacOSX::setOSHibernationMode(eHibernationMode mode)
-{
- // pass to objective-c++
- set_os_hibernation_mode((int)mode);
-}
-
std::string LLAppViewerMacOSX::generateSerialNumber()
{
char serial_md5[MD5HEX_STR_SIZE]; // Flawfinder: ignore
diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h
index 1153bd4191..35fc99dbd9 100644
--- a/indra/newview/llappviewermacosx.h
+++ b/indra/newview/llappviewermacosx.h
@@ -47,7 +47,6 @@ public:
protected:
virtual bool restoreErrorTrap();
virtual bool initSLURLHandler();
- virtual void setOSHibernationMode(eHibernationMode mode);
std::string generateSerialNumber();
virtual bool initParseCommandLine(LLCommandLineParser& clp);
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index 77f00b05f3..01ea24d211 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -1070,56 +1070,6 @@ bool LLAppViewerWin32::sendURLToOtherInstance(const std::string& url)
return false;
}
-void LLAppViewerWin32::setOSHibernationMode(eHibernationMode mode)
-{
- // ES_CONTINUOUS tells Windows to reset the idle timer
- // and restore normal operation
- // ES_SYSTEM_REQUIRED prevents system sleep/hibernation
- // ES_DISPLAY_REQUIRED prevents display sleep
-
- if (mode == LL_HIBERNATE_MODE_DEFAULT)
- {
- // Allow OS to hibernate - clear the previous execution state flags
- // ES_CONTINUOUS without other flags allows the system to idle normally
- SetThreadExecutionState(ES_CONTINUOUS);
- LL_INFOS("OS") << "Permitted OS hibernation/sleep" << LL_ENDL;
- }
- else if (mode == LL_HIBERNATE_MODE_PREVENT)
- {
- // Prevent OS from hibernating while viewer is running
- // ES_CONTINUOUS | ES_SYSTEM_REQUIRED keeps the system awake
- EXECUTION_STATE result = SetThreadExecutionState(
- ES_CONTINUOUS | ES_SYSTEM_REQUIRED
- );
- if (result == NULL)
- {
- LL_WARNS("OS") << "Failed to prevent OS hibernation, error: " << GetLastError() << LL_ENDL;
- }
- else
- {
- LL_INFOS("OS") << "Prevented OS hibernation, but allowed display sleep" << LL_ENDL;
- }
- }
- else if (mode == LL_HIBERNATE_MODE_PREVENT_SCREEN)
- {
- // Prevent OS from hibernating or turning screen off while viewer is running
- // ES_CONTINUOUS | ES_SYSTEM_REQUIRED keeps the system awake
- // ES_DISPLAY_REQUIRED keeps the display on
- EXECUTION_STATE result = SetThreadExecutionState(
- ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED
- );
-
- if (result == NULL)
- {
- LL_WARNS("OS") << "Failed to prevent OS hibernation and display sleep, error: " << GetLastError() << LL_ENDL;
- }
- else
- {
- LL_INFOS("OS") << "Prevented OS hibernation/sleep" << LL_ENDL;
- }
- }
-}
-
bool LLAppViewerWin32::sendShutdownToOtherInstances(const std::wstring& install_dir)
{
// Velopack installs viewer like this:
diff --git a/indra/newview/llappviewerwin32.h b/indra/newview/llappviewerwin32.h
index 7c3c7a475a..971907694a 100644
--- a/indra/newview/llappviewerwin32.h
+++ b/indra/newview/llappviewerwin32.h
@@ -62,7 +62,6 @@ protected:
bool restoreErrorTrap() override;
bool sendURLToOtherInstance(const std::string& url) override;
- void setOSHibernationMode(eHibernationMode mode) override;
std::string generateSerialNumber();
diff --git a/indra/newview/llfloateraddpaymentmethod.cpp b/indra/newview/llfloateraddpaymentmethod.cpp
deleted file mode 100644
index 64bd7b6aa1..0000000000
--- a/indra/newview/llfloateraddpaymentmethod.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * @file llfloateraddpaymentmethod.cpp
- * @brief LLFloaterAddPaymentMethod class implementation
- *
- * $LicenseInfo:firstyear=2020&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2020, 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$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloateraddpaymentmethod.h"
-#include "llnotificationsutil.h"
-#include "lluictrlfactory.h"
-#include "llviewernetwork.h"
-#include "llweb.h"
-
-
-LLFloaterAddPaymentMethod::LLFloaterAddPaymentMethod(const LLSD& key)
- : LLFloater(key)
-{
-}
-
-LLFloaterAddPaymentMethod::~LLFloaterAddPaymentMethod()
-{
-}
-
-bool LLFloaterAddPaymentMethod::postBuild()
-{
- setCanDrag(false);
- getChild<LLButton>("continue_btn")->setCommitCallback(boost::bind(&LLFloaterAddPaymentMethod::onContinueBtn, this));
- getChild<LLButton>("close_btn")->setCommitCallback(boost::bind(&LLFloaterAddPaymentMethod::onCloseBtn, this));
- return true;
-}
-
-void LLFloaterAddPaymentMethod::onOpen(const LLSD& key)
-{
- centerOnScreen();
-}
-
-void LLFloaterAddPaymentMethod::onContinueBtn()
-{
- closeFloater();
- LLNotificationsUtil::add("AddPaymentMethod", LLSD(), LLSD(),
- [this](const LLSD&notif, const LLSD&resp)
- {
- S32 opt = LLNotificationsUtil::getSelectedOption(notif, resp);
- if (opt == 0)
- {
- const std::string& grid_id = LLGridManager::getInstance()->getGridId();
- const std::string& grid_id_lower = utf8str_tolower(grid_id);
- LLWeb::loadURL(getString(grid_id_lower == "damballah" ? "continue_staging_url" : "continue_url"));
- }
- });
-}
-
-void LLFloaterAddPaymentMethod::onCloseBtn()
-{
- closeFloater();
-}
-
-void LLFloaterAddPaymentMethod::centerOnScreen()
-{
- LLVector2 window_size = LLUI::getInstance()->getWindowSize();
- centerWithin(LLRect(0, 0, ll_round(window_size.mV[VX]), ll_round(window_size.mV[VY])));
-}
-
diff --git a/indra/newview/llfloateraddpaymentmethod.h b/indra/newview/llfloateraddpaymentmethod.h
deleted file mode 100644
index 252caf8f5b..0000000000
--- a/indra/newview/llfloateraddpaymentmethod.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file llfloateraddpaymentmethod.h
- * @brief LLFloaterAddPaymentMethod class definition
- *
- * $LicenseInfo:firstyear=2020&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2020, 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$
- */
-
-#ifndef LL_FLOATER_ADDPAYMENTMETHOD_H
-#define LL_FLOATER_ADDPAYMENTMETHOD_H
-
-#include "llfloater.h"
-
-class LLFloaterAddPaymentMethod:
- public LLFloater
-{
- friend class LLFloaterReg;
-public:
- bool postBuild() override;
- void onOpen(const LLSD& key) override;
-
-private:
- LLFloaterAddPaymentMethod(const LLSD& key);
-
- void centerOnScreen();
-
- void onCloseBtn();
- void onContinueBtn();
-
- /*virtual*/ ~LLFloaterAddPaymentMethod();
-
-};
-
-#endif
diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp
index 506cff31f4..56b3229fda 100644
--- a/indra/newview/llfloaterbuycurrency.cpp
+++ b/indra/newview/llfloaterbuycurrency.cpp
@@ -40,6 +40,8 @@
#include "llviewchildren.h"
#include "llviewerwindow.h"
#include "lluictrlfactory.h"
+#include "llviewercontrol.h"
+#include "llviewernetwork.h"
#include "llweb.h"
#include "llwindow.h"
#include "llappviewer.h"
@@ -336,7 +338,10 @@ void LLFloaterBuyCurrency::handleBuyCurrency(bool has_piof, bool has_target, con
}
else
{
- LLFloaterReg::showInstance("add_payment_method");
+ const std::string& grid_id = LLGridManager::getInstance()->getGridId();
+ const std::string& grid_id_lower = utf8str_tolower(grid_id);
+ const std::string url = gSavedSettings.getString(grid_id_lower == "damballah" ? "PaymentMethodStagingURL" : "PaymentMethodURL");
+ LLWeb::loadURL(url);
}
}
diff --git a/indra/newview/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp
index bbff3e4c86..116286c872 100644
--- a/indra/newview/llfloaterimagepreview.cpp
+++ b/indra/newview/llfloaterimagepreview.cpp
@@ -926,8 +926,9 @@ void LLImagePreviewSculpted::setPreviewTarget(LLImageRaw* imagep, F32 distance)
if (imagep)
{
+ static LLCachedControl<bool> validate_area(gSavedSettings, "ValidateSculptyAreaRatio", true);
LLImageDataSharedLock lock(imagep);
- mVolume->sculpt(imagep->getWidth(), imagep->getHeight(), imagep->getComponents(), imagep->getData(), 0, false);
+ mVolume->sculpt(imagep->getWidth(), imagep->getHeight(), imagep->getComponents(), imagep->getData(), 0, false, validate_area());
}
const LLVolumeFace &vf = mVolume->getVolumeFace(0);
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 026b8b5008..133aef5e73 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -710,6 +710,7 @@ void LLInventoryPanel::itemChanged(const LLUUID& item_id, U32 mask, const LLInve
LLFolderViewModelItem* old_parent_vmi = old_parent->getViewModelItem();
LLFolderViewModelItemInventory* viewmodel_folder = static_cast<LLFolderViewModelItemInventory*>(old_parent_vmi);
LLFolderViewFolder* new_parent = getFolderByID(model_item->getParentUUID());
+ const bool was_favorite = view_item->isFavorite();
if (old_parent != new_parent // Item has been moved.
&& (new_parent != NULL || !isInRootContent(item_id, view_item)) // item is not or shouldn't be in root content
@@ -749,7 +750,7 @@ void LLInventoryPanel::itemChanged(const LLUUID& item_id, U32 mask, const LLInve
old_parent_vmi->dirtyDescendantsFilter();
}
- if (view_item->isFavorite())
+ if (was_favorite)
{
if (old_parent)
{
diff --git a/indra/newview/llscripteditorws.cpp b/indra/newview/llscripteditorws.cpp
index 93b1bd5eb0..017d9a5540 100644
--- a/indra/newview/llscripteditorws.cpp
+++ b/indra/newview/llscripteditorws.cpp
@@ -1060,6 +1060,9 @@ LLSD LLScriptEditorWSServer::handleObjectModify(U32 connection_id, const LLSD& p
msg->sendReliable(host);
}
+ // Force a properties reply so the editor sees the change without an in-world selection.
+ LLSelectMgr::instance().requestObjectPropertiesFamily(prim);
+
// Step 4: Return Success Response
LLSD response;
response["success"] = true;
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index ed4717a4dc..ca0d0d8e5d 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -6108,11 +6108,13 @@ void LLSelectMgr::processObjectProperties(LLMessageSystem* msg, void** user_data
node->mInventorySerial = inv_serial;
node->mSitName.assign(sit_name);
node->mTouchName.assign(touch_name);
+ }
- if (auto ws_server = LLScriptEditorWSServer::getServer())
- {
- ws_server->onObjectPropertyChanged(id, name, desc, inv_serial);
- }
+ // Published objects need property updates even when not selected.
+ LLScriptEditorWSServer::ptr_t ws_server = LLScriptEditorWSServer::getServer();
+ if (ws_server)
+ {
+ ws_server->onObjectPropertyChanged(id, name, desc, inv_serial);
}
}
diff --git a/indra/newview/llvelopack.cpp b/indra/newview/llvelopack.cpp
index 927a5bbc2c..eb849ab52d 100644
--- a/indra/newview/llvelopack.cpp
+++ b/indra/newview/llvelopack.cpp
@@ -46,6 +46,7 @@
#if LL_WINDOWS
#include "llappviewerwin32.h"
#include <windows.h>
+#include <shellapi.h>
#include <shlobj.h>
#include <shobjidl.h>
#include <shlwapi.h>
@@ -984,6 +985,19 @@ static void on_log_message(void* user_data, const char* level, const char* messa
OutputDebugStringA("\n");
}
+static void set_runtime_app_user_model_id()
+{
+ // Ensure taskbar grouping uses a stable ID independent of exe path
+ // (wrapper exe vs current\ exe).
+ const std::wstring app_user_model_id = get_app_user_model_id();
+ HRESULT appid_hr = SetCurrentProcessExplicitAppUserModelID(app_user_model_id.c_str());
+ if (FAILED(appid_hr))
+ {
+ LL_WARNS("Velopack") << "SetCurrentProcessExplicitAppUserModelID failed: 0x"
+ << std::hex << appid_hr << LL_ENDL;
+ }
+}
+
#elif LL_DARWIN
// macOS-specific hooks
@@ -1178,6 +1192,11 @@ static void ensure_update_manager(bool allow_downgrade)
bool velopack_initialize()
{
+#if LL_WINDOWS
+ // Needs to be called on each run for consistent taskbar behavior.
+ set_runtime_app_user_model_id();
+#endif
+
vpkc_set_logger(on_log_message, nullptr);
vpkc_app_set_auto_apply_on_startup(false);
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 12320ac86e..8c075ffd68 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -36,7 +36,6 @@
#include "llfasttimerview.h"
#include "llfloater360capture.h"
#include "llfloaterabout.h"
-#include "llfloateraddpaymentmethod.h"
#include "llfloaterauction.h"
#include "llfloaterautoreplacesettings.h"
#include "llfloateravatarpicker.h"
@@ -243,7 +242,6 @@ public:
const std::list<std::string> blacklist_untrusted = {
"360capture",
"block_timers",
- "add_payment_method",
"appearance",
"associate_listing",
"avatar_picker",
@@ -333,7 +331,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("360capture", "floater_360capture.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater360Capture>);
LLFloaterReg::add("block_timers", "floater_fast_timers.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFastTimerView>);
LLFloaterReg::add("about_land", "floater_about_land.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLand>);
- LLFloaterReg::add("add_payment_method", "floater_add_payment_method.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAddPaymentMethod>);
LLFloaterReg::add("appearance", "floater_my_appearance.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSidePanelContainer>);
LLFloaterReg::add("associate_listing", "floater_associate_listing.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAssociateListing>);
LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAuction>);
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 37d9f73864..2b51c19b7c 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1485,30 +1485,12 @@ void LLViewerWindow::handleCloseRequestCanceled()
void LLViewerWindow::handleSuspendRequest()
{
- static LLCachedControl<S32> os_hibernation_mode(gSavedSettings, "OSHibernationMode", 0);
- if (os_hibernation_mode == 0)
- {
- LL_INFOS() << "Got a 'suspend' event from OS" << LL_ENDL;
- // Viewer doesn't handle hibernation.
- // Just send statistics.
- LLAppViewer::instance()->sendViewerStatistics(false);
- }
- else
- {
- LL_INFOS() << "Got a 'suspend' event from OS, disconnecting" << LL_ENDL;
- // Viewer is set to prevent hibernation if agent isn't away.
- // If we got here, likely Agent 'went' away then viewer got
- // a hibernation message.
- // We have a limited timeframe. Sends stats then disconnect.
- LLViewerRegion* region = gAgent.getRegion();
- if (region)
- {
- LLAppViewer::instance()->sendViewerStatistics(true);
- LLAppViewer::instance()->metricsSend(!gDisconnected);
- // Make sure to show a message.
- LLAppViewer::instance()->forceDisconnect(LLTrans::getString("YouHaveBeenDisconnected"));
- }
- }
+ LLAppViewer::instance()->sendViewerStatistics(false);
+ // Todo: this should send a disconnect request as viewer
+ // can't keep heartbeat up while suspended and will get
+ // disconnected within a minute.
+ // Add a disconnect here once 'prevent OS from sleeping'
+ // feature is ready.
}
bool LLViewerWindow::handleCloseRequest(LLWindow *window, bool from_user)
diff --git a/indra/newview/llvoicewebrtc.cpp b/indra/newview/llvoicewebrtc.cpp
index e1cae2db0b..0b5cc9cd34 100644
--- a/indra/newview/llvoicewebrtc.cpp
+++ b/indra/newview/llvoicewebrtc.cpp
@@ -288,7 +288,26 @@ void LLWebRTCVoiceClient::initWebRTC()
mWebRTCDeviceInterface = llwebrtc::getDeviceInterface();
mWebRTCDeviceInterface->setDevicesObserver(this);
- mMainQueue = LL::WorkQueue::getInstance("mainloop");
+
+ if (!mVoiceWorkQueue)
+ {
+ mVoiceWorkQueue = std::make_shared<LL::WorkQueue>("VoiceWebRTC");
+ // Service this queue every idle tick, on the main thread.
+ doOnIdleRepeating(
+ [queue = LL::WorkQueue::weak_t(mVoiceWorkQueue)]() -> bool
+ {
+ auto locked = queue.lock();
+ if (!locked || locked->isClosed())
+ {
+ // Done
+ return true;
+ }
+ locked->runPending();
+ // Returning false means "call me again next idle".
+ return false;
+ });
+ }
+
refreshDeviceLists();
}
@@ -351,11 +370,11 @@ void LLWebRTCVoiceClient::drainConnections()
LLTimer timer;
while (!sessionState::allSessionsClosed() && timer.getElapsedTimeF32() < DRAIN_TIMEOUT_SECONDS)
{
- // OnPeerConnectionClosed comes back through the main queue, so it has
+ // OnPeerConnectionClosed comes back through the queue, so it has
// to be pumped or the state machines never see connections finish.
- if (auto main_queue = mMainQueue.lock())
+ if (mVoiceWorkQueue)
{
- main_queue->runFor(std::chrono::milliseconds(DRAIN_POLL_MS));
+ mVoiceWorkQueue->runFor(std::chrono::milliseconds(DRAIN_POLL_MS));
}
sessionState::processSessionStates();
@@ -707,7 +726,7 @@ void LLWebRTCVoiceClient::voiceConnectionCoro()
updatePosition();
}
}
- LL::WorkQueue::postMaybe(mMainQueue,
+ LL::WorkQueue::postMaybe(mVoiceWorkQueue,
[=, this] {
if (sShuttingDown)
{
@@ -829,7 +848,7 @@ void LLWebRTCVoiceClient::OnDevicesChanged(const llwebrtc::LLWebRTCVoiceDeviceLi
const llwebrtc::LLWebRTCVoiceDeviceList& capture_devices)
{
- LL::WorkQueue::postMaybe(mMainQueue,
+ LL::WorkQueue::postMaybe(mVoiceWorkQueue,
[=, this]
{
OnDevicesChangedImpl(render_devices, capture_devices);
@@ -2517,7 +2536,7 @@ LLVoiceWebRTCConnection::LLVoiceWebRTCConnection(const LLUUID &regionID, const s
mWebRTCPeerConnectionInterface = llwebrtc::newPeerConnection();
mWebRTCPeerConnectionInterface->setSignalingObserver(this);
- mMainQueue = LL::WorkQueue::getInstance("mainloop");
+ mVoiceMainQueue = LLWebRTCVoiceClient::getInstance()->getVoiceWorkQueue();
}
LLVoiceWebRTCConnection::~LLVoiceWebRTCConnection()
@@ -2551,7 +2570,7 @@ LLVoiceWebRTCConnection::~LLVoiceWebRTCConnection()
// callback from llwebrtc
void LLVoiceWebRTCConnection::OnIceGatheringState(llwebrtc::LLWebRTCSignalingObserver::EIceGatheringState state)
{
- LL::WorkQueue::postMaybe(mMainQueue,
+ LL::WorkQueue::postMaybe(mVoiceMainQueue,
[=, this] {
LL_DEBUGS("Voice") << "Ice Gathering voice account. " << state << LL_ENDL;
@@ -2575,7 +2594,7 @@ void LLVoiceWebRTCConnection::OnIceGatheringState(llwebrtc::LLWebRTCSignalingObs
// callback from llwebrtc
void LLVoiceWebRTCConnection::OnIceCandidate(const llwebrtc::LLWebRTCIceCandidate& candidate)
{
- LL::WorkQueue::postMaybe(mMainQueue, [=, this] { mIceCandidates.push_back(candidate); });
+ LL::WorkQueue::postMaybe(mVoiceMainQueue, [=, this] { mIceCandidates.push_back(candidate); });
}
void LLVoiceWebRTCConnection::processIceUpdates()
@@ -2691,7 +2710,7 @@ void LLVoiceWebRTCConnection::processIceUpdatesCoro(connectionPtr_t connection)
void LLVoiceWebRTCConnection::OnOfferAvailable(const std::string &sdp)
{
connectionPtr_t connection = shared_from_this();
- LL::WorkQueue::postMaybe(mMainQueue,
+ LL::WorkQueue::postMaybe(mVoiceMainQueue,
[=] {
if (connection->mShutDown)
{
@@ -2719,7 +2738,7 @@ void LLVoiceWebRTCConnection::OnOfferAvailable(const std::string &sdp)
void LLVoiceWebRTCConnection::OnAudioEstablished(llwebrtc::LLWebRTCAudioInterface* audio_interface)
{
connectionPtr_t connection = shared_from_this();
- LL::WorkQueue::postMaybe(mMainQueue,
+ LL::WorkQueue::postMaybe(mVoiceMainQueue,
[=] {
if (connection->mShutDown)
{
@@ -2742,7 +2761,7 @@ void LLVoiceWebRTCConnection::OnAudioEstablished(llwebrtc::LLWebRTCAudioInterfac
// callback from llwebrtc
void LLVoiceWebRTCConnection::OnRenegotiationNeeded()
{
- LL::WorkQueue::postMaybe(mMainQueue,
+ LL::WorkQueue::postMaybe(mVoiceMainQueue,
[=, this] {
LL_DEBUGS("Voice") << "Voice channel requires renegotiation." << LL_ENDL;
setVoiceConnectionState(VOICE_STATE_SESSION_RETRY);
@@ -2753,7 +2772,7 @@ void LLVoiceWebRTCConnection::OnRenegotiationNeeded()
// callback from llwebrtc
void LLVoiceWebRTCConnection::OnPeerConnectionClosed()
{
- LL::WorkQueue::postMaybe(mMainQueue,
+ LL::WorkQueue::postMaybe(mVoiceMainQueue,
[=, this] {
LL_DEBUGS("Voice") << "Peer connection has closed." << LL_ENDL;
if (mVoiceConnectionState == VOICE_STATE_WAIT_FOR_CLOSE)
@@ -3264,7 +3283,7 @@ bool LLVoiceWebRTCConnection::connectionStateMachine()
// llwebrtc callback
void LLVoiceWebRTCConnection::OnDataReceived(const std::string& data, bool binary)
{
- LL::WorkQueue::postMaybe(mMainQueue, [=, this] { LLVoiceWebRTCConnection::OnDataReceivedImpl(data, binary); });
+ LL::WorkQueue::postMaybe(mVoiceMainQueue, [=, this] { LLVoiceWebRTCConnection::OnDataReceivedImpl(data, binary); });
}
//
@@ -3493,7 +3512,7 @@ void LLVoiceWebRTCConnection::OnDataReceivedImpl(const std::string &data, bool b
void LLVoiceWebRTCConnection::OnDataChannelReady(llwebrtc::LLWebRTCDataInterface *data_interface)
{
connectionPtr_t connection = shared_from_this();
- LL::WorkQueue::postMaybe(mMainQueue,
+ LL::WorkQueue::postMaybe(mVoiceMainQueue,
[=] {
if (connection->mShutDown)
{
@@ -3535,7 +3554,7 @@ void LLVoiceWebRTCConnection::sendJoin()
void LLVoiceWebRTCConnection::OnStatsDelivered(const llwebrtc::LLWebRTCStatsMap& stats_data)
{
- LL::WorkQueue::postMaybe(mMainQueue, [=, this]
+ LL::WorkQueue::postMaybe(mVoiceMainQueue, [=, this]
{
if (mShutDown)
{
diff --git a/indra/newview/llvoicewebrtc.h b/indra/newview/llvoicewebrtc.h
index 05f03ee8a6..a7c8059a81 100644
--- a/indra/newview/llvoicewebrtc.h
+++ b/indra/newview/llvoicewebrtc.h
@@ -40,6 +40,7 @@ class LLWebRTCProtocolParser;
#include "llcoros.h"
#include "llparcel.h"
#include "llmutelist.h"
+#include "workqueue.h"
#include <queue>
#include "boost/json.hpp"
@@ -85,6 +86,8 @@ public:
// drainConnections() and ~LLVoiceWebRTCConnection().
static bool isWebRTCTerminated() { return sWebRTCTerminated; }
+ LL::WorkQueue::weak_t getVoiceWorkQueue() const { return mVoiceWorkQueue; }
+
const LLVoiceVersionInfo& getVersion() override;
void updateVersion();
@@ -468,7 +471,7 @@ private:
/// llwebrtc::terminate(). Bounded and best effort.
void drainConnections();
- LL::WorkQueue::weak_t mMainQueue;
+ LL::WorkQueue::ptr_t mVoiceWorkQueue;
F32 mTuningMicGain;
int mTuningSpeakerVolume;
@@ -688,7 +691,7 @@ class LLVoiceWebRTCConnection :
} EVoiceConnectionState;
EVoiceConnectionState mVoiceConnectionState;
- LL::WorkQueue::weak_t mMainQueue;
+ LL::WorkQueue::weak_t mVoiceMainQueue;
void setVoiceConnectionState(EVoiceConnectionState new_voice_connection_state)
{
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 13707b1889..3ec2843fed 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -1444,7 +1444,8 @@ void LLVOVolume::sculpt()
}
}
- getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level, mSculptTexture->isMissingAsset());
+ static LLCachedControl<bool> validate_area(gSavedSettings, "ValidateSculptyAreaRatio", true);
+ getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level, mSculptTexture->isMissingAsset(), validate_area());
}
}
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml
index 981c35800f..7be9a9d555 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_setup.xml
@@ -45,12 +45,4 @@
<combo_box.item label="Installér automatisk" name="Install_automatically"/>
<combo_box.item label="Hent og installér opdateringer manuelt" name="Install_manual"/>
</combo_box>
- <text name="os_hibernation_mode">
- Forhindr OS i at gå i dvale, hvis du ikke er væk:
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="Forhindrer kun OS i at gå i dvale, hvis brugeren ikke er væk">
- <combo_box.item label="Kan gå i dvale" name="can_hibernate"/>
- <combo_box.item label="Kan ikke gå i dvale, kan slukke skærmen" name="cant_hibernate"/>
- <combo_box.item label="Kan ikke gå i dvale, kan ikke slukke skærmen" name="cant_hibernate_screen"/>
- </combo_box>
</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
index ef7ac09dba..a8509cabac 100644
--- a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml
@@ -36,12 +36,4 @@
Proxy-Einstellungen:
</text>
<button label="Proxy-Einstellungen ändern" label_selected="Durchsuchen" name="set_proxy" width="160"/>
- <text name="os_hibernation_mode">
- OS-Ruhezustand verhindern, wenn nicht abwesend:
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="Verhindert den OS-Ruhezustand nur, wenn der Benutzer nicht abwesend ist">
- <combo_box.item label="Ruhezustand möglich" name="can_hibernate"/>
- <combo_box.item label="Kein Ruhezustand, Bildschirm kann ausgeschaltet werden" name="cant_hibernate"/>
- <combo_box.item label="Kein Ruhezustand, Bildschirm kann nicht ausgeschaltet werden" name="cant_hibernate_screen"/>
- </combo_box>
</panel>
diff --git a/indra/newview/skins/default/xui/en/floater_add_payment_method.xml b/indra/newview/skins/default/xui/en/floater_add_payment_method.xml
deleted file mode 100644
index 18f5f2af32..0000000000
--- a/indra/newview/skins/default/xui/en/floater_add_payment_method.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater
- height="405"
- width="900"
- layout="topleft"
- name="floater_add_payment_method"
- single_instance="true"
- show_title="false"
- legacy_header_height="0"
- header_height="0"
- background_visible="false"
- can_resize="false"
- can_drag_on_left="false"
- can_minimize="false"
- can_close="false">
- <floater.string
- name="continue_url">
- https://secondlife.com/my/lindex/buy.php?associate_for_viewer=1
- </floater.string>
- <floater.string
- name="continue_staging_url">
- https://secondlife-staging.com/my/lindex/buy.php?associate_for_viewer=1
- </floater.string>
- <panel
- background_opaque="false"
- bg_alpha_color="PanelGray"
- border_visible="false"
- background_visible="true"
- label="wrapper_panel"
- layout="topleft"
- left="0"
- name="wrapper_panel"
- top="0"
- height="405"
- width="900"
- follows="all"
- translate="false">
- <text
- type="string"
- length="1"
- follows="top|left|right"
- font="SansSerifLargeBold"
- text_color="White"
- layout="topleft"
- left="0"
- height="14"
- top_pad="30"
- width="900"
- halign="center"
- name="title_txt">
- Add a payment method to buy Linden dollars and enjoy more of Second Life.
- </text>
- <button
- follows="top|left|right"
- height="24"
- label="Get started"
- layout="topleft"
- left="320"
- name="continue_btn"
- image_unselected="PushButton_Login"
- image_pressed="PushButton_Login_Pressed"
- image_hover_unselected="PushButton_Login_Over"
- label_color="White"
- top_pad ="15"
- pad_bottom="1"
- width="140"/>
- <button
- follows="top|left|right"
- height="24"
- label="Later"
- layout="topleft"
- left_pad="9"
- pad_bottom="1"
- name="close_btn"
- width="90"/>
- <icon
- height="195"
- width="260"
- image_name="add_payment_image_left"
- layout="topleft"
- left="30"
- name="image_left"
- top_pad="30"
- use_draw_context_alpha="false"/>
- <icon
- height="195"
- width="260"
- image_name="add_payment_image_center"
- layout="topleft"
- left_pad="30"
- name="image_center"
- use_draw_context_alpha="false"/>
- <icon
- height="195"
- width="260"
- image_name="add_payment_image_right"
- layout="topleft"
- left_pad="30"
- name="image_right"
- use_draw_context_alpha="false"/>
- <text
- type="string"
- length="1"
- follows="top|left"
- text_color="White"
- height="75"
- width="260"
- top_pad="15"
- layout="topleft"
- word_wrap="true"
- left="30"
- name="image_left_desc">
- Create an avatar you love. Choose from millions of items in stores and the Second Life Marketplace. Your style is here.
- </text>
- <text
- type="string"
- length="1"
- follows="top|left"
- text_color="White"
- height="75"
- width="260"
- layout="topleft"
- word_wrap="true"
- left_pad="30"
- name="image_center_desc">
- Donate to your favorite performers and hosts. Your support helps them create great experiences.
- </text>
- <text
- type="string"
- length="1"
- follows="top|left"
- text_color="White"
- height="75"
- width="260"
- layout="topleft"
- word_wrap="true"
- left_pad="30"
- name="image_right_desc">
- Make the home of your dreams. With millions of items available to purchase, you can make your retreat unique.
- </text>
- </panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
index d5f2f69df7..836c6094c5 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -246,41 +246,4 @@
<button.commit_callback
function="Pref.Proxy" />
</button>
- <text
- type="string"
- length="1"
- follows="left|top"
- height="10"
- layout="topleft"
- left="30"
- name="os_hibernation_mode"
- mouse_opaque="false"
- top_pad="8"
- width="300">
- Prevent OS from hibernating if not Away:
- </text>
- <combo_box
- control_name="OSHibernationMode"
- follows="left|top"
- height="23"
- layout="topleft"
- left_delta="50"
- top_pad="10"
- name="os_hibernation_combobox"
- width="300"
- tool_tip="Only prevents OS from sleeping if user is not away">
- <combo_box.item
- label="Can hibernate"
- name="can_hibernate"
- value="0" />
- <combo_box.item
- label="Can't hibernate, can turn screen off"
- name="cant_hibernate"
- value="1" />
- <combo_box.item
- label="Can't hibernate, can't turn screen off"
- name="cant_hibernate_screen"
- value="2" />
- </combo_box>
</panel>
-
diff --git a/indra/newview/skins/default/xui/en/panel_script_ed.xml b/indra/newview/skins/default/xui/en/panel_script_ed.xml
index 1a978a7629..54e9eca19a 100644
--- a/indra/newview/skins/default/xui/en/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/en/panel_script_ed.xml
@@ -250,7 +250,7 @@
name="compile_target_lsl2"
value="lsl2" />
<combo_box.item
- label="LSL on Lua"
+ label="LSL on Luau"
name="compile_target_lsl_luau"
value="lsl-luau" />
<combo_box.item
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
index 27b3c407cf..36888850c4 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
@@ -36,12 +36,4 @@
Configuración de proxy:
</text>
<button label="Ajustar la configuración de proxy" label_selected="Elegir" name="set_proxy"/>
- <text name="os_hibernation_mode">
- Evitar que el sistema entre en hibernación si no está Ausente:
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="Solo evita que el sistema entre en suspensión si el usuario no está ausente">
- <combo_box.item label="Puede hibernar" name="can_hibernate"/>
- <combo_box.item label="No puede hibernar, puede apagar la pantalla" name="cant_hibernate"/>
- <combo_box.item label="No puede hibernar, no puede apagar la pantalla" name="cant_hibernate_screen"/>
- </combo_box>
</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
index 60cbe93e6e..c010fa9e90 100644
--- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml
@@ -36,12 +36,4 @@
Paramètres de proxy :
</text>
<button label="Définir" label_selected="Parcourir" name="set_proxy"/>
- <text name="os_hibernation_mode">
- Empêcher l’OS d’hiberner si vous n’êtes pas absent :
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="Empêche seulement la mise en veille de l’OS si l’utilisateur n’est pas absent">
- <combo_box.item label="Peut hiberner" name="can_hibernate"/>
- <combo_box.item label="Ne peut pas hiberner, peut éteindre l’écran" name="cant_hibernate"/>
- <combo_box.item label="Ne peut pas hiberner, ne peut pas éteindre l’écran" name="cant_hibernate_screen"/>
- </combo_box>
</panel>
diff --git a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
index 95ecf05617..c9d90539e1 100644
--- a/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/it/panel_preferences_setup.xml
@@ -36,12 +36,4 @@
Impostazioni proxy:
</text>
<button label="Regola impostazioni proxy" label_selected="Sfoglia" name="set_proxy" width="160"/>
- <text name="os_hibernation_mode">
- Impedisci al sistema operativo di ibernarsi se non sei Assente:
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="Impedisce al sistema operativo di andare in sospensione solo se l'utente non è assente">
- <combo_box.item label="Può ibernarsi" name="can_hibernate"/>
- <combo_box.item label="Non può ibernarsi, può spegnere lo schermo" name="cant_hibernate"/>
- <combo_box.item label="Non può ibernarsi, non può spegnere lo schermo" name="cant_hibernate_screen"/>
- </combo_box>
</panel>
diff --git a/indra/newview/skins/default/xui/ja/floater_add_payment_method.xml b/indra/newview/skins/default/xui/ja/floater_add_payment_method.xml
deleted file mode 100644
index b420bf7d20..0000000000
--- a/indra/newview/skins/default/xui/ja/floater_add_payment_method.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_add_payment_method">
- <floater.string name="continue_url">
- https://secondlife.com/my/lindex/buy.php?associate_for_viewer=1&amp;lang=ja-JP
- </floater.string>
- <panel label="wrapper_panel" name="wrapper_panel">
- <text name="title_txt">
- 支払い方法を追加してリンデンドルを購入し、Second Lifeをもっと楽しみましょう。
- </text>
- <button label="始めましょう" name="continue_btn"/>
- <button label="また後で"/>
- <icon name="image_left"/>
- <icon name="image_center"/>
- <icon name="image_right"/>
- <text name="image_left_desc">
- お気に入りのアバターを作成しましょう。ストアやSecond Lifeマーケットプレイスにある何百万ものアイテムからお選びください。あなただけのスタイルがここにあります。
- </text>
- <text name="image_center_desc">
- お気に入りのパフォーマーやホストに寄付をしましょう。あなたのサポートは、彼らが素晴らしい体験を生み出すのに役立ちます。
- </text>
- <text name="image_right_desc">
- あなたの夢の家を作りましょう。何百万ものアイテムを購入できるので、あなただけの住まいを作ることができます。
- </text>
- </panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
index 8940ca5bc9..959f827a61 100644
--- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml
@@ -36,12 +36,4 @@
プロキシ設定:
</text>
<button label="プロキシ設定を調整" label_selected="参照" name="set_proxy"/>
- <text name="os_hibernation_mode">
- 離席中でない場合、OS の休止状態を防止:
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="ユーザーが離席中でない場合にのみ、OS のスリープを防止します">
- <combo_box.item label="休止状態を許可" name="can_hibernate"/>
- <combo_box.item label="休止状態を禁止(画面オフは可)" name="cant_hibernate"/>
- <combo_box.item label="休止状態を禁止(画面オフも不可)" name="cant_hibernate_screen"/>
- </combo_box>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/floater_add_payment_method.xml b/indra/newview/skins/default/xui/pl/floater_add_payment_method.xml
deleted file mode 100644
index 2ef78d3d35..0000000000
--- a/indra/newview/skins/default/xui/pl/floater_add_payment_method.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="floater_add_payment_method">
- <panel name="wrapper_panel">
- <text name="title_txt">
- Dodaj metodę płatności, aby kupić Lindeny i lepiej doświadczać Second Life.
- </text>
- <button label="Rozpocznij" name="continue_btn" />
- <button label="Później" name="close_btn" />
- <text name="image_left_desc">
- Stwórz awatara, którego pokochasz. Wybieraj spośród milionów sklepów i Second Life Marketplace. Twój styl jest tutaj.
- </text>
- <text name="image_center_desc">
- Wspieraj swoich ulubionych wykonawców i gospodarzy. Pomożesz im tworzyć wspaniałe doświadczenia.
- </text>
- <text name="image_right_desc">
- Stwórz dom swoich marzeń. Miliony przedmiotów dostępnych do kupienia mogą uczynić Twoje gniazdko wyjątkowym.
- </text>
- </panel>
-</floater>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
index 7147f024cb..bd36f10509 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml
@@ -33,12 +33,4 @@
Ustawienia proxy:
</text>
<button label="Dostosuj ustawienia" label_selected="Przeglądaj" name="set_proxy" />
- <text name="os_hibernation_mode">
- Zapobiegaj hibernacji systemu, gdy użytkownik nie jest AFK:
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="Zapobiega usypianiu systemu tylko wtedy, gdy użytkownik nie jest AFK">
- <combo_box.item label="Może hibernować" name="can_hibernate"/>
- <combo_box.item label="Nie może hibernować, może wyłączyć ekran" name="cant_hibernate"/>
- <combo_box.item label="Nie może hibernować, nie może wyłączyć ekranu" name="cant_hibernate_screen"/>
- </combo_box>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
index 101f58488d..56fc225bc0 100644
--- a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml
@@ -36,12 +36,4 @@
Configurações de proxy:
</text>
<button label="Ajustar configurações de proxy" label_selected="Procurar" name="set_proxy" width="180"/>
- <text name="os_hibernation_mode">
- Impedir que o sistema entre em hibernação se não estiver Ausente:
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="Só impede que o sistema entre em suspensão se o utilizador não estiver ausente">
- <combo_box.item label="Pode hibernar" name="can_hibernate"/>
- <combo_box.item label="Não pode hibernar, pode desligar o ecrã" name="cant_hibernate"/>
- <combo_box.item label="Não pode hibernar, não pode desligar o ecrã" name="cant_hibernate_screen"/>
- </combo_box>
</panel>
diff --git a/indra/newview/skins/default/xui/pt/settings_comments.xml b/indra/newview/skins/default/xui/pt/settings_comments.xml
index 22f6487847..63d68a3f5b 100644
--- a/indra/newview/skins/default/xui/pt/settings_comments.xml
+++ b/indra/newview/skins/default/xui/pt/settings_comments.xml
@@ -1435,8 +1435,6 @@
<string>Número de logins bem-sucedidos no Second Life.</string>
<key>NvAPICreateApplicationProfile</key>
<string>Criar perfil de aplicativo NVIDIA para configurações otimizadas.</string>
- <key>OSHibernationMode</key>
- <string>Se deve impedir que o SO hiberne. 0 - pode hibernar; 1 - não pode hibernar, pode desligar a tela; 2 - não pode hibernar, não pode desligar a tela.</string>
<key>ObjectCacheEnabled</key>
<string>Ativar o cache de objetos.</string>
<key>ObjectCostHighColor</key>
diff --git a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
index cec72ebe21..137e047d97 100644
--- a/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/ru/panel_preferences_setup.xml
@@ -36,12 +36,4 @@
Настройки прокси-сервера:
</text>
<button label="Задать настройки" label_selected="Обзор" name="set_proxy"/>
- <text name="os_hibernation_mode">
- Предотвращать гибернацию ОС, если пользователь не отошел:
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="Предотвращает переход ОС в сон, только если пользователь не отошел">
- <combo_box.item label="Гибернация разрешена" name="can_hibernate"/>
- <combo_box.item label="Гибернация запрещена, экран можно выключать" name="cant_hibernate"/>
- <combo_box.item label="Гибернация запрещена, экран нельзя выключать" name="cant_hibernate_screen"/>
- </combo_box>
</panel>
diff --git a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml
index a3d99ac01f..a20d0e5ff1 100644
--- a/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/tr/panel_preferences_setup.xml
@@ -36,12 +36,4 @@
Proxy Ayarları:
</text>
<button label="Proxy ayarlarını yap" label_selected="Gözat" name="set_proxy"/>
- <text name="os_hibernation_mode">
- Uzakta değilse işletim sisteminin hazırda beklemesini engelle:
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="Yalnızca kullanıcı uzakta değilse işletim sisteminin uykuya geçmesini engeller">
- <combo_box.item label="Hazırda bekleyebilir" name="can_hibernate"/>
- <combo_box.item label="Hazırda bekleyemez, ekran kapanabilir" name="cant_hibernate"/>
- <combo_box.item label="Hazırda bekleyemez, ekran kapanamaz" name="cant_hibernate_screen"/>
- </combo_box>
</panel>
diff --git a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml
index c83a7512e0..6ef25ad96e 100644
--- a/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/zh/panel_preferences_setup.xml
@@ -36,12 +36,4 @@
代理伺服器設定:
</text>
<button label="調整代理伺服器設定" label_selected="瀏覽" name="set_proxy"/>
- <text name="os_hibernation_mode">
- 不處於離開狀態時阻止作業系統休眠:
- </text>
- <combo_box name="os_hibernation_combobox" tool_tip="僅在使用者不處於離開狀態時阻止作業系統睡眠">
- <combo_box.item label="可休眠" name="can_hibernate"/>
- <combo_box.item label="不可休眠,可關閉螢幕" name="cant_hibernate"/>
- <combo_box.item label="不可休眠,不可關閉螢幕" name="cant_hibernate_screen"/>
- </combo_box>
</panel>