GUI: do not close the mainwindow before the debugger has finished
This commit is contained in:
parent
d128ead3b5
commit
71ac393668
|
|
@ -132,7 +132,6 @@ BRIDGE_IMPEXP const char* BridgeStart()
|
|||
if(!_dbg_dbginit || !_gui_guiinit)
|
||||
return "\"_dbg_dbginit\" || \"_gui_guiinit\" was not loaded yet, call BridgeInit!";
|
||||
_gui_guiinit(0, 0); //remove arguments
|
||||
_dbg_dbgexitsignal(); //send exit signal to debugger
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -360,6 +359,11 @@ BRIDGE_IMPEXP const char* DbgInit()
|
|||
return _dbg_dbginit();
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP void DbgExit()
|
||||
{
|
||||
_dbg_dbgexitsignal(); //send exit signal to debugger
|
||||
}
|
||||
|
||||
BRIDGE_IMPEXP BPXTYPE DbgGetBpxTypeAt(duint addr)
|
||||
{
|
||||
return _dbg_bpgettypeat(addr);
|
||||
|
|
|
|||
|
|
@ -473,6 +473,7 @@ struct FUNCTION_LOOP_INFO
|
|||
|
||||
//Debugger functions
|
||||
BRIDGE_IMPEXP const char* DbgInit();
|
||||
BRIDGE_IMPEXP void DbgExit();
|
||||
BRIDGE_IMPEXP bool DbgMemRead(duint va, unsigned char* dest, duint size);
|
||||
BRIDGE_IMPEXP bool DbgMemWrite(duint va, const unsigned char* src, duint size);
|
||||
BRIDGE_IMPEXP duint DbgMemGetPageSize(duint base);
|
||||
|
|
|
|||
|
|
@ -153,6 +153,30 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
|
|||
|
||||
//setup menu api
|
||||
initMenuApi();
|
||||
|
||||
bClose=false;
|
||||
}
|
||||
|
||||
DWORD WINAPI MainWindow::closeThread(void* ptr)
|
||||
{
|
||||
static bool closing=false;
|
||||
if(closing)
|
||||
return 0;
|
||||
closing=true;
|
||||
DbgExit();
|
||||
MainWindow* mainWindow=(MainWindow*)ptr;
|
||||
mainWindow->bClose=true;
|
||||
mainWindow->close();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void MainWindow::closeEvent(QCloseEvent* event)
|
||||
{
|
||||
CloseHandle(CreateThread(0, 0, closeThread, this, 0, 0));
|
||||
if(bClose)
|
||||
event->accept();
|
||||
else
|
||||
event->ignore();
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
|
|
|
|||
|
|
@ -34,7 +34,10 @@ class MainWindow : public QMainWindow
|
|||
public:
|
||||
explicit MainWindow(QWidget *parent = 0);
|
||||
~MainWindow();
|
||||
static DWORD WINAPI closeThread(void* ptr);
|
||||
void closeEvent(QCloseEvent* event);
|
||||
void setTab(QWidget* widget);
|
||||
bool bClose;
|
||||
|
||||
public slots:
|
||||
void executeCommand();
|
||||
|
|
|
|||
Loading…
Reference in New Issue