diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2024-05-14 21:02:28 -0400 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2024-05-14 21:02:28 -0400 |
commit | 094dcc07f8c1d90ae723dbe60eddacb90a09eae8 (patch) | |
tree | e750942e5f22ed677b543bd49509c2a7cdc5ce56 /indra/newview/lllandmarklist.cpp | |
parent | d4043d3b011c32eb503c43c551872f9c24d7344f (diff) | |
parent | 38c2a5bde985a6a8a96d912d432f8bdf7e5b60be (diff) |
Merge DRTVWR-591-maint-X to main on promotion of secondlife/viewer #705: Maintenance X
Diffstat (limited to 'indra/newview/lllandmarklist.cpp')
-rw-r--r-- | indra/newview/lllandmarklist.cpp | 186 |
1 files changed, 93 insertions, 93 deletions
diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp index d790c6f95e..6ec77bca86 100644 --- a/indra/newview/lllandmarklist.cpp +++ b/indra/newview/lllandmarklist.cpp @@ -1,25 +1,25 @@ -/** +/** * @file lllandmarklist.cpp * @brief Landmark asset list class * * $LicenseInfo:firstyear=2002&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -44,30 +44,30 @@ LLLandmarkList gLandmarkList; LLLandmarkList::~LLLandmarkList() { - std::for_each(mList.begin(), mList.end(), DeletePairedPointer()); - mList.clear(); + std::for_each(mList.begin(), mList.end(), DeletePairedPointer()); + mList.clear(); } LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t cb) { - LLLandmark* landmark = get_ptr_in_map(mList, asset_uuid); - if(landmark) - { - LLVector3d dummy; - if(cb && !landmark->getGlobalPos(dummy)) - { - // landmark is not completely loaded yet - loaded_callback_map_t::value_type vt(asset_uuid, cb); - mLoadedCallbackMap.insert(vt); - } - return landmark; - } - else - { - if ( mBadList.find(asset_uuid) != mBadList.end() ) - { - return NULL; - } + LLLandmark* landmark = get_ptr_in_map(mList, asset_uuid); + if(landmark) + { + LLVector3d dummy; + if(cb && !landmark->getGlobalPos(dummy)) + { + // landmark is not completely loaded yet + loaded_callback_map_t::value_type vt(asset_uuid, cb); + mLoadedCallbackMap.insert(vt); + } + return landmark; + } + else + { + if ( mBadList.find(asset_uuid) != mBadList.end() ) + { + return NULL; + } if (cb) { @@ -77,40 +77,40 @@ LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t loaded_callback_map_t::value_type vt(asset_uuid, cb); mLoadedCallbackMap.insert(vt); } - - landmark_requested_list_t::iterator iter = mRequestedList.find(asset_uuid); - if (iter != mRequestedList.end()) - { - const F32 rerequest_time = 30.f; // 30 seconds between requests - if (gFrameTimeSeconds - iter->second < rerequest_time) - { - return NULL; - } - } + + landmark_requested_list_t::iterator iter = mRequestedList.find(asset_uuid); + if (iter != mRequestedList.end()) + { + const F32 rerequest_time = 30.f; // 30 seconds between requests + if (gFrameTimeSeconds - iter->second < rerequest_time) + { + return NULL; + } + } mRequestedList[asset_uuid] = gFrameTimeSeconds; // Note that getAssetData can callback immediately and cleans mRequestedList - gAssetStorage->getAssetData(asset_uuid, - LLAssetType::AT_LANDMARK, - LLLandmarkList::processGetAssetReply, - NULL); - } - return NULL; + gAssetStorage->getAssetData(asset_uuid, + LLAssetType::AT_LANDMARK, + LLLandmarkList::processGetAssetReply, + NULL); + } + return NULL; } // static void LLLandmarkList::processGetAssetReply( - const LLUUID& uuid, - LLAssetType::EType type, - void* user_data, - S32 status, - LLExtStat ext_status ) + const LLUUID& uuid, + LLAssetType::EType type, + void* user_data, + S32 status, + LLExtStat ext_status ) { - if( status == 0 ) - { - LLFileSystem file(uuid, type); - S32 file_length = file.getSize(); + if( status == 0 ) + { + LLFileSystem file(uuid, type); + S32 file_length = file.getSize(); if (file_length > 0) { @@ -155,40 +155,40 @@ void LLLandmarkList::processGetAssetReply( // got a good status, but no file, shouldn't happen gLandmarkList.eraseCallbacks(uuid); } - } - else - { - // SJB: No use case for a notification here. Use LL_DEBUGS() instead - if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status ) - { - LL_WARNS("Landmarks") << "Missing Landmark" << LL_ENDL; - //LLNotificationsUtil::add("LandmarkMissing"); - } - else - { - LL_WARNS("Landmarks") << "Unable to load Landmark" << LL_ENDL; - //LLNotificationsUtil::add("UnableToLoadLandmark"); - } - - gLandmarkList.mBadList.insert(uuid); + } + else + { + // SJB: No use case for a notification here. Use LL_DEBUGS() instead + if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status ) + { + LL_WARNS("Landmarks") << "Missing Landmark" << LL_ENDL; + //LLNotificationsUtil::add("LandmarkMissing"); + } + else + { + LL_WARNS("Landmarks") << "Unable to load Landmark" << LL_ENDL; + //LLNotificationsUtil::add("UnableToLoadLandmark"); + } + + gLandmarkList.mBadList.insert(uuid); gLandmarkList.mRequestedList.erase(uuid); //mBadList effectively blocks any load, so no point keeping id in requests gLandmarkList.eraseCallbacks(uuid); - } + } } BOOL LLLandmarkList::isAssetInLoadedCallbackMap(const LLUUID& asset_uuid) { - return mLoadedCallbackMap.find(asset_uuid) != mLoadedCallbackMap.end(); + return mLoadedCallbackMap.find(asset_uuid) != mLoadedCallbackMap.end(); } BOOL LLLandmarkList::assetExists(const LLUUID& asset_uuid) { - return mList.count(asset_uuid) != 0 || mBadList.count(asset_uuid) != 0; + return mList.count(asset_uuid) != 0 || mBadList.count(asset_uuid) != 0; } void LLLandmarkList::onRegionHandle(const LLUUID& landmark_id) { - LLLandmark* landmark = getAsset(landmark_id); + LLLandmark* landmark = getAsset(landmark_id); if (!landmark) { LL_WARNS() << "Got region handle but the landmark " << landmark_id << " not found." << LL_ENDL; @@ -196,18 +196,18 @@ void LLLandmarkList::onRegionHandle(const LLUUID& landmark_id) return; } - // Calculate landmark global position. - // This should succeed since the region handle is available. - LLVector3d pos; - if (!landmark->getGlobalPos(pos)) - { + // Calculate landmark global position. + // This should succeed since the region handle is available. + LLVector3d pos; + if (!landmark->getGlobalPos(pos)) + { LL_WARNS() << "Got region handle but the landmark " << landmark_id << " global position is still unknown." << LL_ENDL; eraseCallbacks(landmark_id); return; - } + } // Call this even if no landmark exists to clean mLoadedCallbackMap - makeCallbacks(landmark_id); + makeCallbacks(landmark_id); } void LLLandmarkList::eraseCallbacks(const LLUUID& landmark_id) @@ -217,20 +217,20 @@ void LLLandmarkList::eraseCallbacks(const LLUUID& landmark_id) void LLLandmarkList::makeCallbacks(const LLUUID& landmark_id) { - LLLandmark* landmark = getAsset(landmark_id); - - if (!landmark) - { - LL_WARNS() << "Landmark " << landmark_id << " to make callbacks for not found." << LL_ENDL; - } - - // make all the callbacks here. - loaded_callback_map_t::iterator it; - while((it = mLoadedCallbackMap.find(landmark_id)) != mLoadedCallbackMap.end()) - { - if (landmark) - (*it).second(landmark); - - mLoadedCallbackMap.erase(it); - } + LLLandmark* landmark = getAsset(landmark_id); + + if (!landmark) + { + LL_WARNS() << "Landmark " << landmark_id << " to make callbacks for not found." << LL_ENDL; + } + + // make all the callbacks here. + loaded_callback_map_t::iterator it; + while((it = mLoadedCallbackMap.find(landmark_id)) != mLoadedCallbackMap.end()) + { + if (landmark) + (*it).second(landmark); + + mLoadedCallbackMap.erase(it); + } } |