diff options
author | Bryan O'Sullivan <bos@lindenlab.com> | 2009-11-03 13:39:02 -0800 |
---|---|---|
committer | Bryan O'Sullivan <bos@lindenlab.com> | 2009-11-03 13:39:02 -0800 |
commit | 28ed8f84d86403cf90b7963b147d2ac5c6cf37c7 (patch) | |
tree | cebb2895642b96aa64e8cf8c2eb402e8423165d6 /indra/newview/lllandmarklist.cpp | |
parent | 9c3595465972ba4be916e871f6b0a62cc0c13d4a (diff) | |
parent | 63b9bd43ff41da01d549f630bd838caff0dffd97 (diff) |
Merge with SVN render-pipeline-8 branch
Diffstat (limited to 'indra/newview/lllandmarklist.cpp')
-rw-r--r-- | indra/newview/lllandmarklist.cpp | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp index 2e8084759a..83e694951b 100644 --- a/indra/newview/lllandmarklist.cpp +++ b/indra/newview/lllandmarklist.cpp @@ -37,6 +37,7 @@ #include "message.h" #include "llassetstorage.h" +#include "llappviewer.h" #include "llagent.h" #include "llnotify.h" #include "llvfile.h" @@ -63,20 +64,32 @@ LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t } else { - if ( gLandmarkList.mBadList.find(asset_uuid) == gLandmarkList.mBadList.end() ) + if ( mBadList.find(asset_uuid) != mBadList.end() ) { - if (cb) + 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) { - loaded_callback_map_t::value_type vt(asset_uuid, cb); - mLoadedCallbackMap.insert(vt); + return NULL; } - - gAssetStorage->getAssetData( - asset_uuid, - LLAssetType::AT_LANDMARK, - LLLandmarkList::processGetAssetReply, - NULL); } + + if (cb) + { + loaded_callback_map_t::value_type vt(asset_uuid, cb); + mLoadedCallbackMap.insert(vt); + } + + gAssetStorage->getAssetData(asset_uuid, + LLAssetType::AT_LANDMARK, + LLLandmarkList::processGetAssetReply, + NULL); + mRequestedList[asset_uuid] = gFrameTimeSeconds; } return NULL; } @@ -103,7 +116,8 @@ void LLLandmarkList::processGetAssetReply( if (landmark) { gLandmarkList.mList[ uuid ] = landmark; - + gLandmarkList.mRequestedList.erase(uuid); + LLVector3d pos; if(!landmark->getGlobalPos(pos)) { |