diff options
author | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2013-02-13 17:30:00 -0500 |
---|---|---|
committer | Brad Payne (Vir Linden) <vir@lindenlab.com> | 2013-02-13 17:30:00 -0500 |
commit | 0f7fe0cbea5cc8f092926bac5461b7cba7198d9b (patch) | |
tree | 1c569d77bf55dc16eb6aa3a98e63364cd32ac43f | |
parent | 72dfb2abce5d5635e7f81436d65c8689d161eb37 (diff) | |
parent | 11d12f1a99c8ef256299f601cd0ad6604e2178c5 (diff) |
merge
-rw-r--r-- | .hgtags | 8 | ||||
-rw-r--r-- | doc/contributions.txt | 1 | ||||
-rw-r--r-- | indra/media_plugins/webkit/windows_volume_catcher.cpp | 2 | ||||
-rw-r--r-- | indra/newview/CMakeLists.txt | 1 | ||||
-rw-r--r-- | indra/newview/lldrawable.cpp | 10 | ||||
-rwxr-xr-x | indra/newview/llmeshrepository.cpp | 33 | ||||
-rw-r--r-- | indra/newview/llpaneloutfitedit.cpp | 14 | ||||
-rw-r--r-- | indra/newview/llviewerparcelmgr.cpp | 11 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 1738 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml | 8 | ||||
-rw-r--r-- | indra/newview/viewer_manifest.py | 14 | ||||
-rw-r--r-- | indra/viewer_components/updater/scripts/linux/update_install | 219 |
12 files changed, 270 insertions, 1789 deletions
@@ -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- & |