The following patch is a workaround for the database locking issue on mixxx. It does not resolve the database locking, it simply forces the library scanner to
abort when it has a database error thus allowing mixxx to exit cleanly.

Have also included the search on album name functionality from my previous
email.


Regards


Graeme
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: mathi...@mathieg2-sony32-20100515140646-\
#   tcoz0wfu52qtyelh
# target_branch: http://bazaar.launchpad.net/~mixxxdevelopers/mixxx\
#   /trunk/
# testament_sha1: 0587f6a5fafec8d44aed9e1ceb1d14e28851d8a5
# timestamp: 2010-05-15 15:06:55 +0100
# base_revision_id: [email protected]\
#   bh38tw7kfbs3jkjl
# 
# Begin patch
=== modified file 'mixxx/src/library/cratetablemodel.cpp'
--- mixxx/src/library/cratetablemodel.cpp	2010-04-04 04:21:54 +0000
+++ mixxx/src/library/cratetablemodel.cpp	2010-05-15 13:47:23 +0000
@@ -159,6 +159,7 @@
         QString escapedText = database().driver()->formatValue(search);
         filter = "(" + LibraryTableModel::DEFAULT_LIBRARYFILTER + " AND " +
                 "(artist LIKE " + escapedText + " OR "
+                "album LIKE " + escapedText + " OR "
                 "title  LIKE " + escapedText + "))";
     }
 

=== modified file 'mixxx/src/library/dao/libraryhashdao.cpp'
--- mixxx/src/library/dao/libraryhashdao.cpp	2010-01-05 11:24:46 +0000
+++ mixxx/src/library/dao/libraryhashdao.cpp	2010-05-15 13:47:23 +0000
@@ -48,7 +48,7 @@
     return hash;
 }
 
-void LibraryHashDAO::saveDirectoryHash(QString dirPath, int hash)
+int LibraryHashDAO::saveDirectoryHash(QString dirPath, int hash)
 {
     //qDebug() << "LibraryHashDAO::saveDirectoryHash" << QThread::currentThread() << m_database.connectionName();
     QSqlQuery query(m_database);
@@ -61,11 +61,14 @@
 
     if (!query.exec()) {
         qDebug() << "Creating new dirhash failed:" << query.lastError();
+        qDebug() << "did not create new hash" << hash;
+        return false;
     }
     qDebug() << "created new hash" << hash;
+    return true;
 }
 
-void LibraryHashDAO::updateDirectoryHash(QString dirPath, int newHash, int dir_deleted)
+int LibraryHashDAO::updateDirectoryHash(QString dirPath, int newHash, int dir_deleted)
 {
     //qDebug() << "LibraryHashDAO::updateDirectoryHash" << QThread::currentThread() << m_database.connectionName();
     QSqlQuery query(m_database);
@@ -78,14 +81,16 @@
 
     if (!query.exec()) {
         qDebug() << "Updating existing dirhash failed:" << query.lastError();
+        qDebug() << "did not update old existing hash" << newHash << dirPath << dir_deleted;
+        return false;
     }
     qDebug() << "updated old existing hash" << newHash << dirPath << dir_deleted;
-
+    return true;
     //DEBUG: Print out the directory hash we just saved to verify...
     //qDebug() << getDirectoryHash(dirPath);
 }
 
-void LibraryHashDAO::markAsExisting(QString dirPath)
+int LibraryHashDAO::markAsExisting(QString dirPath)
 {
     //qDebug() << "LibraryHashDAO::markExisting" << QThread::currentThread() << m_database.connectionName();
     QSqlQuery query(m_database);
@@ -96,10 +101,12 @@
     query.bindValue(":directory_path", dirPath);
     if (!query.exec()) {
         qDebug() << "Updating dirhash to mark as existing failed:" << query.lastError();
+        return false;
     }
+    return true;
 }
 
-void LibraryHashDAO::markAllDirectoriesAsDeleted()
+int LibraryHashDAO::markAllDirectoriesAsDeleted()
 {
     //qDebug() << "LibraryHashDAO::markAllDirectoriesAsDeleted"
     //<< QThread::currentThread() << m_database.connectionName();
@@ -109,5 +116,7 @@
     query.bindValue(":directory_deleted", 1);
     if (!query.exec()) {
         qDebug() << query.lastError();
+        return false;
     }
+    return true;
 }

