From 01dd9929e21228e4e6e04d9e3f7c310ffdc834db Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Fri, 28 Jan 2011 16:00:57 -0800 Subject: STORM-937 : Makes all python paths use consistent syntax --- indra/copy_win_scripts/start-client.py | 2 +- indra/develop.py | 2 +- indra/lib/python/indra/util/simperf_host_xml_parser.py | 2 +- indra/lib/python/indra/util/simperf_oprof_interface.py | 2 +- indra/lib/python/indra/util/test_win32_manifest.py | 2 +- indra/newview/generate_breakpad_symbols.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) (limited to 'indra') diff --git a/indra/copy_win_scripts/start-client.py b/indra/copy_win_scripts/start-client.py index 5f7ff2f293..2a96503f01 100644 --- a/indra/copy_win_scripts/start-client.py +++ b/indra/copy_win_scripts/start-client.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python import sys, getopt import os import llstart diff --git a/indra/develop.py b/indra/develop.py index 36c947327a..d43cf3aadc 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python # # @file develop.py # @authors Bryan O'Sullivan, Mark Palange, Aaron Brashears diff --git a/indra/lib/python/indra/util/simperf_host_xml_parser.py b/indra/lib/python/indra/util/simperf_host_xml_parser.py index 672c1050c2..7801d9fa66 100755 --- a/indra/lib/python/indra/util/simperf_host_xml_parser.py +++ b/indra/lib/python/indra/util/simperf_host_xml_parser.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python """\ @file simperf_host_xml_parser.py @brief Digest collector's XML dump and convert to simple dict/list structure diff --git a/indra/lib/python/indra/util/simperf_oprof_interface.py b/indra/lib/python/indra/util/simperf_oprof_interface.py index 547d2f9980..e3d55d7922 100755 --- a/indra/lib/python/indra/util/simperf_oprof_interface.py +++ b/indra/lib/python/indra/util/simperf_oprof_interface.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python """\ @file simperf_oprof_interface.py @brief Manage OProfile data collection on a host diff --git a/indra/lib/python/indra/util/test_win32_manifest.py b/indra/lib/python/indra/util/test_win32_manifest.py index da8ee6c545..d4e6115a5a 100644 --- a/indra/lib/python/indra/util/test_win32_manifest.py +++ b/indra/lib/python/indra/util/test_win32_manifest.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python # @file test_win32_manifest.py # @brief Test an assembly binding version and uniqueness in a windows dll or exe. # diff --git a/indra/newview/generate_breakpad_symbols.py b/indra/newview/generate_breakpad_symbols.py index 4fd04d780e..018871d9d3 100644 --- a/indra/newview/generate_breakpad_symbols.py +++ b/indra/newview/generate_breakpad_symbols.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/python # @file generate_breakpad_symbols.py # @author Brad Kittenbrink # @brief Simple tool for generating google_breakpad symbol information -- cgit v1.2.3 From cea39637a35f2753ba4e2f9033701cf724c8ffce Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Mon, 7 Feb 2011 11:48:55 -0500 Subject: STORM-974 UI button alignment issues in Landmark, About Land, and Hardware Settings windows --- .../skins/default/xui/en/floater_about_land.xml | 4 ++-- .../default/xui/en/floater_hardware_settings.xml | 2 +- .../newview/skins/default/xui/en/panel_edit_pick.xml | 10 +++++----- indra/newview/skins/default/xui/en/panel_places.xml | 19 +++++++++++-------- 4 files changed, 19 insertions(+), 16 deletions(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index 3dd6c60095..3395bc578d 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -2078,7 +2078,7 @@ Only large parcels can be listed in search. layout="topleft" left_pad="10" name="remove_allowed" - right="-1" + right="-10" width="100" /> diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml index 0ea42f9757..a97c697b24 100644 --- a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml @@ -96,7 +96,7 @@ left="10" max_val="2" name="gamma" - top_pad="7" + top_pad="11" width="262" /> + width="315"> + width="313"> + width="146"> + + + þ: [COUNT] + Date: Tue, 22 Feb 2011 18:46:00 +0200 Subject: STORM-28 FIXED Added the ability to send agent's own calling card to others. - Added creating own calling card for the user to be able to share it with other residents. - Moved calling cards synchronization with friends list to the viewer start up. Previously synchronized upon opening the Friends tab in People side panel. - Calling cards for non-friends are not removed upon calling cards synchronization with friends list. - Enabled "Share" menu item for calling cards in inventory. --- indra/newview/llfriendcard.cpp | 85 +++++++++++----------------------- indra/newview/llfriendcard.h | 13 ------ indra/newview/llinventoryfunctions.cpp | 3 -- indra/newview/llpanelpeople.cpp | 29 +++++++++--- 4 files changed, 49 insertions(+), 81 deletions(-) (limited to 'indra') diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp index e9f1e3bc22..70e789f490 100644 --- a/indra/newview/llfriendcard.cpp +++ b/indra/newview/llfriendcard.cpp @@ -28,6 +28,7 @@ #include "llfriendcard.h" +#include "llagent.h" #include "llavatarnamecache.h" #include "llinventory.h" #include "llinventoryfunctions.h" @@ -290,58 +291,6 @@ void LLFriendCardsManager::syncFriendCardsFolders() boost::bind(&LLFriendCardsManager::ensureFriendsFolderExists, this)); } -void LLFriendCardsManager::collectFriendsLists(folderid_buddies_map_t& folderBuddiesMap) const -{ - folderBuddiesMap.clear(); - - static bool syncronize_friends_folders = true; - if (syncronize_friends_folders) - { - // Checks whether "Friends" and "Friends/All" folders exist in "Calling Cards" folder, - // fetches their contents if needed and synchronizes it with buddies list. - // If the folders are not found they are created. - LLFriendCardsManager::instance().syncFriendCardsFolders(); - syncronize_friends_folders = false; - } - - - LLInventoryModel::cat_array_t* listFolders; - LLInventoryModel::item_array_t* items; - - // get folders in the Friend folder. Items should be NULL due to Cards should be in lists. - gInventory.getDirectDescendentsOf(findFriendFolderUUIDImpl(), listFolders, items); - - if (NULL == listFolders) - return; - - LLInventoryModel::cat_array_t::const_iterator itCats; // to iterate Friend Lists (categories) - LLInventoryModel::item_array_t::const_iterator itBuddy; // to iterate Buddies in each List - LLInventoryModel::cat_array_t* fakeCatsArg; - for (itCats = listFolders->begin(); itCats != listFolders->end(); ++itCats) - { - if (items) - items->clear(); - - // *HACK: Only Friends/All content will be shown for now - // *TODO: Remove this hack, implement sorting if it will be needded by spec. - if ((*itCats)->getUUID() != findFriendAllSubfolderUUIDImpl()) - continue; - - gInventory.getDirectDescendentsOf((*itCats)->getUUID(), fakeCatsArg, items); - - if (NULL == items) - continue; - - uuid_vec_t buddyUUIDs; - for (itBuddy = items->begin(); itBuddy != items->end(); ++itBuddy) - { - buddyUUIDs.push_back((*itBuddy)->getCreatorUUID()); - } - - folderBuddiesMap.insert(make_pair((*itCats)->getUUID(), buddyUUIDs)); - } -} - /************************************************************************/ /* Private Methods */ @@ -499,23 +448,43 @@ void LLFriendCardsManager::syncFriendsFolder() LLAvatarTracker::buddy_map_t all_buddies; LLAvatarTracker::instance().copyBuddyList(all_buddies); - // 1. Remove Friend Cards for non-friends + // 1. Check if own calling card exists LLInventoryModel::cat_array_t cats; LLInventoryModel::item_array_t items; - gInventory.collectDescendents(findFriendAllSubfolderUUIDImpl(), cats, items, LLInventoryModel::EXCLUDE_TRASH); + LLUUID friends_all_folder_id = findFriendAllSubfolderUUIDImpl(); + gInventory.collectDescendents(friends_all_folder_id, cats, items, LLInventoryModel::EXCLUDE_TRASH); + bool own_callingcard_found = false; LLInventoryModel::item_array_t::const_iterator it; for (it = items.begin(); it != items.end(); ++it) { - lldebugs << "Check if buddy is in list: " << (*it)->getName() << " " << (*it)->getCreatorUUID() << llendl; - if (NULL == get_ptr_in_map(all_buddies, (*it)->getCreatorUUID())) + if ((*it)->getCreatorUUID() == gAgentID) { - lldebugs << "NONEXISTS, so remove it" << llendl; - removeFriendCardFromInventory((*it)->getCreatorUUID()); + own_callingcard_found = true; + break; } } + // Create own calling card if it was not found in Friends/All folder + if (!own_callingcard_found) + { + LLAvatarName av_name; + LLAvatarNameCache::get( gAgentID, &av_name ); + + create_inventory_item(gAgentID, + gAgent.getSessionID(), + friends_all_folder_id, + LLTransactionID::tnull, + av_name.getCompleteName(), + gAgentID.asString(), + LLAssetType::AT_CALLINGCARD, + LLInventoryType::IT_CALLINGCARD, + NOT_WEARABLE, + PERM_MOVE | PERM_TRANSFER, + NULL); + } + // 2. Add missing Friend Cards for friends LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin(); llinfos << "try to build friends, count: " << all_buddies.size() << llendl; diff --git a/indra/newview/llfriendcard.h b/indra/newview/llfriendcard.h index b7f0bada14..48a9f70079 100644 --- a/indra/newview/llfriendcard.h +++ b/indra/newview/llfriendcard.h @@ -79,19 +79,6 @@ public: */ void syncFriendCardsFolders(); - /*! - * \brief - * Collects folders' IDs with the buddies' IDs in the Inventory Calling Card/Friends folder. - * - * \param folderBuddiesMap - * map into collected data will be put. It will be cleared before adding new data. - * - * Each item in the out map is a pair where first is an LLViewerInventoryCategory UUID, - * second is a vector with UUID of Avatars from this folder. - * - */ - void collectFriendsLists(folderid_buddies_map_t& folderBuddiesMap) const; - private: typedef boost::function callback_t; diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 61d0a150b7..ba9bea02b9 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -483,9 +483,6 @@ bool LLInventoryCollectFunctor::itemTransferCommonlyAllowed(const LLInventoryIte switch(item->getType()) { - case LLAssetType::AT_CALLINGCARD: - return false; - break; case LLAssetType::AT_OBJECT: case LLAssetType::AT_BODYPART: case LLAssetType::AT_CLOTHING: diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index b07a46a222..b52f33ec3b 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -384,6 +384,16 @@ private: { lldebugs << "Inventory changed: " << mask << llendl; + static bool synchronize_friends_folders = true; + if (synchronize_friends_folders) + { + // Checks whether "Friends" and "Friends/All" folders exist in "Calling Cards" folder, + // fetches their contents if needed and synchronizes it with buddies list. + // If the folders are not found they are created. + LLFriendCardsManager::instance().syncFriendCardsFolders(); + synchronize_friends_folders = false; + } + // *NOTE: deleting of InventoryItem is performed via moving to Trash. // That means LLInventoryObserver::STRUCTURE is present in MASK instead of LLInventoryObserver::REMOVE if ((CALLINGCARD_ADDED & mask) == CALLINGCARD_ADDED) @@ -750,18 +760,23 @@ void LLPanelPeople::updateFriendList() all_friendsp.clear(); online_friendsp.clear(); - LLFriendCardsManager::folderid_buddies_map_t listMap; + uuid_vec_t buddies_uuids; + LLAvatarTracker::buddy_map_t::const_iterator buddies_iter; + + // Fill the avatar list with friends UUIDs + for (buddies_iter = all_buddies.begin(); buddies_iter != all_buddies.end(); ++buddies_iter) + { + buddies_uuids.push_back(buddies_iter->first); + } - // *NOTE: For now collectFriendsLists returns data only for Friends/All folder. EXT-694. - LLFriendCardsManager::instance().collectFriendsLists(listMap); - if (listMap.size() > 0) + if (buddies_uuids.size() > 0) { - lldebugs << "Friends Cards were found, count: " << listMap.begin()->second.size() << llendl; - all_friendsp = listMap.begin()->second; + lldebugs << "Friends added to the list: " << buddies_uuids.size() << llendl; + all_friendsp = buddies_uuids; } else { - lldebugs << "Friends Cards were not found" << llendl; + lldebugs << "No friends found" << llendl; } LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin(); -- cgit v1.2.3 From 417069f152e6f4e2f50e7b41b0505765302eb823 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Tue, 22 Feb 2011 11:22:50 -0700 Subject: more fix for SH-895/STORM-336: memory leaking. fixed vertex buffer caused leaking. --- indra/llrender/llvertexbuffer.cpp | 185 ++++++++++++++++++++------------------ indra/llrender/llvertexbuffer.h | 10 +-- 2 files changed, 100 insertions(+), 95 deletions(-) (limited to 'indra') diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 660dc14d02..71bdca60e5 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -213,11 +213,6 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi { llassert(mRequestedNumVerts >= 0); - if(mDirty) - { - postUpdate() ; - } - if (start >= (U32) mRequestedNumVerts || end >= (U32) mRequestedNumVerts) { @@ -258,11 +253,6 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const { llassert(mRequestedNumIndices >= 0); - if(mDirty) - { - postUpdate() ; - } - if (indices_offset >= (U32) mRequestedNumIndices || indices_offset + count > (U32) mRequestedNumIndices) { @@ -295,11 +285,6 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const { llassert(mRequestedNumVerts >= 0); - if(mDirty) - { - postUpdate() ; - } - if (first >= (U32) mRequestedNumVerts || first + count > (U32) mRequestedNumVerts) { @@ -326,7 +311,7 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const void LLVertexBuffer::initClass(bool use_vbo, bool no_vbo_mapping) { sEnableVBOs = use_vbo; - sDisableVBOMapping = no_vbo_mapping ; + sDisableVBOMapping = sEnableVBOs && no_vbo_mapping ; LLGLNamePool::registerPool(&sDynamicVBOPool); LLGLNamePool::registerPool(&sDynamicIBOPool); LLGLNamePool::registerPool(&sStreamVBOPool); @@ -388,8 +373,7 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) : mFilthy(FALSE), mEmpty(TRUE), mResized(FALSE), - mDynamicSize(FALSE), - mDirty(FALSE) + mDynamicSize(FALSE) { LLMemType mt2(LLMemType::MTYPE_VERTEX_CONSTRUCTOR); if (!sEnableVBOs) @@ -442,6 +426,8 @@ LLVertexBuffer::~LLVertexBuffer() destroyGLBuffer(); destroyGLIndices(); sCount--; + + llassert_always(!mMappedData && !mMappedIndexData) ; }; //---------------------------------------------------------------------------- @@ -858,48 +844,24 @@ void LLVertexBuffer::freeClientBuffer() } } -void LLVertexBuffer::preUpdate() +void LLVertexBuffer::allocateClientVertexBuffer() { - if(!useVBOs() || !sDisableVBOMapping) - { - return ; - } - if(!mMappedData) { U32 size = getSize() ; mMappedData = new U8[size]; memset(mMappedData, 0, size); } +} +void LLVertexBuffer::allocateClientIndexBuffer() +{ if(!mMappedIndexData) { U32 size = getIndicesSize(); mMappedIndexData = new U8[size]; memset(mMappedIndexData, 0, size); } - - mDirty = TRUE ; -} - -void LLVertexBuffer::postUpdate() const -{ - if(!useVBOs() || !sDisableVBOMapping) - { - return ; - } - - llassert_always(mMappedData && mMappedIndexData) ; - - //release the existing buffers - glBufferDataARB(GL_ARRAY_BUFFER_ARB, 0, NULL, mUsage); - glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, NULL, mUsage); - - //update to the new buffers - glBufferDataARB(GL_ARRAY_BUFFER_ARB, getSize(), mMappedData, mUsage); - glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, getIndicesSize(), mMappedIndexData, mUsage); - - mDirty = FALSE ; } // Map for data access @@ -915,12 +877,6 @@ U8* LLVertexBuffer::mapBuffer(S32 access) llerrs << "LLVertexBuffer::mapBuffer() called on unallocated buffer." << llendl; } - if(useVBOs() && sDisableVBOMapping) - { - preUpdate() ; - return mMappedData ; - } - if (!mLocked && useVBOs()) { { @@ -928,12 +884,28 @@ U8* LLVertexBuffer::mapBuffer(S32 access) setBuffer(0); mLocked = TRUE; stop_glerror(); - mMappedData = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + + if(sDisableVBOMapping) + { + allocateClientVertexBuffer() ; + } + else + { + mMappedData = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + } stop_glerror(); } { LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES); - mMappedIndexData = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + + if(sDisableVBOMapping) + { + allocateClientIndexBuffer() ; + } + else + { + mMappedIndexData = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + } stop_glerror(); } @@ -947,37 +919,51 @@ U8* LLVertexBuffer::mapBuffer(S32 access) llinfos << "Available physical mwmory(KB): " << avail_phy_mem << llendl ; llinfos << "Available virtual memory(KB): " << avail_vir_mem << llendl; - //-------------------- - //print out more debug info before crash - llinfos << "vertex buffer size: (num verts : num indices) = " << getNumVerts() << " : " << getNumIndices() << llendl ; - GLint size ; - glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size) ; - llinfos << "GL_ARRAY_BUFFER_ARB size is " << size << llendl ; - //-------------------- + if(!sDisableVBOMapping) + { + //-------------------- + //print out more debug info before crash + llinfos << "vertex buffer size: (num verts : num indices) = " << getNumVerts() << " : " << getNumIndices() << llendl ; + GLint size ; + glGetBufferParameterivARB(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SIZE_ARB, &size) ; + llinfos << "GL_ARRAY_BUFFER_ARB size is " << size << llendl ; + //-------------------- - GLint buff; - glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff); - if ((GLuint)buff != mGLBuffer) + GLint buff; + glGetIntegerv(GL_ARRAY_BUFFER_BINDING_ARB, &buff); + if ((GLuint)buff != mGLBuffer) + { + llerrs << "Invalid GL vertex buffer bound: " << buff << llendl; + } + + + llerrs << "glMapBuffer returned NULL (no vertex data)" << llendl; + } + else { - llerrs << "Invalid GL vertex buffer bound: " << buff << llendl; + llerrs << "memory allocation for vertex data failed." << llendl ; } - - - llerrs << "glMapBuffer returned NULL (no vertex data)" << llendl; } if (!mMappedIndexData) { log_glerror(); - GLint buff; - glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); - if ((GLuint)buff != mGLIndices) + if(!sDisableVBOMapping) { - llerrs << "Invalid GL index buffer bound: " << buff << llendl; - } + GLint buff; + glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); + if ((GLuint)buff != mGLIndices) + { + llerrs << "Invalid GL index buffer bound: " << buff << llendl; + } - llerrs << "glMapBuffer returned NULL (no index data)" << llendl; + llerrs << "glMapBuffer returned NULL (no index data)" << llendl; + } + else + { + llerrs << "memory allocation for Index data failed. " << llendl ; + } } sMappedCount++; @@ -991,17 +977,31 @@ void LLVertexBuffer::unmapBuffer() LLMemType mt2(LLMemType::MTYPE_VERTEX_UNMAP_BUFFER); if (mMappedData || mMappedIndexData) { - if(sDisableVBOMapping && useVBOs()) + if (useVBOs() && mLocked) { - return ; - } - else if (useVBOs() && mLocked) - { - stop_glerror(); - glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); - stop_glerror(); - glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); - stop_glerror(); + if(sDisableVBOMapping) + { + if(mMappedData) + { + stop_glerror(); + glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, getSize(), mMappedData); + stop_glerror(); + } + if(mMappedIndexData) + { + stop_glerror(); + glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, getIndicesSize(), mMappedIndexData); + stop_glerror(); + } + } + else + { + stop_glerror(); + glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); + stop_glerror(); + glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); + stop_glerror(); + } /*if (!sMapped) { @@ -1015,15 +1015,22 @@ void LLVertexBuffer::unmapBuffer() //throw out client data (we won't be using it again) mEmpty = TRUE; mFinal = TRUE; + + if(sDisableVBOMapping) + { + freeClientBuffer() ; + } } else { mEmpty = FALSE; } - mMappedIndexData = NULL; - mMappedData = NULL; - + if(!sDisableVBOMapping) + { + mMappedIndexData = NULL; + mMappedData = NULL; + } mLocked = FALSE; } } @@ -1241,13 +1248,13 @@ void LLVertexBuffer::setBuffer(U32 data_mask) } } - if (mGLBuffer && !sDisableVBOMapping) + if (mGLBuffer) { stop_glerror(); glBufferDataARB(GL_ARRAY_BUFFER_ARB, getSize(), NULL, mUsage); stop_glerror(); } - if (mGLIndices && !sDisableVBOMapping) + if (mGLIndices) { stop_glerror(); glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, getIndicesSize(), NULL, mUsage); diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index 18d50c87bb..09a16d5b9d 100644 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h @@ -152,11 +152,10 @@ public: void allocateBuffer(S32 nverts, S32 nindices, bool create); virtual void resizeBuffer(S32 newnverts, S32 newnindices); - void preUpdate() ; - void postUpdate() const ; void freeClientBuffer() ; - void dirty() {mDirty = TRUE;} - + void allocateClientVertexBuffer() ; + void allocateClientIndexBuffer() ; + // Only call each getVertexPointer, etc, once before calling unmapBuffer() // call unmapBuffer() after calls to getXXXStrider() before any cals to setBuffer() // example: @@ -221,8 +220,7 @@ protected: S32 mOffsets[TYPE_MAX]; BOOL mResized; // if TRUE, client buffer has been resized and GL buffer has not BOOL mDynamicSize; // if TRUE, buffer has been resized at least once (and should be padded) - mutable BOOL mDirty ; - + class DirtyRegion { public: -- cgit v1.2.3 From 2ebcf802cbec59b4d9fe404af5bd125818d4eefa Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Tue, 22 Feb 2011 13:28:48 -0700 Subject: set "RenderVBOMappingDisable" to be true by default to stop VBO memory leaking. --- indra/newview/app_settings/settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 58abd4c091..a010524091 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8460,7 +8460,7 @@ Type Boolean Value - 0 + 1 RenderUseStreamVBO -- cgit v1.2.3 From 609c70eb5a48389bef1ad33358774764ee9615e2 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Wed, 23 Feb 2011 11:41:13 -0700 Subject: separate vertex buffer and index buffer when map/unmap VBO. can be treated as part of STORM-1011. reviewed by davep. --- indra/llrender/llvertexbuffer.cpp | 206 +++++++++++++++++++++++--------------- indra/llrender/llvertexbuffer.h | 30 +++--- 2 files changed, 141 insertions(+), 95 deletions(-) (limited to 'indra') diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 71bdca60e5..7b5907a668 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -368,7 +368,9 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) : mGLBuffer(0), mGLIndices(0), mMappedData(NULL), - mMappedIndexData(NULL), mLocked(FALSE), + mMappedIndexData(NULL), + mVertexLocked(FALSE), + mIndexLocked(FALSE), mFinal(FALSE), mFilthy(FALSE), mEmpty(TRUE), @@ -865,24 +867,24 @@ void LLVertexBuffer::allocateClientIndexBuffer() } // Map for data access -U8* LLVertexBuffer::mapBuffer(S32 access) +U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 access) { LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER); if (mFinal) { - llerrs << "LLVertexBuffer::mapBuffer() called on a finalized buffer." << llendl; + llerrs << "LLVertexBuffer::mapVeretxBuffer() called on a finalized buffer." << llendl; } if (!useVBOs() && !mMappedData && !mMappedIndexData) { - llerrs << "LLVertexBuffer::mapBuffer() called on unallocated buffer." << llendl; + llerrs << "LLVertexBuffer::mapVertexBuffer() called on unallocated buffer." << llendl; } - if (!mLocked && useVBOs()) + if (!mVertexLocked && useVBOs()) { { LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_VERTICES); - setBuffer(0); - mLocked = TRUE; + setBuffer(0, type); + mVertexLocked = TRUE; stop_glerror(); if(sDisableVBOMapping) @@ -895,20 +897,7 @@ U8* LLVertexBuffer::mapBuffer(S32 access) } stop_glerror(); } - { - LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES); - - if(sDisableVBOMapping) - { - allocateClientIndexBuffer() ; - } - else - { - mMappedIndexData = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); - } - stop_glerror(); - } - + if (!mMappedData) { log_glerror(); @@ -944,6 +933,43 @@ U8* LLVertexBuffer::mapBuffer(S32 access) llerrs << "memory allocation for vertex data failed." << llendl ; } } + sMappedCount++; + } + + return mMappedData; +} + +U8* LLVertexBuffer::mapIndexBuffer(S32 access) +{ + LLMemType mt2(LLMemType::MTYPE_VERTEX_MAP_BUFFER); + if (mFinal) + { + llerrs << "LLVertexBuffer::mapIndexBuffer() called on a finalized buffer." << llendl; + } + if (!useVBOs() && !mMappedData && !mMappedIndexData) + { + llerrs << "LLVertexBuffer::mapIndexBuffer() called on unallocated buffer." << llendl; + } + + if (!mIndexLocked && useVBOs()) + { + { + LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_INDICES); + + setBuffer(0, TYPE_INDEX); + mIndexLocked = TRUE; + stop_glerror(); + + if(sDisableVBOMapping) + { + allocateClientIndexBuffer() ; + } + else + { + mMappedIndexData = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + } + stop_glerror(); + } if (!mMappedIndexData) { @@ -968,70 +994,80 @@ U8* LLVertexBuffer::mapBuffer(S32 access) sMappedCount++; } - - return mMappedData; + + return mMappedIndexData ; } -void LLVertexBuffer::unmapBuffer() +void LLVertexBuffer::unmapBuffer(S32 type) { LLMemType mt2(LLMemType::MTYPE_VERTEX_UNMAP_BUFFER); - if (mMappedData || mMappedIndexData) + if (!useVBOs()) + { + return ; //nothing to unmap + } + + bool updated_all = false ; + if (mMappedData && mVertexLocked && type != TYPE_INDEX) { - if (useVBOs() && mLocked) + updated_all = (mIndexLocked && type < 0) ; //both vertex and index buffers done updating + + if(sDisableVBOMapping) { - if(sDisableVBOMapping) - { - if(mMappedData) - { - stop_glerror(); - glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, getSize(), mMappedData); - stop_glerror(); - } - if(mMappedIndexData) - { - stop_glerror(); - glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, getIndicesSize(), mMappedIndexData); - stop_glerror(); - } - } - else - { - stop_glerror(); - glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); - stop_glerror(); - glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); - stop_glerror(); - } + stop_glerror(); + glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, 0, getSize(), mMappedData); + stop_glerror(); + } + else + { + stop_glerror(); + glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); + stop_glerror(); - /*if (!sMapped) - { - llerrs << "Redundantly unmapped VBO!" << llendl; - } - sMapped = FALSE;*/ - sMappedCount--; + mMappedData = NULL; + } - if (mUsage == GL_STATIC_DRAW_ARB) - { //static draw buffers can only be mapped a single time - //throw out client data (we won't be using it again) - mEmpty = TRUE; - mFinal = TRUE; + mVertexLocked = FALSE ; + sMappedCount--; + } - if(sDisableVBOMapping) - { - freeClientBuffer() ; - } - } - else - { - mEmpty = FALSE; - } + if(mMappedIndexData && mIndexLocked && (type < 0 || type == TYPE_INDEX)) + { + if(sDisableVBOMapping) + { + stop_glerror(); + glBufferSubDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, getIndicesSize(), mMappedIndexData); + stop_glerror(); + } + else + { + stop_glerror(); + glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); + stop_glerror(); - if(!sDisableVBOMapping) + mMappedIndexData = NULL ; + } + + mIndexLocked = FALSE ; + sMappedCount--; + } + + if(updated_all) + { + if(mUsage == GL_STATIC_DRAW_ARB) + { + //static draw buffers can only be mapped a single time + //throw out client data (we won't be using it again) + mEmpty = TRUE; + mFinal = TRUE; + + if(sDisableVBOMapping) { - mMappedIndexData = NULL; - mMappedData = NULL; + freeClientBuffer() ; } - mLocked = FALSE; + } + else + { + mEmpty = FALSE; } } } @@ -1045,15 +1081,16 @@ template struct VertexBufferStrider strider_t& strider, S32 index) { - if (vbo.mapBuffer() == NULL) - { - llwarns << "mapBuffer failed!" << llendl; - return FALSE; - } - if (type == LLVertexBuffer::TYPE_INDEX) { S32 stride = sizeof(T); + + if (vbo.mapIndexBuffer() == NULL) + { + llwarns << "mapIndexBuffer failed!" << llendl; + return FALSE; + } + strider = (T*)(vbo.getMappedIndices() + index*stride); strider.setStride(0); return TRUE; @@ -1061,6 +1098,13 @@ template struct VertexBufferStrider else if (vbo.hasDataType(type)) { S32 stride = vbo.getStride(); + + if (vbo.mapVertexBuffer(type) == NULL) + { + llwarns << "mapVertexBuffer failed!" << llendl; + return FALSE; + } + strider = (T*)(vbo.getMappedData() + vbo.getOffset(type) + index*stride); strider.setStride(stride); return TRUE; @@ -1141,7 +1185,7 @@ void LLVertexBuffer::setStride(S32 type, S32 new_stride) //---------------------------------------------------------------------------- // Set for rendering -void LLVertexBuffer::setBuffer(U32 data_mask) +void LLVertexBuffer::setBuffer(U32 data_mask, S32 type) { LLMemType mt2(LLMemType::MTYPE_VERTEX_SET_BUFFER); //set up pointers if the data mask is different ... @@ -1282,7 +1326,7 @@ void LLVertexBuffer::setBuffer(U32 data_mask) { ll_fail("LLVertexBuffer::mapBuffer failed"); } - unmapBuffer(); + unmapBuffer(type); } else { diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index 09a16d5b9d..c51ce7ac4e 100644 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h @@ -139,23 +139,24 @@ protected: void updateNumVerts(S32 nverts); void updateNumIndices(S32 nindices); virtual BOOL useVBOs() const; - void unmapBuffer(); - + void unmapBuffer(S32 type); + void freeClientBuffer() ; + void allocateClientVertexBuffer() ; + void allocateClientIndexBuffer() ; + public: LLVertexBuffer(U32 typemask, S32 usage); // map for data access - U8* mapBuffer(S32 access = -1); + U8* mapVertexBuffer(S32 type = -1, S32 access = -1); + U8* mapIndexBuffer(S32 access = -1); + // set for rendering - virtual void setBuffer(U32 data_mask); // calls setupVertexBuffer() if data_mask is not 0 + virtual void setBuffer(U32 data_mask, S32 type = -1); // calls setupVertexBuffer() if data_mask is not 0 // allocate buffer void allocateBuffer(S32 nverts, S32 nindices, bool create); virtual void resizeBuffer(S32 newnverts, S32 newnindices); - - void freeClientBuffer() ; - void allocateClientVertexBuffer() ; - void allocateClientIndexBuffer() ; - + // Only call each getVertexPointer, etc, once before calling unmapBuffer() // call unmapBuffer() after calls to getXXXStrider() before any cals to setBuffer() // example: @@ -174,7 +175,7 @@ public: bool getClothWeightStrider(LLStrider& strider, S32 index=0); BOOL isEmpty() const { return mEmpty; } - BOOL isLocked() const { return mLocked; } + BOOL isLocked() const { return mVertexLocked || mIndexLocked; } S32 getNumVerts() const { return mNumVerts; } S32 getNumIndices() const { return mNumIndices; } S32 getRequestedVerts() const { return mRequestedNumVerts; } @@ -213,14 +214,15 @@ protected: U32 mGLIndices; // GL IBO handle U8* mMappedData; // pointer to currently mapped data (NULL if unmapped) U8* mMappedIndexData; // pointer to currently mapped indices (NULL if unmapped) - BOOL mLocked; // if TRUE, buffer is being or has been written to in client memory + BOOL mVertexLocked; // if TRUE, vertex buffer is being or has been written to in client memory + BOOL mIndexLocked; // if TRUE, index buffer is being or has been written to in client memory BOOL mFinal; // if TRUE, buffer can not be mapped again BOOL mFilthy; // if TRUE, entire buffer must be copied (used to prevent redundant dirty flags) - BOOL mEmpty; // if TRUE, client buffer is empty (or NULL). Old values have been discarded. - S32 mOffsets[TYPE_MAX]; + BOOL mEmpty; // if TRUE, client buffer is empty (or NULL). Old values have been discarded. BOOL mResized; // if TRUE, client buffer has been resized and GL buffer has not BOOL mDynamicSize; // if TRUE, buffer has been resized at least once (and should be padded) - + S32 mOffsets[TYPE_MAX]; + class DirtyRegion { public: -- cgit v1.2.3 From c3ae16432811aec28ca2488b92e29d0ef05a2b54 Mon Sep 17 00:00:00 2001 From: Paul ProductEngine Date: Thu, 24 Feb 2011 16:27:12 +0200 Subject: STOMR-665 FIXED User is not able to view full name of Group's founder in the Group Profile - Made text box and its panel follow right --- indra/newview/skins/default/xui/en/panel_group_general.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml index 70b96ca5eb..38b680ba86 100644 --- a/indra/newview/skins/default/xui/en/panel_group_general.xml +++ b/indra/newview/skins/default/xui/en/panel_group_general.xml @@ -21,7 +21,7 @@ Hover your mouse over the options for more help. Date: Fri, 25 Feb 2011 23:19:18 +0200 Subject: STORM-1015 FIXED the ability to select an item from combo list if its name is not unique. Updating combo box label upon list item selection does not search the item by label but takes the label of currently selected item instead. --- indra/llui/llcombobox.cpp | 29 +++++++++++++++++++++++------ indra/llui/llcombobox.h | 3 +++ 2 files changed, 26 insertions(+), 6 deletions(-) (limited to 'indra') diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index 8b6a73af56..6f9893b07a 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -316,7 +316,7 @@ void LLComboBox::setValue(const LLSD& value) LLScrollListItem* item = mList->getFirstSelected(); if (item) { - setLabel(getSelectedItemLabel()); + updateLabel(); } mLastSelectedIndex = mList->getFirstSelectedIndex(); } @@ -384,6 +384,23 @@ void LLComboBox::setLabel(const LLStringExplicit& name) } } +void LLComboBox::updateLabel() +{ + // Update the combo editor with the selected + // item label. + if (mTextEntry) + { + mTextEntry->setText(getSelectedItemLabel()); + mTextEntry->setTentative(FALSE); + } + + // If combo box doesn't allow text entry update + // the combo button label. + if (!mAllowTextEntry) + { + mButton->setLabel(getSelectedItemLabel()); + } +} BOOL LLComboBox::remove(const std::string& name) { @@ -701,13 +718,13 @@ void LLComboBox::onItemSelected(const LLSD& data) mLastSelectedIndex = getCurrentIndex(); if (mLastSelectedIndex != -1) { - setLabel(getSelectedItemLabel()); + updateLabel(); if (mAllowTextEntry) - { - gFocusMgr.setKeyboardFocus(mTextEntry); - mTextEntry->selectAll(); - } + { + gFocusMgr.setKeyboardFocus(mTextEntry); + mTextEntry->selectAll(); + } } // hiding the list reasserts the old value stored in the text editor/dropdown button hideList(); diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h index 74d64269bd..e9ef9d07e4 100644 --- a/indra/llui/llcombobox.h +++ b/indra/llui/llcombobox.h @@ -148,6 +148,9 @@ public: // This is probably a UI abuse. void setLabel(const LLStringExplicit& name); + // Updates the combobox label to match the selected list item. + void updateLabel(); + BOOL remove(const std::string& name); // remove item "name", return TRUE if found and removed BOOL setCurrentByIndex( S32 index ); -- cgit v1.2.3 From 0a397313f5b795f8e78624820d998a638896b547 Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Fri, 25 Feb 2011 15:32:58 -0800 Subject: Fix llhost integration test: replaced linux.org by lindenlab.com in the DNS lookup test as linux.org was not being resolved as expected --- indra/llmessage/tests/llhost_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/llmessage/tests/llhost_test.cpp b/indra/llmessage/tests/llhost_test.cpp index b20bceae1d..705473b0c0 100644 --- a/indra/llmessage/tests/llhost_test.cpp +++ b/indra/llmessage/tests/llhost_test.cpp @@ -152,7 +152,7 @@ namespace tut void host_object::test<9>() { // skip("setHostByName(\"google.com\"); getHostName() -> (e.g.) \"yx-in-f100.1e100.net\""); - std::string hostStr = "linux.org"; + std::string hostStr = "lindenlab.com"; LLHost host; host.setHostByName(hostStr); -- cgit v1.2.3 From 3810a391d018f480487e8012654b9b75d3525ced Mon Sep 17 00:00:00 2001 From: Paul ProductEngine Date: Sat, 26 Feb 2011 17:26:34 +0200 Subject: STORM-494 FIXED Message Well window is undocked while opening Side bar - To calculate properly whether the dockable floater visible or not, it's needed to get root view as dockable floater's parent --- indra/llui/lldockcontrol.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index f6f5a0beb3..5ed2c27160 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -160,8 +160,10 @@ bool LLDockControl::isDockVisible() case TOP: { // check is dock inside parent rect + // assume that parent for all dockable flaoters + // is the root view LLRect dockParentRect = - mDockWidget->getParent()->calcScreenRect(); + mDockWidget->getRootView()->calcScreenRect(); if (dockRect.mRight <= dockParentRect.mLeft || dockRect.mLeft >= dockParentRect.mRight) { -- cgit v1.2.3 From 40a8fc4b46ab13433a27b6ce5818aacde900b905 Mon Sep 17 00:00:00 2001 From: Jonathan Yap Date: Mon, 28 Feb 2011 14:18:00 -0500 Subject: STORM-980 Fix additional issue with Wear button found by QA --- indra/newview/skins/default/xui/en/panel_outfits_inventory.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index 26efe783f8..2ad2416179 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -127,9 +127,9 @@ label="Wear" layout="topleft" name="wear_btn" - left="0" + left="1" top="0" - width="147" /> + width="146" /> -- cgit v1.2.3 From 268f528ca11617301cba1a54ae0eb38a65716309 Mon Sep 17 00:00:00 2001 From: Merov Linden Date: Tue, 1 Mar 2011 15:45:43 -0800 Subject: Set the version to 2.5.1... Yeap! Back from 2.7.0 (not a misprint) --- indra/llcommon/llversionviewer.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra') diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index 7703132d90..5a134b5009 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -28,8 +28,8 @@ #define LL_LLVERSIONVIEWER_H const S32 LL_VERSION_MAJOR = 2; -const S32 LL_VERSION_MINOR = 7; -const S32 LL_VERSION_PATCH = 0; +const S32 LL_VERSION_MINOR = 5; +const S32 LL_VERSION_PATCH = 1; const S32 LL_VERSION_BUILD = 0; const char * const LL_CHANNEL = "Second Life Developer"; -- cgit v1.2.3 From 8e74e29bc724bff2b95b4c6e6eb9cd2bb3567dae Mon Sep 17 00:00:00 2001 From: eli_linden Date: Wed, 2 Mar 2011 11:31:29 -0800 Subject: VWR-23494 FIX on behalf of Torban Troutman --- indra/newview/skins/default/xui/de/panel_group_invite.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/de/panel_group_invite.xml b/indra/newview/skins/default/xui/de/panel_group_invite.xml index 4e3a304609..5f323d80dd 100644 --- a/indra/newview/skins/default/xui/de/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml @@ -10,7 +10,7 @@ Einige der ausgewählten Einwohner sind bereits Gruppenmitglieder und haben aus diesem Grund keine Einladung erhalten. - Sie können mehrere Einwohner Ihre Gruppe einladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“. + Sie können mehrere Einwohner in Ihre Gruppe einladen. Klicken Sie hierzu auf „Einwohnerliste öffnen“. + + -- cgit v1.2.3 From 14232031746bda595f3b802cf923d7739be635bb Mon Sep 17 00:00:00 2001 From: Leyla Farazha Date: Tue, 8 Mar 2011 11:08:39 -0800 Subject: SOCIAL-637 Receiving IM while destination guide or avatar picker is open results in IM window being small --- indra/llui/lldockcontrol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index f6f5a0beb3..e18309ac33 100644 --- a/indra/llui/lldockcontrol.cpp +++ b/indra/llui/lldockcontrol.cpp @@ -297,7 +297,7 @@ void LLDockControl::moveDockable() break; } - S32 max_available_height = rootRect.getHeight() - mDockTongueY - mDockTongue->getHeight(); + S32 max_available_height = rootRect.getHeight() - (rootRect.mBottom - mDockTongueY) - mDockTongue->getHeight(); // A floater should be shrunk so it doesn't cover a part of its docking tongue and // there is a space between a dockable floater and a control to which it is docked. -- cgit v1.2.3 From 47b77c7f7a777ae533863c3c7b4f68d518117c32 Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Tue, 8 Mar 2011 11:17:34 -0800 Subject: updated list of visible notifications to spec --- indra/newview/skins/minimal/xui/en/notification_visibility.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/skins/minimal/xui/en/notification_visibility.xml b/indra/newview/skins/minimal/xui/en/notification_visibility.xml index e05430636c..631cf5d42c 100644 --- a/indra/newview/skins/minimal/xui/en/notification_visibility.xml +++ b/indra/newview/skins/minimal/xui/en/notification_visibility.xml @@ -11,7 +11,7 @@ - + -- cgit v1.2.3 From 3732ac46e691f27d181c07b7c511c3c433f9c665 Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Tue, 8 Mar 2011 12:18:57 -0800 Subject: SOCIAL-647 FIX Gear menu for your own avatar is empty in mini-inspector in minimal s --- .../default/xui/en/menu_inspect_self_gear.xml | 242 ++++++++++++++++++--- .../minimal/xui/en/menu_inspect_self_gear.xml | 219 ++++++++++++++++++- 2 files changed, 432 insertions(+), 29 deletions(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml index 50ad3f834e..81b88cfd54 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml @@ -1,66 +1,252 @@ - + + layout="topleft" + name="Self Pie"> + layout="topleft" + name="Sit Down Here"> - + layout="topleft" + name="Stand Up"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + label="Change Outfit" + layout="topleft" + name="Chenge Outfit"> - + + function="EditOutfit" /> + + + + + + label="My Friends" + layout="topleft" + name="Friends..."> + function="SideTray.PanelPeopleTab" + parameter="friends_panel" /> + layout="topleft" + name="Groups..."> + label="My Profile" + layout="topleft" + name="Profile..."> + + + - + diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml index 28c4762eaa..be51e3e664 100644 --- a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml +++ b/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml @@ -1,2 +1,219 @@  - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3 From f9d70c41c9b7e7c0bb1cca184e6b5e99fc75a656 Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Tue, 8 Mar 2011 12:42:15 -0800 Subject: SOCIAL-652 FIX Decline notification shown to users in minimal skin when they click on free one click objects --- indra/newview/app_settings/settings.xml | 13 ++++++++++++- indra/newview/app_settings/settings_minimal.xml | 11 +++++++++++ indra/newview/llviewermessage.cpp | 9 ++++++--- 3 files changed, 29 insertions(+), 4 deletions(-) (limited to 'indra') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 3dedf0ddd7..a8e9ca3cc9 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12487,5 +12487,16 @@ Value 1 - + LogInventoryDecline + + Comment + Log in system chat whenever an inventory offer is declined + Persist + 1 + Type + Boolean + Value + 1 + + diff --git a/indra/newview/app_settings/settings_minimal.xml b/indra/newview/app_settings/settings_minimal.xml index 6e0053a3a3..e676f41250 100644 --- a/indra/newview/app_settings/settings_minimal.xml +++ b/indra/newview/app_settings/settings_minimal.xml @@ -325,5 +325,16 @@ Value http://lecs-static-secondlife-com.s3.amazonaws.com/viewer/agni/avatars.html + LogInventoryDecline + + Comment + Log in system chat whenever an inventory offer is declined + Persist + 1 + Type + Boolean + Value + 0 + diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 103989ee80..c2449907ac 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1715,15 +1715,18 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const msg->addBinaryDataFast(_PREHASH_BinaryBucket, EMPTY_BINARY_BUCKET, EMPTY_BINARY_BUCKET_SIZE); // send the message msg->sendReliable(mHost); + + if (gSavedSettings.getBOOL("LogInventoryDecline")) { LLStringUtil::format_map_t log_message_args; log_message_args["DESC"] = mDesc; log_message_args["NAME"] = mFromName; log_message = LLTrans::getString("InvOfferDecline", log_message_args); + + LLSD args; + args["MESSAGE"] = log_message; + LLNotificationsUtil::add("SystemMessage", args); } - LLSD args; - args["MESSAGE"] = log_message; - LLNotificationsUtil::add("SystemMessage", args); if (busy && (!mFromGroup && !mFromObject)) { -- cgit v1.2.3 From d4c0c81c725c749d734935dbb7fa3af05bf8e02c Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Tue, 8 Mar 2011 14:20:14 -0700 Subject: fix for STORM-1052: crash at LLVOCacheEntry::~LLVOCacheEntry() line 138 --- indra/newview/llvocache.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index a933500706..b888a263d0 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -71,6 +71,7 @@ LLVOCacheEntry::LLVOCacheEntry() } LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file) + : mBuffer(NULL) { S32 size = -1; BOOL success; @@ -135,7 +136,10 @@ LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file) LLVOCacheEntry::~LLVOCacheEntry() { - delete [] mBuffer; + if(mBuffer) + { + delete[] mBuffer; + } } -- cgit v1.2.3 From 7e7ea1eec4ab69fb46c5ce3749ef353fc5850829 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Tue, 8 Mar 2011 14:59:40 -0700 Subject: fix for STORM-1053: crash at LLTextureCache::writeToCache --- indra/newview/llappviewer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index a23f809b71..327a5ad698 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1677,8 +1677,8 @@ bool LLAppViewer::cleanup() // Delete workers first // shotdown all worker threads before deleting them in case of co-dependencies - sTextureCache->shutdown(); sTextureFetch->shutdown(); + sTextureCache->shutdown(); sImageDecodeThread->shutdown(); sTextureFetch->shutDownTextureCacheThread() ; -- cgit v1.2.3 From c87e895304f25ea7e77d45ac2ce31164b86ee529 Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Tue, 8 Mar 2011 15:12:42 -0800 Subject: SOCIAL-647 FIX Gear menu for your own avatar is empty in mini-inspector in minimal s --- indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml | 2 +- indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml index 81b88cfd54..5e7b16ed4a 100644 --- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml @@ -249,4 +249,4 @@ - + diff --git a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml index be51e3e664..ed3b75342f 100644 --- a/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml +++ b/indra/newview/skins/minimal/xui/en/menu_inspect_self_gear.xml @@ -216,4 +216,4 @@ - + -- cgit v1.2.3 From 0e5fd6a1483e12a46dc94f318f3e43ec328def54 Mon Sep 17 00:00:00 2001 From: Eli Linden Date: Tue, 8 Mar 2011 15:19:44 -0800 Subject: INTL-25 WIP Spanish translation --- .../skins/minimal/xui/es/floater_camera.xml | 65 ++++++++++++++++ .../skins/minimal/xui/es/floater_help_browser.xml | 9 +++ .../skins/minimal/xui/es/floater_nearby_chat.xml | 4 + .../skins/minimal/xui/es/inspect_avatar.xml | 24 ++++++ .../skins/minimal/xui/es/inspect_object.xml | 41 +++++++++++ .../minimal/xui/es/menu_add_wearable_gear.xml | 6 ++ .../skins/minimal/xui/es/menu_attachment_other.xml | 17 +++++ .../skins/minimal/xui/es/menu_attachment_self.xml | 16 ++++ .../skins/minimal/xui/es/menu_avatar_icon.xml | 7 ++ .../skins/minimal/xui/es/menu_avatar_other.xml | 16 ++++ .../skins/minimal/xui/es/menu_avatar_self.xml | 31 ++++++++ .../skins/minimal/xui/es/menu_bottomtray.xml | 17 +++++ .../skins/minimal/xui/es/menu_cof_attachment.xml | 4 + .../skins/minimal/xui/es/menu_cof_body_part.xml | 5 ++ .../skins/minimal/xui/es/menu_cof_clothing.xml | 6 ++ .../newview/skins/minimal/xui/es/menu_cof_gear.xml | 5 ++ indra/newview/skins/minimal/xui/es/menu_edit.xml | 12 +++ .../skins/minimal/xui/es/menu_favorites.xml | 10 +++ .../skins/minimal/xui/es/menu_gesture_gear.xml | 10 +++ .../skins/minimal/xui/es/menu_group_plus.xml | 5 ++ .../skins/minimal/xui/es/menu_hide_navbar.xml | 6 ++ .../skins/minimal/xui/es/menu_im_well_button.xml | 4 + .../skins/minimal/xui/es/menu_imchiclet_adhoc.xml | 4 + .../skins/minimal/xui/es/menu_imchiclet_group.xml | 6 ++ .../skins/minimal/xui/es/menu_imchiclet_p2p.xml | 7 ++ .../minimal/xui/es/menu_inspect_avatar_gear.xml | 17 +++++ .../minimal/xui/es/menu_inspect_object_gear.xml | 18 +++++ .../minimal/xui/es/menu_inspect_self_gear.xml | 10 +++ .../minimal/xui/es/menu_inv_offer_chiclet.xml | 4 + .../skins/minimal/xui/es/menu_inventory.xml | 86 ++++++++++++++++++++++ .../skins/minimal/xui/es/menu_inventory_add.xml | 33 +++++++++ .../minimal/xui/es/menu_inventory_gear_default.xml | 16 ++++ indra/newview/skins/minimal/xui/es/menu_land.xml | 9 +++ .../newview/skins/minimal/xui/es/menu_landmark.xml | 7 ++ indra/newview/skins/minimal/xui/es/menu_login.xml | 24 ++++++ .../newview/skins/minimal/xui/es/menu_mini_map.xml | 11 +++ indra/newview/skins/minimal/xui/es/menu_navbar.xml | 11 +++ .../skins/minimal/xui/es/menu_nearby_chat.xml | 9 +++ .../xui/es/menu_notification_well_button.xml | 4 + indra/newview/skins/minimal/xui/es/menu_object.xml | 29 ++++++++ .../skins/minimal/xui/es/menu_object_icon.xml | 5 ++ .../skins/minimal/xui/es/menu_outfit_gear.xml | 27 +++++++ .../skins/minimal/xui/es/menu_outfit_tab.xml | 9 +++ .../skins/minimal/xui/es/menu_participant_list.xml | 21 ++++++ .../xui/es/menu_people_friends_view_sort.xml | 8 ++ .../skins/minimal/xui/es/menu_people_groups.xml | 8 ++ .../xui/es/menu_people_groups_view_sort.xml | 5 ++ .../skins/minimal/xui/es/menu_people_nearby.xml | 13 ++++ .../xui/es/menu_people_nearby_multiselect.xml | 10 +++ .../xui/es/menu_people_nearby_view_sort.xml | 8 ++ .../xui/es/menu_people_recent_view_sort.xml | 7 ++ indra/newview/skins/minimal/xui/es/menu_picks.xml | 8 ++ .../skins/minimal/xui/es/menu_picks_plus.xml | 5 ++ indra/newview/skins/minimal/xui/es/menu_place.xml | 7 ++ .../skins/minimal/xui/es/menu_place_add_button.xml | 5 ++ .../minimal/xui/es/menu_places_gear_folder.xml | 15 ++++ .../minimal/xui/es/menu_places_gear_landmark.xml | 18 +++++ .../skins/minimal/xui/es/menu_profile_overflow.xml | 12 +++ .../skins/minimal/xui/es/menu_save_outfit.xml | 5 ++ .../skins/minimal/xui/es/menu_script_chiclet.xml | 4 + indra/newview/skins/minimal/xui/es/menu_slurl.xml | 6 ++ .../minimal/xui/es/menu_teleport_history_gear.xml | 6 ++ .../minimal/xui/es/menu_teleport_history_item.xml | 6 ++ .../minimal/xui/es/menu_teleport_history_tab.xml | 5 ++ .../skins/minimal/xui/es/menu_text_editor.xml | 8 ++ .../skins/minimal/xui/es/menu_topinfobar.xml | 7 ++ .../skins/minimal/xui/es/menu_url_agent.xml | 6 ++ .../skins/minimal/xui/es/menu_url_group.xml | 6 ++ .../newview/skins/minimal/xui/es/menu_url_http.xml | 7 ++ .../skins/minimal/xui/es/menu_url_inventory.xml | 6 ++ .../newview/skins/minimal/xui/es/menu_url_map.xml | 6 ++ .../skins/minimal/xui/es/menu_url_objectim.xml | 8 ++ .../skins/minimal/xui/es/menu_url_parcel.xml | 6 ++ .../skins/minimal/xui/es/menu_url_slapp.xml | 5 ++ .../skins/minimal/xui/es/menu_url_slurl.xml | 7 ++ .../skins/minimal/xui/es/menu_url_teleport.xml | 6 ++ indra/newview/skins/minimal/xui/es/menu_viewer.xml | 14 ++++ .../minimal/xui/es/menu_wearable_list_item.xml | 14 ++++ .../skins/minimal/xui/es/menu_wearing_gear.xml | 5 ++ .../skins/minimal/xui/es/menu_wearing_tab.xml | 6 ++ .../skins/minimal/xui/es/panel_bottomtray.xml | 39 ++++++++++ .../minimal/xui/es/panel_im_control_panel.xml | 29 ++++++++ indra/newview/skins/minimal/xui/es/panel_login.xml | 40 ++++++++++ .../skins/minimal/xui/es/panel_navigation_bar.xml | 18 +++++ .../newview/skins/minimal/xui/es/panel_people.xml | 71 ++++++++++++++++++ .../minimal/xui/es/panel_side_tray_tab_caption.xml | 7 ++ .../skins/minimal/xui/es/panel_status_bar.xml | 33 +++++++++ 87 files changed, 1202 insertions(+) create mode 100644 indra/newview/skins/minimal/xui/es/floater_camera.xml create mode 100644 indra/newview/skins/minimal/xui/es/floater_help_browser.xml create mode 100644 indra/newview/skins/minimal/xui/es/floater_nearby_chat.xml create mode 100644 indra/newview/skins/minimal/xui/es/inspect_avatar.xml create mode 100644 indra/newview/skins/minimal/xui/es/inspect_object.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_add_wearable_gear.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_attachment_other.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_attachment_self.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_avatar_icon.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_avatar_other.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_avatar_self.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_bottomtray.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_cof_attachment.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_cof_body_part.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_cof_clothing.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_cof_gear.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_edit.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_favorites.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_gesture_gear.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_group_plus.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_hide_navbar.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_im_well_button.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_imchiclet_adhoc.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_imchiclet_group.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_imchiclet_p2p.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_inspect_avatar_gear.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_inspect_object_gear.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_inv_offer_chiclet.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_inventory.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_inventory_add.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_inventory_gear_default.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_land.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_landmark.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_login.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_mini_map.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_navbar.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_nearby_chat.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_notification_well_button.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_object.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_object_icon.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_outfit_gear.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_outfit_tab.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_participant_list.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_people_friends_view_sort.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_people_groups.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_people_groups_view_sort.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_people_nearby.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_people_nearby_multiselect.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_people_nearby_view_sort.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_people_recent_view_sort.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_picks.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_picks_plus.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_place.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_place_add_button.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_places_gear_folder.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_places_gear_landmark.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_profile_overflow.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_save_outfit.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_script_chiclet.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_slurl.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_teleport_history_gear.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_teleport_history_item.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_teleport_history_tab.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_text_editor.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_topinfobar.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_url_agent.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_url_group.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_url_http.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_url_inventory.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_url_map.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_url_objectim.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_url_parcel.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_url_slapp.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_url_slurl.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_url_teleport.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_viewer.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_wearable_list_item.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_wearing_gear.xml create mode 100644 indra/newview/skins/minimal/xui/es/menu_wearing_tab.xml create mode 100644 indra/newview/skins/minimal/xui/es/panel_bottomtray.xml create mode 100644 indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml create mode 100644 indra/newview/skins/minimal/xui/es/panel_login.xml create mode 100644 indra/newview/skins/minimal/xui/es/panel_navigation_bar.xml create mode 100644 indra/newview/skins/minimal/xui/es/panel_people.xml create mode 100644 indra/newview/skins/minimal/xui/es/panel_side_tray_tab_caption.xml create mode 100644 indra/newview/skins/minimal/xui/es/panel_status_bar.xml (limited to 'indra') diff --git a/indra/newview/skins/minimal/xui/es/floater_camera.xml b/indra/newview/skins/minimal/xui/es/floater_camera.xml new file mode 100644 index 0000000000..ccf3d4bf91 --- /dev/null +++ b/indra/newview/skins/minimal/xui/es/floater_camera.xml @@ -0,0 +1,65 @@ + + + + Girar la cámara alrededor de lo enfocado + + + Hacer zoom con la cámara en lo enfocado + + + Mover la cámara arriba y abajo, izquierda y derecha + + + Modos de cámara + + + Orbital - Zoom - Panóramica + + + Vistas predefinidas + + + Centrar el objeto + + + + + + De frente + + + + + Vista lateral + + + + + Desde detrás + + + + + + + Vista de objeto + + + + + Vista subjetiva + + + + + + + + + + +