============ Version 0.11.4 2007-12-21 James Livingston * 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 * 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 * 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 * HACKING: Now less heinously out of date. Fixes #482767. 2007-12-13 Jonathan Matthew * 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 * 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 patch by: Irene Huang * 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 * 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 * 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 * 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 * 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 * INSTALL.quick: make this somewhat less horribly out of date. 2007-12-04 Jonathan Matthew * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * plugins/artdisplay/artdisplay/LocalCoverArtSearch.py: Follow symlinks when looking for local cover art. Fixes #499132. 2007-11-26 Jonathan Matthew * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 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 * 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.