static void grilo_source_added_cb (GrlPluginRegistry *registry, GrlMediaPlugin *grilo_plugin, RBGriloPlugin *plugin) { RBSource *grilo_source; RBShell *shell; int i; if (GRL_IS_MEDIA_SOURCE (grilo_plugin) == FALSE) { /* TODO use metadata sources for album art and lyrics */ rb_debug ("grilo source %s is not interesting", grl_media_plugin_get_name (grilo_plugin)); return; } for (i = 0; i < G_N_ELEMENTS (ignored_plugins); i++) { if (g_str_equal (ignored_plugins[i], grl_media_plugin_get_id (grilo_plugin))) { rb_debug ("grilo source %s is blacklisted", grl_media_plugin_get_name (grilo_plugin)); return; } } rb_debug ("new grilo source: %s", grl_media_plugin_get_name (grilo_plugin)); grilo_source = rb_grilo_source_new (G_OBJECT (plugin), GRL_MEDIA_SOURCE (grilo_plugin)); g_hash_table_insert (plugin->sources, grilo_plugin, grilo_source); /* probably put some sources under 'shared', some under 'stores'? */ g_object_get (plugin, "object", &shell, NULL); rb_shell_append_display_page (shell, RB_DISPLAY_PAGE (grilo_source), RB_DISPLAY_PAGE_GROUP_SHARED); g_object_unref (shell); }
static void grilo_source_added_cb (GrlRegistry *registry, GrlSource *grilo_source, RBGriloPlugin *plugin) { GrlPlugin *grilo_plugin; GrlSupportedOps ops; const GList *keys; RBSource *source; RBShell *shell; int i; if (!(grl_source_get_supported_media (grilo_source) & GRL_MEDIA_TYPE_AUDIO)) { rb_debug ("grilo source %s doesn't support audio", grl_source_get_name (grilo_source)); goto ignore; } grilo_plugin = grl_source_get_plugin (grilo_source); for (i = 0; i < G_N_ELEMENTS (ignored_plugins); i++) { if (g_str_equal (ignored_plugins[i], grl_plugin_get_id (grilo_plugin))) { rb_debug ("grilo source %s is blacklisted", grl_source_get_name (grilo_source)); goto ignore; } } ops = grl_source_supported_operations (grilo_source); if (((ops & GRL_OP_BROWSE) == 0) && ((ops & GRL_OP_SEARCH) == 0)) { rb_debug ("grilo source %s is not interesting", grl_source_get_name (grilo_source)); goto ignore; } keys = grl_source_supported_keys (grilo_source); if (g_list_find ((GList *)keys, GINT_TO_POINTER (GRL_METADATA_KEY_URL)) == NULL) { rb_debug ("grilo source %s doesn't do urls", grl_source_get_name (grilo_source)); goto ignore; } rb_debug ("new grilo source: %s", grl_source_get_name (grilo_source)); source = rb_grilo_source_new (G_OBJECT (plugin), grilo_source); g_hash_table_insert (plugin->sources, g_object_ref (grilo_source), g_object_ref_sink (source)); /* probably put some sources under 'shared', some under 'stores'? */ g_object_get (plugin, "object", &shell, NULL); rb_shell_append_display_page (shell, RB_DISPLAY_PAGE (source), RB_DISPLAY_PAGE_GROUP_SHARED); g_object_unref (shell); return; ignore: grl_registry_unregister_source (registry, grilo_source, NULL); }