From 903e035a951a66e88e186174cc775b4699909663 Mon Sep 17 00:00:00 2001 From: harry Date: Tue, 14 Feb 2023 20:33:46 -0500 Subject: [PATCH] For Qt GUI added code to warn user that symbol table will be wiped when importing ld65 dbg files. Added code to clear and redraw debugger window data after importing new symbols. --- src/debugsymboltable.cpp | 12 ++++++++++++ src/debugsymboltable.h | 7 +++---- src/drivers/Qt/ConsoleDebugger.cpp | 19 +++++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/debugsymboltable.cpp b/src/debugsymboltable.cpp index b60689ca..60089fcd 100644 --- a/src/debugsymboltable.cpp +++ b/src/debugsymboltable.cpp @@ -386,6 +386,18 @@ void debugSymbolTable_t::clear(void) pageMap.clear(); } //-------------------------------------------------------------- +int debugSymbolTable_t::numSymbols(void) +{ + int n = 0; + FCEU::autoScopedLock alock(cs); + + for (auto it=pageMap.begin(); it!=pageMap.end(); it++) + { + n += it->second->size(); + } + return n; +} +//-------------------------------------------------------------- static int generateNLFilenameForBank(int bank, std::string &NLfilename) { int i; diff --git a/src/debugsymboltable.h b/src/debugsymboltable.h index dbe3052b..8e07049a 100644 --- a/src/debugsymboltable.h +++ b/src/debugsymboltable.h @@ -92,7 +92,7 @@ class debugSymbolPage_t int save(void); void print(void); - int size(void){ return symMap.size(); } + int size(void){ return static_cast(symMap.size()); } int addSymbol( debugSymbol_t *sym ); @@ -131,8 +131,10 @@ class debugSymbolTable_t ~debugSymbolTable_t(void); int loadFileNL( int addr ); + int loadRegisterMap(void); int loadGameSymbols(void); int numPages(void){ return pageMap.size(); } + int numSymbols(void); void save(void); void clear(void); @@ -161,9 +163,6 @@ class debugSymbolTable_t private: std::map pageMap; FCEU::mutex *cs; - - int loadRegisterMap(void); - }; extern debugSymbolTable_t debugSymbolTable; diff --git a/src/drivers/Qt/ConsoleDebugger.cpp b/src/drivers/Qt/ConsoleDebugger.cpp index 28ccc83f..4b9ae9f0 100644 --- a/src/drivers/Qt/ConsoleDebugger.cpp +++ b/src/drivers/Qt/ConsoleDebugger.cpp @@ -336,8 +336,27 @@ void ConsoleDebugger::ld65ImportDebug(void) } //qDebug() << "selected file path : " << filename.toUtf8(); + if (debugSymbolTable.numSymbols() > 0) + { + QString msg = tr("Do you wish to clear the existing symbol table and replace with the data contained in the selected file?\n\n") + filename; + + ret = QMessageBox::warning( this, tr("Symbol Table Clear Warning"), msg, + QMessageBox::Yes | QMessageBox::No ); + + if ( ret == QMessageBox::No ) + { + //printf("Aborting dbg file load.\n"); + return; + } + } + debugSymbolTable.clear(); + + debugSymbolTable.loadRegisterMap(); + debugSymbolTable.ld65LoadDebugFile( filename.toStdString().c_str() ); + queueUpdate(); + return; } //----------------------------------------------------------------------------