Comment 11 for bug 424760

Revision history for this message
Sense Egbert Hofstede (sense) wrote :

I've been doing some extensive testing lately with this library and Banshee and the results weren't that good. I've traced it down to the problem in Banshee, but I haven't figured out yet what caused the problem inside libmtp.

It works like this: libmtp fetches a song from the player and puts it in a list -- if you call it that way in C(++), it uses a var->property syntax. The first song is saved in what is to become to return variable and the temporary variable is emptied and filled with the data of the new song. The pointer to this data is then saved in previous-song->next. This process continues until everything has been read.
It seems that in Banshee the pointer to the next song isn't a PtrInt, but rather an Int with the value 1. This breaks the whole thing.
Strangely the new library does seem to work reasonably well with Rhythmbox.

About the ABI/API changes: upstream specifically said that all applications that use the library should be rebuilt, but that the library was source compatible. The only changes to ABI were that some new functions and properties have been introduced in 1.0.0. I'm not sure if I got them added to the debian/libmtp8.symbols file correctly.
The 1.0.x versions also include a newly merged/fetched/rewritten PTP implementation.

However, rebuilding doesn't seem to be necessary at all (as far as I've tested) for most applications. Both Rhythmbox and Banshee apparantly use the symlink libmtp8.so.

When saying that 1.0.x does work with Rhythmbox without having to rebuild the media player I said reasonably because the library -- and its (mtp-)tools -- sometimes have problems with detecting devices and with properly 'mounting' it. It happens that you have to probe several times before your device is found and sometimes it says the device is busy, whereas it shouldn't. Mounting the device -- which allows you to access it via the gphoto:// protocol -- also seems to be a bit more aggressive, i.e. it mounts more often and sometimes even in spite of opened media players.

I also got a a few times a strange exception when using my player with Banshee telling me it couldn't detect the battery level. This was gone after a while, but I haven't found out what caused it.

After this testing I don't think it's still such a good idea to upload the new version of libmtp to Karmic. It feels to unstable to be given an exception so late in the development cycle. Instead lets make sure we get the latest version into the upcoming LTS in April 2010. We could backport some of the new devices, though.