On Sun, 2008-06-08 at 23:24 -0500, Gabriel Burt wrote: > 2008/6/7 Bertrand Lorentz <bertrand lorentz gmail com>: > > On Sat, 2008-06-07 at 14:24 -0500, Gabriel Burt wrote: > >> 2008/6/7 Bertrand Lorentz <bertrand lorentz gmail com>: > >> > I'd like to let you know that I've started to work on porting Mirage to > >> > the latest banshee code. > >> > I got it to compile, and now it is happily crashing banshee on startup. > >> > I must be doing something wrong when I'm adding the Source to the > >> > MusicLibrary. I'm accepting suggestion ! ;) > >> > >> Very cool! Still stuck? What's the error? > > > > The error is because I'm adding a child source to the MusicLibrary while > > other child sources (my smart playlists) are also being added. > > System.Collections was complaining on line 170 of SourceManager.cs. > > > > I guess I need to wait until the MusicLibrary has been completly > > loaded, with its children. > > The only way I've found for now is to wait until the VideoLibrary starts > > loading (it starts after MusicLibrary is finished)... > > > > There's probably a much better way, so enlighten me ! ;) > > What exception is being thrown? Sounds like a bug that should be fixed. After removing the ridiculous work-around described above, here's the log and exception I have : ---------------------------------------------- [Debug 20:59:54.093] Mirage: new source [Debug 20:59:54.096] Mirage: add source Collection was modified;enumeration operation may not execute. System.InvalidOperationException: Collection was modified;enumeration operation may not execute. at System.Collections.Generic.List`1 +Enumerator[Banshee.Sources.Source].MoveNext () [0x00069] in /var/tmp/portage/dev-lang/mono-1.2.6-r2/work/mono-1.2.6/mcs/class/corlib/System.Collections.Generic/List.cs:768 at Banshee.Sources.SourceManager.AddSource (Banshee.Sources.Source source, Boolean isDefault) [0x000e8] in /var/tmp/portage/media-sound/banshee-1.0.0/work/banshee-1-1.0.0/src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs:172 at Banshee.ServiceStack.Application.Run () [0x00023] in /var/tmp/portage/media-sound/banshee-1.0.0/work/banshee-1-1.0.0/src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs:83 at Banshee.Gui.GtkBaseClient.Initialize (Boolean registerCommonServices) [0x000b7] in /var/tmp/portage/media-sound/banshee-1.0.0/work/banshee-1-1.0.0/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs:106 at Banshee.Gui.GtkBaseClient..ctor (Boolean initializeDefault, System.String defaultIconName) [0x00013] in /var/tmp/portage/media-sound/banshee-1.0.0/work/banshee-1-1.0.0/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs:68 at Banshee.Gui.GtkBaseClient..ctor () [0x00000] in /var/tmp/portage/media-sound/banshee-1.0.0/work/banshee-1-1.0.0/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs:60 at Nereid.Client..ctor () [0x00000] at (wrapper managed-to-native) System.Reflection.MonoCMethod:InternalInvoke (object,object[]) at System.Reflection.MonoCMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0003f] in /var/tmp/portage/dev-lang/mono-1.2.6-r2/work/mono-1.2.6/mcs/class/corlib/System.Reflection/MonoMethod.cs:400 Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object at Hyena.Data.Gui.ListView`1[Banshee.Collection.ArtistInfo].PaintRows (Rectangle ) [0x00118] in /var/tmp/portage/media-sound/banshee-1.0.0/work/banshee-1-1.0.0/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs:191 at Hyena.Data.Gui.ListView`1[Banshee.Collection.ArtistInfo].OnExposeEvent (Gdk.EventExpose ) [0x000d3] in /var/tmp/portage/media-sound/banshee-1.0.0/work/banshee-1-1.0.0/src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs:88 at Gtk.Widget.exposeevent_cb (IntPtr widget, IntPtr evnt) [0x00000] at (wrapper native-to-managed) Gtk.Widget:exposeevent_cb (intptr,intptr) at (wrapper managed-to-native) Gtk.Dialog:gtk_dialog_run (intptr) at Gtk.Dialog.Run () [0x00000] at Hyena.Gui.CleanRoomStartup.Startup (Hyena.Gui.StartupInvocationHandler startup) [0x00076] in /var/tmp/portage/media-sound/banshee-1.0.0/work/banshee-1-1.0.0/src/Libraries/Hyena.Gui/Hyena.Gui/CleanRoomStartup.cs:61 at Banshee.Gui.GtkBaseClient.Entry[Client] () [0x00024] in /var/tmp/portage/media-sound/banshee-1.0.0/work/banshee-1-1.0.0/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs:50 at Nereid.Client.Main (System.String[] args) [0x0009b] in /var/tmp/portage/media-sound/banshee-1.0.0/work/banshee-1-1.0.0/src/Clients/Nereid/Nereid/Client.cs:77 ------------------------------------------------------ And here's the relevant bits of code from the mirage plugin initialization : ------------------------------------------------------ void IExtensionService.Initialize () { <...> ServiceManager.SourceManager.SourceAdded += OnSourceAdded; } private void OnSourceAdded (SourceAddedArgs args) { ServiceStartup (); } private bool ServiceStartup () { if (ServiceManager.SourceManager.MusicLibrary == null) { return false; } if (continuousPlaylist == null) { <....> Log.Debug("Mirage: new source"); continuousPlaylist = new ContinuousGeneratorSource("Playlist Generator", db); Log.Debug("Mirage: add source"); ServiceManager.SourceManager.MusicLibrary.AddChildSource(continuousPlaylist); } return true; } ------------------------------------------------------ -- Bertrand Lorentz <bertrand lorentz gmail com> > http://flickr.com/photos/bl8/ <
Attachment:
signature.asc
Description: This is a digitally signed message part