DRTVWR-493 LLLocalBitmapMgr to Singleton
parent
2672093429
commit
a2d91f3160
|
|
@ -1750,8 +1750,6 @@ bool LLAppViewer::cleanup()
|
|||
gTransferManager.cleanup();
|
||||
#endif
|
||||
|
||||
SUBSYSTEM_CLEANUP(LLLocalBitmapMgr);
|
||||
|
||||
// Note: this is where gWorldMap used to be deleted.
|
||||
|
||||
// Note: this is where gHUDManager used to be deleted.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -570,7 +567,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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -835,7 +832,7 @@ bool LLLocalBitmapTimer::isRunning()
|
|||
|
||||
BOOL LLLocalBitmapTimer::tick()
|
||||
{
|
||||
LLLocalBitmapMgr::doUpdates();
|
||||
LLLocalBitmapMgr::getInstance()->doUpdates();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
@ -844,17 +841,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()
|
||||
|
|
@ -864,7 +856,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())
|
||||
|
|
@ -879,7 +871,7 @@ bool LLLocalBitmapMgr::addUnit()
|
|||
|
||||
if (unit->getValid())
|
||||
{
|
||||
sBitmapList.push_back(unit);
|
||||
mBitmapList.push_back(unit);
|
||||
add_successful = true;
|
||||
}
|
||||
else
|
||||
|
|
@ -898,7 +890,7 @@ bool LLLocalBitmapMgr::addUnit()
|
|||
filename = picker.getNextFile();
|
||||
}
|
||||
|
||||
sTimer.startTimer();
|
||||
mTimer.startTimer();
|
||||
}
|
||||
|
||||
return add_successful;
|
||||
|
|
@ -937,10 +929,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)
|
||||
|
|
@ -953,7 +945,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;
|
||||
}
|
||||
|
|
@ -964,7 +956,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)
|
||||
|
|
@ -980,7 +972,7 @@ 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)
|
||||
|
|
@ -998,10 +990,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";
|
||||
|
|
@ -1022,29 +1014,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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -110,31 +110,28 @@ class LLLocalBitmapTimer : public LLEventTimer
|
|||
|
||||
};
|
||||
|
||||
class LLLocalBitmapMgr
|
||||
class LLLocalBitmapMgr : public LLSingleton<LLLocalBitmapMgr>
|
||||
{
|
||||
public:
|
||||
LLLocalBitmapMgr();
|
||||
~LLLocalBitmapMgr();
|
||||
LLSINGLETON(LLLocalBitmapMgr);
|
||||
~LLLocalBitmapMgr();
|
||||
public:
|
||||
bool addUnit();
|
||||
void delUnit(LLUUID tracking_id);
|
||||
bool checkTextureDimensions(std::string filename);
|
||||
|
||||
public:
|
||||
static void cleanupClass();
|
||||
static bool addUnit();
|
||||
static void delUnit(LLUUID tracking_id);
|
||||
static bool checkTextureDimensions(std::string filename);
|
||||
LLUUID getWorldID(LLUUID tracking_id);
|
||||
std::string getFilename(LLUUID tracking_id);
|
||||
|
||||
static LLUUID getWorldID(LLUUID tracking_id);
|
||||
static std::string getFilename(LLUUID tracking_id);
|
||||
|
||||
static void feedScrollList(LLScrollListCtrl* ctrl);
|
||||
static void doUpdates();
|
||||
static void setNeedsRebake();
|
||||
static void doRebake();
|
||||
|
||||
private:
|
||||
static std::list<LLLocalBitmap*> sBitmapList;
|
||||
static LLLocalBitmapTimer sTimer;
|
||||
static bool sNeedsRebake;
|
||||
typedef std::list<LLLocalBitmap*>::iterator local_list_iter;
|
||||
void feedScrollList(LLScrollListCtrl* ctrl);
|
||||
void doUpdates();
|
||||
void setNeedsRebake();
|
||||
void doRebake();
|
||||
|
||||
private:
|
||||
std::list<LLLocalBitmap*> mBitmapList;
|
||||
LLLocalBitmapTimer mTimer;
|
||||
bool mNeedsRebake;
|
||||
typedef std::list<LLLocalBitmap*>::iterator local_list_iter;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -382,7 +382,7 @@ BOOL LLFloaterTexturePicker::postBuild()
|
|||
|
||||
mLocalScrollCtrl = getChild<LLScrollListCtrl>("l_name_list");
|
||||
mLocalScrollCtrl->setCommitCallback(onLocalScrollCommit, this);
|
||||
LLLocalBitmapMgr::feedScrollList(mLocalScrollCtrl);
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(mLocalScrollCtrl);
|
||||
|
||||
mNoCopyTextureSelected = FALSE;
|
||||
|
||||
|
|
@ -694,7 +694,7 @@ void LLFloaterTexturePicker::onBtnSelect(void* userdata)
|
|||
if (self->mLocalScrollCtrl->getVisible() && !self->mLocalScrollCtrl->getAllSelected().empty())
|
||||
{
|
||||
LLUUID temp_id = self->mLocalScrollCtrl->getFirstSelected()->getColumn(LOCAL_TRACKING_ID_COLUMN)->getValue().asUUID();
|
||||
local_id = LLLocalBitmapMgr::getWorldID(temp_id);
|
||||
local_id = LLLocalBitmapMgr::getInstance()->getWorldID(temp_id);
|
||||
}
|
||||
}
|
||||
if (self->mOnFloaterCommitCallback)
|
||||
|
|
@ -781,10 +781,10 @@ void LLFloaterTexturePicker::onModeSelect(LLUICtrl* ctrl, void *userdata)
|
|||
// static
|
||||
void LLFloaterTexturePicker::onBtnAdd(void* userdata)
|
||||
{
|
||||
if (LLLocalBitmapMgr::addUnit() == true)
|
||||
if (LLLocalBitmapMgr::getInstance()->addUnit() == true)
|
||||
{
|
||||
LLFloaterTexturePicker* self = (LLFloaterTexturePicker*) userdata;
|
||||
LLLocalBitmapMgr::feedScrollList(self->mLocalScrollCtrl);
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -803,13 +803,13 @@ void LLFloaterTexturePicker::onBtnRemove(void* userdata)
|
|||
if (list_item)
|
||||
{
|
||||
LLUUID tracking_id = list_item->getColumn(LOCAL_TRACKING_ID_COLUMN)->getValue().asUUID();
|
||||
LLLocalBitmapMgr::delUnit(tracking_id);
|
||||
LLLocalBitmapMgr::getInstance()->delUnit(tracking_id);
|
||||
}
|
||||
}
|
||||
|
||||
self->getChild<LLButton>("l_rem_btn")->setEnabled(false);
|
||||
self->getChild<LLButton>("l_upl_btn")->setEnabled(false);
|
||||
LLLocalBitmapMgr::feedScrollList(self->mLocalScrollCtrl);
|
||||
LLLocalBitmapMgr::getInstance()->feedScrollList(self->mLocalScrollCtrl);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -829,7 +829,7 @@ void LLFloaterTexturePicker::onBtnUpload(void* userdata)
|
|||
in the future, it might be a good idea to check the vector size and if more than one units is selected - opt for multi-image upload. */
|
||||
|
||||
LLUUID tracking_id = (LLUUID)self->mLocalScrollCtrl->getSelectedItemLabel(LOCAL_TRACKING_ID_COLUMN);
|
||||
std::string filename = LLLocalBitmapMgr::getFilename(tracking_id);
|
||||
std::string filename = LLLocalBitmapMgr::getInstance()->getFilename(tracking_id);
|
||||
|
||||
if (!filename.empty())
|
||||
{
|
||||
|
|
@ -852,7 +852,7 @@ void LLFloaterTexturePicker::onLocalScrollCommit(LLUICtrl* ctrl, void* userdata)
|
|||
if (has_selection)
|
||||
{
|
||||
LLUUID tracking_id = (LLUUID)self->mLocalScrollCtrl->getSelectedItemLabel(LOCAL_TRACKING_ID_COLUMN);
|
||||
LLUUID inworld_id = LLLocalBitmapMgr::getWorldID(tracking_id);
|
||||
LLUUID inworld_id = LLLocalBitmapMgr::getInstance()->getWorldID(tracking_id);
|
||||
if (self->mSetImageAssetIDCallback)
|
||||
{
|
||||
self->mSetImageAssetIDCallback(inworld_id);
|
||||
|
|
|
|||
Loading…
Reference in New Issue