allow dumping of all symbols to a signature file
*hopefully* fix the memleak when scrubbing wii discs. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4588 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
1a374ad62c
commit
73af91281a
|
@ -64,9 +64,7 @@
|
||||||
#error needs at least version 1000 of MSC
|
#error needs at least version 1000 of MSC
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Memory leak check defines
|
// Memory leak checks
|
||||||
#define _CRTDBG_MAP_ALLOC
|
|
||||||
#define _CRTDBG_MAP_ALLOC_NEW
|
|
||||||
#define CHECK_HEAP_INTEGRITY()
|
#define CHECK_HEAP_INTEGRITY()
|
||||||
|
|
||||||
#define POSIX 0
|
#define POSIX 0
|
||||||
|
@ -102,6 +100,11 @@
|
||||||
#include <crtdbg.h>
|
#include <crtdbg.h>
|
||||||
#undef CHECK_HEAP_INTEGRITY
|
#undef CHECK_HEAP_INTEGRITY
|
||||||
#define CHECK_HEAP_INTEGRITY() {if (!_CrtCheckMemory()) PanicAlert("memory corruption detected. see log.");}
|
#define CHECK_HEAP_INTEGRITY() {if (!_CrtCheckMemory()) PanicAlert("memory corruption detected. see log.");}
|
||||||
|
// If you want to see how much a pain in the ass singletons are, for example:
|
||||||
|
// {614} normal block at 0x030C5310, 188 bytes long.
|
||||||
|
// Data: <Master Log > 4D 61 73 74 65 72 20 4C 6F 67 00 00 00 00 00 00
|
||||||
|
struct CrtDebugBreak { CrtDebugBreak(int spot) { _CrtSetBreakAlloc(spot); } };
|
||||||
|
//CrtDebugBreak breakAt(614);
|
||||||
#endif // end DEBUG/FAST
|
#endif // end DEBUG/FAST
|
||||||
|
|
||||||
#else // Not windows
|
#else // Not windows
|
||||||
|
|
|
@ -173,6 +173,7 @@ std::string StringFromFormat(const char* format, ...)
|
||||||
|
|
||||||
buf[writtenCount] = '\0';
|
buf[writtenCount] = '\0';
|
||||||
std::string temp = buf;
|
std::string temp = buf;
|
||||||
|
delete[] buf;
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -140,7 +140,7 @@ 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)
|
if ((iter->second.name.substr(0, prefix_str.size()) == prefix_str) || prefix_str.empty())
|
||||||
{
|
{
|
||||||
DBFunc temp_dbfunc;
|
DBFunc temp_dbfunc;
|
||||||
temp_dbfunc.name = iter->second.name;
|
temp_dbfunc.name = iter->second.name;
|
||||||
|
|
|
@ -334,34 +334,42 @@ void CCodeWindow::OnSymbolsMenu(wxCommandEvent& event)
|
||||||
|
|
||||||
case IDM_CREATESIGNATUREFILE:
|
case IDM_CREATESIGNATUREFILE:
|
||||||
{
|
{
|
||||||
wxTextEntryDialog input_prefix(this, wxString::FromAscii("Only export symbols with prefix:"), wxGetTextFromUserPromptStr, _T("."));
|
wxTextEntryDialog input_prefix(
|
||||||
if (input_prefix.ShowModal() == wxID_OK) {
|
this,
|
||||||
std::string prefix(input_prefix.GetValue().mb_str());
|
wxString::FromAscii("Only export symbols with prefix:\n(Blank for all symbols)"),
|
||||||
|
wxGetTextFromUserPromptStr,
|
||||||
|
wxEmptyString);
|
||||||
|
|
||||||
wxString path = wxFileSelector(
|
if (input_prefix.ShowModal() == wxID_OK)
|
||||||
|
{
|
||||||
|
std::string prefix(input_prefix.GetValue().mb_str());
|
||||||
|
|
||||||
|
wxString path = wxFileSelector(
|
||||||
_T("Save signature as"), wxEmptyString, wxEmptyString, wxEmptyString,
|
_T("Save signature as"), wxEmptyString, wxEmptyString, wxEmptyString,
|
||||||
_T("Dolphin Signature File (*.dsy)|*.dsy;"), wxFD_SAVE,
|
_T("Dolphin Signature File (*.dsy)|*.dsy;"), wxFD_SAVE,
|
||||||
this);
|
this);
|
||||||
if (! path.IsEmpty()) {
|
if (!path.IsEmpty())
|
||||||
SignatureDB db;
|
{
|
||||||
db.Initialize(&g_symbolDB, prefix.c_str());
|
SignatureDB db;
|
||||||
std::string filename(path.mb_str()); // PPCAnalyst::SaveSignatureDB(
|
db.Initialize(&g_symbolDB, prefix.c_str());
|
||||||
db.Save(path.mb_str());
|
std::string filename(path.mb_str());
|
||||||
|
db.Save(path.mb_str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case IDM_USESIGNATUREFILE:
|
case IDM_USESIGNATUREFILE:
|
||||||
{
|
{
|
||||||
wxString path = wxFileSelector(
|
wxString path = wxFileSelector(
|
||||||
_T("Apply signature file"), wxEmptyString, wxEmptyString, wxEmptyString,
|
_T("Apply signature file"), wxEmptyString, wxEmptyString, wxEmptyString,
|
||||||
_T("Dolphin Signature File (*.dsy)|*.dsy;"), wxFD_OPEN | wxFD_FILE_MUST_EXIST,
|
_T("Dolphin Signature File (*.dsy)|*.dsy;"), wxFD_OPEN | wxFD_FILE_MUST_EXIST,
|
||||||
this);
|
this);
|
||||||
if (! path.IsEmpty()) {
|
if (!path.IsEmpty())
|
||||||
SignatureDB db;
|
{
|
||||||
db.Load(path.mb_str());
|
SignatureDB db;
|
||||||
db.Apply(&g_symbolDB);
|
db.Load(path.mb_str());
|
||||||
}
|
db.Apply(&g_symbolDB);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
NotifyMapLoaded();
|
NotifyMapLoaded();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -959,11 +959,11 @@ void CGameListCtrl::OnInstallWAD(wxCommandEvent& WXUNUSED (event))
|
||||||
|
|
||||||
void CGameListCtrl::MultiCompressCB(const char* text, float percent, void* arg)
|
void CGameListCtrl::MultiCompressCB(const char* text, float percent, void* arg)
|
||||||
{
|
{
|
||||||
wxString textString(wxString::FromAscii(StringFromFormat("%s (%i/%i) - %s", m_currentFilename.c_str(), (int)m_currentItem+1, (int)m_numberItem, text).c_str()));
|
percent = (((float)m_currentItem) + percent) / (float)m_numberItem;
|
||||||
|
|
||||||
percent = (((float)m_currentItem) + percent) / (float)m_numberItem;
|
wxString textString(wxString::Format(wxT("%s (%i/%i) - %s"), m_currentFilename.c_str(), (int)m_currentItem+1, (int)m_numberItem, text));
|
||||||
wxProgressDialog* pDialog = (wxProgressDialog*)arg;
|
|
||||||
pDialog->Update((int)(percent*1000), textString);
|
((wxProgressDialog*)arg)->Update((int)(percent*1000), textString);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameListCtrl::OnMultiCompressGCM(wxCommandEvent& /*event*/)
|
void CGameListCtrl::OnMultiCompressGCM(wxCommandEvent& /*event*/)
|
||||||
|
@ -1037,8 +1037,7 @@ void CGameListCtrl::CompressSelection(bool _compress)
|
||||||
|
|
||||||
void CGameListCtrl::CompressCB(const char* text, float percent, void* arg)
|
void CGameListCtrl::CompressCB(const char* text, float percent, void* arg)
|
||||||
{
|
{
|
||||||
wxProgressDialog* pDialog = (wxProgressDialog*)arg;
|
((wxProgressDialog*)arg)->Update((int)(percent*1000), wxString::FromAscii(text));
|
||||||
pDialog->Update((int)(percent*1000), wxString::FromAscii(text));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameListCtrl::OnCompressGCM(wxCommandEvent& WXUNUSED (event))
|
void CGameListCtrl::OnCompressGCM(wxCommandEvent& WXUNUSED (event))
|
||||||
|
|
Loading…
Reference in New Issue