diff -r 50fe80adbfcb -r 0b4ac686fc44 QTfrontend/net/tcpBase.cpp --- a/QTfrontend/net/tcpBase.cpp Tue Dec 18 20:48:37 2012 +0400 +++ b/QTfrontend/net/tcpBase.cpp Fri Jan 04 21:44:40 2013 +0400 @@ -29,31 +29,39 @@ #ifdef HWLIBRARY extern "C" void Game(char**arguments); +extern "C" void GenLandPreview(int port); -//NOTE: most likely subclassing QThread is wrong -class EngineThread : public QThread + +EngineInstance::EngineInstance(QObject *parent) + : QObject(parent) { -protected: - void run(); -}; + port = 0; +} -void EngineThread::run() +EngineInstance::~EngineInstance() +{ +} + +void EngineInstance::start() { - char *args[12]; - args[0] = "1"; //cShowFPS - args[1] = "65000"; //ipcPort - args[2] = "1024"; //cScreenWidth - args[3] = "768"; //cScreenHeight - args[4] = "0"; //cReducedQuality - args[5] = "en.txt"; //cLocaleFName - args[6] = "koda"; //UserNick - args[7] = "1"; //SetSound - args[8] = "1"; //SetMusic - args[9] = "0"; //cAltDamage - args[10]= "../Resources/hedgewars/Data"; //cPathPrefix - args[11]= NULL; //recordFileName +#if 0 + char *args[11]; + args[0] = "65000"; //ipcPort + args[1] = "1024"; //cScreenWidth + args[2] = "768"; //cScreenHeight + args[3] = "0"; //cReducedQuality + args[4] = "en.txt"; //cLocaleFName + args[5] = "koda"; //UserNick + args[6] = "1"; //SetSound + args[7] = "1"; //SetMusic + args[8] = "0"; //cAltDamage + args[9]= datadir->absolutePath().toAscii().data(); //cPathPrefix + args[10]= NULL; //recordFileName Game(args); +#endif + GenLandPreview(port); } + #endif QList srvsList; @@ -76,8 +84,17 @@ onEngineStart(); #ifdef HWLIBRARY - EngineThread engineThread;// = new EngineThread(this); - engineThread.start(); + QThread *thread = new QThread; + EngineInstance *instance = new EngineInstance; + instance->port = IPCServer->serverPort(); + + instance->moveToThread(thread); + + connect(thread, SIGNAL(started()), instance, SLOT(start(void))); + connect(instance, SIGNAL(finished()), thread, SLOT(quit())); + connect(instance, SIGNAL(finished()), instance, SLOT(deleteLater())); + connect(instance, SIGNAL(finished()), thread, SLOT(deleteLater())); + thread->start(); #else QProcess * process;