=== modified file 'mixxx/src/library/dao/libraryhashdao.h'
--- mixxx/src/library/dao/libraryhashdao.h	2009-11-13 18:25:35 +0000
+++ mixxx/src/library/dao/libraryhashdao.h	2010-05-15 13:47:23 +0000
@@ -13,10 +13,10 @@
     
     void initialize();
     int getDirectoryHash(QString dirPath);
-    void saveDirectoryHash(QString dirPath, int hash);
-    void updateDirectoryHash(QString dirPath, int newHash, int dir_deleted);
-    void markAsExisting(QString dirPath);
-    void markAllDirectoriesAsDeleted();
+    int saveDirectoryHash(QString dirPath, int hash);
+    int updateDirectoryHash(QString dirPath, int newHash, int dir_deleted);
+    int markAsExisting(QString dirPath);
+    int markAllDirectoriesAsDeleted();
   private:
     QSqlDatabase &m_database;
     

=== modified file 'mixxx/src/library/libraryscanner.cpp'
--- mixxx/src/library/libraryscanner.cpp	2010-05-02 21:16:11 +0000
+++ mixxx/src/library/libraryscanner.cpp	2010-05-15 14:00:23 +0000
@@ -274,7 +274,8 @@
         //rows about deleted directories around. :)
 
         //qDebug() << "prevHash == newHash";
-        m_libraryHashDao.markAsExisting(dirPath);
+        bScanFinishedCleanly=m_libraryHashDao.markAsExisting(dirPath);
+        // If database write fails, then abort the library scan.
     }
 
 

=== modified file 'mixxx/src/library/librarytablemodel.cpp'
--- mixxx/src/library/librarytablemodel.cpp	2010-04-03 23:26:07 +0000
+++ mixxx/src/library/librarytablemodel.cpp	2010-05-15 13:47:23 +0000
@@ -122,6 +122,7 @@
         QString escapedText = database().driver()->formatValue(search);
         filter = "(" + LibraryTableModel::DEFAULT_LIBRARYFILTER + " AND " +
                 "(artist LIKE " + escapedText + " OR "
+                "album LIKE " + escapedText + " OR "
                 "title  LIKE " + escapedText + "))";
     }
     setFilter(filter);

=== modified file 'mixxx/src/library/missingtablemodel.cpp'
--- mixxx/src/library/missingtablemodel.cpp	2010-04-03 23:26:07 +0000
+++ mixxx/src/library/missingtablemodel.cpp	2010-05-15 14:03:44 +0000
@@ -142,6 +142,7 @@
         QString escapedText = database().driver()->formatValue(search);
         filter = "(" + LibraryTableModel::DEFAULT_LIBRARYFILTER + " AND " +
                 "(artist LIKE " + escapedText + " OR "
+                "album LIKE " + escapedText + " OR "
                 "title  LIKE " + escapedText + "))";
     }
     setFilter(filter);

=== modified file 'mixxx/src/library/playlisttablemodel.cpp'
--- mixxx/src/library/playlisttablemodel.cpp	2010-04-04 04:21:54 +0000
+++ mixxx/src/library/playlisttablemodel.cpp	2010-05-15 14:06:46 +0000
@@ -287,6 +287,7 @@
         QString escapedText = database().driver()->formatValue(search);
         filter = "(" + LibraryTableModel::DEFAULT_LIBRARYFILTER + " AND " +
                 "(artist LIKE " + escapedText + " OR "
+                "album LIKE " + escapedText + " OR "
                 "title  LIKE " + escapedText + "))";
     }
     setFilter(filter);

=== modified file 'mixxx/src/library/preparelibrarytablemodel.cpp'
--- mixxx/src/library/preparelibrarytablemodel.cpp	2010-01-31 07:32:27 +0000
+++ mixxx/src/library/preparelibrarytablemodel.cpp	2010-05-15 13:47:23 +0000
@@ -61,6 +61,7 @@
         QString escapedText = database().driver()->formatValue(search);
         filter = "(" + baseFilter + " AND " +
                 "(artist LIKE " + escapedText + " OR "
+                "album LIKE " + escapedText + " OR "
                 "title  LIKE " + escapedText + "))";
     }
     setFilter(filter);

# Begin bundle
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
Qu5IpwoSAHW4NYA=
------------------------------------------------------------------------------

_______________________________________________
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to