[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