I tend to watch for Galleon-related threads on TCF and came across this one earlier this week. Basically it was reported that after making changes in the Music Player options, those changes would not be saved. I don’t really use the music player options but always enjoy a debugging challenge so decided to check it out.
First, I confirmed for myself that when I tried to change the Music Player options on my TiVo (by pressing the Enter key in one of the music apps like the Music Organizer), the changes wouldn’t take.
And I saw this error in the log:
ERROR [Acceptor] MusicOptionsScreen - java.lang.NullPointerException: Could not configure music player
If I tried changing the Music Player options through the Galleon GUI, a similar problem occured.
Again, the changes were not saved, and I saw this error in the log:
ERROR [AWT-EventQueue-0] MainFrame - java.lang.NullPointerException: Could not configure server
I suspected something was going wrong when the app was trying to write the settings back to Galleon’s configure.xml file (which contains all the server settings). For example, the line in my configure.xml file related to the Music Player options looked like this:
<musicPlayerConfiguration player="classic" randomPlayFolders="true" screensaver="false" showImages="false" skin="/usr/share/galleon/media/winamp/metrix.wsz" useAmazon="false" useFile="false" id="1"/>
I could see the date/time stamp on the file was not changing, nor were any of the changed options appearing on that line in the file. One way around this was to manually edit the settings in configure.xml and restart the Galleon service, but I wanted to find out what was actually going on …
I turned on debug mode, triggered the bug again and now saw this in the log:
ERROR [Acceptor] MusicOptionsScreen - java.lang.NullPointerException: Could not configure music player DEBUG [Acceptor] MusicOptionsScreen - java.lang.NullPointerException at org.lnicholls.galleon.widget.MusicOptionsScreen.handleExit(MusicOptionsScreen.java:158) ...
Moving deeper, line 158 in MusicOptionsScreen.java:
Ah, it had something to do with trying to save the skin option specifically. Looking again at my configure.xml file, I saw it referencing the following skin:
The problem was I had no such winamp folder under /usr/share/galleon/media! Now notice in the screenshots above that the skin option doesn’t even appear on the TiVo screen and is blank on the GUI dialog. I knew at some point in the past I had seen skins available in this option. Digging some more, I found the following in the ReleaseNotes.txt file:
The project has permission from the author of the Metrix Winamp classic skins (Sven Kistner) to distribute the skins with the Galleon project. However, for copyright reasons, the skins are not checked into the project CVS. The Galleon build script will add any *.wsz Winamp skin files that are in the media/winamp directory to a package build. The Galleon GUI will detect any *.wsz files that are in the media/winamp directory and will allow the user to pick a skin in the music app configuration screen.
So it looked like when the Galleon 2.5.5 release was built, those default WinAmp skins were missing from the media/winamp folder and thus not included in the distribution.
Now to fix this problem, simply download the Galleon 2.5.4 archive from Sourceforge (the Linux one is fine even for you Windows or Mac users), copy the media/winamp folder containing the metrix*.wsz files into your existing media folder where you have Galleon installed and then restart the service. You should now be able to save your settings (notice the skin option is present again on the TiVo screen and populated in the GUI dropdown list).
I’ve logged this in the project bugtracker on Sourceforge here. Hopefully this can be corrected in a future release, assuming there is one. In the meantime, I hope this helps someone fix their Music Player options!