]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - client/proxguiqt.cpp
Fix memory bounds error
[proxmark3-svn] / client / proxguiqt.cpp
index 506b8138c9002a486d8a97694af02b80fd28d670..dc8279b52ec340596c6420deb94634c561bd7457 100644 (file)
@@ -85,6 +85,17 @@ void ProxGuiQT::_Exit(void) {
        delete this;
 }
 
+void ProxGuiQT::_StartProxmarkThread(void) {
+       if (!proxmarkThread)
+               return;
+
+       // if thread finished delete self and delete application
+       QObject::connect(proxmarkThread, SIGNAL(finished()), proxmarkThread, SLOT(deleteLater()));
+       QObject::connect(proxmarkThread, SIGNAL(finished()), this, SLOT(_Exit()));
+       // start proxmark thread
+       proxmarkThread->start();
+}
+
 void ProxGuiQT::MainLoop()
 {
        plotapp = new QApplication(argc, argv);
@@ -94,11 +105,14 @@ void ProxGuiQT::MainLoop()
        connect(this, SIGNAL(HideGraphWindowSignal()), this, SLOT(_HideGraphWindow()));
        connect(this, SIGNAL(ExitSignal()), this, SLOT(_Exit()));
 
+       //start proxmark thread after starting event loop
+       QTimer::singleShot(200, this, SLOT(_StartProxmarkThread()));
+
        plotapp->exec();
 }
 
-ProxGuiQT::ProxGuiQT(int argc, char **argv) : plotapp(NULL), plotwidget(NULL),
-       argc(argc), argv(argv)
+ProxGuiQT::ProxGuiQT(int argc, char **argv, WorkerThread *wthread) : plotapp(NULL), plotwidget(NULL),
+       argc(argc), argv(argv), proxmarkThread(wthread)
 {
 }
 
Impressum, Datenschutz