Author: abrander
Date: 2010-01-14 20:00:24 +0100 (Thu, 14 Jan 2010)
New Revision: 2993

Modified:
   branches/rawstudio-ng-color/src/rs-library.c
Log:
Made checksum loading async.

Modified: branches/rawstudio-ng-color/src/rs-library.c
===================================================================
--- branches/rawstudio-ng-color/src/rs-library.c        2010-01-14 18:58:07 UTC 
(rev 2992)
+++ branches/rawstudio-ng-color/src/rs-library.c        2010-01-14 19:00:24 UTC 
(rev 2993)
@@ -291,6 +291,20 @@
                return FALSE;
 }
 
+static void
+got_checksum(const gchar *checksum, gpointer user_data)
+{
+       RSLibrary *library = rs_library_get_singleton();
+       sqlite3 *db = library->db;
+       sqlite3_stmt *stmt;
+
+       sqlite3_prepare_v2(db, "UPDATE LIBRARY SET  identifier=?1 WHERE 
id=?2;", -1, &stmt, NULL);
+       sqlite3_bind_text(stmt, 1, checksum, -1, SQLITE_TRANSIENT);
+       sqlite3_bind_int(stmt, 2, GPOINTER_TO_INT(user_data));
+       sqlite3_step(stmt);
+       sqlite3_finalize(stmt);
+}
+
 static gint
 library_add_photo(RSLibrary *library, const gchar *filename)
 {
@@ -299,12 +313,9 @@
        gint rc;
        sqlite3_stmt *stmt;
 
-       gchar *identifier = rs_file_checksum(filename);
-
        g_mutex_lock(library->id_lock);
-       sqlite3_prepare_v2(db, "INSERT INTO library (filename,identifier) 
VALUES (?1,?2);", -1, &stmt, NULL);
+       sqlite3_prepare_v2(db, "INSERT INTO library (filename) VALUES (?1);", 
-1, &stmt, NULL);
        rc = sqlite3_bind_text(stmt, 1, filename, strlen(filename), 
SQLITE_TRANSIENT);
-       rc = sqlite3_bind_text(stmt, 2, identifier, strlen(identifier), 
SQLITE_TRANSIENT);
        rc = sqlite3_step(stmt);
        id = sqlite3_last_insert_rowid(db);
        g_mutex_unlock(library->id_lock);
@@ -312,7 +323,7 @@
                library_sqlite_error(db, rc);
        sqlite3_finalize(stmt);
 
-       g_free(identifier);
+       rs_io_idle_read_checksum(filename, -1, got_checksum, 
GINT_TO_POINTER(id));
 
        return id;
 }


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to