[Weekly Report] Week 5: Rhythmbox iPod/MTP Syncing



This last week I have been working on the Syncing function for the iPod. I am using the iPod plugin as a way to prototype the syncing function before moving the appropriate code up to the RBMediaPlayerSource, and into the MTP plugin.

I after the previous week getting preferences saving, I was focusing on the hashing and comparison this week, in an effort to get syncing functional. For syncing we need to build two lists, one of things needing to be added to the iPod and one of things needing removal. Initially I was having some trouble building these lists. To build these lists I set up two hash tables (one for iPod, one for Library), then do a comparison between them. Primarily my problem was in populating the hash of the library contents. In the process of sorting out the hashing problems I learned a lot about the way GHashTables work. I initially thought that they were supposed to have no collisions (so I was freaking out, when it gave me tons of collisions). Eventually, I figured out that I was getting collisions because I had duplicates on my iPod. There were a few curse words. The other part I was having trouble with was getting a list of RhythmDBEntry(s) for each playlist. I eventually discovered rb_playlist_source_get_query_model() which is super-helpful, as that is exactly what it returns. I also added a function rb_ipod_source_add_entries(RBiPodSource *, GList *), which mirrors rb_ipod_source_trash_entries, as a way to add and remove multiple entries. When I finally got it to start syncing and transferring files, I discovered a few bugs:
   - Undownloaded Podcasts Hang-up the Process
- I initially thought this was a bug in my code, but copying/pasting undownloaded podcasts to the iPod causes it to hang also. - I put in a kludge to fix this in syncing for now, but should probably be fixed in the track transfer code somewhere.
   - There is a set of 803 songs (for me) that it wants to always re-sync.
- I think it is a bug in the hashing functions, so that it thinks it has not transferred them correctly.

This week I will be working on the UI, so that it can be used to further test the syncing mechanism. Part of that will be working on the tree-view for selection of what to sync.

Paul


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