diff options
author | angela <angela@lindenlab.com> | 2009-10-27 13:26:50 +0800 |
---|---|---|
committer | angela <angela@lindenlab.com> | 2009-10-27 13:26:50 +0800 |
commit | 773ce219c6317dc753369fa280d5d7f6c4b23550 (patch) | |
tree | cbfc416e124efa20726d1db10a3324732cafb269 /indra/newview/lllandmarklist.cpp | |
parent | f60314f22758daa22d096f2166367258d761d8b4 (diff) | |
parent | 4767b546e6917ab4b2561553cf617d577fe998ff (diff) |
merge
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)) { |