2006-06-18  James Livingston  <[email protected]>

       * configure.ac: bump version
       * NEWS: add NEWS for 0.9.5

2006-06-18  Jonathan Matthew  <[email protected]>

       * lib/rb-file-helpers.c: (rb_uri_handle_recursively_cb),
       (rb_uri_handle_recursively):
       Don't attempt to recurse into directories we can't open.
       Fixes #341485.

2006-06-18  James Livingston  <[email protected]>

       patch by: Jaap A. Haitsma  <[email protected]>

       * shell/rb-shell.c: Add F11 as a shortcut for Party Mode. Fixes
       #344610.

2006-06-18  Jonathan Matthew  <[email protected]>

       * bindings/python/rb.defs:
       * shell/rb-shell-player.c: (rb_shell_player_play_entry), (eos_cb):
       * shell/rb-shell-player.h:
       * shell/rb-shell.c: (rb_shell_play_entry):
       Add source parameter to rb_shell_player_play_entry, using the selected
       source if not specified.

       * shell/rb-play-order.c: (rb_play_order_class_init),
       (rb_play_order_finalize), (rb_play_order_query_model_changed),
       (rb_play_order_row_deleted_cb), (sync_playing_entry_cb),
       (default_playing_entry_removed):
       * shell/rb-play-order.h:
       Move entry removal handling back to the row-deleted signal, as we need
       the entry to be present in the model.  When changing to the next entry
       after the playing entry is deleted, set the new entry as the playing
       entry and then sync it to the player in an idle handler, so we don't
       end up playing it if it was removed too.
       * shell/rb-play-order-queue.c:
       (rb_queue_play_order_playing_entry_changed),
       (rb_queue_play_order_playing_entry_removed):
       Use the playing-entry-removed handler from the play order class,
       setting a flag so we don't try to remove the already-removed entry
       from the model.

       This makes removal of the playing entry from playlists etc. work more
       or less correctly for all play orders.  Fixes #344627.

2006-06-17  James Livingston  <[email protected]>

       patch by: Elijah Newren  <[email protected]>

       * tests/test-rhythmdb.c: fix the build with older versions of check
       (again). Fixes #343718.

2006-06-17  James Livingston  <[email protected]>

       * player/rb-recorder-gst.c: (rb_recorder_construct): use the right
       name for capsfilter's "caps" property. Fixes #344968.

2006-06-17  Jonathan Matthew  <[email protected]>

       * shell/rb-shell-player.c: (rb_shell_player_playpause):
       Don't leak the selected entry list when finding an entry to play.

2006-06-17  James Livingston  <[email protected]>

       * widgets/rb-entry-view.c: (rb_entry_view_emit_selection_changed),
       (rb_entry_view_selection_changed_cb): don't do O(n) operations here,
       as a O(1) one works fine, and it will get called often when the user
       deleted multiple tracks. Part of #344922.

2006-06-17  James Livingston  <[email protected]>

       * shell/rb-shell-player.c: (rb_shell_player_stop): make
       rb_shell_player_stop and rb_shell_player_playpause not mutually
       recursive. Fixed #336912.

2006-06-17  Jonathan Matthew  <[email protected]>

       * podcast/rb-podcast-parse.c: (rb_podcast_parser_start_element):
       Treat nested elements inside properties as unknown.  Fixes parsing of
       podcast feeds with unescaped HTML in description tags, bug #344532.

2006-06-15  William Jon McCann  <[email protected]>

       * shell/rb-shell.c (rb_shell_quit): Unset the playing source
       when quitting.  Fixes #344875.

2006-06-15  Jonathan Matthew  <[email protected]>

       * shell/rb-play-order.c: (rb_play_order_post_entry_delete_cb):
       Move the playing-entry-removed handling to after the normal entry
       delete handling, since we're called after the entry has been removed
       from the query model now.  Fixes crashes described in #344627.

2006-06-13  William Jon McCann  <[email protected]>

       * widgets/rb-rating-helper.c: (rb_rating_render_stars),
       (rb_rating_get_rating_from_widget):
       * widgets/rb-rating.c: (rb_rating_class_init),
       (rb_rating_finalize), (rb_rating_get_property),
       (rb_rating_set_property), (rb_rating_new), (rb_rating_expose),
       (rb_rating_button_press_cb):
       Don't crash when ratings icons can't be found.  Fixes #344533.

2006-06-12  Jonathan Matthew  <[email protected]>

       * remote/dbus/Makefile.am: Fix build with builddir != srcdir.

2006-06-11  Jonathan Matthew  <[email protected]>

       * Makefile.am:
       * configure.ac:
       * remote/Makefile.am:
       * remote/dbus/Makefile.am:
       * remote/dbus/rb-client.c:
       * shell/Makefile.am:
       New dbus client program providing --play/--next etc. arguments.
       Fixes #340863, #155763.

2006-06-11  Jonathan Matthew  <[email protected]>

       * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post):
       g_mkdir_with_parents returns -1 on error, not 0.  Fixes #344316.

2006-06-10  Ryan P Skadberg  <[email protected]>

       patch by: Jonathan Matthew <[email protected]>

       * rhythmdb/rhythmdb-query-model.c:
       (rhythmdb_query_model_drag_data_get): Fix for Podcasts getting added
       to Library incorrectly

2006-06-08  Jonathan Matthew  <[email protected]>

       * lib/rb-file-helpers.c: (rb_canonicalise_uri):
       Return input string untouched if gnome_vfs_uri_new returns NULL.
       * sources/rb-static-playlist-source.c: (impl_receive_drag),
       (rb_static_playlist_source_add_list_uri):
       Use rb_uri_list_parse rather than gnome_vfs_uri_list_parse so DAAP
       URIs don't break it.  Fixes #339033.

2006-06-08  James Livingston  <[email protected]>

       * lib/rb-tree-dnd.c: (scroll_row_timeout): fix "select on drag hover"
       for sources on the edge (i.e. the queue). Fixes #328409.

       * sources/rb-ipod-source.c: fix typo

2006-06-08  James Livingston  <[email protected]>

       * configure.ac:
       * sources/rb-ipod-source.c: (rb_ipod_source_class_init): add a
       --enable-ipod-writing to enable the ipod syncing code.

2006-06-08  Jonathan Matthew  <[email protected]>

       * sources/rb-library-source.c: (layout_example_label_update):
       add missing comma so we don't generate broken markup.

2006-06-08  James Livingston  <[email protected]>

       * metadata/rb-metadata-gst.c: (rb_add_id3_tagger): check for backwards
       tag-merging with id3v2mux as well as id3mux. From #342330.

2006-06-07  James Livingston  <[email protected]>

       * tests/test-rhythmdb.c: #define fail_if for old version of check
       which don't have it. Hopefully fixes #343718.

2006-06-07  James Livingston  <[email protected]>

       * shell/rb-playlist-manager.c:
       (rb_playlist_manager_cmd_edit_automatic_playlist): don't call
       g_value_array_free with NULL. Fixes #341053.

2006-06-07  James Livingston  <[email protected]>

       * shell/rb-playlist-manager.c:
       (rb_playlist_manager_playlist_entries_changed),
       (rb_playlist_manager_set_source): use the "post-entry-delete" signal
       instead of "row-removed", which fixes updating "burn playlist"
       sensitivity. Fixes #331119.

2006-06-07  James Livingston  <[email protected]>

       * shell/rb-shell-player.c: (rb_shell_player_error): display errors
       rather than restarting if the source uses _RETRY and there is an
       actual error (like an undecodable stream) rather than it just dropping
       out and causing EOS.

2006-06-07  James Livingston  <[email protected]>

       * widgets/rb-rating-helper.c: (rb_rating_pixbufs_free): don't try to
       free the pixbufs if they couldn't be loaded. Fixed #343852.

2006-06-07  James Livingston  <[email protected]>

       * sources/rb-playlist-source-recorder.c: (response_cb): make pressing
       the close button on the dialog work. Fixes #335346.

2006-06-07  Jonathan Matthew  <[email protected]>

       * sources/rb-sourcelist-model.c: (path_is_droppable),
       (path_is_reorderable):
       * sources/rb-sourcelist.c: (rb_sourcelist_selection_changed_cb),
       (row_activated_cb), (emit_show_popup), (key_release_cb),
       (rb_sourcelist_title_cell_data_func), (source_name_edited_cb):
       Ignore group marker rows in the source list.  Fixes #344089, a couple
       of other crashers, and some weird UI glitches too.

2006-06-07  James Livingston  <[email protected]>

       * backends/gstreamer/rb-player-gst.c: check if we have a duration if
       the seeking query fails. This is needed because many gst elements
       don't implement the seeking query yet. Should fix 329977.

2006-06-06  James Livingston  <[email protected]>

       * configure.ac: bump version for a prerelease, turn on track transfer
       by default.

       * sources/rb-ipod-source.c: (rb_ipod_source_class_init): disable the
       ipod transfer stuff, since it has big issues and we'll hopefully land
       real support (bug 310774) after 0.9.5

2006-06-06  James Livingston  <[email protected]>

       * metadata/rb-metadata-gst.c: (rb_add_id3_tagger): actually use
       id3v2mux once we've detected it.

