|
|
dc97acc |
diff -Nur qt-x11-free-3.3.8/src/sql/drivers/mysql/qsql_mysql.cpp qt-x11-free-3.3.8-me/src/sql/drivers/mysql/qsql_mysql.cpp
|
|
|
dc97acc |
--- qt-x11-free-3.3.8/src/sql/drivers/mysql/qsql_mysql.cpp 2007-01-11 14:38:34.000000000 +0100
|
|
|
dc97acc |
+++ qt-x11-free-3.3.8-snapshot-me/src/sql/drivers/mysql/qsql_mysql.cpp 2007-05-22 17:15:26.000000000 +0200
|
|
|
dc97acc |
@@ -37,7 +37,6 @@
|
|
|
dc97acc |
#include "qsql_mysql.h"
|
|
|
dc97acc |
#include <private/qsqlextension_p.h>
|
|
|
dc97acc |
|
|
|
dc97acc |
-#include <qapplication.h>
|
|
|
dc97acc |
#include <qdatetime.h>
|
|
|
dc97acc |
#include <qvaluevector.h>
|
|
|
dc97acc |
#include <qsqlrecord.h>
|
|
|
dc97acc |
@@ -52,6 +51,9 @@
|
|
|
dc97acc |
|
|
|
dc97acc |
QPtrDict<QSqlOpenExtension> *qSqlOpenExtDict();
|
|
|
dc97acc |
|
|
|
dc97acc |
+static int qMySqlConnectionCount = 0;
|
|
|
dc97acc |
+static bool qMySqlInitHandledByUser = FALSE;
|
|
|
dc97acc |
+
|
|
|
dc97acc |
class QMYSQLOpenExtension : public QSqlOpenExtension
|
|
|
dc97acc |
{
|
|
|
dc97acc |
public:
|
|
|
dc97acc |
@@ -354,9 +356,8 @@
|
|
|
dc97acc |
{
|
|
|
dc97acc |
#ifndef Q_NO_MYSQL_EMBEDDED
|
|
|
dc97acc |
# if MYSQL_VERSION_ID >= 40000
|
|
|
dc97acc |
- static bool init = FALSE;
|
|
|
dc97acc |
- if ( init )
|
|
|
dc97acc |
- return;
|
|
|
dc97acc |
+ if ( qMySqlInitHandledByUser || qMySqlConnectionCount > 1 )
|
|
|
dc97acc |
+ return;
|
|
|
dc97acc |
|
|
|
dc97acc |
// this should only be called once
|
|
|
dc97acc |
// has no effect on client/server library
|
|
|
dc97acc |
@@ -366,8 +367,6 @@
|
|
|
dc97acc |
qWarning( "QMYSQLDriver::qServerInit: unable to start server." );
|
|
|
dc97acc |
# endif
|
|
|
dc97acc |
}
|
|
|
dc97acc |
- qAddPostRoutine(qServerEnd);
|
|
|
dc97acc |
- init = TRUE;
|
|
|
dc97acc |
|
|
|
dc97acc |
# endif // MYSQL_VERSION_ID
|
|
|
dc97acc |
#endif // Q_NO_MYSQL_EMBEDDED
|
|
|
dc97acc |
@@ -392,8 +391,10 @@
|
|
|
dc97acc |
d->mysql = (MYSQL *) con;
|
|
|
dc97acc |
setOpen( TRUE );
|
|
|
dc97acc |
setOpenError( FALSE );
|
|
|
dc97acc |
+ if (qMySqlConnectionCount == 1)
|
|
|
dc97acc |
+ qMySqlInitHandledByUser = TRUE;
|
|
|
dc97acc |
} else {
|
|
|
dc97acc |
- qServerInit();
|
|
|
dc97acc |
+ qServerInit();
|
|
|
dc97acc |
}
|
|
|
dc97acc |
}
|
|
|
dc97acc |
|
|
|
dc97acc |
@@ -402,10 +403,15 @@
|
|
|
dc97acc |
qSqlOpenExtDict()->insert( this, new QMYSQLOpenExtension(this) );
|
|
|
dc97acc |
d = new QMYSQLDriverPrivate();
|
|
|
dc97acc |
d->mysql = 0;
|
|
|
dc97acc |
+ qMySqlConnectionCount++;
|
|
|
dc97acc |
}
|
|
|
dc97acc |
|
|
|
dc97acc |
QMYSQLDriver::~QMYSQLDriver()
|
|
|
dc97acc |
{
|
|
|
dc97acc |
+ qMySqlConnectionCount--;
|
|
|
dc97acc |
+ if (qMySqlConnectionCount == 0 && !qMySqlInitHandledByUser)
|
|
|
dc97acc |
+ qServerEnd();
|
|
|
dc97acc |
+
|
|
|
dc97acc |
delete d;
|
|
|
dc97acc |
if ( !qSqlOpenExtDict()->isEmpty() ) {
|
|
|
dc97acc |
QSqlOpenExtension *ext = qSqlOpenExtDict()->take( this );
|