Improve iterator usage.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5528 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
Jordan Woyak 2010-05-28 23:14:16 +00:00
parent 0d75190af9
commit ceabf90bda
21 changed files with 1132 additions and 1153 deletions

View File

@ -15,6 +15,8 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include <algorithm>
#include "LogManager.h" #include "LogManager.h"
#include "ConsoleListener.h" #include "ConsoleListener.h"
#include "Timer.h" #include "Timer.h"
@ -160,28 +162,19 @@ void LogContainer::addListener(LogListener *listener) {
} }
void LogContainer::removeListener(LogListener *listener) { void LogContainer::removeListener(LogListener *listener) {
std::vector<LogListener *>::iterator i; std::vector<LogListener *>::iterator i = std::find(listeners.begin(), listeners.end(), listener);
for(i = listeners.begin(); i != listeners.end(); i++) { if (listeners.end() != i)
if ((*i) == listener) { listeners.erase(i);
listeners.erase(i);
break;
}
}
} }
bool LogContainer::isListener(LogListener *listener) const { bool LogContainer::isListener(LogListener *listener) const {
std::vector<LogListener *>::const_iterator i; std::vector<LogListener *>::const_iterator i = std::find(listeners.begin(), listeners.end(), listener);
for (i = listeners.begin(); i != listeners.end(); i++) { return listeners.end() != i;
if ((*i) == listener) {
return true;
}
}
return false;
} }
void LogContainer::trigger(LogTypes::LOG_LEVELS level, const char *msg) { void LogContainer::trigger(LogTypes::LOG_LEVELS level, const char *msg) {
std::vector<LogListener *>::const_iterator i; std::vector<LogListener *>::const_iterator i;
for (i = listeners.begin(); i != listeners.end(); i++) { for (i = listeners.begin(); i != listeners.end(); ++i) {
(*i)->Log(level, msg); (*i)->Log(level, msg);
} }
} }

View File