2006-06-06  James Livingston  <[email protected]>

       * lib/Makefile.am:
       * tests/test-rhythmdb.c: undo accidental commit which caused
       rb-thread.c to be built (which it isn't normally)

2006-06-06  James Livingston  <[email protected]>

       * tests/test-rhythmdb.c: (test_rhythmdb_setup),
       (test_rhythmdb_shutdown), (START_TEST): add message strings to all
       fail_{if/unless} calls, as some versions of check need them (they are
       optional in others). Should fix bug 343718.

2006-06-06  James Livingston  <[email protected]>

       * lib/rb-debug.c: (rb_profiler_new): fix if statement, from bug
       343836.

       * lib/Makefile.am:
       * lib/rb-thread.c: (process_actions):
       * tests/test-rhythmdb.c: (START_TEST): fix distcheck, and disable
       tests that don't pass.

2006-06-05  James Livingston  <[email protected]>

       * data/glade/Makefile.am:
       * data/glade/load-failure.glade:
       * data/rhythmbox.schemas: remove the remainder of the old load-failure
       dialog.

2006-06-05  Jonathan Matthew  <[email protected]>

       * bindings/python/rb.defs:  Remove rb_debug stuff I accidentally
       checked in.

2006-06-04  Jonathan Matthew  <[email protected]>

       * bindings/python/rb.defs:
       * sources/rb-source.h:
       * sources/rb-source.c: (rb_source_class_init),
       (rb_source_set_property), (rb_source_get_property),
       (rb_sourcelist_group_get_type):
       Add 'sourcelist-group' property on the RBSource class, describing how
       sources should be grouped in the source list.

       * sources/rb-sourcelist-model.c: (rb_sourcelist_model_finalize),
       (rb_sourcelist_model_new), (real_row_is_separator),
       (rb_sourcelist_model_is_row_visible),
       (rb_sourcelist_model_row_is_separator), (get_group_for_path),
       (rb_sourcelist_model_drag_data_received), (path_is_reorderable),
       (rb_sourcelist_model_row_draggable),
       (rb_sourcelist_model_row_inserted_cb),
       (rb_sourcelist_model_row_deleted_cb),
       (rb_sourcelist_model_get_group_path):
       * sources/rb-sourcelist-model.h:
       * sources/rb-sourcelist.c: (rb_sourcelist_init),
       (rb_sourcelist_append):
       Add group marker rows for each sourcelist group, and use these to
       insert sources in the right place.  Sort transient sources (DAAP
       shares) by name.  Show the group marker rows as separators when the
       next visible row is a source.  Make persistant sources (playlists) and
       removable sources reorderable using drag and drop, restricting them
       within the source groups.

       * sources/rb-audiocd-source.c: (rb_audiocd_source_new):
       * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_new):
       * sources/rb-daap-source.c: (rb_daap_source_new):
       * sources/rb-ipod-source.c: (rb_ipod_source_new):
       * sources/rb-static-playlist-source.c:
       (rb_static_playlist_source_new):
       * plugins/generic-player/rb-generic-player-source.c:
       (rb_generic_player_source_new):
       * plugins/generic-player/rb-nokia770-source.c:
       (rb_nokia770_source_new):
       * plugins/generic-player/rb-psp-source.c: (rb_psp_source_new):
       Add source list group information to existing source classes.

       Fixes #318754 and #336492.

2006-06-04  James Livingston  <[email protected]>

       * widgets/rb-song-info.c: (rb_song_info_populate_dialog),
       (rb_song_info_update_year), (rb_song_info_sync_entries_multiple):
       win32 build fixes.

2006-06-03  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb-query-model.c:
       (rhythmdb_query_model_class_init),
       (rhythmdb_query_model_remove_from_main_list):
       * rhythmdb/rhythmdb-query-model.h:
       Add a new 'post-entry-delete' signal, emitted when the entry has been
       removed from the model's data structures.

       * shell/rb-play-order.c: (rb_play_order_finalize),
       (rb_play_order_query_model_changed),
       (rb_play_order_post_entry_delete_cb):
       Use the new signal to update the play order, so the queue play order
       doesn't try to scroll to entries that don't exist in a way that causes
       the tree view to crash.  Fixes #340216.

2006-06-03  Jonathan Matthew  <[email protected]>

       * backends/gstreamer/rb-encoder-gst.c: (progress_timeout_cb):
       Fix rb_debug call I missed previously.

2006-06-03  Jonathan Matthew  <[email protected]>

       * metadata/rb-metadata-gst.c:
       Don't use NULL as the error message for ignored files, as it crashes
       with some C libraries.  Fixes #343713.

2006-06-03  Jonathan Matthew  <[email protected]>

       * widgets/rb-dialog.c: (rb_error_dialog):
       * widgets/rb-dialog.h:
       Mark rb_error_dialog as taking printf-like arguments, and use a format
       string for the primary message rather than passing in the message
       directly.

       * lib/eel-gconf-extensions.c: (eel_gconf_handle_error):
       * shell/rb-shell-player.c: (rb_shell_player_cmd_play),
       (info_available_cb):
       * shell/rb-playlist-manager.c: (load_playlist_response_cb):
       * shell/rb-removable-media-manager.c:
       (rb_removable_media_manager_eject_medium_cb):
       Make sure all calls to rb_error_dialog use string constants for the
       format string rather than passing the error message directly.  Remove
       an extra %s from the message used when playback fails.  Fixes #343562.

       * lib/rb-debug.h:
       * sources/rb-audiocd-source.c:
       * plugins/audioscrobbler/rb-audioscrobbler.c:
       (rb_audioscrobbler_do_handshake), (rb_audioscrobbler_submit_queue):
       Mark rb_debug as taking printf-like arguments and fix a few resulting
       warnings.

2006-06-02  James Livingston  <[email protected]>

       * configure.ac:
       + macros/check.m4: add support for using check for unit tests, the .m4
       files is so autogen can run without check being installed

       * tests/Makefile.am:
       + tests/test-rhythmdb.c: update the tests to new rhythmdb API, port
       some of the old tests, and add some new ones. Currently
       deserialisation tests 2 and 3 fail, for reasons I haven't figured out
       yet (the query doesn't return any entries).

       - tests/deserialization-test1.xml:
       - tests/deserialization-test2.xml:
       - tests/deserialization-test3.xml:
       - tests/test-rhythmdb-indexing.c:
       - tests/test-rhythmdb-simple.c:
       - tests/test-rhythmdb-tree-deserialization.c: remove old tests that
       have been ported

       - tests/test-cd.c:
       - tests/test-cmdline.c: remove obsolete tests

2006-06-02  James Livingston  <[email protected]>

       * metadata/rb-metadata-gst.c: (rb_gst_plugin_greater),
       (rb_add_id3_tagger), (rb_metadata_init): add support for using
       id3v2mux, and check whether we are using a version of id3mux that has
       the correct merge-mode behaviour.

       * plugins/sample-python/Makefile.am: fix distcheck.

       * rhythmdb/rhythmdb-monitor.c: (rhythmdb_finalize_monitoring): check
       the changed-files source was added before trying to remove it.

       * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_evaluate_query): fix an
       *old* bug which would crash if a query with top-level disjunctions
       tried to check later disjunctive parts. Hooray for unit-testing.

2006-06-02  William Jon McCann  <[email protected]>

       * player/rb-recorder-gst.c (rb_recorder_set_device):
       Check for a null drive.

2006-05-31  Jonathan Matthew  <[email protected]>

       * lib/Makefile.am:
       * lib/rb-stock-icons.c: (rb_stock_icons_init):
       Register the app icon as a builtin if the icon theme can't find it.

2006-05-31  James Livingston  <[email protected]>

       * player/rb-recorder-gst.c: add missing include.

2006-05-30  William Jon McCann  <[email protected]>

       * metadata/sj-metadata-musicbrainz.c: (lookup_cd):
       * player/rb-recorder-gst.c: (rb_recorder_get_default_drive),
       (tick_timeout_cb), (rb_recorder_sync_pipeline),
       (nautilus_burn_drive_get_device), (rb_recorder_get_device),
       (rb_recorder_set_device), (rb_recorder_get_default_device):
       * shell/main.c: (main):
       * shell/rb-removable-media-manager.c:
       (rb_removable_media_manager_finalize),
       (get_nautilus_burn_drive_for_path),
       (rb_removable_media_manager_playing_uri_changed_cb),
       (rb_removable_media_manager_load_media),
       (nautilus_burn_drive_get_device),
       (rb_removable_media_manager_scan):
       * sources/rb-playlist-source-recorder.c: (ask_rewrite_disc):

       Update for libnautilus-burn 2.15.3 API changes.
       Fixes #342604

2006-05-30  James Livingston  <[email protected]>

       * daapsharing/rb-daap-connection.c: (handle_login): add a missing
       "return" to that it asks for the password again if it was wrong.

2006-05-30  Jonathan Matthew  <[email protected]>

       * metadata/rb-metadata-gst.c:  Don't leak a reference to decodebin's
       typefind element.

2006-05-30  James Livingston  <[email protected]>

       * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post),
       (download_progress_cb): don't do wonky things if the transfer
       "suceeds" without transferring any data.

2006-05-29  Jonathan Matthew  <[email protected]>

       * sources/rb-library-source.c: (layout_example_label_update),
       (build_filename):  Fix crash when no audio profile is selected.
       Fixes #341447.

2006-05-29  Jonathan Matthew  <[email protected]>

       * shell/rb-shell.c: (rb_shell_clear_queue):
       * shell/rb-shell.h:
       * shell/rb-shell.xml:
       * sources/rb-play-queue-source.c:
       (rb_play_queue_source_clear_queue),
       (rb_play_queue_source_cmd_clear):
       * sources/rb-play-queue-source.h:
       Add clearQueue dbus method.

