[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/predicate/Predicate
From:       Jarosław Staniek <staniek () kde ! org>
Date:       2010-10-13 22:01:12
Message-ID: 20101013220112.AF410AC896 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1185616 by staniek:

fix loading of drivers


 M  +19 -6     DriverManager.cpp  
 M  +2 -1      drivers/sqlite/CMakeLists.txt  


--- branches/work/predicate/Predicate/DriverManager.cpp #1185615:1185616
@@ -128,7 +128,12 @@
                 << "version: found version" << info.version() << "expected version" \
<< expectedVersion  << "-- skipping this one";
         }
-        info.setAbsoluteFilePath( pluginsDir + '/' + \
config.value("FileName").toString() ); +#ifdef Q_OS_WIN
+        QString suffix = ".dll";
+#else
+        QString suffix = ".so";
+#endif
+        info.setAbsoluteFilePath( pluginsDir + "/predicate_" + \
config.value("Name").toString() + suffix );  info.setCaption( \
config.value("Caption").toString() );  //! @todo read translated [..]
         info.setComment( config.value("Comment").toString() );
@@ -281,8 +286,11 @@
     PreDbg << "loading" << name;
 
     Driver *drv = 0;
-    if (!name.isEmpty())
-        drv = m_drivers.value(name.toLower())->data();
+    if (!name.isEmpty()) {
+        QSharedPointer<Driver> *dp = m_drivers.value(name.toLower());
+        if (dp && !dp->isNull())
+            drv = dp->data();
+    }
     if (drv)
         return drv; //cached
 
@@ -294,13 +302,16 @@
     const DriverInfo info(m_driversInfo.value(name.toLower()));
 
     QString libFileName(info.absoluteFilePath());
-#if defined Q_WS_WIN && (defined(_DEBUG) || defined(DEBUG))
+#if defined Q_OS_WIN && (defined(_DEBUG) || defined(DEBUG))
     libFileName += "_d";
 #endif
     QLibrary lib(libFileName);
     LibUnloader unloader(&lib);
+    qDebug() << libFileName;
     if (!lib.load()) {
         m_result = Result(ERR_DRIVERMANAGER, QObject::tr("Could not load library \
\"%1\".").arg(name)); +        m_result.setServerMessage(lib.errorString());
+        qDebug() << lib.errorString();
         return 0;
     }
     
@@ -315,7 +326,6 @@
                          .arg("version_minor").arg(name));
        return 0;
     }
-    lib.unload();
     if (!Predicate::version().matches(*foundMajor, *foundMinor)) {
         m_result = Result(ERR_INCOMPAT_DRIVER_VERSION,
             QObject::tr("Incompatible database driver's \"%1\" version: found \
version %2, expected version %3.") @@ -325,11 +335,14 @@
             );
         return 0;
     }
+    lib.unload();
 
     QPluginLoader loader(libFileName);
-    drv = qobject_cast<Driver*>(loader.instance());
+    drv = dynamic_cast<Driver*>(loader.instance());
     if (!drv) {
         m_result = Result(ERR_DRIVERMANAGER, QObject::tr("Could not load database \
driver \"%1\".").arg(name)); +        \
m_result.setServerMessage(loader.errorString()); +        qDebug() << \
loader.instance() << loader.errorString();  //! @todo
 /*        if (m_componentLoadingErrors.isEmpty()) {//fill errtable on demand
             m_componentLoadingErrors[KLibLoader::ErrNoServiceFound] = \
                "ErrNoServiceFound";
--- branches/work/predicate/Predicate/drivers/sqlite/CMakeLists.txt #1185615:1185616
@@ -63,7 +63,8 @@
 
 add_library(predicate_sqlite3 SHARED ${predicate_sqlite3_SRCS})
 
-target_link_libraries(predicate_sqlite3 ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS} \
predicate ) +target_link_libraries(predicate_sqlite3 ${CMAKE_DL_LIBS} \
${CMAKE_THREAD_LIBS} ${SQLITE_LIBRARIES} predicate) \
+set_target_properties(predicate_sqlite3 PROPERTIES PREFIX "")  
 install(TARGETS predicate_sqlite3 DESTINATION ${PREDICATE_PLUGINS_DIR})
 install(FILES predicate_sqlite3.desktop DESTINATION ${PREDICATE_PLUGINS_DIR})


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic