? lib/widgets/Makefile
? lib/widgets/Makefile.in
? rhythmdb/test-rhythmdb-indexing
? rhythmdb/test-rhythmdb-query
? rhythmdb/test-rhythmdb-simple
? rhythmdb/test-rhythmdb-tree-deserialization
? rhythmdb/test-rhythmdb-tree-serialization
Index: rhythmdb/rhythmdb-tree.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/rhythmdb/rhythmdb-tree.c,v
retrieving revision 1.6
diff -u -p -r1.6 rhythmdb-tree.c
--- rhythmdb/rhythmdb-tree.c	29 Sep 2003 04:52:36 -0000	1.6
+++ rhythmdb/rhythmdb-tree.c	29 Sep 2003 16:27:13 -0000
@@ -238,13 +238,35 @@ elt_name_from_propid (RhythmDBPropType p
 	return NULL;
 }
 
+
+static guint
+rb_istr_hash (gconstpointer key)
+{
+	gchar *dup = g_utf8_casefold (key, -1);
+	guint hash = g_str_hash (dup);
+	g_free (dup);
+	return hash;
+}
+
+static gboolean
+rb_istr_equal (gconstpointer a, gconstpointer b)
+{
+	gchar *dup_a = g_utf8_casefold (a, -1);
+	gchar *dup_b = g_utf8_casefold (b, -1);
+	gboolean rv = (g_utf8_collate (dup_a, dup_b) == 0);
+	g_free (dup_a);
+	g_free (dup_b);
+	return rv;
+}
+
+
 static void
 rhythmdb_tree_init (RhythmDBTree *db)
 {
 	guint i;
 	db->priv = g_new0 (RhythmDBTreePrivate, 1);
 
-	db->priv->entries = g_hash_table_new_full (g_str_hash, g_str_equal,
+	db->priv->entries = g_hash_table_new_full (rb_istr_hash, rb_istr_equal,
 						   NULL,
 						   (GDestroyNotify) rhythmdb_tree_entry_finalize);
 
@@ -255,10 +277,10 @@ rhythmdb_tree_init (RhythmDBTree *db)
 						       sizeof (RhythmDBTreeProperty),
 						       1024, G_ALLOC_AND_FREE);
 
-	db->priv->song_genres = g_hash_table_new_full (g_str_hash, g_str_equal,
+	db->priv->song_genres = g_hash_table_new_full (rb_istr_hash, rb_istr_equal,
 						       (GDestroyNotify) g_free,
 						       NULL);
-	db->priv->iradio_genres = g_hash_table_new_full (g_str_hash, g_str_equal,
+	db->priv->iradio_genres = g_hash_table_new_full (rb_istr_hash, rb_istr_equal,
 							 (GDestroyNotify) g_free,
 							 NULL);
 
@@ -916,7 +938,7 @@ get_or_create_genre (RhythmDBTree *db, R
 
 	if (G_UNLIKELY (genre == NULL)) {
 		genre = rhythmdb_tree_property_new (db, name);
-		genre->children = g_hash_table_new_full (g_str_hash, g_str_equal,
+		genre->children = g_hash_table_new_full (rb_istr_hash, rb_istr_equal,
 							 (GDestroyNotify) g_free,
 							 NULL);
 		g_hash_table_insert (table, g_strdup (name), genre);
@@ -937,7 +959,7 @@ get_or_create_artist (RhythmDBTree *db, 
 
 	if (G_UNLIKELY (artist == NULL)) {
 		artist = rhythmdb_tree_property_new (db, name);
-		artist->children = g_hash_table_new_full (g_str_hash, g_str_equal,
+		artist->children = g_hash_table_new_full (rb_istr_hash, rb_istr_equal,
 							  (GDestroyNotify) g_free,
 							  NULL);
 		g_hash_table_insert (genre->children, g_strdup (name), artist);
@@ -1064,7 +1086,7 @@ rhythmdb_tree_entry_set (RhythmDB *adb, 
 	{
 		const char *albumname = g_value_get_string (value);
 
-		if (strcmp (get_entry_album_name (entry), albumname)) {
+		if (strcasecmp (get_entry_album_name (entry), albumname)) {
 			char *cur_genrename, *cur_artistname;
 			RhythmDBTreeProperty *artist;
 			RhythmDBTreeProperty *genre;			
@@ -1090,7 +1112,7 @@ rhythmdb_tree_entry_set (RhythmDB *adb, 
 		const char *artistname = g_value_get_string (value);
 		char *cur_artistname = get_entry_artist_name (entry);
 
-		if (strcmp (cur_artistname, artistname)) {
+		if (strcasecmp (cur_artistname, artistname)) {
 			RhythmDBTreeProperty *new_artist;
 			RhythmDBTreeProperty *genre;			
 			char *cur_genrename, *cur_albumname;
@@ -1119,7 +1141,7 @@ rhythmdb_tree_entry_set (RhythmDB *adb, 
 		const char *genrename = g_value_get_string (value);
 		char *cur_genrename = get_entry_genre_name (entry);
 
-		if (strcmp (cur_genrename, genrename)) {
+		if (strcasecmp (cur_genrename, genrename)) {
 			RhythmDBTreeProperty *new_genre;			
 			RhythmDBTreeProperty *new_artist;
 			char *artistname;
@@ -1342,17 +1364,17 @@ evaluate_conjunctive_subquery (RhythmDBT
 			switch (data->propid)
 			{
 			case RHYTHMDB_PROP_ALBUM:
-				if (strcmp (get_entry_album_name (entry),
+				if (strcasecmp (get_entry_album_name (entry),
 					    g_value_get_string (data->val)))
 					return FALSE;
 				break;
 			case RHYTHMDB_PROP_ARTIST:
-				if (strcmp (get_entry_artist_name (entry),
+				if (strcasecmp (get_entry_artist_name (entry),
 					    g_value_get_string (data->val)))
 					return FALSE;
 				break;
 			case RHYTHMDB_PROP_GENRE:
-				if (strcmp (get_entry_genre_name (entry),
+				if (strcasecmp (get_entry_genre_name (entry),
 					    g_value_get_string (data->val)))
 					return FALSE;
 				break;				
@@ -1749,7 +1771,7 @@ do_property_query_recurse (RhythmDBTree 
 	data = g_new0 (struct RhythmDBTreePropertyQueryGatheringData, 1);
 	data->db = db;
 	data->prop_type = prop_type;
-	data->result = g_hash_table_new (g_str_hash, g_str_equal);
+	data->result = g_hash_table_new (rb_istr_hash, rb_istr_equal);
 	data->model = RHYTHMDB_PROPERTY_MODEL (model);
 
 	conjunctions = split_query_by_disjunctions (db, query);
Index: widgets/rb-entry-view.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/widgets/rb-entry-view.c,v
retrieving revision 1.1
diff -u -p -r1.1 rb-entry-view.c
--- widgets/rb-entry-view.c	29 Sep 2003 13:48:30 -0000	1.1
+++ widgets/rb-entry-view.c	29 Sep 2003 16:27:13 -0000
@@ -1909,7 +1909,7 @@ poll_model (RBEntryView *view)
 	GDK_THREADS_ENTER ();
 
 	g_get_current_time (&timeout);
-	g_time_val_add (&timeout, 500);
+	g_time_val_add (&timeout, G_USEC_PER_SEC*1.0);
 
 	did_sync = rhythmdb_query_model_sync (view->priv->query_model, &timeout);
 
