diff -r 533d03041dcd -r c67c15e6fae3 QTfrontend/hwmap.cpp --- a/QTfrontend/hwmap.cpp Thu Sep 28 16:34:42 2006 +0000 +++ b/QTfrontend/hwmap.cpp Sun Oct 01 20:14:30 2006 +0000 @@ -32,20 +32,9 @@ */ #include "hwmap.h" -#include "hwconsts.h" -#include -#include -#include - -QList srvsList; - -HWMap::HWMap() : - m_isStarted(false) +HWMap::HWMap() { - IPCServer = new QTcpServer(this); - connect(IPCServer, SIGNAL(newConnection()), this, SLOT(NewConnection())); - IPCServer->setMaxPendingConnections(1); } HWMap::~HWMap() @@ -58,23 +47,19 @@ Start(); } -void HWMap::ClientDisconnect() +QStringList HWMap::setArguments() +{ + QStringList arguments; + arguments << "46631"; + arguments << "landpreview"; + return arguments; +} + +void HWMap::onClientDisconnect() { QImage im((uchar*)(const char*)readbuffer, 256, 128, QImage::Format_Mono); im.setNumColors(2); - - IPCSocket->close(); - IPCServer->close(); - emit ImageReceived(im); - readbuffer.clear(); - if(srvsList.size()==1) srvsList.pop_front(); - emit isReadyNow(); -} - -void HWMap::ClientRead() -{ - readbuffer.append(IPCSocket->readAll()); } void HWMap::SendToClientFirst() @@ -86,64 +71,3 @@ IPCSocket->write("\x01!", 2); } - -void HWMap::NewConnection() -{ - QTcpSocket * client = IPCServer->nextPendingConnection(); - if(!IPCSocket) { - IPCServer->close(); - IPCSocket = client; - connect(client, SIGNAL(disconnected()), this, SLOT(ClientDisconnect())); - connect(client, SIGNAL(readyRead()), this, SLOT(ClientRead())); - SendToClientFirst(); - } else { - qWarning("2nd IPC client?!"); - client->disconnectFromHost(); - } -} - -void HWMap::StartProcessError(QProcess::ProcessError error) -{ - QMessageBox::critical(0, tr("Error"), - tr("Unable to run engine: %1 (") - .arg(error) + bindir->absolutePath() + "/hwengine)"); -} - -void HWMap::tcpServerReady() -{ - disconnect(srvsList.front(), SIGNAL(isReadyNow()), *(++srvsList.begin()), SLOT(tcpServerReady())); - srvsList.pop_front(); - - RealStart(); -} - -void HWMap::Start() -{ - if(srvsList.isEmpty()) { - srvsList.push_back(this); - } else { - connect(srvsList.back(), SIGNAL(isReadyNow()), this, SLOT(tcpServerReady())); - srvsList.push_back(this); - return; - } - - RealStart(); -} - -void HWMap::RealStart() -{ - IPCSocket = 0; - if (!IPCServer->listen(QHostAddress::LocalHost, IPC_PORT)) { - QMessageBox::critical(0, tr("Error"), - tr("Unable to start the server: %1.") - .arg(IPCServer->errorString())); - } - - QProcess * process; - QStringList arguments; - process = new QProcess; - connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(StartProcessError(QProcess::ProcessError))); - arguments << "46631"; - arguments << "landpreview"; - process->start(bindir->absolutePath() + "/hwengine", arguments); -}