rhythmbox r5705 - in trunk: . plugins/ipod



Author: teuf
Date: Tue May 20 21:11:16 2008
New Revision: 5705
URL: http://svn.gnome.org/viewvc/rhythmbox?rev=5705&view=rev

Log:
* plugins/ipod/rb-ipod-source.c: don't connect to notify::name too
soon during RbIpodSource instanciation since 
RbIpodSource::priv::ipod_db must be set before the notify::name
callback can be safely used, this fixes bug #524985. In
impl_delete_thyself, don't try to use priv->ipod_db if it's NULL
(which can happen with empty ipods)


Modified:
   trunk/ChangeLog
   trunk/plugins/ipod/rb-ipod-source.c

Modified: trunk/plugins/ipod/rb-ipod-source.c
==============================================================================
--- trunk/plugins/ipod/rb-ipod-source.c	(original)
+++ trunk/plugins/ipod/rb-ipod-source.c	Tue May 20 21:11:16 2008
@@ -194,8 +194,6 @@
 static void
 rb_ipod_source_init (RBiPodSource *source)
 {	
-	g_signal_connect (G_OBJECT (source), "notify::name",
-			  (GCallback)rb_ipod_source_name_changed_cb, NULL);
 }
 
 static GObject *
@@ -936,6 +934,9 @@
 				      "name", name,
 				      NULL);
 		}
+                g_signal_connect (G_OBJECT (source), "notify::name",
+		  	          (GCallback)rb_ipod_source_name_changed_cb,
+                                  NULL);
 		priv->load_idle_id = g_idle_add ((GSourceFunc)load_ipod_db_idle_cb, source);
 	}
 	g_object_unref (volume);
@@ -1625,6 +1626,11 @@
 	RBiPodSourcePrivate *priv = IPOD_SOURCE_GET_PRIVATE (source);
 	GList *p;
 
+        if (priv->ipod_db == NULL) {
+            RB_SOURCE_CLASS (rb_ipod_source_parent_class)->impl_delete_thyself (source);
+            return;
+        }
+
 	for (p = rb_ipod_db_get_playlists (priv->ipod_db);
 	     p != NULL;
 	     p = p->next) {
@@ -1647,10 +1653,8 @@
 		}
 	}
 
-	if (priv->ipod_db != NULL) {
-		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);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]