2006-05-29  Jonathan Matthew  <[email protected]>

       * shell/main.c: (main):  Implement --quit option.

2006-05-29  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb-private.h:
       * rhythmdb/rhythmdb-tree.h:
       * rhythmdb/rhythmdb.c: (process_added_entries_cb),
       (rhythmdb_entry_insert), (rhythmdb_entry_set),
       (rhythmdb_entry_set_nonotify), (rhythmdb_entry_set_uninserted),
       (rhythmdb_entry_set_internal), (rhythmdb_entry_sync_mirrored),
       (rhythmdb_entry_get_boolean):
       Replace 'visibility' and 'inserted' in RhythmDBEntry with a flag
       bitmask, giving the db backend anything past the first 16 bits for
       its own private use.

       * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element),
       (save_entry), (rhythmdb_tree_entry_new), (rhythmdb_tree_entry_set):
       Add a 'loading' flag to indicate that an entry is being loaded from
       disk, and use that to ignore entry_set operations on such entries
       rather than the 'inserted' flag, which doesn't quite mean the same
       thing.  Fixes #342694.

2006-05-28  Jonathan Matthew  <[email protected]>

       * shell/rb-shell.xml: Remove visibility property, since it causes
       crashes (dbus bug 7057) and doesn't do much else.

2006-05-28  James Livingston  <[email protected]>

       * plugins/audioscrobbler/Makefile.am: fix some distcheck issues.

       patch by: Nguyễn Thái Ngọc Duy  <[email protected]>
       * po/POTFILES.in: fix some more i18n issues.

2006-05-28  Jonathan Matthew  <[email protected]>

       * bindings/python/rb.defs:
       * shell/rb-shell-player.c: (rb_shell_player_playpause),
       (filter_mmkeys):
       * shell/rb-shell-player.h:
       Deprecate the useless 'ignore_stop' parameter to
       rb_shell_player_playpause, leaving it in place to avoid breaking dbus
       API.  From bug #334829.

2006-05-28  Jonathan Matthew  <[email protected]>

       * plugins/generic-player/rb-generic-player-source.c:
       (visit_playlist_dirs), (default_transform_playlist_uri):
       When playlist parsing fails, unref the playlist, not the parent
       source.  Fix memory leak in playlist uri transform.
       * plugins/generic-player/rb-nokia770-source.c:
       (impl_transform_playlist_uri):
       Fix memory leak in playlist uri transform.

2006-05-27  Ryan P Skadberg  <[email protected]>

       * doc/reference/Makefile.am: fix grk-doc build

2006-05-27  James Livingston  <[email protected]>

       patch by: Nguyễn Thái Ngọc Duy  <[email protected]>

       * plugins/lyrics/lyrics.py:
       * po/POTFILES.in: Make strings in plugins translatable. From bug
       343081.

2006-05-27  James Livingston  <[email protected]>

       * backends/Makefile.am:
       * backends/gstreamer/Makefile.am:
       * lib/Makefile.am:
       * plugins/audioscrobbler/Makefile.am:
       * plugins/generic-player/Makefile.am:
       * po/POTFILES.in:
       * rhythmdb/rhythmdb-monitor.c:
       * rhythmdb/rhythmdb.c:
       * sources/Makefile.am:
       * widgets/Makefile.am: fix compilation after some CVS surgery was
       done.

2006-05-26  Jonathan Matthew  <[email protected]>

       * bindings/python/rhythmdb.defs:
       * rhythmdb/rhythmdb-query.c: (write_encoded_gvalue),
       (rhythmdb_read_encoded_property), (rhythmdb_query_serialize),
       (rhythmdb_query_deserialize):
       * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_entry_allocate),
       (rhythmdb_entry_get_type_data), (rhythmdb_entry_finalize),
       (rhythmdb_entry_set_internal), (rhythmdb_entry_register_type),
       (rhythmdb_entry_register_type_alias),
       (rhythmdb_entry_type_get_by_name), (rhythmdb_entry_song_get_type),
       (rhythmdb_entry_ignore_get_type), (rhythmdb_entry_iradio_get_type),
       (_podcast_data_destroy), (rhythmdb_entry_podcast_post_get_type),
       (rhythmdb_entry_podcast_feed_get_type),
       (rhythmdb_entry_import_error_get_type),
       (rhythmdb_entry_get_string), (rhythmdb_entry_get_ulong):
       * rhythmdb/rhythmdb.h:
       Allocate a specified amount of extra memory for each db entry, to be
       used to store fields specific to the entry type.  Optionally associate
       a name with each entry type, to be used when saving entries and
       auto playlists to disk.  Allow entry types to have multiple names
       to handle older playlist files that used '0' to represent 'song'.
       Use private data to store podcast fields.

       * rhythmdb/rhythmdb-private.h:
       * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element),
       (rhythmdb_tree_parser_end_element), (save_entry),
       (rhythmdb_tree_entry_set):
       Simplify property handling by using existing code to convert
       properties from strings to GValues and to set properties on entries.
       Other assorted changes due to the above.

       * sources/rb-audiocd-source.c: (rb_audiocd_source_new):
       * sources/rb-daap-source.c: (rhythmdb_entry_daap_type_new):
       * sources/rb-generic-player-source.c:
       (rb_generic_player_source_new):
       * sources/rb-ipod-source.c: (rb_ipod_source_new):
       * sources/rb-nokia770-source.c: (rb_nokia770_source_new):
       * sources/rb-psp-source.c: (rb_psp_source_new):
       Update for changes to rhythmdb_entry_register_type.  None of these
       entry types need names or use private data.

       Fixes #337429.

2006-05-25  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb.c: (rhythmdb_add_import_error_entry):
       Fix creation of ignored-file db entries - need to check for
       RHYTHMDB_ENTRY_TYPE_INVALID as well as _SONG.

2006-05-25  James Livingston  <[email protected]>

       * AUTHORS:
       * MAINTAINERS: update my email address

2006-05-25  James Livingston  <[email protected]>

       * plugins/lyrics/lyrics.py: strip annotations like "(live ...)" and
       "(... mix)" when searching for lyrics. Cache the lyrics under
       ~/.gnome2/rhythmbox/lyrics/. Fixes bug 342319.

2006-05-25  Jonathan Matthew  <[email protected]>

       * sources/rb-import-errors-source.c:
       (rb_import_errors_source_class_init):
       * sources/rb-playlist-source.c: (rb_playlist_source_class_init):
       * sources/rb-browser-source.c: (rb_browser_source_class_init):
       * sources/rb-source.c: (rb_source_class_init),
       (default_move_to_trash):
       Implement the basic move-to-trash operation once in rb-source.c,
       rather than in each source type that supports it.

       * plugins/ipod/rb-ipod-plugin.c:
       * shell/rb-removable-media-manager.c:
       * shell/rb-shell.c: (rb_shell_constructor):
       Only scan removable media once after loading plugins.  Add a flag
       plugins can use to check if the initial scan has been done.

       * data/rhythmbox.schemas:
       Enable ipod and generic-player plugins by default.

       * configure.ac:
       * data/ui/Makefile.am:
       * data/ui/generic-player-ui.xml:
       * data/ui/rhythmbox-ui.xml:
       * plugins/Makefile.am:
       * plugins/generic-player/Makefile.am:
       * plugins/generic-player/generic-player.rb-plugin.desktop.in:
       * plugins/generic-player/rb-generic-player-plugin.c:
       * sources/Makefile.am:
       * sources/rb-generic-player-source.c:
       * sources/rb-generic-player-source.h:
       * sources/rb-nokia770-source.c:
       * sources/rb-nokia770-source.h:
       * sources/rb-psp-source.c: (visit_playlist_dirs):
       * sources/rb-psp-source.h:
       Pluginise generic player (and nokia770 and PSP) support and add
       move-to-trash for players not mounted read-only.
       Fixes #342868.

2006-05-24  William Jon McCann  <[email protected]>

       * daapsharing/rb-daap-connection.c (handle_song_listing):
       Lower bound check for batch commit.  Fixes #342848

       * sources/rb-daap-source.c (rb_daap_source_get_status):
       Always set output variables if provided.

2006-05-25  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_entry_new),
       (rhythmdb_tree_entry_delete), (remove_one_song):
       * rhythmdb/rhythmdb.c: (process_deleted_entries_cb):
       Fix two db entry reference counting problems.
       The initial reference on the entry is held by the db backend, but it
       was never being dropped.  The reference count was incremented when
       adding an entry to the deleted_entries map and to the
       deleted_entries_to_emit list, but only decremented for one of those.

2006-05-24  William Jon McCann  <[email protected]>

       * daapsharing/rb-daap-connection.c (http_response_handler)
       (rb_daap_connection_dispose):
       Call soup_session_abort to make sure there are no outstanding
       requests when we dispose of the connection.  Ignore cancelled
       messages in the callback.

2006-05-24  William Jon McCann  <[email protected]>

       * sources/rb-daap-source.c (rb_daap_source_connection_cb)
       (rb_daap_source_disconnect): Set a flag when disconnecting
       the source.  Check this flag in connection callback
       to see if we should release the connection.

