QTfrontend/hwmap.cpp
changeset 171 7acf6c70ea5f
parent 170 ef1031ba44fc
child 172 5294ada3910b
equal deleted inserted replaced
170:ef1031ba44fc 171:7acf6c70ea5f
     7 #include <QMutex>
     7 #include <QMutex>
     8 
     8 
     9 #include <QList>
     9 #include <QList>
    10 
    10 
    11 QList<HWMap*> srvsList;
    11 QList<HWMap*> srvsList;
    12 QMutex tcpSrvMut;
       
    13 
    12 
    14 HWMap::HWMap() :
    13 HWMap::HWMap() :
    15   m_isStarted(false)
    14   m_isStarted(false)
    16 {
    15 {
    17   IPCServer = new QTcpServer(this);
    16   IPCServer = new QTcpServer(this);
    33 {
    32 {
    34   QImage im((uchar*)(const char*)readbuffer, 256, 128, QImage::Format_Mono);
    33   QImage im((uchar*)(const char*)readbuffer, 256, 128, QImage::Format_Mono);
    35   im.setNumColors(2);
    34   im.setNumColors(2);
    36 
    35 
    37   IPCSocket->close();
    36   IPCSocket->close();
    38   //IPCSocket->deleteLater();
       
    39   //IPCSocket = 0;
       
    40   IPCServer->close();
    37   IPCServer->close();
    41   //deleteLater();
       
    42 
       
    43 
    38 
    44   emit ImageReceived(im);
    39   emit ImageReceived(im);
    45   readbuffer.clear();
    40   readbuffer.clear();
    46   if(srvsList.size()==1) srvsList.pop_front();
    41   if(srvsList.size()==1) srvsList.pop_front();
    47   emit isReadyNow();
    42   emit isReadyNow();
    84 			.arg(error) + bindir->absolutePath() + "/hwengine)");
    79 			.arg(error) + bindir->absolutePath() + "/hwengine)");
    85 }
    80 }
    86 
    81 
    87 void HWMap::tcpServerReady()
    82 void HWMap::tcpServerReady()
    88 {
    83 {
    89   tcpSrvMut.lock();
       
    90   disconnect(srvsList.front(), SIGNAL(isReadyNow()), *(++srvsList.begin()), SLOT(tcpServerReady()));
    84   disconnect(srvsList.front(), SIGNAL(isReadyNow()), *(++srvsList.begin()), SLOT(tcpServerReady()));
    91   srvsList.pop_front();
    85   srvsList.pop_front();
    92   tcpSrvMut.unlock();
       
    93 
    86 
    94   RealStart();
    87   RealStart();
    95 }
    88 }
    96 
    89 
    97 void HWMap::Start()
    90 void HWMap::Start()
    98 {
    91 {
    99   tcpSrvMut.lock();
       
   100   if(srvsList.isEmpty()) {
    92   if(srvsList.isEmpty()) {
   101     srvsList.push_back(this);
    93     srvsList.push_back(this);
   102     tcpSrvMut.unlock();
       
   103   } else {
    94   } else {
   104     connect(srvsList.back(), SIGNAL(isReadyNow()), this, SLOT(tcpServerReady()));
    95     connect(srvsList.back(), SIGNAL(isReadyNow()), this, SLOT(tcpServerReady()));
   105     srvsList.push_back(this);
    96     srvsList.push_back(this);
   106     tcpSrvMut.unlock();
       
   107     return;
    97     return;
   108   }
    98   }
   109   
    99   
   110   RealStart();
   100   RealStart();
   111 }
   101 }