[Rawstudio-commit] r2993 - branches/rawstudio-ng-color/src

Anders Brander anders at brander.dk
Thu Jan 14 20:00:24 CET 2010


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;
 }




More information about the Rawstudio-commit mailing list