Index: plugins/ipod/rb-ipod-static-playlist-source.c
===================================================================
--- plugins/ipod/rb-ipod-static-playlist-source.c	(revision 5762)
+++ plugins/ipod/rb-ipod-static-playlist-source.c	(working copy)
@@ -35,7 +35,6 @@
 static GObject *rb_ipod_static_playlist_source_constructor (GType type,
 					    guint n_construct_properties,
 					    GObjectConstructParam *construct_properties);
-static void rb_ipod_static_playlist_source_dispose (GObject *object);
 static void rb_ipod_static_playlist_source_set_property (GObject *object,
 			                  guint prop_id,
 			                  const GValue *value,
@@ -46,6 +45,7 @@
 			                  GParamSpec *pspec);
 
 static gboolean impl_show_popup (RBSource *source);
+static void impl_delete_thyself (RBSource *source);
 
 
 static void source_name_changed_cb (RBIpodStaticPlaylistSource *source,
@@ -80,11 +80,11 @@
 	RBSourceClass *source_class = RB_SOURCE_CLASS (klass);
 
 	object_class->constructor = rb_ipod_static_playlist_source_constructor;
-	object_class->dispose = rb_ipod_static_playlist_source_dispose;
 	object_class->get_property = rb_ipod_static_playlist_source_get_property;
 	object_class->set_property = rb_ipod_static_playlist_source_set_property;
 
 	source_class->impl_show_popup = impl_show_popup;
+	source_class->impl_delete_thyself = impl_delete_thyself;
 
 	g_object_class_install_property (object_class,
 					 PROP_IPOD_SOURCE,
@@ -134,9 +134,9 @@
 }
 
 static void
-rb_ipod_static_playlist_source_dispose (GObject *object)
+impl_delete_thyself (RBSource *source)
 {
-	RBIpodStaticPlaylistSourcePrivate *priv = IPOD_STATIC_PLAYLIST_SOURCE_GET_PRIVATE (object);
+	RBIpodStaticPlaylistSourcePrivate *priv = IPOD_STATIC_PLAYLIST_SOURCE_GET_PRIVATE (source);
 
 	if (priv->ipod_source) {
 		g_object_unref (priv->ipod_source);
@@ -148,7 +148,7 @@
 		priv->ipod_db = NULL;
 	}
 
-	G_OBJECT_CLASS (rb_ipod_static_playlist_source_parent_class)->dispose (object);
+	RB_SOURCE_CLASS (rb_ipod_static_playlist_source_parent_class)->impl_delete_thyself (source);
 }
 
 RBIpodStaticPlaylistSource *
Index: plugins/ipod/rb-ipod-source.c
===================================================================
--- plugins/ipod/rb-ipod-source.c	(revision 5762)
+++ plugins/ipod/rb-ipod-source.c	(working copy)
@@ -409,6 +409,7 @@
 		g_free (filename);
 	}
 
+	g_object_ref (G_OBJECT(playlist_source));
 	playlist->userdata = playlist_source;
 	playlist->userdata_destroy = g_object_unref;
 	playlist->userdata_duplicate = g_object_ref;
@@ -1655,8 +1656,8 @@
 		}
 	}
 
-        g_object_unref (G_OBJECT (priv->ipod_db));
-        priv->ipod_db = NULL;
+	g_object_unref (G_OBJECT (priv->ipod_db));
+	priv->ipod_db = NULL;
 
 	RB_SOURCE_CLASS (rb_ipod_source_parent_class)->impl_delete_thyself (source);
 }
