diff -urpN rhythmbox-0.9.4.1.1/rhythmdb/rhythmdb-monitor.c rhythmbox-0.9.4.1.1.1/rhythmdb/rhythmdb-monitor.c
--- rhythmbox-0.9.4.1.1/rhythmdb/rhythmdb-monitor.c	2006-05-21 23:54:23.000000000 +0000
+++ rhythmbox-0.9.4.1.1.1/rhythmdb/rhythmdb-monitor.c	2006-05-22 02:01:47.000000000 +0000
@@ -77,6 +77,7 @@ rhythmdb_finalize_monitoring (RhythmDB *
 	rhythmdb_stop_monitoring (db);
 	
 	g_hash_table_destroy (db->priv->monitored_directories);
+	if (db->priv->changed_files_id > 0)
 	g_source_remove (db->priv->changed_files_id);
 	g_hash_table_destroy (db->priv->changed_files);
 }
diff -urpN rhythmbox-0.9.4.1.1/rhythmdb/rhythmdb-private.h rhythmbox-0.9.4.1.1.1/rhythmdb/rhythmdb-private.h
--- rhythmbox-0.9.4.1.1/rhythmdb/rhythmdb-private.h	2006-05-21 23:54:23.000000000 +0000
+++ rhythmbox-0.9.4.1.1.1/rhythmdb/rhythmdb-private.h	2006-05-22 02:04:23.000000000 +0000
@@ -104,6 +104,9 @@ struct RhythmDBEntry_ {
 
 	/*Podcast*/
 	RhythmDBPodcastFields *podcast;
+
+  /* iPod */
+  guint ipod_status;
 };
 
 struct RhythmDBPrivate
diff -urpN rhythmbox-0.9.4.1.1/rhythmdb/rhythmdb-tree.c rhythmbox-0.9.4.1.1.1/rhythmdb/rhythmdb-tree.c
--- rhythmbox-0.9.4.1.1/rhythmdb/rhythmdb-tree.c	2006-05-20 02:03:08.000000000 +0000
+++ rhythmbox-0.9.4.1.1.1/rhythmdb/rhythmdb-tree.c	2006-05-22 02:04:23.000000000 +0000
@@ -406,6 +406,8 @@ rhythmdb_tree_parser_end_element (struct
 		/* Handle indexed properties. */
 		switch (ctx->propid)
 		{
+		
+		case RHYTHMDB_PROP_IPOD_STATUS:
 		case RHYTHMDB_PROP_TYPE:
 			g_assert_not_reached ();
 			break;
@@ -776,6 +778,7 @@ save_entry (RhythmDBTree *db, RhythmDBEn
 
 		switch (i)
 		{
+    case RHYTHMDB_PROP_IPOD_STATUS:
 		case RHYTHMDB_PROP_TYPE:
 			break;
 		case RHYTHMDB_PROP_TITLE:
diff -urpN rhythmbox-0.9.4.1.1/rhythmdb/rhythmdb.c rhythmbox-0.9.4.1.1.1/rhythmdb/rhythmdb.c
--- rhythmbox-0.9.4.1.1/rhythmdb/rhythmdb.c	2006-05-21 23:54:23.000000000 +0000
+++ rhythmbox-0.9.4.1.1.1/rhythmdb/rhythmdb.c	2006-05-22 02:04:23.000000000 +0000
@@ -2585,7 +2585,10 @@ rhythmdb_entry_set_internal (RhythmDB *d
 			break;
 		case RHYTHMDB_PROP_POST_TIME:
 			entry->podcast->post_time = g_value_get_ulong (value);
-			break;	
+			break;
+		case RHYTHMDB_PROP_IPOD_STATUS:
+			entry->ipod_status = g_value_get_ulong (value);
+			break;
 		case RHYTHMDB_NUM_PROPERTIES:
 			g_assert_not_reached ();
 			break;
@@ -3127,6 +3130,7 @@ rhythmdb_prop_type_get_type (void)
 			ENUM_ENTRY (RHYTHMDB_PROP_COPYRIGHT, "Podcast copyright (gchararray) [copyright]"),
 			ENUM_ENTRY (RHYTHMDB_PROP_IMAGE, "Podcast image(gchararray) [image]"),
 			ENUM_ENTRY (RHYTHMDB_PROP_POST_TIME, "Podcast time of post (gulong) [post-time]"),
+			ENUM_ENTRY (RHYTHMDB_PROP_IPOD_STATUS, "iPod status (gulong) [ipod-status]"),
 			{ 0, 0, 0 }
 		};
 		g_assert ((sizeof (values) / sizeof (values[0]) - 1) == RHYTHMDB_NUM_PROPERTIES);
@@ -3641,6 +3645,8 @@ rhythmdb_entry_get_ulong (RhythmDBEntry 
 			return entry->podcast->status;		
 		else
 			return 0;
+	case RHYTHMDB_PROP_IPOD_STATUS:
+		return entry->ipod_status;
 	default:
 		g_assert_not_reached ();
 		return 0;
diff -urpN rhythmbox-0.9.4.1.1/rhythmdb/rhythmdb.h rhythmbox-0.9.4.1.1.1/rhythmdb/rhythmdb.h
--- rhythmbox-0.9.4.1.1/rhythmdb/rhythmdb.h	2006-05-20 03:56:38.000000000 +0000
+++ rhythmbox-0.9.4.1.1.1/rhythmdb/rhythmdb.h	2006-05-22 02:04:23.000000000 +0000
@@ -174,6 +174,9 @@ typedef enum
 	RHYTHMDB_PROP_IMAGE,
 	RHYTHMDB_PROP_POST_TIME,
 	
+  /* iPod properties */
+  RHYTHMDB_PROP_IPOD_STATUS,
+  
 	RHYTHMDB_NUM_PROPERTIES
 } RhythmDBPropType;
 
@@ -184,6 +187,11 @@ enum {
 	RHYTHMDB_PODCAST_STATUS_PAUSED = 103,
 };
 
+enum {
+  RHYTHMDB_IPOD_STATUS_COMPLETE = 100,
+  RHYTHMDB_IPOD_STATUS_ERROR = 101
+};
+
 GType rhythmdb_query_type_get_type (void);
 GType rhythmdb_prop_type_get_type (void);
 
