From af3e958c5a95d419aacdbf6d332935f02a06c57f Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 24 Mar 2010 21:22:49 -0500 Subject: Have a background process for writing out the seen DB --- src/seen-db.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/seen-db.c') diff --git a/src/seen-db.c b/src/seen-db.c index 7849781..6429c13 100644 --- a/src/seen-db.c +++ b/src/seen-db.c @@ -5,6 +5,7 @@ GHashTable * seendb = NULL; gchar * filename = NULL; +guint write_process = 0; void seen_db_init(void) @@ -57,9 +58,25 @@ seen_db_init(void) return; } +static gboolean +write_seen_db (gpointer user_data) +{ + write_process = 0; + return FALSE; +} + void seen_db_add (const gchar * desktop) { + if (!seen_db_seen(desktop)) { + if (write_process != 0) { + g_source_remove(write_process); + write_process = 0; + } + + write_process = g_timeout_add_seconds(300, write_seen_db, NULL); + } + g_hash_table_insert(seendb, g_strdup(desktop), GINT_TO_POINTER(TRUE)); -- cgit v1.2.3