2006-05-24  William Jon McCann  <[email protected]>

       * daapsharing/Makefile.am:
       * daapsharing/rb-daap-connection.c: (rb_daap_connection_finalize),
       (rb_daap_connection_class_init), (connection_connected),
       (connection_disconnected), (connection_operation_done),
       (build_message), (connection_set_error_message),
       (actual_http_response_handler), (http_get),
       (entry_set_string_prop), (emit_progress_idle),
       (handle_server_info), (handle_login), (handle_update),
       (handle_database_info), (handle_song_listing), (handle_playlists),
       (handle_playlist_entries), (handle_logout),
       (rb_daap_connection_new), (rb_daap_connection_is_connected),
       (connection_response_data_free), (connected_cb),
       (rb_daap_connection_connect), (disconnected_cb),
       (rb_daap_connection_finish), (rb_daap_connection_disconnect),
       (rb_daap_connection_state_done), (rb_daap_connection_do_something),
       (rb_daap_connection_dispose), (rb_daap_connection_set_property),
       (rb_daap_connection_get_property):
       * daapsharing/rb-daap-connection.h:
       * daapsharing/rb-daap-hash.c: (byteReverse), (OpenDaap_MD5Init),
       (OpenDaap_MD5Update), (OpenDaap_MD5Final), (MD5Transform),
       (DigestToString), (GenerateStatic_42), (GenerateStatic_45),
       (rb_daap_hash_generate):
       * daapsharing/rb-daap-hash.h:
       * sources/rb-daap-source.c: (rb_daap_source_class_init),
       (rb_daap_get_icon), (remove_source), (stop_browsing),
       (create_pixbufs), (destroy_pixbufs), (rb_daap_sources_shutdown),
       (connection_connecting_cb), (connection_disconnected_cb),
       (release_connection), (rb_daap_source_connection_cb),
       (rb_daap_source_activate), (rb_daap_source_disconnect_cb),
       (rb_daap_source_cmd_disconnect), (rb_daap_source_disconnect):

       Adds a better async API for connect and disconnect.  Doesn't share
       callback data for every async call.  Adds a connect signal.  Uses
       an operation-done signal to trigger the callbacks.  Displays an
       error when connections fail.  A few refcounting fixes to fix
       crashes.  Uses a weak pointer to set the connection to NULL so we
       don't clobber references.  Wait for each disconnect when shutting
       down sources.  Split out DAAP hash stuff into its own file.  Fix
       typo in header.

       Fixes #342643

2006-05-24  Jonathan Matthew  <[email protected]>

       * sources/rb-auto-playlist-source.c:
       (rb_auto_playlist_source_new_from_xml):
       Initialize the gvalue used to hold the size limit correctly.
       Fixes #342744.

2006-05-23  Jonathan Matthew  <[email protected]>

       * shell/rb-shell.c: (rb_shell_window_delete_cb),
       (rb_shell_cmd_quit), (rb_shell_quit), (session_die_cb):
       * shell/rb-shell.h:
       * shell/rb-shell.xml:
       Convert rb_shell_quit into a dbus method, and add visibility dbus
       property.

2006-05-22  James Livingston  <[email protected]>

       * rhythmdb/rhythmdb.h:
       * rhythmdb/rhythmdb.c: (sync_entry_changed),
       (rhythmdb_entry_is_editable), (action_thread_main),
       (song_can_sync_metadata), (default_sync_metadata): Add entry-type
       vfuncs for can_sync_metadata, and sync_metadata. The default is always
       false, and syncing into the file.

       (rhythmdb_entry_register_type), (rhythmdb_entry_song_get_type),
       (rhythmdb_entry_iradio_get_type),
       (rhythmdb_entry_import_error_get_type):
       * sources/rb-audiocd-source.c: (rb_audiocd_source_new): Set the above
       vfuncs to do the right thing. IRADIO and Audio-cd entry-type just
       change the DB.

2006-05-22  Jonathan Matthew  <[email protected]>

       * rhythmdb/Makefile.am:
       * rhythmdb/rhythmdb-monitor.c:
       * rhythmdb/rhythmdb-private.h:
       * rhythmdb/rhythmdb-query.c:
       * rhythmdb/rhythmdb.c:
       Split up rhythmdb.c a bit.

2006-05-22  Jonathan Matthew  <[email protected]>

       * data/glade/audioscrobbler-prefs.glade:
       Add a link to the last.fm server status page.

2006-05-20  Dennis Cranston  <[email protected]>

       * plugins/audioscrobbler/audioscrobbler.rb-plugin.desktop.in:
       Capitalization fix.
       * plugins/audioscrobbler/rb-audioscrobbler-plugin.c:
       (impl_create_configure_dialog):  UI layout fixes, remove
       dialog separator, and capitalization fix for window title.
       * shell/rb-shell.c: (rb_shell_cmd_plugins):  UI layout fixes,
       and remove dialog separator.
       * data/glade/plugins.glade:  UI layout fixes.
       * data/glade/audioscrobbler-prefs.glade:  UI layout fixes,
       and capitalization fix.  Fixes #342438.

2006-05-20  Dennis Cranston  <[email protected]>

       * data/glade/podcast-properties.glade:  Fix layout of the download
       location.  Fixes #342431.

2006-05-21  Jonathan Matthew  <[email protected]>

       * data/ui/rhythmbox-ui.xml:
       We only need one copy of the 'add to queue' action in the edit menu.

2006-05-20  James Livingston  <[email protected]>

       * data/ui/rhythmbox-ui.xml:
       * shell/rb-shell-clipboard.c: (rb_shell_clipboard_class_init),
       (rb_shell_clipboard_finalize), (rb_shell_clipboard_set_property),
       (rb_shell_clipboard_get_property), (rb_shell_clipboard_new),
       (rb_shell_clipboard_sync),
       (rb_shell_clipboard_cmd_add_to_playlist_new),
       (rb_shell_clipboard_cmd_queue_song_info),
       (rb_shell_clipboard_playlist_add_cb), (generate_action_name),
       (rb_shell_clipboard_playlist_deleted_cb),
       (rb_shell_clipboard_playlist_renamed_cb),
       (rb_shell_clipboard_playlist_visible_cb), (add_playlist_to_menu),
       (rebuild_playlist_menu), (rb_shell_clipboard_playlist_added_cb):
       * shell/rb-shell-clipboard.h: add an "add to playlist" menu, which is
       dynamically generated with all the static playlists. Fixes bug 323364.

       * shell/rb-shell.c: (construct_widgets), (construct_sources): use the
       right child, so it doesn't go weird when art appears and disappears.

2006-05-20  James Livingston  <[email protected]>

       patch by: Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb-query-model.c:
       (rhythmdb_query_model_set_property),
       (rhythmdb_query_model_finalize),
       (rhythmdb_query_model_reapply_query_cb):
       * rhythmdb/rhythmdb.c: (rhythmdb_query_preprocess),
       (rhythmdb_query_append_prop_multiple),
       (rhythmdb_query_is_time_relative):
       * rhythmdb/rhythmdb.h: re-run queries every minutes if they have
       time-based criteria, fixes bug 341131.

2006-05-20  James Livingston  <[email protected]>

       * plugins/artdisplay/artdisplay/__init__.py: don't display the art if
       we have already changed playing entries. Interpolate the art size so
       it doesn't jump when the old and new images have different aspect
       ratios.

