summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.hgtags8
-rw-r--r--doc/contributions.txt1
-rw-r--r--indra/media_plugins/webkit/windows_volume_catcher.cpp2
-rw-r--r--indra/newview/CMakeLists.txt1
-rw-r--r--indra/newview/lldrawable.cpp10
-rwxr-xr-xindra/newview/llmeshrepository.cpp33
-rw-r--r--indra/newview/llpaneloutfitedit.cpp14
-rw-r--r--indra/newview/llviewerparcelmgr.cpp11
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml1738
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml8
-rw-r--r--indra/newview/viewer_manifest.py14
-rw-r--r--indra/viewer_components/updater/scripts/linux/update_install219
12 files changed, 270 insertions, 1789 deletions
diff --git a/.hgtags b/.hgtags
index 83c86a413d..0cbde9dd04 100644
--- a/.hgtags
+++ b/.hgtags
@@ -408,3 +408,11 @@ c296133849d1f103c0e2abc41e6599daed00b67b DRTVWR-280
ccf991e02dc2f63fb646324230d54832683f4a9b DRTVWR-286
2d849850558a5a0324b398d1c102d30bcbdfb88f DRTVWR-287
e06898df8644fe567bee94f817d03abc1c380993 3.4.5-beta3
+a676b4d6c037b39fe5b8e42cf8839a9303936089 DRTVWR-289
+28fa8b944a0c1869636ab00cc400f5aa71f6fa3c DRTVWR-290
+7f09bbc28c297f14b67961be7b6575445fa160e8 DRTVWR-291
+b23419a2748483c98f3b84b630468a21c88feba5 DRTVWR-292
+1567de5700c273b583dac41b64275c223287306e 3.4.5-beta4
+1cce8447f8f574673e3f47d6fe584262e6964fe2 DRTVWR-296
+0a5d409161ef2a89b28c9a741051dd2dedc707d6 DRTVWR-297
+852b69ef0b5fe6b13b69cc2217282cc64de6afab 3.4.5-beta5
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 10d6818bd3..e86ef11a72 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -1251,6 +1251,7 @@ Whimsy Winx
Whirly Fizzle
STORM-1895
MAINT-873
+ STORM-1930
Whoops Babii
VWR-631
VWR-1640
diff --git a/indra/media_plugins/webkit/windows_volume_catcher.cpp b/indra/media_plugins/webkit/windows_volume_catcher.cpp
index 957704da47..0cfb810906 100644
--- a/indra/media_plugins/webkit/windows_volume_catcher.cpp
+++ b/indra/media_plugins/webkit/windows_volume_catcher.cpp
@@ -71,7 +71,7 @@ VolumeCatcherImpl::VolumeCatcherImpl()
{
mSystemIsVistaOrHigher = isWindowsVistaOrHigher();
- if ( mSystemIsVistaOrHigher )
+ if ( ! mSystemIsVistaOrHigher )
{
HMODULE handle = ::LoadLibrary(L"winmm.dll");
if(handle)
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 7282b8978f..baedac1f2d 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1854,7 +1854,6 @@ if (LINUX)
set(COPY_INPUT_DEPENDENCIES
${VIEWER_BINARY_NAME}
linux-crash-logger
- linux-updater
SLPlugin
media_plugin_webkit
media_plugin_gstreamer010
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index d8b1887a90..24413caf6a 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -523,6 +523,7 @@ F32 LLDrawable::updateXform(BOOL undamped)
dist_squared = dist_vec_squared(new_pos, target_pos);
LLQuaternion new_rot = nlerp(lerp_amt, old_rot, target_rot);
+ // FIXME: This can be negative! It is be possible for some rots to 'cancel out' pos or size changes.
dist_squared += (1.f - dot(new_rot, target_rot)) * 10.f;
LLVector3 new_scale = lerp(old_scale, target_scale, lerp_amt);
@@ -548,9 +549,12 @@ F32 LLDrawable::updateXform(BOOL undamped)
}
else
{
- dist_squared = dist_vec_squared(old_pos, target_pos);
- dist_squared += (1.f - dot(old_rot, target_rot)) * 10.f;
- dist_squared += dist_vec_squared(old_scale, target_scale);
+ // The following fixes MAINT-1742 but breaks vehicles similar to MAINT-2275
+ // dist_squared = dist_vec_squared(old_pos, target_pos);
+
+ // The following fixes MAINT-2247 but causes MAINT-2275
+ //dist_squared += (1.f - dot(old_rot, target_rot)) * 10.f;
+ //dist_squared += dist_vec_squared(old_scale, target_scale);
}
LLVector3 vec = mCurrentScale-target_scale;
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 39a429e9c6..17311dd75e 100755
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -215,17 +215,19 @@ public:
~LLMeshHeaderResponder()
{
- if (!mProcessed && !LLApp::isQuitting())
- { //something went wrong, retry
- llwarns << "Timeout or service unavailable, retrying." << llendl;
- LLMeshRepository::sHTTPRetryCount++;
- LLMeshRepoThread::HeaderRequest req(mMeshParams);
- LLMutexLock lock(gMeshRepo.mThread->mMutex);
- gMeshRepo.mThread->mHeaderReqQ.push(req);
+ if (!LLApp::isQuitting())
+ {
+ if (!mProcessed)
+ { //something went wrong, retry
+ llwarns << "Timeout or service unavailable, retrying." << llendl;
+ LLMeshRepository::sHTTPRetryCount++;
+ LLMeshRepoThread::HeaderRequest req(mMeshParams);
+ LLMutexLock lock(gMeshRepo.mThread->mMutex);
+ gMeshRepo.mThread->mHeaderReqQ.push(req);
+ }
+ LLMeshRepoThread::decActiveHeaderRequests();
}
-
- LLMeshRepoThread::decActiveHeaderRequests();
}
virtual void completedRaw(U32 status, const std::string& reason,
@@ -252,13 +254,16 @@ public:
~LLMeshLODResponder()
{
- if (!mProcessed && !LLApp::isQuitting())
+ if (!LLApp::isQuitting())
{
- llwarns << "Killed without being processed, retrying." << llendl;
- LLMeshRepository::sHTTPRetryCount++;
- gMeshRepo.mThread->lockAndLoadMeshLOD(mMeshParams, mLOD);
+ if (!mProcessed)
+ {
+ llwarns << "Killed without being processed, retrying." << llendl;
+ LLMeshRepository::sHTTPRetryCount++;
+ gMeshRepo.mThread->lockAndLoadMeshLOD(mMeshParams, mLOD);
+ }
+ LLMeshRepoThread::decActiveLODRequests();
}
- LLMeshRepoThread::decActiveLODRequests();
}
virtual void completedRaw(U32 status, const std::string& reason,
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index 35e2e96bab..36234b9536 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -186,8 +186,11 @@ private:
// Populate the menu with items like "New Skin", "New Pants", etc.
static void populateCreateWearableSubmenus(LLMenuGL* menu)
{
- LLView* menu_clothes = gMenuHolder->getChildView("COF.Gear.New_Clothes", FALSE);
- LLView* menu_bp = gMenuHolder->getChildView("COF.Geear.New_Body_Parts", FALSE);
+ // MAINT-2276...these menus are created as dummies because they are not available
+ // when this function is called. This prevents their parent from popping up later.
+ //
+ //LLView* menu_clothes = gMenuHolder->getChildView("COF.Gear.New_Clothes", FALSE);
+ //LLView* menu_bp = gMenuHolder->getChildView("COF.Geear.New_Body_Parts", FALSE);
for (U8 i = LLWearableType::WT_SHAPE; i != (U8) LLWearableType::WT_COUNT; ++i)
{
@@ -200,8 +203,11 @@ private:
p.on_click.function_name = "Wearable.Create";
p.on_click.parameter = LLSD(type_name);
- LLView* parent = LLWearableType::getAssetType(type) == LLAssetType::AT_CLOTHING ?
- menu_clothes : menu_bp;
+ //LLView* parent = LLWearableType::getAssetType(type) == LLAssetType::AT_CLOTHING ? menu_clothes : menu_bp;
+ // This is a work-around for MAINT-2276 wherein the parent toggleable menu does not appear
+ // It puts everything under one menu, but that menu appears, which is better than not.
+ //
+ LLView* parent = menu;
LLUICtrlFactory::create<LLMenuItemCallGL>(p, parent);
}
}
diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp
index 5da1561afe..4cdb568d17 100644
--- a/indra/newview/llviewerparcelmgr.cpp
+++ b/indra/newview/llviewerparcelmgr.cpp
@@ -1540,17 +1540,6 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use
// Actually extract the data.
if (parcel)
{
- if (sequence_id == SELECTED_PARCEL_SEQ_ID
- && parcel->getLocalID() != INVALID_PARCEL_ID
- && parcel->getLocalID() != local_id)
- {
- // The parcel has a valid parcel ID but it doesn't match the parcel
- // for the data received.
- llinfos << "Expecting data for parcel " << parcel->getLocalID() \
- << " but got data for parcel " << local_id << llendl;
- return;
- }
-
parcel->init(owner_id,
FALSE, FALSE, FALSE,
claim_date, claim_price_per_meter, rent_price_per_meter,
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 44c18c2cce..c8f5cbb2b0 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -8874,14 +8874,6 @@ Cannot save to object contents: This would modify the attachment permissions.
<notification
icon="alertmodal.tga"
- name="NoPermToEdit"
- type="notify">
- <tag>fail</tag>
-Not permitted to edit this!
- </notification>
-
- <notification
- icon="alertmodal.tga"
name="TooManyScripts"
type="notify">
<tag>fail</tag>
@@ -8922,47 +8914,6 @@ You cannot modify the navmesh across region boundaries.
<notification
icon="alertmodal.tga"
- name="NoPermModifyObject"
- type="notify">
- <tag>fail</tag>
-You don't have permission to modify that object.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysObjContributesToNav"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for an object that contributes to the navmesh.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysKeyframedObj"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for keyframed objects.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysNotEnoughLandResources"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for object -- insufficient land resources.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysCostTooGreat"
- persist="true"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS]
- </notification>
-
- <notification
- icon="alertmodal.tga"
name="NoSetPhysicsPropertiesOnObjectType"
type="notify">
<tag>fail</tag>
@@ -9987,1693 +9938,4 @@ An internal error prevented us from properly updating your viewer. The L$ balan
Cannot create large prims that intersect other players. Please re-try when other players have moved.
</notification>
-
- <notification
- icon="alertmodal.tga"
- name="AvatarFrozen"
- type="notify">
- <tag>fail</tag>
-[AV_FREEZER] has frozen you. You cannot move or interact with the world.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AvatarFrozenDuration"
- type="notify">
- <tag>fail</tag>
-[AV_FREEZER] has frozen you for [AV_FREEZE_TIME] seconds. You cannot move or interact with the world.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="YouFrozeAvatar"
- type="notify">
- <tag>fail</tag>
-Avatar frozen.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AvatarHasUnFrozenYou"
- type="notify">
- <tag>fail</tag>
-[AV_FREEZER] has unfrozen you.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AvatarUnFrozen"
- type="notify">
- <tag>fail</tag>
-Avatar unfrozen.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AvatarFreezeFailure"
- type="notify">
- <tag>fail</tag>
-Freeze failed because you don't have admin permission for that parcel.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AvatarFreezeThaw"
- type="notify">
- <tag>fail</tag>
-Your freeze expired, go about your business.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AvatarCantFreeze"
- type="notify">
- <tag>fail</tag>
-Sorry, can't freeze that user.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NowOwnObject"
- type="notify">
- <tag>fail</tag>
-You are now the owner of object [OBJECT_NAME]
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantRezOnLand"
- type="notify">
- <tag>fail</tag>
-Can't rez object at [OBJECT_POS] because the owner of this land does not allow it. Use the land tool to see land ownership.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="RezFailTooManyRequests"
- type="notify">
- <tag>fail</tag>
-Object can not be rezzed because there are too many requests.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="SitFailCantMove"
- type="notify">
- <tag>fail</tag>
-You cannot sit because you cannot move at this time.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="SitFailNotAllowedOnLand"
- type="notify">
- <tag>fail</tag>
-You cannot sit because you are not allowed on that land.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="SitFailNotSameRegion"
- type="notify">
- <tag>fail</tag>
-Try moving closer. Can't sit on object because
-it is not in the same region as you.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoNewObjectRegionFull"
- type="notify">
- <tag>fail</tag>
-Unable to create new object. The region is full.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="FailedToPlaceObject"
- type="notify">
- <tag>fail</tag>
-Failed to place object at specified location. Please try again.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoOwnNoGardening"
- type="notify">
- <tag>fail</tag>
-You Can't create trees and grass on land you don't own.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoCopyPermsNoObject"
- type="notify">
- <tag>fail</tag>
-Copy failed because you lack permission to copy the object '[OBJ_NAME]'.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoTransPermsNoObject"
- type="notify">
- <tag>fail</tag>
-Copy failed because the object '[OBJ_NAME]' cannot be transferred to you.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AddToNavMeshNoCopy"
- type="notify">
- <tag>fail</tag>
-Copy failed because the object '[OBJ_NAME]' contributes to navmesh.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="DupeWithNoRootsSelected"
- type="notify">
- <tag>fail</tag>
-Duplicate with no root objects selected.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDupeCuzRegionIsFull"
- type="notify">
- <tag>fail</tag>
-Can't duplicate objects because the region is full.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDupeCuzParcelNotFound"
- type="notify">
- <tag>fail</tag>
-Can't duplicate objects - Can't find the parcel they are on.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateCuzParcelFull"
- type="notify">
- <tag>fail</tag>
-Can't create object because
-the parcel is full.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="RezAttemptFailed"
- type="notify">
- <tag>fail</tag>
-Attempt to rez an object failed.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="ToxicInvRezAttemptFailed"
- type="notify">
- <tag>fail</tag>
-Unable to create item that has caused problems on this region.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="InvItemIsBlacklisted"
- type="notify">
- <tag>fail</tag>
-That inventory item has been blacklisted.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoCanRezObjects"
- type="notify">
- <tag>fail</tag>
-You are not currently allowed to create objects.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LandSearchBlocked"
- type="notify">
- <tag>fail</tag>
-Land Search Blocked.
-You have performed too many land searches too quickly.
-Please try again in a minute.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NotEnoughResourcesToAttach"
- type="notify">
- <tag>fail</tag>
-Not enough script resources available to attach object!
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="YouDiedAndGotTPHome"
- type="notify">
- <tag>fail</tag>
-You died and have been teleported to your home location
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="EjectComingSoon"
- type="notify">
- <tag>fail</tag>
-You are no longer allowed here and have [EJECT_TIME] seconds to leave.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoEnterServerFull"
- type="notify">
- <tag>fail</tag>
-You can't enter this region because
-the server is full.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="SaveBackToInvDisabled"
- type="notify">
- <tag>fail</tag>
-Save Back To Inventory has been disabled.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoExistNoSaveToContents"
- type="notify">
- <tag>fail</tag>
-Cannot save '[OBJ_NAME]' to object contents because the object it was rezzed from no longer exists.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoModNoSaveToContents"
- type="notify">
- <tag>fail</tag>
-Cannot save '[OBJ_NAME]' to object contents because you do not have permission to modify the object '[DEST_NAME]'.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoSaveBackToInvDisabled"
- type="notify">
- <tag>fail</tag>
-Cannot save '[OBJ_NAME]' back to inventory -- this operation has been disabled.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoCopyNoSelCopy"
- type="notify">
- <tag>fail</tag>
-You cannot copy your selection because you do not have permission to copy the object '[OBJ_NAME]'.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoTransNoSelCopy"
- type="notify">
- <tag>fail</tag>
-You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoTransNoCopy"
- type="notify">
- <tag>fail</tag>
-You cannot copy your selection because the object '[OBJ_NAME]' is not transferrable.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoPermsNoRemoval"
- type="notify">
- <tag>fail</tag>
-Removal of the object '[OBJ_NAME]' from the simulator is disallowed by the permissions system.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoModNoSaveSelection"
- type="notify">
- <tag>fail</tag>
-Cannot save your selection because you do not have permission to modify the object '[OBJ_NAME]'.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoCopyNoSaveSelection"
- type="notify">
- <tag>fail</tag>
-Cannot save your selection because the object '[OBJ_NAME]' is not copyable.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoModNoTaking"
- type="notify">
- <tag>fail</tag>
-You cannot take your selection because you do not have permission to modify the object '[OBJ_NAME]'.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="RezDestInternalError"
- type="notify">
- <tag>fail</tag>
-Internal Error: Unknown destination type.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="DeleteFailObjNotFound"
- type="notify">
- <tag>fail</tag>
-Delete failed because object not found
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="SorryCantEjectUser"
- type="notify">
- <tag>fail</tag>
-Sorry, can't eject that user.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="RegionSezNotAHome"
- type="notify">
- <tag>fail</tag>
-This region does not allow you to set your home location here.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="HomeLocationLimits"
- type="notify">
- <tag>fail</tag>
-You can only set your 'Home Location' on your land or at a mainland Infohub.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="HomePositionSet"
- type="notify">
- <tag>fail</tag>
-Home position set.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AvatarEjected"
- type="notify">
- <tag>fail</tag>
-Avatar ejected.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AvatarEjectFailed"
- type="notify">
- <tag>fail</tag>
-Eject failed because you don't have admin permission for that parcel.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantMoveObjectParcelFull"
- type="notify">
- <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because the parcel is full.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantMoveObjectParcelPerms"
- type="notify">
- <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because your objects are not allowed on this parcel.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantMoveObjectParcelResources"
- type="notify">
- <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because there are not enough resources for this object on this parcel.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantMoveObjectRegionVersion"
- type="notify">
- <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because the other region is running an older version which does not support receiving this object via region crossing.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantMoveObjectNavMesh"
- type="notify">
- <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because you cannot modify the navmesh across region boundaries.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantMoveObjectWTF"
- type="notify">
- <tag>fail</tag>
-Can't move object '[OBJECT_NAME]' to
-[OBJ_POSITION] in region [REGION_NAME] because of an unknown reason. ([FAILURE_TYPE])
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoPermModifyObject"
- type="notify">
- <tag>fail</tag>
-You don't have permission to modify that object
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysObjContributesToNav"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for an object that contributes to the navmesh.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysKeyframedObj"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for keyframed objects.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysNotEnoughLandResources"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for object -- insufficient land resources.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysCostTooGreat"
- persist="true"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS]
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="PhantomWithConcavePiece"
- type="notify">
- <tag>fail</tag>
-This object cannot have a concave piece because it is phantom and contributes to the navmesh.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="UnableAddItem"
- type="notify">
- <tag>fail</tag>
-Unable to add item!
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="UnableEditItem"
- type="notify">
- <tag>fail</tag>
-Unable to edit this!
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoPermToEdit"
- type="notify">
- <tag>fail</tag>
-Not permitted to edit this.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoPermToCopyInventory"
- type="notify">
- <tag>fail</tag>
-Not permitted to copy that inventory.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantSaveItemDoesntExist"
- type="notify">
- <tag>fail</tag>
-Cannot save to object contents: Item no longer exists.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantSaveItemAlreadyExists"
- type="notify">
- <tag>fail</tag>
-Cannot save to object contents: Item with that name already exists in inventory
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantSaveModifyAttachment"
- type="notify">
- <tag>fail</tag>
-Cannot save to object contents: This would modify the attachment permissions.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoPermToEdit"
- type="notify">
- <tag>fail</tag>
-Not permitted to edit this!
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TooManyScripts"
- type="notify">
- <tag>fail</tag>
-Too many scripts.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="UnableAddScript"
- type="notify">
- <tag>fail</tag>
-Unable to add script!
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AssetServerTimeoutObjReturn"
- type="notify">
- <tag>fail</tag>
-Asset server didn't respond in a timely fashion. Object returned to sim.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="RegionDisablePhysicsShapes"
- type="notify">
- <tag>fail</tag>
-This region does not have physics shapes enabled.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoModNavmeshAcrossRegions"
- type="notify">
- <tag>fail</tag>
-You cannot modify the navmesh across region boundaries.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoPermModifyObject"
- type="notify">
- <tag>fail</tag>
-You don't have permission to modify that object.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysObjContributesToNav"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for an object that contributes to the navmesh.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysKeyframedObj"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for keyframed objects.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysNotEnoughLandResources"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for object -- insufficient land resources.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantEnablePhysCostTooGreat"
- persist="true"
- type="notify">
- <tag>fail</tag>
-Can't enable physics for object with physics resource cost greater than [MAX_OBJECTS]
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoSetPhysicsPropertiesOnObjectType"
- type="notify">
- <tag>fail</tag>
-Cannot set physics properties on that object type.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoSetRootPrimWithNoShape"
- type="notify">
- <tag>fail</tag>
-Cannot set root prim to have no shape.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoRegionSupportPhysMats"
- type="notify">
- <tag>fail</tag>
-This region does not have physics materials enabled.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="OnlyRootPrimPhysMats"
- type="notify">
- <tag>fail</tag>
-Only root prims may have their physics materials adjusted.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoSupportCharacterPhysMats"
- type="notify">
- <tag>fail</tag>
-Setting physics materials on characters is not yet supported.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="InvalidPhysMatProperty"
- type="notify">
- <tag>fail</tag>
-One or more of the specified physics material properties was invalid.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoPermsAlterStitchingMeshObj"
- type="notify">
- <tag>fail</tag>
-You may not alter the stitching type of a mesh object.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoPermsAlterShapeMeshObj"
- type="notify">
- <tag>fail</tag>
-You may not alter the shape of a mesh object
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="FullRegionCantEnter"
- type="notify">
- <tag>fail</tag>
-You can't enter this region because \nthe region is full.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LinkFailedOwnersDiffer"
- type="notify">
- <tag>fail</tag>
-Link failed -- owners differ
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LinkFailedNoModNavmeshAcrossRegions"
- type="notify">
- <tag>fail</tag>
-Link failed -- cannot modify the navmesh across region boundaries.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LinkFailedNoPermToEdit"
- type="notify">
- <tag>fail</tag>
-Link failed because you do not have edit permission.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LinkFailedTooManyPrims"
- type="notify">
- <tag>fail</tag>
-Link failed -- too many primitives
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LinkFailedCantLinkNoCopyNoTrans"
- type="notify">
- <tag>fail</tag>
-Link failed -- cannot link no-copy with no-transfer
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LinkFailedNothingLinkable"
- type="notify">
- <tag>fail</tag>
-Link failed -- nothing linkable.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LinkFailedTooManyPathfindingChars"
- type="notify">
- <tag>fail</tag>
-Link failed -- too many pathfinding characters
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LinkFailedInsufficientLand"
- type="notify">
- <tag>fail</tag>
-Link failed -- insufficient land resources
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LinkFailedTooMuchPhysics"
- type="notify">
- <tag>fail</tag>
-Object uses too many physics resources -- its dynamics have been disabled.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TeleportedHomeByObjectOnParcel"
- persist="true"
- type="notify">
- <tag>fail</tag>
-You have been teleported home by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]'
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TeleportedHomeByObject"
- persist="true"
- type="notify">
- <tag>fail</tag>
-You have been teleported home by the object '[OBJECT_NAME]'
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TeleportedByAttachment"
- type="notify">
- <tag>fail</tag>
-You have been teleported by an attachment on [ITEM_ID]
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TeleportedByObjectOnParcel"
- type="notify">
- <tag>fail</tag>
-You have been teleported by the object '[OBJECT_NAME]' on the parcel '[PARCEL_NAME]'
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TeleportedByObjectOwnedBy"
- type="notify">
- <tag>fail</tag>
-You have been teleported by the object '[OBJECT_NAME]' owned by [OWNER_ID]
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TeleportedByObjectUnknownUser"
- type="notify">
- <tag>fail</tag>
-You have been teleported by the object '[OBJECT_NAME]' owned by an unknown user.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateObjectRegionFull"
- type="notify">
- <tag>fail</tag>
-Unable to create requested object. The region is full.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantAttackMultipleObjOneSpot"
- type="notify">
- <tag>fail</tag>
-You can't attach multiple objects to one spot.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateMultipleObjAtLoc"
- type="notify">
- <tag>fail</tag>
-You can't create multiple objects here.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="UnableToCreateObjTimeOut"
- type="notify">
- <tag>fail</tag>
-Unable to create requested object. Object is missing from database.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="UnableToCreateObjUnknown"
- type="notify">
- <tag>fail</tag>
-Unable to create requested object. The request timed out. Please try again.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="UnableToCreateObjMissingFromDB"
- type="notify">
- <tag>fail</tag>
-Unable to create requested object. Please try again.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="RezFailureTookTooLong"
- type="notify">
- <tag>fail</tag>
-Rez failed, requested object took too long to load.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="FailedToPlaceObjAtLoc"
- type="notify">
- <tag>fail</tag>
-Failed to place object at specified location. Please try again.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreatePlantsOnLand"
- type="notify">
- <tag>fail</tag>
-You cannot create plants on this land.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantRestoreObjectNoWorldPos"
- type="notify">
- <tag>fail</tag>
-Cannot restore object. No world position found.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantRezObjectInvalidMeshData"
- type="notify">
- <tag>fail</tag>
-Unable to rez object because its mesh data is invalid.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantRezObjectTooManyScripts"
- type="notify">
- <tag>fail</tag>
-Unable to rez object because there are already too many scripts in this region.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateObjectNoAccess"
- type="notify">
- <tag>fail</tag>
-Your access privileges don't allow you to create objects there.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateObject"
- type="notify">
- <tag>fail</tag>
-You are not currently allowed to create objects.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="InvalidObjectParams"
- type="notify">
- <tag>fail</tag>
-Invalid object parameters
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDuplicateObjectNoAcess"
- type="notify">
- <tag>fail</tag>
-Your access privileges don't allow you to duplicate objects here.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantChangeShape"
- type="notify">
- <tag>fail</tag>
-You are not allowed to change this shape.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoAccessToClaimObjects"
- type="notify">
- <tag>fail</tag>
-Your access privileges don't allow you to claim objects here.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="DeedFailedNoPermToDeedForGroup"
- type="notify">
- <tag>fail</tag>
-Deed failed because you do not have permission to deed objects for your group.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="NoPrivsToBuyObject"
- type="notify">
- <tag>fail</tag>
-Your access privileges don't allow you to buy objects here.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantAttachObjectAvatarSittingOnIt"
- type="notify">
- <tag>fail</tag>
-Cannot attach object because an avatar is sitting on it.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="WhyAreYouTryingToWearShrubbery"
- type="notify">
- <tag>fail</tag>
-Trees and grasses cannot be worn as attachments.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantAttachGroupOwnedObjs"
- type="notify">
- <tag>fail</tag>
-Cannot attach group-owned objects.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantAttachObjectsNotOwned"
- type="notify">
- <tag>fail</tag>
-Cannot attach objects that you don't own.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantAttachNavmeshObjects"
- type="notify">
- <tag>fail</tag>
-Cannot attach objects that contribute to navmesh.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantAttachObjectNoMovePermissions"
- type="notify">
- <tag>fail</tag>
-Cannot attach object because you do not have permission to move it.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantAttachNotEnoughScriptResources"
- type="notify">
- <tag>fail</tag>
-Not enough script resources available to attach object!
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDropItemTrialUser"
- type="notify">
- <tag>fail</tag>
-You can't drop objects here; try the Free Trial area.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDropMeshAttachment"
- type="notify">
- <tag>fail</tag>
-You can't drop mesh attachments. Detach to inventory and then rez in world.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDropAttachmentNoPermission"
- type="notify">
- <tag>fail</tag>
-Failed to drop attachment: you don't have permission to drop there.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDropAttachmentInsufficientLandResources"
- type="notify">
- <tag>fail</tag>
-Failed to drop attachment: insufficient available land resource.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDropAttachmentInsufficientResources"
- type="notify">
- <tag>fail</tag>
-Failed to drop attachments: insufficient available resources.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDropObjectFullParcel"
- type="notify">
- <tag>fail</tag>
-Cannot drop object here. Parcel is full.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantTouchObjectBannedFromParcel"
- type="notify">
- <tag>fail</tag>
-Can't touch/grab this object because you are banned from the land parcel.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="PlzNarrowDeleteParams"
- type="notify">
- <tag>fail</tag>
-Please narrow your delete parameters.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="UnableToUploadAsset"
- type="notify">
- <tag>fail</tag>
-Unable to upload asset.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantTeleportCouldNotFindUser"
- type="notify">
- <tag>fail</tag>
-Could not find user to teleport home
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="GodlikeRequestFailed"
- type="notify">
- <tag>fail</tag>
-godlike request failed
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="GenericRequestFailed"
- type="notify">
- <tag>fail</tag>
-generic request failed
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantUploadPostcard"
- type="notify">
- <tag>fail</tag>
-Unable to upload postcard. Try again later.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantFetchInventoryForGroupNotice"
- type="notify">
- <tag>fail</tag>
-Unable to fetch inventory details for the group notice.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantSendGroupNoticeNotPermitted"
- type="notify">
- <tag>fail</tag>
-Unable to send group notice -- not permitted.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantSendGroupNoticeCantConstructInventory"
- type="notify">
- <tag>fail</tag>
-Unable to send group notice -- could not construct inventory.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantParceInventoryInNotice"
- type="notify">
- <tag>fail</tag>
-Unable to parse inventory in notice.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TerrainUploadFailed"
- type="notify">
- <tag>fail</tag>
-Terrain upload failed.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TerrainFileWritten"
- type="notify">
- <tag>fail</tag>
-Terrain file written.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TerrainFileWrittenStartingDownload"
- type="notify">
- <tag>fail</tag>
-Terrain file written, starting download...
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TerrainBaked"
- type="notify">
- <tag>fail</tag>
-Terrain baked.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="TenObjectsDisabledPlzRefresh"
- type="notify">
- <tag>fail</tag>
-Only the first 10 selected objects have been disabled. Refresh and make additional selections if required.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="UpdateViewerBuyParcel"
- type="notify">
- <tag>fail</tag>
-You need to update your viewer to buy this parcel.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LandBuyAccessBlocked"
- type="notify">
- <tag>fail</tag>
-You can't buy this land due to your maturity Rating. You may need to validate your age and/or install the latest Viewer. Please go to the Knowledge Base for details on accessing areas with this maturity Rating.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantBuyParcelNotForSale"
- type="notify">
- <tag>fail</tag>
-Unable to buy, this parcel is not for sale.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantBuySalePriceOrLandAreaChanged"
- type="notify">
- <tag>fail</tag>
-Unable to buy, the sale price or land area has changed.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantBuyParcelNotAuthorized"
- type="notify">
- <tag>fail</tag>
-You are not the authorized buyer for this parcel.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantBuyParcelAwaitingPurchaseAuth"
- type="notify">
- <tag>fail</tag>
-You cannot purchase this parcel because it is already awaiting purchase aut
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantBuildOverflowParcel"
- type="notify">
- <tag>fail</tag>
-You cannot build objects here because doing so would overflow the parcel.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="SelectedMultipleOwnedLand"
- type="notify">
- <tag>fail</tag>
-You selected land with different owners. Please select a smaller area and try again.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantJoinTooFewLeasedParcels"
- type="notify">
- <tag>fail</tag>
-Not enough leased parcels in selection to join.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDivideLandMultipleParcelsSelected"
- type="notify">
- <tag>fail</tag>
-Can't divide land.\nThere is more than one parcel selected.\nTry selecting a smaller piece of land.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDivideLandCantFindParcel"
- type="notify">
- <tag>fail</tag>
-Can't divide land.\nCan't find the parcel.\nPlease report with Help -> Reprt Bug...
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDivideLandWholeParcelSelected"
- type="notify">
- <tag>fail</tag>
-Can't divide land. Whole parcel is selected.\nTry selecting a smaller piece of land.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LandHasBeenDivided"
- type="notify">
- <tag>fail</tag>
-Land has been divided.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="PassPurchased"
- type="notify">
- <tag>fail</tag>
-You purchased a pass.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="RegionDisallowsClassifieds"
- type="notify">
- <tag>fail</tag>
-Region does not allow classified advertisements.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="LandPassExpireSoon"
- type="notify">
- <tag>fail</tag>
-Your pass to this land is about to expire.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantSitNoSuitableSurface"
- type="notify">
- <tag>fail</tag>
-There is no suitable surface to sit on, try another spot.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantSitNoRoom"
- type="notify">
- <tag>fail</tag>
-No room to sit here, try another spot.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AutopilotCanceled"
- type="notify">
- <tag>fail</tag>
-Autopilot canceled
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="ClaimObjectFailedNoPermission"
- type="notify">
- <tag>fail</tag>
-Claim object failed because you don't have permission
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="ClaimObjectFailedNoMoney"
- type="notify">
- <tag>fail</tag>
-Claim object failed because you don't have enough L$.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDeedGroupLand"
- type="notify">
- <tag>fail</tag>
-Cannot deed group-owned land.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="BuyObjectFailedNoMoney"
- type="notify">
- <tag>fail</tag>
-Buy object failed because you don't have enough L$.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="BuyInventoryFailedNoMoney"
- type="notify">
- <tag>fail</tag>
-Buy inventory failed because you do not have enough L$
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="BuyPassFailedNoMoney"
- type="notify">
- <tag>fail</tag>
-You don't have enough L$ to buy a pass to this land.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantBuyPassTryAgain"
- type="notify">
- <tag>fail</tag>
-Unable to buy pass right now. Try again later.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateObjectParcelFull"
- type="notify">
- <tag>fail</tag>
-Can't create object because \nthe parcel is full.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="FailedPlacingObject"
- type="notify">
- <tag>fail</tag>
-Failed to place object at specified location. Please try again.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateLandmarkForEvent"
- type="notify">
- <tag>fail</tag>
-Unable to create landmark for event.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="GodBeatsFreeze"
- type="notify">
- <tag>fail</tag>
-Your godlike powers break the freeze!
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="SpecialPowersRequestFailedLogged"
- type="notify">
- <tag>fail</tag>
-Request for special powers failed. This request has been logged.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="ExpireExplanation"
- type="notify">
- <tag>fail</tag>
-The system is currently unable to process your request. The request timed out.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="DieExplanation"
- type="notify">
- <tag>fail</tag>
-The system is unable to process your request.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="AddPrimitiveFailure"
- type="notify">
- <tag>fail</tag>
-Insufficient funds to create primitve.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="RezObjectFailure"
- type="notify">
- <tag>fail</tag>
-Insufficient funds to create object.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="ResetHomePositionNotLegal"
- type="notify">
- <tag>fail</tag>
-Reset Home position since Home wasn't legal.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantInviteRegionFull"
- type="notify">
- <tag>fail</tag>
-You cannot currently invite anyone to your location because the region is full. Try again later.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantSetHomeAtRegion"
- type="notify">
- <tag>fail</tag>
-This region does not allow you to set your home location here.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="ListValidHomeLocations"
- type="notify">
- <tag>fail</tag>
-You can only set your 'Home Location' on your land or at a mainland Infohub.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="SetHomePosition"
- type="notify">
- <tag>fail</tag>
-Home position set.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDerezInventoryError"
- type="notify">
- <tag>fail</tag>
-Cannot derez object due to inventory fault.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateRequestedInv"
- type="notify">
- <tag>fail</tag>
-Cannot create requested inventory.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateRequestedInvFolder"
- type="notify">
- <tag>fail</tag>
-Cannot create requested inventory folder.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateInventory"
- type="notify">
- <tag>fail</tag>
-Cannot create that inventory.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateLandmark"
- type="notify">
- <tag>fail</tag>
-Cannot create landmark.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantCreateOutfit"
- type="notify">
- <tag>fail</tag>
-Cannot create outfit right now. Try again in a minute.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="InventoryNotForSale"
- type="notify">
- <tag>fail</tag>
-Inventory is not for sale.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantFindInvItem"
- type="notify">
- <tag>fail</tag>
-Unable to find inventory item.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantFindObject"
- type="notify">
- <tag>fail</tag>
-Unable to find object.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantTransfterMoneyRegionDisabled"
- type="notify">
- <tag>fail</tag>
-Money transfers to objects are currently disabled in this region.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantPayNoAgent"
- type="notify">
- <tag>fail</tag>
-Could not figure out who to pay.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="CantDonateToPublicObjects"
- type="notify">
- <tag>fail</tag>
-You cannot give L$ to public objects.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="InventoryCreationInWorldObjectFailed"
- type="notify">
- <tag>fail</tag>
-Inventory creation on in-world object failed.
- </notification>
-
- <notification
- icon="alertmodal.tga"
- name="UserBalanceOrLandUsageError"
- type="notify">
- <tag>fail</tag>
-An internal error prevented us from properly updating your viewer. The L$ balance or parcel holdings displayed in your viewer may not reflect your actual balance on the servers.
- </notification>
-
-
</notifications>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 849f3ef73d..cd243d40a4 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -147,12 +147,12 @@
height="12"
layout="topleft"
left_delta="87"
- name="ShadersPrefText3"
+ name="ShadersPrefText2"
top_delta="0"
width="80">
Mid
</text>
- <text
+ <text
type="string"
length="1"
follows="left|top"
@@ -163,8 +163,8 @@
name="ShadersPrefText3"
top_delta="0"
width="80">
- High
- </text>
+ High
+ </text>
<text
type="string"
length="1"
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 7a41520429..69248e26bc 100644
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -968,7 +968,6 @@ class LinuxManifest(ViewerManifest):
if self.prefix(src="", dst="bin"):
self.path("secondlife-bin","do-not-directly-run-secondlife-bin")
self.path("../linux_crash_logger/linux-crash-logger","linux-crash-logger.bin")
- self.path("../linux_updater/linux-updater", "linux-updater.bin")
self.path2basename("../llplugin/slplugin", "SLPlugin")
self.path2basename("../viewer_components/updater/scripts/linux", "update_install")
self.end_prefix("bin")
@@ -1017,9 +1016,7 @@ class LinuxManifest(ViewerManifest):
else:
installer_name += '_' + self.channel_oneword().upper()
- if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer():
- print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build"
- self.run_command("find %(d)r/bin %(d)r/lib -type f \\! -name update_install | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure
+ self.strip_binaries()
# Fix access permissions
self.run_command("""
@@ -1054,6 +1051,11 @@ class LinuxManifest(ViewerManifest):
'dst': self.get_dst_prefix(),
'inst': self.build_path_of(installer_name)})
+ def strip_binaries(self):
+ if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer():
+ print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build"
+ self.run_command(r"find %(d)r/bin %(d)r/lib -type f \! -name update_install | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure
+
class Linux_i686Manifest(LinuxManifest):
def construct(self):
super(Linux_i686Manifest, self).construct()
@@ -1139,9 +1141,7 @@ class Linux_i686Manifest(LinuxManifest):
self.path("libvivoxplatform.so")
self.end_prefix("lib")
- if self.args['buildtype'].lower() == 'release' and self.is_packaging_viewer():
- print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build"
- self.run_command("find %(d)r/bin %(d)r/lib -type f \\! -name update_install | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure
+ self.strip_binaries()
class Linux_x86_64Manifest(LinuxManifest):
diff --git a/indra/viewer_components/updater/scripts/linux/update_install b/indra/viewer_components/updater/scripts/linux/update_install
index e0505a9f72..a9df9042fd 100644
--- a/indra/viewer_components/updater/scripts/linux/update_install
+++ b/indra/viewer_components/updater/scripts/linux/update_install
@@ -1,10 +1,217 @@
#! /bin/bash
-INSTALL_DIR=$(cd "$(dirname "$0")/.." ; pwd)
-export LD_LIBRARY_PATH="$INSTALL_DIR/lib"
-bin/linux-updater.bin --file "$1" --dest "$INSTALL_DIR" --name "Second Life Viewer" --stringsdir "$INSTALL_DIR/skins/default/xui/en" --stringsfile "strings.xml"
-if [ $? -ne 0 ]
- then echo $3 >> "$2"
+# @file update_install
+# @author Nat Goodspeed
+# @date 2013-01-09
+# @brief Update the containing Second Life application bundle to the version in
+# the specified tarball.
+#
+# This bash implementation is derived from the previous linux-updater.bin
+# application.
+#
+# $LicenseInfo:firstyear=2013&license=viewerlgpl$
+# Copyright (c) 2013, Linden Research, Inc.
+# $/LicenseInfo$
+
+# ****************************************************************************
+# script parameters
+# ****************************************************************************
+tarball="$1" # the file to install
+markerfile="$2" # create this file on failure
+mandatory="$3" # what to write to markerfile on failure
+
+# ****************************************************************************
+# helper functions
+# ****************************************************************************
+# empty array
+cleanups=()
+
+# add a cleanup action to execute on exit
+function cleanup {
+ # wacky bash syntax for appending to array
+ cleanups[${#cleanups[*]}]="$*"
+}
+
+# called implicitly on exit
+function onexit {
+ for action in "${cleanups[@]}"
+ do # don't quote, support actions consisting of multiple words
+ $action
+ done
+}
+trap 'onexit' EXIT
+
+# write to log file
+function log {
+ # our log file will be open as stderr -- but until we set up that
+ # redirection, logging to stderr is better than nothing
+ echo "$*" 1>&2
+}
+
+# We display status by leaving one background xmessage process running. This
+# is the pid of that process.
+statuspid=""
+
+function clear_message {
+ [ -n "$statuspid" ] && kill $statuspid
+ statuspid=""
+}
+
+# make sure we remove any message box we might have put up
+cleanup clear_message
+
+# can we use zenity, or must we fall back to xmessage?
+zenpath="$(which zenity)"
+if [ -n "$zenpath" ]
+then # zenity on PATH and is executable
+ # display a message box and continue
+ function status {
+ # clear any previous message
+ clear_message
+ # put up a new zenity box and capture its pid
+ "$zenpath" --info --title "Second Life Viewer Updater" \
+ --width=320 --height=120 --text="$*" &
+ statuspid=$!
+ }
+
+ # display an error box and wait for user
+ function errorbox {
+ "$zenpath" --error --title "Second Life Viewer Updater" \
+ --width=320 --height=120 --text="$*"
+ }
+
+else # no zenity, use xmessage instead
+ # display a message box and continue
+ function status {
+ # clear any previous message
+ clear_message
+ # put up a new xmessage and capture its pid
+ xmessage -buttons OK:2 -center "$*" &
+ statuspid=$!
+ }
+
+ # display an error box and wait for user
+ function errorbox {
+ xmessage -buttons OK:2 -center "$*"
+ }
+fi
+
+# display an error box and terminate
+function fail {
+ # Log the message
+ log "$@"
+ # tell subsequent viewer things went south
+ echo "$mandatory" > "$markerfile"
+ # add boilerplate
+ errorbox "An error occurred while updating Second Life:
+$*
+Please download the latest viewer from www.secondlife.com."
+ exit 1
+}
+
+# Find a graphical sudo program and define mysudo function. On error, $? is
+# nonzero; output is in $err instead of being written to stdout/stderr.
+gksudo="$(which gksudo)"
+kdesu="$(which kdesu)"
+if [ -n "$gksudo" ]
+then function mysudo {
+ # gksudo allows you to specify description
+ err="$("$gksudo" --description "Second Life Viewer Updater" "$@" 2>&1)"
+ }
+elif [ -n "$kdesu" ]
+then function mysudo {
+ err="$("$kdesu" "$@" 2>&1)"
+ }
+else # couldn't find either one, just try it anyway
+ function mysudo {
+ err="$("$@" 2>&1)"
+ }
fi
-rm -f "$1"
+# Move directories, using mysudo if we think it necessary. On error, $? is
+# nonzero; output is in $err instead of being written to stdout/stderr.
+function sudo_mv {
+ # If we have write permission to both parent directories, shouldn't need
+ # sudo.
+ if [ -w "$(dirname "$1")" -a -w "$(dirname "$2")" ]
+ then err="$(mv "$@" 2>&1)"
+ else # use available sudo program; mysudo sets $? and $err
+ mysudo mv "$@"
+ fi
+}
+
+# ****************************************************************************
+# main script logic
+# ****************************************************************************
+mydir="$(dirname "$0")"
+# We happen to know that the viewer specifies a marker-file pathname within
+# the logs directory.
+logsdir="$(dirname "$markerfile")"
+logname="$logsdir/updater.log"
+
+# move aside old updater.log; we're about to create a new one
+[ -f "$logname" ] && mv "$logname" "$logname.old"
+
+# Set up redirections for this script such that stderr is logged. (But first
+# move the previous stderr to file descriptor 3.)
+exec 3>&2- 2> "$logname"
+
+# Rather than setting up a special pipeline to timestamp every line of stderr,
+# produce header lines into log file indicating timestamp and the arguments
+# with which we were invoked.
+date 1>&2
+log "$0 $*"
+
+# Log every command we execute, along with any stderr it might produce
+set -x
+
+status 'Installing Second Life...'
+
+# Creating tempdir under /tmp means it's possible that tempdir is on a
+# different filesystem than INSTALL_DIR. One is tempted to create tempdir on a
+# path derived from `dirname INSTALL_DIR` -- but it seems modern 'mv' can
+# handle moving across filesystems??
+tempdir="$(mktemp -d)"
+tempinstall="$tempdir/install"
+# capture the actual error message, if any
+err="$(mkdir -p "$tempinstall" 2>&1)" || fail "$err"
+cleanup rm -rf "$tempdir"
+
+# If we already knew the name of the tarball's top-level directory, we could
+# just move that when all was said and done. Since we don't, untarring to the
+# 'install' subdir with --strip 1 effectively renames that top-level
+# directory.
+# untar failures tend to be voluminous -- don't even try to capture, just log
+tar --strip 1 -xjf "$tarball" -C "$tempinstall" || fail "Untar command failed"
+
+INSTALL_DIR="$(cd "$mydir/.." ; pwd)"
+
+# Considering we're launched from a subdirectory of INSTALL_DIR, would be
+# surprising if it did NOT already exist...
+if [ -e "$INSTALL_DIR" ]
+then backup="$INSTALL_DIR.backup"
+ backupn=1
+ while [ -e "$backup" ]
+ do backup="$INSTALL_DIR.backup.$backupn"
+ ((backupn += 1))
+ done
+ # on error, fail with actual error message from sudo_mv: permissions,
+ # cross-filesystem mv, ...?
+ sudo_mv "$INSTALL_DIR" "$backup" || fail "$err"
+fi
+# We unpacked the tarball into tempinstall. Move that.
+if ! sudo_mv "$tempinstall" "$INSTALL_DIR"
+then # If we failed to move the temp install to INSTALL_DIR, try to restore
+ # INSTALL_DIR from backup. Save $err because next sudo_mv will trash it!
+ realerr="$err"
+ sudo_mv "$backup" "$INSTALL_DIR"
+ fail "$realerr"
+fi
+
+# Removing the tarball here, rather than with a 'cleanup' action, means we
+# only remove it if we succeeded.
+rm -f "$tarball"
+
+# Launch the updated viewer. Restore original stderr from file descriptor 3,
+# though -- otherwise updater.log gets cluttered with the viewer log!
+"$INSTALL_DIR/secondlife" 2>&3- &