============ Version 0.11.4
2007-12-21  James Livingston  <doclivingston@gmail.com>

	* shell/rb-shell.c: (rb_shell_finalize): revert a change which was
	causing nasty warnings when exiting.

	* configure.ac: bump version to 0.11.4

	* NEWS: update with 0.11.4

2007-12-18  Jonathan Matthew  <jonathan@d14n.org>

	* backends/gstreamer/rb-player-gst-xfade.c:
	(rb_player_gst_xfade_dispose), (start_sink), (stop_sink),
	(rb_player_gst_xfade_close), (rb_player_gst_xfade_play):
	Remove obsolete stuff relating to pausing the sink, which we never do
	any more.

2007-12-16  Jonathan Matthew  <jonathan@d14n.org>

	* shell/rb-shell-player.c: (rb_shell_player_get_playing_time),
	(rb_shell_player_error_get_type):
	* shell/rb-shell-player.h:
	Make rb_shell_player_get_playing_time fail if the player can't figure
	out the playback position.

	* plugins/audioscrobbler/rb-audioscrobbler.c:
	(maybe_add_current_song_to_queue),
	(rb_audioscrobbler_song_changed_cb):
	If we don't get a playback position, assume we're at the start of the
	track.  From #499745.

2007-12-16  Jonathan Matthew  <jonathan@d14n.org>

	* HACKING: Now less heinously out of date.  Fixes #482767.

2007-12-13  Jonathan Matthew  <jonathan@d14n.org>

	* configure.ac:
	* data/icons/hicolor/48x48/Makefile.am:
	* data/icons/hicolor/48x48/apps/Makefile.am:
	* data/icons/hicolor/Makefile.am:
	Add 48x48 icon, so the icon isn't tiny when drag'n'dropping it to the
	desktop.  Icon via Andreas Nilsson.  Fixes #502935.

2007-12-12  Jonathan Matthew  <jonathan@d14n.org>

	* plugins/generic-player/rb-generic-player-playlist-source.c:
	(playlist_format_extension), (handle_playlist_start_cb),
	(handle_playlist_entry_cb), (load_playlist):
	Remove playlist parser API backwards compatibility stuff, use current
	signal names and parameters.

2007-12-11  Jonathan Matthew  <jonathan@d14n.org>

	patch by: Irene Huang  <Irene.Huang@sun.com>

	* plugins/audiocd/rb-audiocd-source.c: (rb_audiocd_scan_songs),
	(rb_audiocd_load_songs):  Take GDK lock when showing error dialogs
	during audio CD reading.  Fixes #502265.

