]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/proxguiqt.cpp
Complete WTX handling
[proxmark3-svn] / client / proxguiqt.cpp
index 3805411d226e388493e3418fcba8d41a03c71b60..dc8279b52ec340596c6420deb94634c561bd7457 100644 (file)
@@ -84,6 +84,18 @@ void ProxGuiQT::_HideGraphWindow(void)
 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);
@@ -93,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)
 {
 }
 
@@ -110,7 +125,7 @@ ProxGuiQT::~ProxGuiQT(void)
        //}
        if (plotapp) {
                plotapp->quit();
-               delete plotapp;
+               // delete plotapp;
                plotapp = NULL;
        }
 }
Impressum, Datenschutz