@ -20,7 +20,7 @@
void SymbolDB::List() void SymbolDB::List()
{ {
for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++) for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); ++iter)
{ {
DEBUG_LOG(HLE,"%s @ %08x: %i bytes (hash %08x) : %i calls", iter->second.name.c_str(), iter->second.address, iter->second.size, iter->second.hash,iter->second.numCalls); DEBUG_LOG(HLE,"%s @ %08x: %i bytes (hash %08x) : %i calls", iter->second.name.c_str(), iter->second.address, iter->second.size, iter->second.hash,iter->second.numCalls);
} }
@ -37,7 +37,7 @@ void SymbolDB::Clear(const char *prefix)
void SymbolDB::Index() void SymbolDB::Index()
{ {
int i = 0; int i = 0;
for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++) for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); ++iter)
{ {
iter->second.index = i++; iter->second.index = i++;
} }
@ -45,7 +45,7 @@ void SymbolDB::Index()
Symbol *SymbolDB::GetSymbolFromName(const char *name) Symbol *SymbolDB::GetSymbolFromName(const char *name)
{ {
for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++) for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); ++iter)
{ {
if (!strcmp(iter->second.name.c_str(), name)) if (!strcmp(iter->second.name.c_str(), name))
return &iter->second; return &iter->second;

View File

@ -587,10 +587,10 @@ void FindFunctionsAfterBLR(PPCSymbolDB *func_db)
{ {
vector<u32> funcAddrs; vector<u32> funcAddrs;
for (PPCSymbolDB::XFuncMap::iterator iter = func_db->GetIterator(); iter != func_db->End(); iter++) for (PPCSymbolDB::XFuncMap::iterator iter = func_db->GetIterator(); iter != func_db->End(); ++iter)
funcAddrs.push_back(iter->second.address + iter->second.size); funcAddrs.push_back(iter->second.address + iter->second.size);
for (vector<u32>::iterator iter = funcAddrs.begin(); iter != funcAddrs.end(); iter++) for (vector<u32>::iterator iter = funcAddrs.begin(); iter != funcAddrs.end(); ++iter)
{ {
u32 location = *iter; u32 location = *iter;
while (true) while (true)
@ -622,7 +622,7 @@ void FindFunctions(u32 startAddr, u32 endAddr, PPCSymbolDB *func_db)
int numLeafs = 0, numNice = 0, numUnNice = 0; int numLeafs = 0, numNice = 0, numUnNice = 0;
int numTimer = 0, numRFI = 0, numStraightLeaf = 0; int numTimer = 0, numRFI = 0, numStraightLeaf = 0;
int leafSize = 0, niceSize = 0, unniceSize = 0; int leafSize = 0, niceSize = 0, unniceSize = 0;
for (PPCSymbolDB::XFuncMap::iterator iter = func_db->GetIterator(); iter != func_db->End(); iter++) for (PPCSymbolDB::XFuncMap::iterator iter = func_db->GetIterator(); iter != func_db->End(); ++iter)
{ {
if (iter->second.address == 4) if (iter->second.address == 4)
{ {

View File

@ -103,7 +103,7 @@ Symbol *PPCSymbolDB::GetSymbolFromAddr(u32 addr)
return &it->second; return &it->second;
else else
{ {
for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++) for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); ++iter)
{ {
if (addr >= iter->second.address && addr < iter->second.address + iter->second.size) if (addr >= iter->second.address && addr < iter->second.address + iter->second.size)
return &iter->second; return &iter->second;
@ -123,12 +123,12 @@ const char *PPCSymbolDB::GetDescription(u32 addr)
void PPCSymbolDB::FillInCallers() void PPCSymbolDB::FillInCallers()
{ {
for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++) for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); ++iter)
{ {
iter->second.callers.clear(); iter->second.callers.clear();
} }
for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++) for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); ++iter)
{ {
Symbol &f = iter->second; Symbol &f = iter->second;
for (size_t i = 0; i < f.calls.size(); i++) for (size_t i = 0; i < f.calls.size(); i++)
@ -158,7 +158,7 @@ void PPCSymbolDB::PrintCalls(u32 funcAddr) const
{ {
const Symbol &f = iter->second; const Symbol &f = iter->second;
INFO_LOG(HLE, "The function %s at %08x calls:", f.name.c_str(), f.address); INFO_LOG(HLE, "The function %s at %08x calls:", f.name.c_str(), f.address);
for (std::vector<SCall>::const_iterator fiter = f.calls.begin(); fiter!=f.calls.end(); fiter++) for (std::vector<SCall>::const_iterator fiter = f.calls.begin(); fiter!=f.calls.end(); ++fiter)
{ {
XFuncMap::const_iterator n = functions.find(fiter->function); XFuncMap::const_iterator n = functions.find(fiter->function);
if (n != functions.end()) if (n != functions.end())
@ -180,7 +180,7 @@ void PPCSymbolDB::PrintCallers(u32 funcAddr) const
{ {
const Symbol &f = iter->second; const Symbol &f = iter->second;
INFO_LOG(CONSOLE,"The function %s at %08x is called by:",f.name.c_str(),f.address); INFO_LOG(CONSOLE,"The function %s at %08x is called by:",f.name.c_str(),f.address);
for (std::vector<SCall>::const_iterator fiter = f.callers.begin(); fiter != f.callers.end(); fiter++) for (std::vector<SCall>::const_iterator fiter = f.callers.begin(); fiter != f.callers.end(); ++fiter)
{ {
XFuncMap::const_iterator n = functions.find(fiter->function); XFuncMap::const_iterator n = functions.find(fiter->function);
if (n != functions.end()) if (n != functions.end())
@ -306,7 +306,7 @@ bool PPCSymbolDB::SaveMap(const char *filename, bool WithCodes) const
{ {
fprintf(f,"%08x %08x %08x %i %s\n", rSymbol.address, rSymbol.size, rSymbol.address, fprintf(f,"%08x %08x %08x %i %s\n", rSymbol.address, rSymbol.size, rSymbol.address,
0, rSymbol.name.c_str()); 0, rSymbol.name.c_str());
itr++; ++itr;
} }
// Save a code file // Save a code file
@ -315,7 +315,7 @@ bool PPCSymbolDB::SaveMap(const char *filename, bool WithCodes) const
// Get the current and next address // Get the current and next address
LastAddress = rSymbol.address; LastAddress = rSymbol.address;
LastSymbolName = rSymbol.name; LastSymbolName = rSymbol.name;
itr++; ++itr;
/* To make nice straight lines we fill out the name with spaces, we also cut off /* To make nice straight lines we fill out the name with spaces, we also cut off
all names longer than 25 letters */ all names longer than 25 letters */

View File

@ -68,7 +68,7 @@ bool SignatureDB::Save(const char *filename)
} }
int fcount = (int)database.size(); int fcount = (int)database.size();
fwrite(&fcount, 4, 1, f); fwrite(&fcount, 4, 1, f);
for (FuncDB::const_iterator iter = database.begin(); iter != database.end(); iter++) for (FuncDB::const_iterator iter = database.begin(); iter != database.end(); ++iter)
{ {
FuncDesc temp; FuncDesc temp;
memset(&temp, 0, sizeof(temp)); memset(&temp, 0, sizeof(temp));
@ -99,7 +99,7 @@ u32 SignatureDB::Add(u32 startAddr, u32 size, const char *name)
void SignatureDB::List() void SignatureDB::List()
{ {
for (FuncDB::iterator iter = database.begin(); iter != database.end(); iter++) for (FuncDB::iterator iter = database.begin(); iter != database.end(); ++iter)
{ {
INFO_LOG(HLE,"%s : %i bytes, hash = %08x",iter->second.name.c_str(), iter->second.size, iter->first); INFO_LOG(HLE,"%s : %i bytes, hash = %08x",iter->second.name.c_str(), iter->second.size, iter->first);
} }
@ -113,7 +113,7 @@ void SignatureDB::Clear()
void SignatureDB::Apply(PPCSymbolDB *symbol_db) void SignatureDB::Apply(PPCSymbolDB *symbol_db)
{ {
for (FuncDB::const_iterator iter = database.begin(); iter != database.end(); iter++) for (FuncDB::const_iterator iter = database.begin(); iter != database.end(); ++iter)
{ {
u32 hash = iter->first; u32 hash = iter->first;
Symbol *function = symbol_db->GetSymbolFromHash(hash); Symbol *function = symbol_db->GetSymbolFromHash(hash);
@ -138,7 +138,7 @@ void SignatureDB::Apply(PPCSymbolDB *symbol_db)
void SignatureDB::Initialize(PPCSymbolDB *symbol_db, const char *prefix) void SignatureDB::Initialize(PPCSymbolDB *symbol_db, const char *prefix)
{ {
std::string prefix_str(prefix); std::string prefix_str(prefix);
for (PPCSymbolDB::XFuncMap::const_iterator iter = symbol_db->GetConstIterator(); iter != symbol_db->End(); iter++) for (PPCSymbolDB::XFuncMap::const_iterator iter = symbol_db->GetConstIterator(); iter != symbol_db->End(); ++iter)
{ {
if ((iter->second.name.substr(0, prefix_str.size()) == prefix_str) || prefix_str.empty()) if ((iter->second.name.substr(0, prefix_str.size()) == prefix_str) || prefix_str.empty())
{ {

View File

@ -383,7 +383,7 @@ void CCodeWindow::NotifyMapLoaded()
//symbols->Show(false); // hide it for faster filling //symbols->Show(false); // hide it for faster filling
symbols->Freeze(); // HyperIris: wx style fast filling symbols->Freeze(); // HyperIris: wx style fast filling
symbols->Clear(); symbols->Clear();
for (PPCSymbolDB::XFuncMap::iterator iter = g_symbolDB.GetIterator(); iter != g_symbolDB.End(); iter++) for (PPCSymbolDB::XFuncMap::iterator iter = g_symbolDB.GetIterator(); iter != g_symbolDB.End(); ++iter)
{ {
int idx = symbols->Append(wxString::FromAscii(iter->second.name.c_str())); int idx = symbols->Append(wxString::FromAscii(iter->second.name.c_str()));
symbols->SetClientData(idx, (void*)&iter->second); symbols->SetClientData(idx, (void*)&iter->second);

View File

@ -357,7 +357,7 @@ CNANDContentManager::~CNANDContentManager()
while (itr != m_Map.end()) while (itr != m_Map.end())
{ {
delete itr->second; delete itr->second;
itr++; ++itr;
} }
m_Map.clear(); m_Map.clear();
} }

View File

@ -155,7 +155,7 @@ void CPatchAddEdit::AddRemoveEntry(wxCommandEvent& event)
SaveEntryData(itCurEntry); SaveEntryData(itCurEntry);
PatchEngine::PatchEntry peEmptyEntry(PatchEngine::PATCH_8BIT, 0x00000000, 0x00000000); PatchEngine::PatchEntry peEmptyEntry(PatchEngine::PATCH_8BIT, 0x00000000, 0x00000000);
itCurEntry++; ++itCurEntry;
currentItem++; currentItem++;
itCurEntry = tempEntries.insert(itCurEntry, peEmptyEntry); itCurEntry = tempEntries.insert(itCurEntry, peEmptyEntry);
@ -172,7 +172,7 @@ void CPatchAddEdit::AddRemoveEntry(wxCommandEvent& event)
if (itCurEntry != tempEntries.begin()) if (itCurEntry != tempEntries.begin())
{ {
itCurEntry--; --itCurEntry;
currentItem--; currentItem--;
} }
else else

View File

@ -142,12 +142,6 @@ struct TargetRectangle : public MathUtil::Rectangle<int>
#define LOG_VTX() #define LOG_VTX()
#ifdef _WIN32
#define ERASE_THROUGH_ITERATOR(container, iterator) iterator = container.erase(iterator)
#else
#define ERASE_THROUGH_ITERATOR(container, iterator) container.erase(iterator++)
#endif
bool IsD3D(); bool IsD3D();
#endif // _VIDEOCOMMON_H #endif // _VIDEOCOMMON_H

View File

@ -75,7 +75,7 @@ Symbol *DSPSymbolDB::GetSymbolFromAddr(u32 addr)
return &it->second; return &it->second;
else else
{ {
for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); iter++) for (XFuncMap::iterator iter = functions.begin(); iter != functions.end(); ++iter)
{ {
if (addr >= iter->second.address && addr < iter->second.address + iter->second.size) if (addr >= iter->second.address && addr < iter->second.address + iter->second.size)
return &iter->second; return &iter->second;

View File

@ -207,7 +207,7 @@ void DSPDebuggerLLE::UpdateSymbolMap()
m_SymbolList->Freeze(); // HyperIris: wx style fast filling m_SymbolList->Freeze(); // HyperIris: wx style fast filling
m_SymbolList->Clear(); m_SymbolList->Clear();
for (SymbolDB::XFuncMap::iterator iter = DSPSymbols::g_dsp_symbol_db.GetIterator(); for (SymbolDB::XFuncMap::iterator iter = DSPSymbols::g_dsp_symbol_db.GetIterator();
iter != DSPSymbols::g_dsp_symbol_db.End(); iter++) iter != DSPSymbols::g_dsp_symbol_db.End(); ++iter)
{ {
int idx = m_SymbolList->Append(wxString::FromAscii(iter->second.name.c_str())); int idx = m_SymbolList->Append(wxString::FromAscii(iter->second.name.c_str()));
m_SymbolList->SetClientData(idx, (void*)&iter->second); m_SymbolList->SetClientData(idx, (void*)&iter->second);

View File

@ -261,7 +261,7 @@ void FramebufferManager::replaceVirtualXFB()
s32 srcUpper = it->xfbAddr + 2 * it->xfbWidth * it->xfbHeight; s32 srcUpper = it->xfbAddr + 2 * it->xfbWidth * it->xfbHeight;
s32 lineSize = 2 * it->xfbWidth; s32 lineSize = 2 * it->xfbWidth;
it++; ++it;
while (it != m_virtualXFBList.end()) while (it != m_virtualXFBList.end())
{ {
@ -291,7 +291,7 @@ void FramebufferManager::replaceVirtualXFB()
} }
} }
it++; ++it;
} }
} }
@ -319,7 +319,7 @@ void FramebufferManager::copyToVirtualXFB(u32 xfbAddr, u32 fbWidth, u32 fbHeight
if (it == m_virtualXFBList.end() && (int)m_virtualXFBList.size() >= MAX_VIRTUAL_XFB) if (it == m_virtualXFBList.end() && (int)m_virtualXFBList.size() >= MAX_VIRTUAL_XFB)
{ {
// replace the last virtual XFB // replace the last virtual XFB
it--; --it;
} }
float SuperSampleCompensation = 1.0f; float SuperSampleCompensation = 1.0f;
@ -505,11 +505,9 @@ const XFBSource** FramebufferManager::getVirtualXFBSource(u32 xfbAddr, u32 fbWid
u32 srcLower = xfbAddr; u32 srcLower = xfbAddr;
u32 srcUpper = xfbAddr + 2 * fbWidth * fbHeight; u32 srcUpper = xfbAddr + 2 * fbWidth * fbHeight;
VirtualXFBListType::iterator it; VirtualXFBListType::reverse_iterator it;
for (it = m_virtualXFBList.end(); it != m_virtualXFBList.begin();) for (it = m_virtualXFBList.rbegin(); it != m_virtualXFBList.rend(); ++it)
{ {
--it;
u32 dstLower = it->xfbAddr; u32 dstLower = it->xfbAddr;
u32 dstUpper = it->xfbAddr + 2 * it->xfbWidth * it->xfbHeight; u32 dstUpper = it->xfbAddr + 2 * it->xfbWidth * it->xfbHeight;

View File

@ -314,7 +314,7 @@ void PixelShaderCache::Init()
void PixelShaderCache::Clear() void PixelShaderCache::Clear()
{ {
PSCache::iterator iter = PixelShaders.begin(); PSCache::iterator iter = PixelShaders.begin();
for (; iter != PixelShaders.end(); iter++) for (; iter != PixelShaders.end(); ++iter)
iter->second.Destroy(); iter->second.Destroy();
PixelShaders.clear(); PixelShaders.clear();

View File

@ -72,7 +72,7 @@ void TextureCache::Init()
void TextureCache::Invalidate(bool shutdown) void TextureCache::Invalidate(bool shutdown)
{ {
for (TexCache::iterator iter = textures.begin(); iter != textures.end(); iter++) for (TexCache::iterator iter = textures.begin(); iter != textures.end(); ++iter)
iter->second.Destroy(shutdown); iter->second.Destroy(shutdown);
textures.clear(); textures.clear();
HiresTextures::Shutdown(); HiresTextures::Shutdown();
@ -86,7 +86,7 @@ void TextureCache::InvalidateRange(u32 start_address, u32 size)
if (iter->second.IntersectsMemoryRange(start_address, size)) if (iter->second.IntersectsMemoryRange(start_address, size))
{ {
iter->second.Destroy(false); iter->second.Destroy(false);
ERASE_THROUGH_ITERATOR(textures, iter); textures.erase(iter++);
} }
else { else {
++iter; ++iter;
@ -131,7 +131,7 @@ void TextureCache::Cleanup()
} }
else else
{ {
iter++; ++iter;
} }
} }
} }

View File

@ -13,7 +13,7 @@ void DialogManager::AddDlg(HWND hDialog)
bool DialogManager::IsDialogMessage(LPMSG message) bool DialogManager::IsDialogMessage(LPMSG message)
{ {
WindowList::iterator iter; WindowList::iterator iter;
for (iter=dialogs.begin(); iter!=dialogs.end(); iter++) for (iter=dialogs.begin(); iter!=dialogs.end(); ++iter)
{ {
if (::IsDialogMessage(*iter,message)) if (::IsDialogMessage(*iter,message))
return true; return true;
@ -24,6 +24,6 @@ bool DialogManager::IsDialogMessage(LPMSG message)
void DialogManager::EnableAll(BOOL enable) void DialogManager::EnableAll(BOOL enable)
{ {
WindowList::iterator iter; WindowList::iterator iter;
for (iter=dialogs.begin(); iter!=dialogs.end(); iter++) for (iter=dialogs.begin(); iter!=dialogs.end(); ++iter)
EnableWindow(*iter,enable); EnableWindow(*iter,enable);
} }

View File

@ -70,7 +70,7 @@ namespace W32Util
page.hInstance = hInstance; page.hInstance = hInstance;
int i=0; int i=0;
for (DlgList::iterator iter = list.begin(); iter != list.end(); iter++, i++) for (DlgList::iterator iter = list.begin(); iter != list.end(); ++iter, ++i)
{ {
if (wizard) if (wizard)
{ {
@ -146,7 +146,7 @@ namespace W32Util
PropertySheet(&sheet); PropertySheet(&sheet);
if (!floating) if (!floating)
{ {
for (DlgList::iterator iter = list.begin(); iter != list.end(); iter++) for (DlgList::iterator iter = list.begin(); iter != list.end(); ++iter)
{ {
delete iter->tab; delete iter->tab;
} }

View File

@ -471,14 +471,10 @@ void ProgressiveCleanup()
int limit = iter->second.uncachable ? 1200 : 400; int limit = iter->second.uncachable ? 1200 : 400;
if (entry.frame_count < frameCount - limit) { if (entry.frame_count < frameCount - limit) {
// entry.Destroy(); // entry.Destroy();
#ifdef _WIN32
iter = dl_map.erase(iter);
#else
dl_map.erase(iter++); // (this is gcc standard!) dl_map.erase(iter++); // (this is gcc standard!)
#endif
} }
else else
iter++; ++iter;
} }
} }

View File

@ -302,7 +302,7 @@ void FramebufferManager::replaceVirtualXFB()
s32 srcUpper = it->xfbAddr + 2 * it->xfbWidth * it->xfbHeight; s32 srcUpper = it->xfbAddr + 2 * it->xfbWidth * it->xfbHeight;
s32 lineSize = 2 * it->xfbWidth; s32 lineSize = 2 * it->xfbWidth;
it++; ++it;
while (it != m_virtualXFBList.end()) while (it != m_virtualXFBList.end())
{ {
@ -332,7 +332,7 @@ void FramebufferManager::replaceVirtualXFB()
} }
} }
it++; ++it;
} }
} }
@ -357,7 +357,7 @@ void FramebufferManager::copyToVirtualXFB(u32 xfbAddr, u32 fbWidth, u32 fbHeight
if (it == m_virtualXFBList.end() && (int)m_virtualXFBList.size() >= MAX_VIRTUAL_XFB) if (it == m_virtualXFBList.end() && (int)m_virtualXFBList.size() >= MAX_VIRTUAL_XFB)
{ {
// replace the last virtual XFB // replace the last virtual XFB
it--; --it;
} }
if (it != m_virtualXFBList.end()) if (it != m_virtualXFBList.end())
@ -524,11 +524,9 @@ const XFBSource** FramebufferManager::getVirtualXFBSource(u32 xfbAddr, u32 fbWid
u32 srcLower = xfbAddr; u32 srcLower = xfbAddr;
u32 srcUpper = xfbAddr + 2 * fbWidth * fbHeight; u32 srcUpper = xfbAddr + 2 * fbWidth * fbHeight;
VirtualXFBListType::iterator it; VirtualXFBListType::reverse_iterator it;
for (it = m_virtualXFBList.end(); it != m_virtualXFBList.begin();) for (it = m_virtualXFBList.rbegin(); it != m_virtualXFBList.rend(); ++it)
{ {
--it;
u32 dstLower = it->xfbAddr; u32 dstLower = it->xfbAddr;
u32 dstUpper = it->xfbAddr + 2 * it->xfbWidth * it->xfbHeight; u32 dstUpper = it->xfbAddr + 2 * it->xfbWidth * it->xfbHeight;

View File

@ -160,7 +160,7 @@ void PixelShaderCache::Shutdown()
glDeleteProgramsARB(1, &s_DepthMatrixProgram); glDeleteProgramsARB(1, &s_DepthMatrixProgram);
s_DepthMatrixProgram = 0; s_DepthMatrixProgram = 0;
PSCache::iterator iter = pshaders.begin(); PSCache::iterator iter = pshaders.begin();
for (; iter != pshaders.end(); iter++) for (; iter != pshaders.end(); ++iter)
iter->second.Destroy(); iter->second.Destroy();
pshaders.clear(); pshaders.clear();
} }

View File

@ -199,15 +199,15 @@ void TextureMngr::ProgressiveCleanup()
{ {
if (!iter->second.isRenderTarget) { if (!iter->second.isRenderTarget) {
iter->second.Destroy(false); iter->second.Destroy(false);
ERASE_THROUGH_ITERATOR(textures, iter); textures.erase(iter++);
} }
else { else {
iter->second.Destroy(false); iter->second.Destroy(false);
ERASE_THROUGH_ITERATOR(textures, iter); textures.erase(iter++);
} }
} }
else else
iter++; ++iter;
} }
} }
@ -219,7 +219,7 @@ void TextureMngr::InvalidateRange(u32 start_address, u32 size)
if (iter->second.IntersectsMemoryRange(start_address, size)) if (iter->second.IntersectsMemoryRange(start_address, size))
{ {
iter->second.Destroy(false); iter->second.Destroy(false);
ERASE_THROUGH_ITERATOR(textures, iter); textures.erase(iter++);
} }
else { else {
++iter; ++iter;
@ -820,6 +820,6 @@ void TextureMngr::DisableStage(int stage)
void TextureMngr::ClearRenderTargets() void TextureMngr::ClearRenderTargets()
{ {
for (TexCache::iterator iter = textures.begin(); iter != textures.end(); iter++) for (TexCache::iterator iter = textures.begin(); iter != textures.end(); ++iter)
iter->second.isRenderTarget = false; iter->second.isRenderTarget = false;
} }

View File

@ -116,7 +116,7 @@ void VertexShaderCache::Init()
void VertexShaderCache::Shutdown() void VertexShaderCache::Shutdown()
{ {
for (VSCache::iterator iter = vshaders.begin(); iter != vshaders.end(); iter++) for (VSCache::iterator iter = vshaders.begin(); iter != vshaders.end(); ++iter)
iter->second.Destroy(); iter->second.Destroy();
vshaders.clear(); vshaders.clear();
} }