Skip to content
  • Jonathan Matthew's avatar
    Process GStreamer missing-plugin messages. This requires a slightly newer · 51f61a16
    Jonathan Matthew authored
    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.
    
    svn path=/trunk/; revision=5442
    51f61a16