--- a/qthighway/xqservice/src/xqaiwrequest.cpp Thu May 27 13:42:11 2010 +0300
+++ b/qthighway/xqservice/src/xqaiwrequest.cpp Fri Jun 11 14:26:25 2010 +0300
@@ -33,7 +33,8 @@
currentRequest(NULL),
errorMsg(),
errorCode(0),
- asyncErrorSet(false)
+ completeSignalConnected(false),
+ errorSignalConnected(false)
{
XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest: %s %s,%d,%x",
@@ -57,7 +58,8 @@
currentRequest(NULL),
errorMsg(),
errorCode(0),
- asyncErrorSet(false)
+ completeSignalConnected(false),
+ errorSignalConnected(false)
{
XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest (uri): %s %s,%x",
qPrintable(descriptor.interfaceName()),
@@ -85,7 +87,8 @@
currentRequest(NULL),
errorMsg(),
errorCode(0),
- asyncErrorSet(false)
+ completeSignalConnected(false),
+ errorSignalConnected(false)
{
XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest (file): %s %x",
@@ -116,7 +119,8 @@
currentRequest(NULL),
errorMsg(),
errorCode(0),
- asyncErrorSet(false)
+ completeSignalConnected(false),
+ errorSignalConnected(false)
{
XQSERVICE_DEBUG_PRINT("XQAiwRequest::XQAiwRequest (file handle): %x",
@@ -139,10 +143,13 @@
{
XQSERVICE_DEBUG_PRINT("~XQAiwRequest::XQAiwRequest");
- // Disconnect error
- if (asyncErrorSet)
+ // Disconnect signals
+ if (completeSignalConnected)
{
disconnect(currentRequest, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleAsyncResponse(const QVariant&)));
+ }
+ if (errorSignalConnected)
+ {
disconnect(currentRequest, SIGNAL(requestError(int,const QString&)), this, SLOT(handleAsyncError(int)));
}
@@ -387,13 +394,18 @@
QStringList list;
bool res = true;
- if (!isSynchronous() && !asyncErrorSet)
+ if (!isSynchronous() && !completeSignalConnected)
{
// Set async request signals once
XQSERVICE_DEBUG_PRINT("request::async send");
connect(currentRequest, SIGNAL(requestOk(const QVariant&)), this, SLOT(handleAsyncResponse(const QVariant&)));
+ completeSignalConnected = true;
+ }
+ if (!errorSignalConnected)
+ {
+ // Connect always error signal once
connect(currentRequest, SIGNAL(requestError(int,const QString&)), this, SLOT(handleAsyncError(int)));
- asyncErrorSet = true;
+ errorSignalConnected = true;
}
XQSERVICE_DEBUG_PRINT("request::send>>>");