2007-12-10  Bastien Nocera  <hadess@hadess.net>

	* plugins/coherence/upnp_coherence/__init__.py: Export the
	user's ~/.face (as setup by about-me and gdmphotosetup)
	as the server's icon, for display in clients that support
	it (Closes: #487970)

2007-12-09  Jonathan Matthew  <jonathan@d14n.org>

	* podcast/rb-podcast-manager.c:
	(rb_podcast_manager_download_file_info_cb):
	Use rb_uri_exists() to check if the podcast has already been
	downloaded, as we've converted the local path into a URI here.

2007-12-09  Jonathan Matthew  <jonathan@d14n.org>

	* plugins/audioscrobbler/rb-audioscrobbler.c:
	(rb_audioscrobbler_dispose), (rb_audioscrobbler_is_queueable),
	(rb_audioscrobbler_song_changed_cb):
	Add some helpful debug output.  From #499745.

2007-12-04  Jonathan Matthew  <jonathan@d14n.org>

	* plugins/visualizer/rb-visualizer-plugin.c:
	(free_vis_plugin_info), (rb_visualizer_plugin_finalize),
	(get_vis_plugin_list):  If we're going to free the GStreamer feature
	list that we get the visualization plugin strings from, we'll need to
	copy the strings..

2007-12-04  Jonathan Matthew  <jonathan@d14n.org>

	* INSTALL.quick: make this somewhat less horribly out of date.

2007-12-04  Jonathan Matthew  <jonathan@d14n.org>

	* shell/rb-shell-player.c: (rb_shell_player_open_location):
	Don't try to g_object_ref a RhythmDBEntry; it's not a GObject.

2007-12-03  Bastien Nocera  <hadess@hadess.net>

	* plugins/generic-player/rb-generic-player-playlist-source.c:
	(save_playlist), (handle_playlist_start_cb), (load_playlist),
	(rb_generic_player_playlist_source_new),
	(rb_generic_player_playlist_source_get_property),
	(rb_generic_player_playlist_source_set_property),
	(rb_generic_player_playlist_source_class_init):
	* plugins/generic-player/rb-generic-player-playlist-source.h:
	* plugins/generic-player/rb-generic-player-plugin.c:
	(rb_generic_player_plugin_new_playlist):
	* plugins/generic-player/rb-generic-player-source.c:
	(load_playlist_file), (default_load_playlists): Pass the device_root
	when parsing a playlist on a removable device, to allow drive letters
	in playlists (Helps: #427975)

2007-12-03  Bastien Nocera  <hadess@hadess.net>

	* plugins/mmkeys/rb-mmkeys-plugin.c: (media_player_key_pressed),
	(filter_mmkeys), (mmkeys_grab), (impl_activate): Handle the Stop
	key from the control-center D-Bus interface as we used to handle
	the XF86AudioStop key (Closes: #438135)

2007-12-03  Bastien Nocera  <hadess@hadess.net>

	* plugins/generic-player/rb-psp-source.c: (impl_get_mount_path),
	(rb_psp_is_volume_player): Handle PSPs with firmware >= 2.80
	(Closes: #369222)

2007-12-03  Bastien Nocera  <hadess@hadess.net>

	* configure.ac:
	* podcast/Makefile.am:
	* podcast/plugin.symbols:
	* podcast/rhythmbox-itms-plugin.cpp: Add a Mozilla plugin
	to allow the iTMS pages to detect that we can handle itms:// URIs
	(Closes: #489874)

2007-12-03  Bastien Nocera  <hadess@hadess.net>

	* configure.ac: Require totem-pl-parser 2.21.4

	* lib/rb-file-helpers.c: (rb_uri_could_be_podcast):
	* lib/rb-file-helpers.h: Add helper function to detect
	whether it could be a podcast from the URI passed

	* data/rhythmbox.schemas: Handle feed://, itpc:// and itms:// URIs

	* podcast/Makefile.am:
	* podcast/rb-podcast-manager.c:
	(rb_podcast_manager_subscribe_feed),
	(rb_podcast_manager_parse_complete_cb),
	(rb_podcast_manager_thread_parse_feed),
	(rb_podcast_manager_save_metadata),
	(rb_podcast_manager_insert_feed):
	* podcast/rb-podcast-parse.c: (playlist_metadata_foreach),
	(playlist_started), (playlist_ended), (entry_metadata_foreach),
	(entry_parsed), (rb_podcast_parse_load_feed),
	(rb_podcast_parse_channel_free):
	* podcast/rb-podcast-parse.h: Use totem-pl-parser to parse Podcast
	files (including Atom files) (Closes: #355984), as well as OPML files

	* shell/rb-playlist-manager.c: (handle_playlist_entry_cb),
	(playlist_load_started_cb), (playlist_load_ended_cb),
	(rb_playlist_manager_parse_file), (_is_dirty_playlist),
	(rb_playlist_manager_save_playlists):
	* shell/rb-shell-player.c: (rb_shell_player_class_init),
	(rb_shell_player_handle_eos_unlocked), (rb_shell_player_init),
	(playlist_entry_cb), (open_location_thread),
	(rb_shell_player_open_location), (rb_shell_player_sync_play_order),
	(rb_shell_player_do_previous), (rb_shell_player_do_next_internal),
	(rb_shell_player_entry_activated_cb):
	* shell/rb-shell.c: (handle_playlist_entry_cb),
	(rb_shell_load_uri): Update API to totem-pl-parser 2.21.4, detect
	podcasts and OPML files (Closes: #489520) and add them to the
	podcast source

	* podcast/test-podcast-parse.c: (main): Call setlocale
	so we print UTF-8 characters

	(Closes: #484768)

2007-12-03  Jonathan Matthew  <jonathan@d14n.org>

	* rhythmdb/rhythmdb.c: (rhythmdb_save_thread_main):
	When we've decided not to save the database, it would be a good idea
	to actually not save the database.  Fixes #501125.

2007-12-02  Jonathan Matthew  <jonathan@d14n.org>

	* sources/rb-static-playlist-source.c:
	(rb_static_playlist_source_move_entry):
	Move entries in the base query model, not the displayed query model.
	Otherwise, the order change is lost when saving the playlist.

2007-12-02  Jonathan Matthew  <jonathan@d14n.org>

	* bindings/python/Makefile.am:
	* bindings/python/rb.defs:
	* bindings/python/rb.override:
	Add python bindings for the streaming source class.

2007-12-02  Jonathan Matthew  <jonathan@d14n.org>

	* shell/rb-playlist-manager.c: (save_playlist_cb),
	(rb_playlist_manager_save_playlists), (list_playlists_cb),
	(rb_playlist_manager_get_playlists),
	(rb_playlist_manager_get_playlist_names),
	(find_playlist_by_name_cb), (_get_playlist_by_name):
	Fix various playlist manager methods that have been broken since 
	the introduction of source list groups.

2007-11-29  Jonathan Matthew  <jonathan@d14n.org>

	* shell/rb-shell-player.c: (notify_playing_idle),
	(rb_shell_player_open_playlist_url), (rb_shell_player_dispose):
	Remove the notify-playing idle handler when disposing the player.
	Fixes #463948.

2007-11-28  Jonathan Matthew  <jonathan@d14n.org>

	* plugins/audioscrobbler/rb-lastfm-source.c:
	(rb_lastfm_source_metadata_cb):
	Don't crash if we get a blank line in the metadata response, as we
	apparently do sometimes.  Should fix #465271.

2007-11-28  Jonathan Matthew  <jonathan@d14n.org>

	* sources/rb-podcast-source.c: (rb_podcast_source_constructor),
	(rb_podcast_source_load_finish_cb):
	Use g_signal_connect_object instead of _after, and g_idle_add
	instead of gtk_idle_add.  Probably fixes #463950?

2007-11-27  Bastien Nocera  <hadess@hadess.net>

	* plugins/ipod/rb-ipod-source.c: (impl_move_to_trash),
	(impl_build_dest_uri), (request_artwork): Don't put iPod tracks in
	the wastebasket when deleting them, they lost their database entry
	so they're unrecoverable (Closes: #346434)

2007-11-26  Jonathan Matthew  <jonathan@d14n.org>

	* plugins/artdisplay/artdisplay/LocalCoverArtSearch.py:
	Follow symlinks when looking for local cover art.  Fixes #499132.

2007-11-26  Jonathan Matthew  <jonathan@d14n.org>

	* shell/rb-tray-icon.c: (rb_tray_icon_init):
	Revert change from previous commit as it causes gtk warnings on
	startup.

2007-11-25  James Livingston  <doclivingston@gmail.com>

	* bindings/python/rb.defs:
	* metadata/rb-metadata-dbus-service.c: (main):
	* plugins/rb-plugins-engine.c: (rb_plugins_engine_load),
	(rb_plugins_engine_load_cb):
	* plugins/sample-vala/rb-sample-vala-plugin.vala:
	* plugins/visualizer/rb-visualizer-plugin.c: (get_vis_plugin_list):
	* shell/rb-shell.c: (rb_shell_finalize), (construct_widgets):
	* shell/rb-tray-icon.c: (rb_tray_icon_init):
	* tools/massif.sh:
	* widgets/rb-entry-view.c: (rb_entry_view_get_sorting_type):
	* widgets/rb-entry-view.h: fix some memory leaks. patch partially by
	John Daiker.

2007-11-25  Jonathan Matthew  <jonathan@d14n.org>

	* backends/gstreamer/rb-player-gst-xfade.c: (dump_stream_list),
	(volume_changed_cb), (start_stream_fade), (link_unblocked_cb),
	(link_and_unblock_stream), (unlink_blocked_cb),
	(unlink_and_dispose_stream), (rb_player_gst_xfade_bus_cb),
	(actually_start_stream), (get_times_and_stream), (stop_sink),
	(rb_player_gst_xfade_open), (stop_sink_later), (maybe_stop_sink),
	(rb_player_gst_xfade_close), (rb_player_gst_xfade_play),
	(rb_player_gst_xfade_pause), (rb_player_gst_xfade_set_replaygain),
	(rb_player_gst_xfade_set_time):
	Use a short (half second) fade when pausing and unpausing streams.
	Don't pause the sink; instead, stop it when there are no playing
	streams.

	Fixes #434142, #465482, #484883, and parts of #427244 and #452226.

2007-11-21  Jonathan Matthew  <jonathan@d14n.org>

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_emit_reorder),
	(apply_updated_entry_sequence):
	Use g_malloc/g_free instead of malloc/free.

2007-11-20  Jonathan Matthew  <jonathan@d14n.org>

	* plugins/mtpdevice/rb-mtp-plugin.c: (impl_activate),
	(rb_mtp_plugin_device_added):  Rearrange the device scanning loops so
	we only get the device/vendor IDs for each connected device (which
	involves dbus requests) once, rather than once per device type libmtp
	knows about.  Makes the mtp plugin's device scan about 100 times
	faster, fixing #498198.

2007-11-20  Jonathan Matthew  <jonathan@d14n.org>

	* plugins/mtpdevice/mtp-ui.xml:
	* plugins/mtpdevice/rb-mtp-plugin.c:
	Don't use the same name for the MTP eject action as the generic one.
	Fixes #472541.

2007-11-17  Bastien Nocera  <hadess@hadess.net>

	* plugins/daap/rb-daap-connection.c: (handle_song_listing),
	(rb_daap_connection_state_done): Fix DAAP sharing in client mode
	not playing anything (Closes: #497430)

2007-11-12  Jonathan Matthew  <jonathan@d14n.org>

	* configure.ac:
	* metadata/Makefile.am:
	* metadata/rb-metadata-dbus-client.c: (rb_metadata_load),
	(rb_metadata_has_missing_plugins),
	(rb_metadata_get_missing_plugins):
	* metadata/rb-metadata-dbus-service.c: (_send_error),
	(rb_metadata_dbus_load), (rb_metadata_dbus_can_save),
	(rb_metadata_dbus_save), (test_load):
	* metadata/rb-metadata-dbus.c: (rb_metadata_dbus_get_strv),
	(rb_metadata_dbus_add_strv):
	* metadata/rb-metadata-dbus.h:
	* metadata/rb-metadata-gst.c: (rb_metadata_gst_new_decoded_pad_cb),
	(rb_metadata_gst_unknown_type_cb),
	(rb_metadata_handle_missing_plugin_message),
	(rb_metadata_bus_handler), (rb_metadata_load),
	(rb_metadata_has_missing_plugins),
	(rb_metadata_get_missing_plugins):
	* metadata/rb-metadata.h:
	* metadata/test-metadata.c: (load_metadata_cb):
	Process GStreamer missing-plugin messages.  This requires a slightly
	newer version of GStreamer than we otherwise require, so it's
	conditional.  Missing plugin information is available to callers of
	the RBMetadata interface.

	* shell/Makefile.am:
	* lib/rb-marshal.list:
	* shell/rb-shell.c: (rb_shell_constructor):
	* shell/rb-missing-plugins.c:
	(rb_plugin_install_plugin_is_blacklisted),
	(rb_plugin_install_blacklist_plugin),
	(rb_plugin_install_context_free), (rb_plugin_install_done),
	(on_plugin_installation_done), (missing_plugins_event),
	(missing_plugins_cb), (rb_missing_plugins_init):
	* shell/rb-missing-plugins.h:
	Add some machinery for calling GStreamer plugin installation helpers
	and then retrying the original operation.

	* rhythmdb/rhythmdb-private.h:
	* rhythmdb/rhythmdb.c: (rhythmdb_class_init), (rhythmdb_init),
	(rhythmdb_shutdown), (rhythmdb_finalize), (rhythmdb_read_leave),
	(rhythmdb_process_metadata_load_real),
	(rhythmdb_missing_plugins_cb),
	(rhythmdb_missing_plugin_event_cleanup),
	(rhythmdb_process_metadata_load), (rhythmdb_process_one_event),
	(rhythmdb_execute_load):
	Add missing plugin handling for file importing.  Requires some
	interesting locking to block further import attempts while installing
	plugins.  We don't process missing plugins for files we're going to
	ignore anyway.

	Also, while the database is read-only, add write operations to a
	separate queue rather than requeueing them endlessly until the
	database is writeable again.

	* podcast/rb-podcast-manager.c: (rb_podcast_manager_class_init),
	(rb_podcast_manager_download_file_info_cb),
	(missing_plugins_retry_cb), (missing_plugins_retry_cleanup),
	(rb_podcast_manager_save_metadata), (download_progress_cb):
	Add missing plugin handling for podcast downloads.  When installation
	is complete, retry the metadata load operation.

	* backends/gstreamer/Makefile.am:
	* backends/gstreamer/rb-player-gst-xfade.c:
	(rb_player_gst_xfade_class_init), (emit_missing_plugins),
	(rb_player_gst_xfade_handle_missing_plugin_message),
	(rb_player_gst_xfade_bus_cb):
	* backends/gstreamer/rb-player-gst.c: (rb_player_gst_class_init),
	(rb_player_gst_handle_missing_plugin_message),
	(rb_player_gst_bus_cb), (rb_player_gst_sync_pipeline),
	(end_gstreamer_operation):
	* shell/rb-shell-player.c: (rb_shell_player_class_init),
	(rb_shell_player_init), (missing_plugins_retry_cb),
	(missing_plugins_retry_cleanup), (missing_plugins_cb):
	Add missing plugin handling for playback.  When GStreamer complains
	about missing plugins, stop playback, request installation, then retry
	playback when it's done.

	Fixes #338308.

2007-11-11  Jonathan Matthew  <jonathan@d14n.org>

	patch by:  louisfrancis.rb@gmail.com

	* widgets/rb-rating-helper.c: (rb_rating_render_stars):
	Don't use the deprecated gdk_pixbuf_render_to_drawable,
	use the equivalent gdk_draw_pixbuf call.  Fixes #495779.

2007-11-10  Jonathan Matthew  <jonathan@d14n.org>

	* backends/gstreamer/rb-player-gst-xfade.c:
	(actually_start_stream):
	When starting a new stream with crossfading enabled, remove all
	existing streams except any we're going to fade out and any that are
	already fading out.  Otherwise, we can end up playing two tracks at
	once.  Fixes #480764.