2006-05-20  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb-private.h:
       * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element),
       (save_entry):
       * rhythmdb/rhythmdb.c: (rhythmdb_entry_finalize),
       (rhythmdb_entry_set_internal), (rhythmdb_query_preprocess),
       (rhythmdb_entry_get_ulong):
       Include the GDate directly in RhythmDBEntry (it's only 8 bytes)
       and elsewhere, use them on the stack rather than allocating on
       the heap.  From bug #342333.

2006-05-19  William Jon McCann  <[email protected]>

       * player/rb-recorder-gst.c: (rb_recorder_error_quark),
       (rb_recorder_get_default_drive), (rb_recorder_gst_free_pipeline),
       (add_track), (eos_cb), (error_signal_idle),
       (rb_recorder_gst_signal_error), (rb_recorder_new_pad_cb),
       (rb_recorder_construct), (recorder_track_free),
       (rb_recorder_finalize):
       * sources/rb-playlist-source-recorder.c:
       Support libnautilus-burn size -> capacity API change.  Add
       some braces to blocks.

2006-05-19  William Jon McCann  <[email protected]>

       * metadata/sj-metadata-musicbrainz.c:
       (sj_metadata_musicbrainz_instance_init), (get_rdf), (lookup_cd):
       Sync with sound-juicer in CVS.  Fixes #342177
       * sources/rb-audiocd-source.c: Don't declare variables
       in the middle of a block (c99ism).  Fix order of #includes.
       Use gi18n.h.  Don't include rhythmdb.h twice.  Declare
       one variable per line.  Update copyright date.

2006-05-19  James Livingston  <[email protected]>

       patch by: Hendrik Richter  <[email protected]>

       * shell/rb-shell.c: (rb_shell_cmd_about): change the separator in
       "translator_credits" to a hyphen, so it doesn't cause problems for
       tools that check access keys. Fixes bug 341832.

2006-05-19  James Livingston  <[email protected]>

       * po/POTFILES.in: remove references to files that don't exist any more
       (fixes make distcheck).

2006-05-19  Dennis Cranston  <[email protected]>

       * plugins/lyrics/lyrics.py:  Fix layout close button in
       Song Lyrics dialog. Fixes bug 342322.

2006-05-19  James Livingston  <[email protected]>

       patch by: Loïc Minier  <[email protected]>

       * widgets/eggtrayicon.c: (egg_tray_icon_unrealize),
       (egg_tray_icon_cancel_message), (egg_tray_icon_notify): Make the
       version checks not break when libnotify goes to 1.0.0. Fixes bug
       342244.

2006-05-18  James Livingston  <[email protected]>

       * shell/rb-shell-clipboard.c:
       * shell/rb-shell.c:
       * sources/rb-podcast-source.c: Fix some conflicting keybindings.

2006-05-17  William Jon McCann  <[email protected]>

       * sources/rb-playlist-source-recorder.c (get_song_description):
       Reverse artist and title in song description.  This
       is useful because at least the title will be visible
       when there is limited space.

2006-05-17  Jonathan Matthew  <[email protected]>

       * daapsharing/rb-daap-connection.c: (connection_get_password):
       Take gdk lock before emitting authenticate signal.
       * sources/rb-daap-source.c: (connection_connecting_cb):
       Get rid of the unnecessary idle handler (it's already called from one)
       Fixes #342047 once more.

2006-05-17  Jonathan Matthew  <[email protected]>

       * shell/rb-shell.c: (rb_shell_class_init):
       * shell/rb-shell.h:
       * widgets/rb-song-info.c: (rb_song_info_class_init),
       (rb_song_info_construct_single), (rb_song_info_construct_multiple),
       (rb_song_info_constructor), (rb_song_info_get_property),
       (rb_song_info_append_page), (rb_song_info_backward_clicked_cb),
       (rb_song_info_forward_clicked_cb):
       * widgets/rb-song-info.h:
       * data/glade/song-info-multiple.glade:
       * lib/rb-marshal.list:
       * bindings/python/Makefile.am:
       * bindings/python/rb.defs:
       * bindings/python/rb.override:
       Allow plugins to add pages to the notebooks used in song info windows,
       and to track the current song displayed in single-entry windows.

       * configure.ac:
       * plugins/Makefile.am:
       * plugins/lyrics/Loader.py:
       * plugins/lyrics/Makefile.am:
       * plugins/lyrics/lyrics.py:
       * plugins/lyrics/lyrics.rb-plugin.desktop.in:
       Add a plugin that retrieves song lyrics from leoslyrics.com, displayed
       as a separate window (for the playing song) or as a page in the song
       info window.  A few TODO items left, but this fixes #319320.

2006-05-17  Jonathan Matthew  <[email protected]>

       Patch by:  Roozbeh Pournader

       * configure.ac:
       * lib/rb-cut-and-paste-code.c: (eel_strdup_strftime):
       Update eel_strdup_strftime from eel CVS HEAD.  Fixes #341938.

2006-05-17  Jonathan Matthew  <[email protected]>

       * sources/rb-daap-source.c: (update_connection_status):
       Correct return value.  Fixes #342047 again.

2006-05-17  Jonathan Matthew  <[email protected]>

       * sources/rb-daap-source.c: (update_connection_status),
       (connection_connecting_cb):
       Update status in an idle handler so we don't rely on the gdk lock
       being recursive (because it isn't any more).  Fixes #342047.

2006-05-16  Jonathan Matthew  <[email protected]>

       * lib/rb-util.c: (rb_make_duration_string),
       (rb_make_elapsed_time_string):
       * lib/rb-util.h:
       Add a function for formatting an elapsed time string.

       * shell/rb-shell-player.c: (rb_shell_player_init),
       (rb_shell_player_sync_with_source),
       (rb_shell_player_get_playing_time_string), (tick_cb):
       Store elapsed time in the private data structure, and use the above
       function.

       * widgets/rb-header.c:
       * widgets/rb-header.h:
       Make RBHeader use the RBShellPlayer object, rather than the RBPlayer
       object, so everything has the same idea of the elapsed time.
       Fixes #339693.

2006-05-16  James Livingston  <[email protected]>

       * bindings/python/rhythmdb.defs:
       * bindings/python/rhythmdb.override: give rhythmdb.query_model_new
       some parametre defaults, so you don't have to pass None, False for the
       sorting order.

2006-05-16  Jonathan Matthew  <[email protected]>

       * bindings/python/rhythmdb.defs:
       * rhythmdb/rhythmdb-query-model.c:
       (rhythmdb_query_model_compute_status_normal):
       * rhythmdb/rhythmdb-query-model.h:
       * rhythmdb/rhythmdb.c: (rhythmdb_compute_status_normal):
       * rhythmdb/rhythmdb.h:
       Change the various compute_status methods to accept a singular/plural
       pair to use in the status string.

       * sources/rb-podcast-source.c: (rb_podcast_source_class_init),
       (rb_podcast_source_cmd_new_podcast), (impl_get_status):
       * sources/rb-source.c: (default_get_status):
       Call entries 'songs' by default, and 'episodes' in the podcast source.
       Fixes #340227.

2006-05-16  Jonathan Matthew  <[email protected]>

       patch by:  Paul Drain

       * plugins/ipod/Makefile.am: add $(plugin_in_files) to EXTRA_DIST.
       Fixes #341817.

2006-05-16  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb-query-model.c: (apply_updated_entry_sequence):
       Generate reorder maps correctly.
       * widgets/rb-entry-view.c: (rb_entry_view_rows_reordered_cb):
       Scroll to the first entry from the old selection.
       Fixes #322992.

2006-05-15  William Jon McCann  <[email protected]>

       * data/ui/rhythmbox-ui.xml:
       * lib/rb-preferences.h:
       * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor),
       (rb_shell_playlist_created_cb),
       (rb_shell_view_sidepane_changed_cb),
       (rb_shell_sync_sidepane_visibility),
       (rb_shell_sync_pane_visibility), (rb_shell_sync_smalldisplay),
       (sidepane_visibility_changed_cb):
       * sources/rb-podcast-source.c:
       Convert sourcelist visibility to side-pane visbility.
       Fixes #339733

2006-05-15  Jonathan Matthew  <[email protected]>

       * widgets/rb-header.c:
       * widgets/rb-header.h: Stop RBHeader from referring to itself as
       'player', and make it use the private data structure allocated for it.

2006-05-15  Jonathan Matthew  <[email protected]>

       * configure.ac: enable metadata helper with dbus < 0.35.

2006-05-15  James Livingston  <[email protected]>

       patch by: Alex Lancaster  <[email protected]>

       * data/glade/song-info.glade:
       * widgets/rb-song-info.c: (rb_song_info_construct_single),
       (rb_song_info_populate_dialog), (rb_song_info_update_duration),
       (rb_song_info_update_filesize): Add the file size into the song info
       window. Fixes bug 340861.

2006-05-14  Jonathan Matthew  <[email protected]>

       * bindings/python/rhythmdb.defs:
       * rhythmdb/rhythmdb-query-model.c:
       (rhythmdb_query_model_set_property),
       (rhythmdb_query_model_new_empty), (rhythmdb_query_model_chain):
       * rhythmdb/rhythmdb-query-model.h:
       Add a new method to chain query models without importing entries from
       the parent into the child.  This is useful when the subset of entries
       in the child can be more easily determined by running a query than by
       filtering entries from the parent.

       * bindings/python/rb.defs:
       * widgets/rb-library-browser.c: (rb_library_browser_class_init),
       (rb_library_browser_set_property),
       (rb_library_browser_get_property), (rb_library_browser_new),
       (rebuild_child_model):
       * widgets/rb-library-browser.h:
       * sources/rb-auto-playlist-source.c:
       (rb_auto_playlist_source_constructor):
       * sources/rb-static-playlist-source.c:
       (rb_static_playlist_source_constructor):
       * sources/rb-browser-source.c: (rb_browser_source_constructor):
       Use more efficient queries for constructing the browser query model
       chain.  Include the entry type at each level (allowing the rhythmdb-tree
       backend to optimise the query) and run new queries rather than
       filtering entries from the parent.  Fixes #341402.

       * configure.ac: remove reference to rhythmbox.pc that I missed earlier.

2006-05-14  Jonathan Matthew  <[email protected]>

       * configure.ac:
       * shell/Makefile.am:
       * shell/main.c: (main), (load_uri_args), (send_present_message),
       (unregister_dbus_handler), (handle_dbus_message),
       (register_dbus_handler):
       Add minimal support for dbus 0.31 - 0.35.

       * doc/reference/Makefile.am:
       * doc/reference/rhythmbox.types:
       * data/Makefile.am:
       * data/GNOME_Rhythmbox.server.in:
       * data/rhythmbox.pc.in:
       * remote/*:
       * remote/bonobo/*:
       Remove remaining bonobo and generic remote interface files.

2006-05-14  James Livingston  <[email protected]>

       * shell/rb-shell.c: (construct_widgets):
       * sources/rb-browser-source.c: (rb_browser_source_constructor): Never
       resize the browser and queue-sidebar section of their panes, unless
       the other section is below the minimum size. Fixes bug 331927.

2006-05-13  James Livingston  <[email protected]>

       * rhythmdb/rhythmdb-query-model.c:
       (rhythmdb_query_model_class_init),
       (rhythmdb_query_model_set_property),
       (rhythmdb_query_model_get_property),
       (rhythmdb_query_model_finalize), (rhythmdb_query_model_new),
       (rhythmdb_query_model_insert_into_main_list),
       (rhythmdb_query_model_insert_into_limited_list),
       (rhythmdb_query_model_do_reorder),
       (rhythmdb_query_model_set_sort_order), (_reverse_sorting_func),
       (rhythmdb_query_model_location_sort_func),
       (rhythmdb_query_model_title_sort_func),
       (rhythmdb_query_model_album_sort_func),
       (rhythmdb_query_model_artist_sort_func),
       (rhythmdb_query_model_genre_sort_func),
       (rhythmdb_query_model_track_sort_func),
       (rhythmdb_query_model_double_ceiling_sort_func),
       (rhythmdb_query_model_ulong_sort_func),
       (rhythmdb_query_model_date_sort_func),
       (rhythmdb_query_model_string_sort_func):
       * rhythmdb/rhythmdb-query-model.h: Make the sorting data be a gpointer
       instead of a RhythmDBPropType (which can be put in a gpointer). Add a
       "data destroy" property. Fixed bug 341543.

       * bindings/python/rhythmdb.defs:
       * bindings/python/rhythmdb.override: bind rhythmdb_query_model_new and
       rhythmdb_query_model_set_sorting_order

       * rhythmdb/rhythmdb-property-model.c:
       (rhythmdb_property_model_drag_data_get):
       * sources/rb-import-errors-source.c:
       (rb_import_errors_source_constructor):
       * sources/rb-missing-files-source.c:
       (rb_missing_files_source_constructor):
       * widgets/rb-entry-view.c: (rb_entry_view_append_column),
       (rb_entry_view_append_column_custom), (rb_entry_view_resort_model):
       * widgets/rb-entry-view.h: adapt to the above change.

2006-05-13  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element),
       (rhythmdb_tree_load):
       Commit loaded entries in batches, rather than individually.
       More startup time reduction.

2006-05-12  Ryan P Skadberg  <[email protected]>

       * doc/reference/Makefile.am: fix gtk-doc compilation

2006-05-12  William Jon McCann  <[email protected]>

       * plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py:
       * plugins/artdisplay/artdisplay/CoverArtDatabase.py:
       * plugins/artdisplay/artdisplay/Loader.py:
       Correct fallback to medium size.  Convert & to "and" when doing comparisons.
       Only call the first artist the best match when album==Unknown.
       Don't perform each query twice if album doesn't include "Vol N".
       Fix searching for compilations.  Fix blacklisting.
       Part of bug #307848

2006-05-12  William Jon McCann  <[email protected]>

       * Makefile.am:
       * bindings/python/Makefile.am:
       * bindings/python/rb.defs:
       * bindings/python/rb.override:
       * configure.ac:
       * doc/reference/Makefile.am:
       * plugins/Makefile.am:
       * plugins/audioscrobbler/Makefile.am:
       * plugins/ipod/Makefile.am:
       * plugins/lirc/Makefile.am:
       * plugins/lirc/rb-lirc-plugin.c: (rb_lirc_plugin_read_code),
       (impl_activate), (impl_deactivate):
       * plugins/sample/Makefile.am:
       * remote/Makefile.am:
       * shell/Makefile.am:
       * shell/main.c: (main), (main_shell_weak_ref_cb):
       * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_set_property),
       (rb_shell_get_property), (rb_shell_window_state_cb),
       (idle_hide_mainwindow), (rb_shell_set_visibility),
       (rb_shell_playing_entry_changed_cb), (tray_destroy_cb),
       (rb_shell_set_song_property):
       * shell/rb-shell.h:
       * shell/rb-tray-icon.c: (rb_tray_icon_class_init),
       (rb_tray_icon_sync_action), (rb_tray_icon_set_property),
       (rb_tray_icon_get_property), (rb_tray_icon_new),
       (rb_tray_icon_button_press_event_cb),
       (rb_tray_icon_scroll_event_cb), (rb_tray_icon_drop_cb),
       (rb_tray_icon_show_window_changed_cb):
       * shell/rb-tray-icon.h:

       Remove bonobo, require DBUS.
       Patch from Jonathan Matthew  <[email protected]>
       Fixes #339720

2006-05-13  James Livingston  <[email protected]>

       * bindings/python/rb.override: fix some pointer-type warnings

2006-05-12  James Livingston  <[email protected]>

       * lib/rb-util.c: (rb_value_free):
       * lib/rb-util.h: Add function to unset and free a GValue* that was
       allocated in the heap.

       * metadata/rb-metadata-dbus-client.c: (rb_metadata_load): don't leak
       the metadata hastable values
       * metadata/rb-metadata-dbus-service.c: (rb_metadata_dbus_save): don't
       leak the metadata hashtable structure
       * metadata/rb-metadata-dbus.c:
       (rb_metadata_dbus_read_from_message):use g_value_set_string instead of
       using g_strdup and then _take_string

       * rhythmdb/rhythmdb.c: (rhythmdb_start_action_thread),
       (rhythmdb_execute_stat): Don't leak the GnomeVFSURIs every time we
       stat something.

       * shell/rb-audioscrobbler.c: (rb_audioscrobbler_do_handshake): don't
       leak the encoded string

       * widgets/rb-property-view.c:
       (rb_property_view_selection_changed_cb): set some variables to have
       inital values, because some code paths may not set them before we use
       them.

       * plugins/rb-plugins-engine.c: (rb_plugins_engine_load): turn the "you
       don't have python warning into a debug message".

2006-05-10  William Jon McCann  <[email protected]>

       * data/rhythmbox.schemas: Use zero instead of null for
       default burn speed.  Fixes #341283.

2006-05-10  Jonathan Matthew  <[email protected]>

       * bindings/python/rb.defs:
       * widgets/rb-library-browser.c:
       (rb_library_browser_get_property_view):
       * widgets/rb-library-browser.h:
       Add a method to get the property view for a given property.

       * sources/rb-browser-source.c:
       (rb_browser_source_cmd_choose_genre),
       (rb_browser_source_cmd_choose_artist),
       (rb_browser_source_cmd_choose_album):
       Change the browser selection by changing the property view selection.
       Makes the selection change visible, fixing #331740.

2006-05-10  Jonathan Matthew  <[email protected]>

       * bindings/python/rb.defs:
       * bindings/python/rb.override:
       * rhythmdb/rhythmdb.c: (rhythmdb_is_busy):
       * shell/rb-statusbar.c: (*),
       * sources/rb-import-errors-source.c: (impl_get_status):
       * sources/rb-iradio-source.c: (impl_get_status):
       * sources/rb-missing-files-source.c: (impl_get_status):
       * sources/rb-source.c: (default_get_status),
       (rb_source_get_status):
       * sources/rb-source.h:
       Allow sources to provide a progress value for the status bar.
       Simplify status bar processing (much less polling).
       Consider rhythmdb busy while it's still loading the database.

       * daapsharing/rb-daap-connection.c: (*)
       * daapsharing/rb-daap-connection.h:
       * lib/rb-marshal.list:
       * sources/rb-daap-source.c: (rb_daap_source_class_init),
       (rb_daap_source_init), (connection_connecting_cb),
       (rb_daap_source_activate), (rb_daap_source_get_paned_key),
       (rb_daap_source_get_status):
       Provide status information for DAAP connections, and move processing
       of large responses into a separate thread.
       Fixes bugs #322020 and #338978.

2006-05-09  James Livingston  <[email protected]>

       Split the artdisplay plugin into several files.
       Fix loader and amazon-search re-use issues.
       Add some better search heuristics.

       * configure.ac:
       * plugins/artdisplay/Makefile.am:
       * plugins/artdisplay/artdisplay.py:
       * plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py:
       * plugins/artdisplay/artdisplay/CoverArtDatabase.py:
       * plugins/artdisplay/artdisplay/Loader.py:
       * plugins/artdisplay/artdisplay/Makefile.am:
       * plugins/artdisplay/artdisplay/__init__.py:

2006-05-09  James Livingston  <[email protected]>

       * sources/rb-browser-source.h: remove the _has_first_added_column
       stuff since it isn't actually used anywhere. Sources that want it
       should just add it themselves, as the library already does

       * bindings/python/rb.defs:
       * sources/rb-daap-source.c: (rb_daap_source_class_init):
       * sources/rb-library-source.c: (rb_library_source_class_init):
       * sources/rb-removable-media-source.c:
       (rb_removable_media_source_class_init): Remove the remanants of the
       above.

2006-05-09  James Livingston  <[email protected]>

       * bindings/python/rb.defs:
       * sources/rb-browser-source.h: remove a function that was declared in
       the header, but not defined anywhere.

2006-05-09  Jonathan Matthew  <[email protected]>

       * plugins/artdisplay/.cvsignore:
       * plugins/ipod/.cvsignore: Added.

2006-05-09  Jonathan Matthew  <[email protected]>

       * sources/rb-auto-playlist-source.c:
       (rb_auto_playlist_source_new_from_xml):
       Fix reading of older playlist files where all three limits were
       specified so we take the first nonzero limit.  From #341053.

2006-05-09  James Livingston  <[email protected]>

       * bindings/python/Makefile.am:
       * bindings/python/rb.defs:
       * bindings/python/rb.override: bind RBBrowserSource,
       RBRemovableMediaSource and RBRemovableMediamanager.

2006-05-09  James Livingston  <[email protected]>

       patch by: Baptiste Mille-Mathias  <[email protected]>

       * data/glade/plugins.glade: make the plugin dialog look a bit better.
       Fixes bug 339221.

2006-05-09  Jonathan Matthew  <[email protected]>

       * widgets/rb-query-creator.c: (rb_query_creator_load_query):
       Don't explode when trying to edit a query with no limit set.

2006-05-09  Jonathan Matthew  <[email protected]>

       * shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb):
       Clear the should_queue flag when switching to a non-submittable entry,
       so we don't submit songs that played for three seconds before
       switching to a podcast episode.

       * rhythmdb/rhythmdb-query-model.c
       (rhythmdb_query_model_drag_data_get): Don't try to include NULL uris
       in the drag data list.

2006-05-08  James Livingston  <[email protected]>

       * lib/rb-util.c: (rb_value_array_append_data):
       * lib/rb-util.h: add function which is basically a combination of
       G_VALUE_COLLECT and g_value_array_append.

       * rhythmdb/rhythmdb-query-model.h:
       * rhythmdb/rhythmdb-query-model.c:
       (rhythmdb_query_model_class_init),
       (rhythmdb_query_model_set_property),
       (rhythmdb_query_model_get_property),
       (rhythmdb_query_model_finalize),
       (rhythmdb_query_model_update_limited_entries),
       (rhythmdb_query_model_set_sort_order),
       (rhythmdb_query_model_within_limit),
       (rhythmdb_query_model_limit_type_get_type): Make query model limits
       saner. Rather than having <count=N, time=N, size=N> we now have a
       <type, value> pair. This will also make it much easier to add new
       limit types in the future.

       * shell/rb-playlist-manager.c:
       (rb_playlist_manager_set_automatic_playlist),
       (rb_playlist_manager_cmd_edit_automatic_playlist):
       * sources/rb-auto-playlist-source.c:
       (rb_auto_playlist_source_finalize),
       (rb_auto_playlist_source_new_from_xml), (impl_receive_drag),
       (_save_write_ulong), (_save_write_uint64),
       (impl_save_contents_to_xml), (rb_auto_playlist_source_do_query),
       (rb_auto_playlist_source_set_query),
       (rb_auto_playlist_source_get_query):
       * sources/rb-auto-playlist-source.h:
       * sources/rb-library-source.c:
       (rb_library_source_add_child_source):
       * sources/rb-psp-source.c: (visit_playlist_dirs):
       * widgets/rb-query-creator.c: (rb_query_creator_load_query),
       (rb_query_creator_new_from_query), (rb_query_creator_get_limit):
       * widgets/rb-query-creator.h: Adapt to the above change.

2006-05-08  James Livingston  <[email protected]>

       * shell/rb-playlist-manager.c:
       (rb_playlist_manager_cmd_edit_automatic_playlist):
       * sources/rb-auto-playlist-source.c: (impl_save_contents_to_xml),
       (rb_auto_playlist_source_set_query),
       (rb_auto_playlist_source_get_query): copy the query in the _get method
       and free it in things calling that. Fixes a crasher.

2006-05-08  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb.c: (entry_volume_mounted_or_unmounted):
       Make entries on newly mounted volumes visible immediately, hiding them
       later if they turn out to be missing.  Fixes #340068.

2006-05-07  Jonathan Matthew  <[email protected]>

       * metadata/rb-metadata-gst.c: (rb_metadata_finalize):
       Ignore zip files and ignore errors for files we've decided to ignore.

2006-05-07  Jonathan Matthew  <[email protected]>

       * sources/rb-ipod-source.c: (hal_udi_is_ipod):
       Add missing }, should fix #340844.

2006-05-06  James Livingston  <[email protected]>

       * plugins/artdisplay/artdisplay.py: fade between covers, and fix a
       typo.

2006-05-06  James Livingston  <[email protected]>

       * widgets/eggtrayicon.c: (egg_tray_icon_notify): fix version check so
       that we work with libnotify >= 0.4

2006-05-06  James Livingston  <[email protected]>

       patch by: Joe Barnett  <[email protected]>

       * configure.ac: check if we're using a version of libgpod that
       supports the Motorola ROKR

       * sources/rb-ipod-source.c: (rb_ipod_get_itunesdb_path): ask libgpod
       for the db path, if we using the newer version.

       (rb_ipod_volume_has_ipod_db): detect Motorola ROKR phones.

2006-05-05  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb-query-model.c:
       (rhythmdb_query_model_drag_data_get):
       Use playback URI, not location, for drag data.  Fixes #322597.

2006-05-03  Dennis Cranston  <[email protected]>

       * data/glade/general-prefs.glade:  HIG fixes from bug 340588.

2006-05-03  James Livingston  <[email protected]>

       * metadata/rb-metadata-gst.c: (rb_add_flac_tagger),
       (rb_add_id3_tagger), (rb_metadata_save):
       Set the tags on the tagging element when it is
       created, not during pipeline creation - which is required for
       dynamically created elements.

       (ogg_pad_added_cb), (rb_add_ogg_tagger), (rb_metadata_init): add
       support for using the "vorbistag" element to re-tag ogg vorbis files.
       Fixes bug 339878.

2006-05-03  James Livingston  <[email protected]>

       patch by: Martin Szulecki  <[email protected]>

       * plugins/artdisplay/artdisplay.py:
       - Fix small bug callback of data loader getting overwritten on fast
       connections.
       - Add asynchronous loading with gnomevfs and urllib fallback (thx to
       Jonathan Matthew)
       - Fix Rhythmbox UI blocking while loading/searching cover art
       - Split logic into CoverArtDatabase, AmazonCoverArtSearch
       - Initial approach to allow additional "art search engines"
       - Further modularization in a couple of places
       - Minor fixes for empty entries (iradio, album, artist etc.)

2006-05-03  James Livingston  <[email protected]>

       * shell/rb-playlist-manager.c:
       (rb_playlist_manager_playlist_entries_changed),
       (rb_playlist_manager_set_source): don't show the edit/delete/rename
       options for non-local sources, rather than showing disabled ones.

       * sources/rb-library-source.c: (add_child_sources_idle),
       (rb_library_source_constructor), (rb_library_source_new),
       (rb_library_source_library_location_changed),
       (rb_library_source_add_child_source),
       (rb_library_source_sync_child_sources): Create "child library" sources
       when the user has multiple library locations set. Fixes bug 100552.

2006-05-03  Jonathan Matthew  <[email protected]>

       * plugins/rb-plugins-engine.c: (rb_plugins_engine_load):
       * plugins/sample/sample.rb-plugin.desktop.in:
       Finish changing 'Author' to 'Authors'

       * rhythmdb/rhythmdb.c: (_get_import_error_playback_uri),
       (rhythmdb_entry_import_error_get_type):
       Implement get_playback_uri for import errors (returns NULL)

       * shell/rb-shell-player.c: (rb_shell_player_entry_activated_cb):
       Use rhythmdb_entry_get_playback_uri to figure out if we can play the
       entry, rather than doing entry type checks.

2006-05-02  James Livingston  <[email protected]>

       patch from Alessandro Decina  <[email protected]>

       * backends/gstreamer/rb-encoder-gst.c: (rb_encoder_gst_encode): fix
       the signal emission in the case of fatal-on-init errors. From bug
       322268.

2006-05-02  James Livingston  <[email protected]>

       * rhythmdb/rhythmdb.h:
       * rhythmdb/rhythmdb.c: (rhythmdb_entry_allocate),
       (rhythmdb_entry_finalize), (_get_podcast_playback_uri),
       (rhythmdb_entry_podcast_post_get_type),
       (rhythmdb_entry_get_double), (rhythmdb_entry_get_playback_uri): add a
       virtual function to entry-types for getting the playback URI. From bug
       330226.

       * backends/gstreamer/rb-encoder-gst.c:
       (create_pipeline_and_source), (extract_track):
       * shell/rb-shell-player.c: (rb_shell_player_open_entry): use the above
       to get the URI.

2006-05-02  James Livingston  <[email protected]>

       patch by: Brian Cameron  <[email protected]>

       * sources/rb-nokia770-source.c: more Solaris build fixes, from bug
       340337.

2006-05-01  William Jon McCann  <[email protected]>

       * plugins/artdisplay/artdisplay.py: Use set_from_pixbuf
       instead of clear.  Use regex matching to strip "disc N"
       from album.  Match titles in ProductName.  Perform
       fallback queries including various artist compilations.
       Include "us" locale.  Improve queries when artist or album
       is unknown.  Use medium size image if large is unavailable.

       patch by: Alex Lancaster  <[email protected]>,
       William Jon McCann  <[email protected]>

2006-04-30  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb-tree.c: (get_genres_hash_for_type):
       RhythmDBEntryType is a pointer now, so GINT_TO_POINTER is unnecessary.
       (conjunctive_query): Sanity check.
       (evaluate_conjunctive_subquery):
       Don't return TRUE immediately when a relative-time query criterion
       matches.  Fixes #339972.

2006-04-29  Jonathan Matthew  <[email protected]>

       * widgets/eggtrayicon.c: (egg_tray_icon_notify):
       Don't crash if primary or secondary are NULL.

2006-04-29  Jonathan Matthew  <[email protected]>

       * doc/reference/Makefile.am: fix gtk-doc build yet again

2006-04-28  James Livingston  <[email protected]>

       * plugins/pythonconsole/pythonconsole.py: import "rhythmdb" into the
       python console. Fixes bug 339934.

2006-04-27  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb-property-model.c:
       (rhythmdb_property_model_drag_data_get):
       When creating uri list drag data, create a new query model based on
       the query model the property model is attached to.  Makes the
       resulting query use the right entry type and include the upstream
       query criteria.  Fixes half of #327540.

2006-04-27  James Livingston  <[email protected]>

       * backends/gstreamer/rb-encoder-gst.c: (encoder_match_mime),
       (profile_bin_find_encoder), (get_profile_from_mime_type): more gst 0.8
       build fixes.

2006-04-27  James Livingston  <[email protected]>

       * player/rb-player-gst.c: (error_cb): Fix build with GStreamer 0.8

2006-04-27  Jonathan Matthew  <[email protected]>

       * shell/rb-playlist-manager.c: (rb_playlist_manager_init),
       (rb_playlist_manager_save_data),
       (rb_playlist_manager_save_playlists):
       * shell/rb-playlist-manager.h:
       * shell/rb-shell.c: (rb_shell_sync_state),
       (idle_save_playlist_manager):
       Remove a bit more threading insanity from the playlist manager.

2006-04-27  Jonathan Matthew  <[email protected]>

       * shell/rb-playlist-manager.c:
       * shell/rb-playlist-manager.h:
       Remove dead code, add gtk-doc, remove threading insanity (mostly).

       * shell/rb-shell.c: (rb_shell_sync_state),
       (idle_save_playlist_manager), (construct_sources),
       (rb_shell_select_source), (rb_shell_sync_party_mode):
       Adjustments for above changes.

2006-04-26  William Jon McCann  <[email protected]>

       * sources/rb-browser-source.c (impl_browser_toggled):
       Reset browser when hidden.  Fixes #339617.

2006-04-26  James Livingston  <[email protected]>

       * backends/Makefile.am:
       * backends/gstreamer/Makefile.am: work again with separated
       built-roots

2006-04-26  James Livingston  <[email protected]>

       * shell/rb-removable-media-manager.c:
       (rb_removable_media_manager_set_uimanager): fix compilation with
       -Werror and --enable-track-transfer.

2006-04-26  James Livingston  <[email protected]>

       Turn RBPlayer into a full gobject interface, with RBPlayerGst as an
       implementing class. In theory allows alternate player implementations
       to be selected at run-time rather than compile-time. Fixes bug 338667.

       * Makefile.am:
       * backends/Makefile.am:
       * backends/gstreamer/Makefile.am:
       * backends/gstreamer/rb-player-gst.h:
       * backends/rb-player.c: (rb_player_interface_init),
       (rb_player_get_type), (rb_player_open), (rb_player_opened),
       (rb_player_close), (rb_player_play), (rb_player_pause),
       (rb_player_playing), (rb_player_set_volume),
       (rb_player_get_volume), (rb_player_set_replaygain),
       (rb_player_seekable), (rb_player_set_time), (rb_player_get_time),
       (rb_player_new), (_rb_player_emit_eos), (_rb_player_emit_info),
       (_rb_player_emit_buffering), (_rb_player_emit_error),
       (_rb_player_emit_tick), (rb_player_error_quark):
       * player/Makefile.am:
       * player/rb-player-gst.c: (rb_player_gst_class_init),
       (rb_player_init), (tick_timeout), (rb_player_gst_init),
       (rb_player_gst_finalize), (rb_player_gst_gst_free_playbin),
       (destroy_idle_signal), (emit_signal_idle), (eos_cb), (error_cb),
       (process_tag), (found_tag_cb), (buffering_cb),
       (rb_player_gst_bus_cb), (rb_player_gst_construct),
       (rb_player_gst_new):
       * player/rb-player.h:
       * shell/Makefile.am:
       * sources/rb-audiocd-source.c:
       * widgets/Makefile.am:
       * widgets/rb-header.c: (rb_header_class_init):

2006-04-26  James Livingston  <[email protected]>

       * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed):
       don't try to download an episode if it couldn't be parsed. Fixes bug
       339712.

       * shell/rb-removable-media-manager.c:
       (rb_removable_media_manager_set_uimanager): don't show the "Copy to
       Library" option when track transfer is disabled. Fixes bug 339728.

2006-04-26  James Livingston  <[email protected]>

       * data/ui/Makefile.am:
       * data/ui/daap-ui.xml:
       * data/ui/rhythmbox-ui.xml:
       * sources/rb-daap-source.c: (rb_daap_sources_init),
       (rb_daap_sources_shutdown): separate the DAAP ui stuff out in the same
       way that the ipod ui is. Fixes bug 339743.

2006-04-26  Jonathan Matthew  <[email protected]>

       * rhythmdb/rhythmdb.c: (rhythmdb_emit_entry_signals_idle),
       (process_added_entries_cb), (process_deleted_entries_cb),
       (rhythmdb_commit_internal):
       Combine the idle functions to emit entry-added and entry-deleted,
       and combine as many invocations of same as possible.  Another
       significant reduction in startup time.

       (rhythmdb_process_events), (rhythmdb_idle_poll_events):
       Delay the next call to rhythmdb_process_events if the queue is
       empty or if we can't process any of the events in the queue because
       the database is read only.

       This patch brought to you by the numbers 3, 2, 5, 2, 1, and 5.

2006-04-25  William Jon McCann  <[email protected]>

       * player/rb-recorder-gst.c (rb_recorder_burn): Add debug.

       * sources/rb-playlist-source-recorder.c (burn_cd_idle, burn_cd):
       Don't special case errors quite so much.

2006-04-25  William Jon McCann  <[email protected]>

       * data/rhythmbox.schemas: Remove default speed.

       * sources/rb-playlist-source-recorder.c (update_speed_combobox):
       Add n-c-b 2.15 support.  Make the default speed to slowest since
       that is all that works reliably.

2006-04-25  William Jon McCann  <[email protected]>

       * backends/gstreamer/rb-encoder-gst.c (profile_bin_find_encoder):
       Fix compiler error from last commit.

2006-04-25  James Livingston  <[email protected]>

       patch by Alessandro Decina  <[email protected]> to fix some
       transcoding-related issues. From bug 322268.

       * backends/gstreamer/rb-encoder-gst.c: (rb_encoder_gst_finalize):
       don't emit the signal, since the object is being finalised, which os a
       Bad Thing To Do.

       (profile_bin_find_encoder), (get_profile_from_mime_type),
       (transcode_track): find the encoding element by iterating looking for
       element in the class Codec/Encoder/Audio rather than the one named
       "enc".

2006-04-25  Jonathan Matthew  <[email protected]>

       * shell/rb-shell-player.xml:
       * shell/rb-shell.xml:
       Add signal argument information.
       Patch by Tim Moloney  <[email protected]>

       * shell/rb-shell.c: (rb_shell_window_state_cb):
       Use the right value for the visibility_changed signal.  Most of the
       time, anyway.

2006-04-25  Jonathan Matthew  <[email protected]>

       * plugins/audioscrobbler/audioscrobbler.rb-plugin.desktop.in:
       * plugins/audioscrobbler/rb-audioscrobbler-plugin.c:
       (impl_create_configure_dialog):
       * data/glade/audioscrobbler-prefs.glade:
       * shell/rb-audioscrobbler.c (*):
       * lib/rb-preferences.h:
       * data/rhythmbox.schemas:
       Remove 'audioscrobbler' from the UI, replacing it with 'last.fm'.
       Add status information (# tracks submitted, # queued, last submit
       time, result of last submission) to the plugin config window.
       Remove 'enabled' setting, since it's easier to just disable the
       plugin.  Call the plugin 'last.fm profile', to distinguish it from the
       nonexistant (so far) 'last.fm streaming' plugin.

       * help/C/rhythmbox.xml: Update documentation for last.fm profile
       plugin

       Fixes some of #325848.  We still don't provide a way to view the
       submission queue.

2006-04-25  James Livingston  <[email protected]>

       patch by: Anders Petersson  <[email protected]>

       * podcast/rb-podcast-parse.c: (rb_podcast_parse_date): Parse dates in
       the YY-MM-DD format.

2006-04-23  James Livingston  <[email protected]>

       * bindings/python/override_common.c: (_helper_wrap_pointer_glist),
       (_helper_wrap_boxed_gptrarray), (_helper_unwrap_pointer_pylist):
       * bindings/python/override_common.h:
       * bindings/python/rb.override: python binding fixes

2006-04-23  James Livingston  <[email protected]>

       * shell/rb-statusbar.c: (rb_statusbar_finalize),
       (rb_statusbar_sync_with_source),
       (rb_statusbar_source_status_changed_cb): do the sync in an idle
       callback, rather than immediately every time. Takes ~5% off my warm-cache
       startup time.

       * bindings/python/rhythmdb.defs: fix the types using for
       RhythmDBEntryTypes.

2006-04-22  James Livingston  <[email protected]>

       * data/ui/rhythmbox-ui.xml:
       * shell/rb-shell.c:
       * sources/rb-daap-source.c: (rb_daap_source_class_init),
       (remove_source), (rb_daap_sources_init),
       (rb_daap_sources_shutdown), (rb_daap_source_cmd_disconnect),
       (rb_daap_source_disconnect):
       * sources/rb-source.c: (rb_source_class_init),
       (rb_source_deactivate):
       * sources/rb-source.h: move the "disconnect" functionality from into
       RBSource to RBDaapSource where it belongs. Fixes bug 338464.

2006-04-22  James Livingston  <[email protected]>

       * widgets/rb-library-browser.c: (rb_library_browser_constructor):
       actually get the translated strings for browser headers (they were
       already marked as translatable). Fixes bug 339380.