##// END OF EJS Templates
Removed crash on spwplugin while closing the manager thread didn't quit correctly.
Alexis Jeandet -
r82:f085b545eb20 socexplorer-plugins-0.7-2 default draft
parent child
Show More
@@ -1,8 +1,8
1 %global upstream_name socexplorer-plugins-0.7-0
1 %global upstream_name socexplorer-plugins-0.7-2
2 2
3 3 Name: socexplorer-plugins
4 4 Version: 0.7
5 Release: 0%{?dist}
5 Release: 2%{?dist}
6 6 Summary: Base plugins for SocExplorer.
7 7 Group: Development/Tools
8 8 License: GPLv2
@@ -65,6 +65,12 make install INSTALL_ROOT=%{buildroot}
65 65 %{_qt5_libdir}/SocExplorer/plugins/libspwplugin.so*
66 66
67 67 %changelog
68 * Fri May 13 2016 Alexis Jeandet <alexis.jeandet@member.fsf.org> - 0.7-2
69 - Fixed another segfault on SpwPlugin.
70
71 * Thu Apr 21 2016 Alexis Jeandet <alexis.jeandet@member.fsf.org> - 0.7-1
72 - Fixed segfault on SpwPlugin.
73
68 74 * Wed Apr 20 2016 Alexis Jeandet <alexis.jeandet@member.fsf.org> - 0.7-0
69 75 - Updated to SocExplorer 0.7, some work on spwplugin merged.
70 76
@@ -49,8 +49,7 stardundeeSPW_USB::stardundeeSPW_USB(soc
49 49
50 50 stardundeeSPW_USB::~stardundeeSPW_USB()
51 51 {
52 this->manager->requestInterruption();
53 while(this->manager->isRunning());
52
54 53 }
55 54
56 55 void stardundeeSPW_USB::toggleBridgeConnection()
@@ -411,6 +410,9 stardundeeSPW_USB_Manager::stardundeeSPW
411 410
412 411 stardundeeSPW_USB_Manager::~stardundeeSPW_USB_Manager()
413 412 {
413 if(this->connected)disconnectBridge();
414 this->requestInterruption();
415 while(!this->isFinished());
414 416 }
415 417
416 418 void stardundeeSPW_USB_Manager::run()
@@ -420,7 +422,7 void stardundeeSPW_USB_Manager::run()
420 422 USB_SPACEWIRE_STATUS stat;
421 423 SocExplorerEngine::message(this->plugin,"Starting Startdundee USB pooling thread",1);
422 424 char buffer[(RMAP_MAX_XFER_SIZE*4)+50];
423 while (!this->isInterruptionRequested())
425 while (!QThread::currentThread()->isInterruptionRequested())
424 426 {
425 427 if(this->connected)
426 428 {
@@ -913,6 +915,7 bool stardundeeSPW_USB_Manager::disconne
913 915 this->RMAP_Answers.clear();
914 916 this->RMAP_AnswersMtx->unlock();
915 917 this->RMAP_AnswersSem->acquire(this->RMAP_AnswersSem->available());
918 this->connected=false;
916 919 return true;
917 920 }
918 921
@@ -47,8 +47,8 class stardundeeSPW_USB_Manager: public
47 47 public:
48 48 explicit stardundeeSPW_USB_Manager(socexplorerplugin *plugin = 0,QObject* parent=0);
49 49 ~stardundeeSPW_USB_Manager();
50 void run();
51 bool connectBridge();
50 virtual void run();
51 virtual bool connectBridge();
52 52 bool connectBridgeAsInterface();
53 53 bool connectBridgeAsRouter();
54 54 void initDialog( void );
@@ -57,8 +57,8 public:
57 57 void initializeTimecodeGeneration();
58 58 void setTimecodeFrequency(double requestedFrequency);
59 59 unsigned int getLinkStatus(unsigned char link);
60 bool disconnectBridge();
61 bool sendPacket(char* packet,int size);
60 virtual bool disconnectBridge();
61 virtual bool sendPacket(char* packet,int size);
62 62
63 63 signals:
64 64 void updateAvailableBrickCount(int count);
@@ -73,11 +73,8 abstractSpwManager::abstractSpwManager(s
73 73
74 74 abstractSpwManager::~abstractSpwManager()
75 75 {
76 this->terminate();
77 while (!this->isFinished())
78 {
79 this->usleep(1000);
80 }
76 this->requestInterruption();
77 while(!this->isFinished());
81 78 }
82 79
83 80 int abstractSpwManager::getRMAPtransactionID()
@@ -74,7 +74,7 class abstractSpwManager: public QThread
74 74 public:
75 75 explicit abstractSpwManager(socexplorerplugin *plugin = 0,QObject* parent=0);
76 76 ~abstractSpwManager();
77 virtual void run(){}
77 virtual void run(){};
78 78 virtual bool connectBridge()=0;
79 79 virtual bool disconnectBridge()=0;
80 80 int getRMAPtransactionID();
@@ -31,7 +31,7 spwplugin::spwplugin(QWidget *parent):so
31 31 {
32 32 Q_UNUSED(parent)
33 33 FakeStarDundeeSpwUSB_Lib::resolve();
34 this->bridge = NULL;
34 this->bridge = Q_NULLPTR;
35 35 this->scanDone = false;
36 36 // this->pyObject = new spwPyWrapper(this);
37 37 this->tcpServer = new SpwTcpPacketServer(this);
@@ -58,7 +58,8 spwplugin::spwplugin(QWidget *parent):so
58 58
59 59 spwplugin::~spwplugin()
60 60 {
61
61 if(this->bridge!=Q_NULLPTR)
62 delete this->bridge;
62 63 }
63 64
64 65
General Comments 0
You need to be logged in to leave comments. Login now