From fa1835cef12d4ee4c955cbf525608729f808c60f Mon Sep 17 00:00:00 2001 From: tkawata Date: Tue, 23 Oct 2012 23:59:24 +0900 Subject: [PATCH] [denncoCreator] fixed a bug in the IPC communication between denncoCreator and dennco. --- Source/mainwindow.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/Source/mainwindow.cpp b/Source/mainwindow.cpp index 3ca1749..f877ec5 100644 --- a/Source/mainwindow.cpp +++ b/Source/mainwindow.cpp @@ -69,11 +69,6 @@ MainWindow::MainWindow(QWidget *parent) : TKLog::setDestination(new TKConsole); - d_IPCServerName = "denncoCreator_"; - QTextStream s(&d_IPCServerName); - s.setIntegerBase(16); - s << qrand(); - d_creator = new DCCreator(this); d_visualizerWidget = new DCGLVisualizerWidget(d_creator, this) ; setCentralWidget(d_visualizerWidget); @@ -377,7 +372,7 @@ void MainWindow::playContent() QLocalSocket *socket = new QLocalSocket(this); connect(socket, SIGNAL(disconnected()), socket,SLOT(deleteLater())); - for (int retry = 0; retry < 10; retry++) + for (int retry = 0; retry < 20; retry++) { socket->connectToServer(d_IPCServerName); if (socket->waitForConnected()) @@ -389,11 +384,17 @@ void MainWindow::playContent() QString requestData = "close,"; socket->write(requestData.toLocal8Bit()); socket->flush(); + socket->waitForBytesWritten(); socket->close(); + + if (!d_player.waitForFinished()) + d_player.kill(); } - if (!d_player.waitForFinished(5000)) - d_player.kill(); + d_IPCServerName = "denncoCreator_"; + QTextStream s(&d_IPCServerName); + s.setIntegerBase(16); + s << qrand(); if (d_player.state() == QProcess::NotRunning) { @@ -402,14 +403,14 @@ void MainWindow::playContent() args << d_IPCServerName; d_player.start(DENNCO_ENGINE, args); - d_player.waitForStarted(5000); + d_player.waitForStarted(); } if (d_player.state() == QProcess::Running) { QLocalSocket *socket = new QLocalSocket(this); connect(socket, SIGNAL(disconnected()), socket,SLOT(deleteLater())); - for (int retry = 0; retry < 10; retry++) + for (int retry = 0; retry < 20; retry++) { socket->connectToServer(d_IPCServerName); if (socket->waitForConnected()) @@ -422,6 +423,7 @@ void MainWindow::playContent() requestData.append(d_creator->getCurrentContent()->getContentRootPath()); socket->write(requestData.toLocal8Bit()); socket->flush(); + socket->waitForBytesWritten(); socket->close(); } } -- 2.11.0