summaryrefslogtreecommitdiff
path: root/indra/newview/lllocalbitmaps.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/lllocalbitmaps.cpp')
-rw-r--r--indra/newview/lllocalbitmaps.cpp67
1 files changed, 36 insertions, 31 deletions
diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp
index 0243e2183e..5a17332fde 100644
--- a/indra/newview/lllocalbitmaps.cpp
+++ b/indra/newview/lllocalbitmaps.cpp
@@ -69,9 +69,6 @@
/*=======================================*/
/* Formal declarations, constants, etc. */
/*=======================================*/
-std::list<LLLocalBitmap*> LLLocalBitmapMgr::sBitmapList;
-LLLocalBitmapTimer LLLocalBitmapMgr::sTimer;
-bool LLLocalBitmapMgr::sNeedsRebake;
static const F32 LL_LOCAL_TIMER_HEARTBEAT = 3.0;
static const BOOL LL_LOCAL_USE_MIPMAPS = true;
@@ -131,7 +128,7 @@ LLLocalBitmap::~LLLocalBitmap()
if(LL_LOCAL_REPLACE_ON_DEL && mValid && gAgentAvatarp) // fix for STORM-1837
{
replaceIDs(mWorldID, IMG_DEFAULT);
- LLLocalBitmapMgr::doRebake();
+ LLLocalBitmapMgr::getInstance()->doRebake();
}
// delete self from gimagelist
@@ -571,7 +568,7 @@ void LLLocalBitmap::updateUserLayers(LLUUID old_id, LLUUID new_id, LLWearableTyp
gAgentAvatarp->setLocalTexture(reg_texind, gTextureList.getImage(new_id), FALSE, index);
gAgentAvatarp->wearableUpdated(type);
/* telling the manager to rebake once update cycle is fully done */
- LLLocalBitmapMgr::setNeedsRebake();
+ LLLocalBitmapMgr::getInstance()->setNeedsRebake();
}
}
@@ -905,7 +902,7 @@ bool LLLocalBitmapTimer::isRunning()
BOOL LLLocalBitmapTimer::tick()
{
- LLLocalBitmapMgr::doUpdates();
+ LLLocalBitmapMgr::getInstance()->doUpdates();
return FALSE;
}
@@ -914,17 +911,12 @@ BOOL LLLocalBitmapTimer::tick()
/*=======================================*/
LLLocalBitmapMgr::LLLocalBitmapMgr()
{
- // The class is all made of static members, should i even bother instantiating?
}
LLLocalBitmapMgr::~LLLocalBitmapMgr()
{
-}
-
-void LLLocalBitmapMgr::cleanupClass()
-{
- std::for_each(sBitmapList.begin(), sBitmapList.end(), DeletePointer());
- sBitmapList.clear();
+ std::for_each(mBitmapList.begin(), mBitmapList.end(), DeletePointer());
+ mBitmapList.clear();
}
bool LLLocalBitmapMgr::addUnit()
@@ -934,7 +926,7 @@ bool LLLocalBitmapMgr::addUnit()
LLFilePicker& picker = LLFilePicker::instance();
if (picker.getMultipleOpenFiles(LLFilePicker::FFLOAD_IMAGE))
{
- sTimer.stopTimer();
+ mTimer.stopTimer();
std::string filename = picker.getFirstFile();
while(!filename.empty())
@@ -949,7 +941,7 @@ bool LLLocalBitmapMgr::addUnit()
if (unit->getValid())
{
- sBitmapList.push_back(unit);
+ mBitmapList.push_back(unit);
add_successful = true;
}
else
@@ -968,7 +960,7 @@ bool LLLocalBitmapMgr::addUnit()
filename = picker.getNextFile();
}
- sTimer.startTimer();
+ mTimer.startTimer();
}
return add_successful;
@@ -1007,10 +999,10 @@ bool LLLocalBitmapMgr::checkTextureDimensions(std::string filename)
void LLLocalBitmapMgr::delUnit(LLUUID tracking_id)
{
- if (!sBitmapList.empty())
+ if (!mBitmapList.empty())
{
std::vector<LLLocalBitmap*> to_delete;
- for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++)
+ for (local_list_iter iter = mBitmapList.begin(); iter != mBitmapList.end(); iter++)
{ /* finding which ones we want deleted and making a separate list */
LLLocalBitmap* unit = *iter;
if (unit->getTrackingID() == tracking_id)
@@ -1023,7 +1015,7 @@ void LLLocalBitmapMgr::delUnit(LLUUID tracking_id)
del_iter != to_delete.end(); del_iter++)
{ /* iterating over a temporary list, hence preserving the iterator validity while deleting. */
LLLocalBitmap* unit = *del_iter;
- sBitmapList.remove(unit);
+ mBitmapList.remove(unit);
delete unit;
unit = NULL;
}
@@ -1034,7 +1026,7 @@ LLUUID LLLocalBitmapMgr::getWorldID(LLUUID tracking_id)
{
LLUUID world_id = LLUUID::null;
- for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++)
+ for (local_list_iter iter = mBitmapList.begin(); iter != mBitmapList.end(); iter++)
{
LLLocalBitmap* unit = *iter;
if (unit->getTrackingID() == tracking_id)
@@ -1046,11 +1038,24 @@ LLUUID LLLocalBitmapMgr::getWorldID(LLUUID tracking_id)
return world_id;
}
+bool LLLocalBitmapMgr::isLocal(const LLUUID world_id)
+{
+ for (local_list_iter iter = mBitmapList.begin(); iter != mBitmapList.end(); iter++)
+ {
+ LLLocalBitmap* unit = *iter;
+ if (unit->getWorldID() == world_id)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
std::string LLLocalBitmapMgr::getFilename(LLUUID tracking_id)
{
std::string filename = "";
- for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++)
+ for (local_list_iter iter = mBitmapList.begin(); iter != mBitmapList.end(); iter++)
{
LLLocalBitmap* unit = *iter;
if (unit->getTrackingID() == tracking_id)
@@ -1068,10 +1073,10 @@ void LLLocalBitmapMgr::feedScrollList(LLScrollListCtrl* ctrl)
{
ctrl->clearRows();
- if (!sBitmapList.empty())
+ if (!mBitmapList.empty())
{
- for (local_list_iter iter = sBitmapList.begin();
- iter != sBitmapList.end(); iter++)
+ for (local_list_iter iter = mBitmapList.begin();
+ iter != mBitmapList.end(); iter++)
{
LLSD element;
element["columns"][0]["column"] = "unit_name";
@@ -1092,29 +1097,29 @@ void LLLocalBitmapMgr::feedScrollList(LLScrollListCtrl* ctrl)
void LLLocalBitmapMgr::doUpdates()
{
// preventing theoretical overlap in cases with huge number of loaded images.
- sTimer.stopTimer();
- sNeedsRebake = false;
+ mTimer.stopTimer();
+ mNeedsRebake = false;
- for (local_list_iter iter = sBitmapList.begin(); iter != sBitmapList.end(); iter++)
+ for (local_list_iter iter = mBitmapList.begin(); iter != mBitmapList.end(); iter++)
{
(*iter)->updateSelf();
}
doRebake();
- sTimer.startTimer();
+ mTimer.startTimer();
}
void LLLocalBitmapMgr::setNeedsRebake()
{
- sNeedsRebake = true;
+ mNeedsRebake = true;
}
void LLLocalBitmapMgr::doRebake()
{ /* separated that from doUpdates to insure a rebake can be called separately during deletion */
- if (sNeedsRebake)
+ if (mNeedsRebake)
{
gAgentAvatarp->forceBakeAllTextures(LL_LOCAL_SLAM_FOR_DEBUG);
- sNeedsRebake = false;
+ mNeedsRebake = false;
}
}