static void impl_activate (PeasActivatable *plugin) { RBGriloPlugin *pi = RB_GRILO_PLUGIN (plugin); GError *error = NULL; RBShell *shell; pi->sources = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, g_object_unref); grl_init (0, NULL); pi->registry = grl_registry_get_default (); g_signal_connect (pi->registry, "source-added", G_CALLBACK (grilo_source_added_cb), pi); if (grl_registry_load_all_plugins (pi->registry, &error) == FALSE) { g_warning ("Failed to load Grilo plugins: %s", error->message); g_clear_error (&error); } g_object_get (plugin, "object", &shell, NULL); g_object_get (shell, "shell-player", &pi->shell_player, NULL); g_object_unref (shell); g_signal_connect (pi->shell_player, "playing-song-changed", G_CALLBACK (playing_song_changed_cb), pi); pi->art_store = rb_ext_db_new ("album-art"); }
static void load_plugins (gchar* playlist) { GrlRegistry *registry; GrlSource *source; GError *error = NULL; GList *keys; GrlOperationOptions *options; GrlCaps *caps; GrlMedia* media; gboolean pls_media; const gchar *mime; registry = grl_registry_get_default (); grl_registry_load_all_plugins (registry, FALSE, NULL); /* Activate plugin */ if (!grl_registry_activate_plugin_by_id (registry, "grl-filesystem", &error)) g_error ("Failed to load plugin: %s", error->message); source = grl_registry_lookup_source (registry, "grl-filesystem"); if (!source) g_error ("Unable to load grl-filesystem plugin"); if (!(grl_source_supported_operations (source) & GRL_OP_MEDIA_FROM_URI)) g_error ("Unable to get media from URI"); keys = grl_metadata_key_list_new (GRL_METADATA_KEY_TITLE, GRL_METADATA_KEY_URL, GRL_METADATA_KEY_MIME, NULL); if (!keys) g_error ("Unable to create key list"); caps = grl_source_get_caps (source, GRL_OP_MEDIA_FROM_URI); if (!caps) g_error ("Unable to get source caps"); options = grl_operation_options_new (caps); if (!options) g_error ("Unable to create operation options"); media = grl_source_get_media_from_uri_sync (source, playlist, keys, options, &error); if (!media) g_error ("Unable to get GrlMedia for playlist %s", playlist); g_object_unref (options); mime = grl_media_get_mime (media); pls_media = grl_pls_media_is_playlist (media); g_printf("Got Media for %s - mime=%s\n", playlist, mime); g_printf("\tgrl_pls_media_is_playlist = %d\n", pls_media); if (pls_media) { source_browser (source, media); } g_object_unref (media); g_object_unref (source); }
static void test_lua_factory_setup (GrlConfig *config) { GrlRegistry *registry; GError *error = NULL; registry = grl_registry_get_default (); if (config != NULL) { grl_registry_add_config (registry, config, &error); g_assert_no_error (error); } grl_registry_load_all_plugins (registry, FALSE, NULL); grl_registry_activate_plugin_by_id (registry, LUA_FACTORY_ID, &error); g_assert_no_error (error); }
static void load_plugins (void) { GrlRegistry *registry; GError *error = NULL; registry = grl_registry_get_default (); /* These callback will be invoked when media providers are loaded/unloaded */ g_signal_connect (registry, "source-added", G_CALLBACK (source_added_cb), NULL); g_signal_connect (registry, "source-removed", G_CALLBACK (source_removed_cb), NULL); /* Command the registry to load all available plugins. The registry will look for plugins in the default plugin path and directories specified using the GRL_PLUGIN_PATH environment variable */ if (!grl_registry_load_all_plugins (registry, TRUE, &error)) { g_error ("Failed to load plugins: %s", error->message); } }
bool GriloRegistry::loadAll() { // TODO: error reporting return grl_registry_load_all_plugins(m_registry, NULL) == TRUE; }
/* Main program */ gint main (gint argc, gchar **argv) { GError *error = NULL; GOptionContext *context = NULL; gint i; context = g_option_context_new ("- run Grilo plugin as UPnP service"); g_option_context_add_main_entries (context, entries, NULL); g_option_context_add_group (context, grl_init_get_option_group ()); g_option_context_parse (context, &argc, &argv, &error); g_option_context_free (context); if (error) { g_printerr ("Invalid arguments, %s\n", error->message); g_clear_error (&error); return -1; } /* Adjust limits */ limit = CLAMP (limit, 0, G_MAXINT); if (limit == 0) { limit = G_MAXINT; } /* Initialize grilo */ grl_init (&argc, &argv); registry = grl_registry_get_default (); if (!registry) { g_printerr ("Unable to load Grilo registry\n"); return -1; } /* Register a key to store parent */ GRL_METADATA_KEY_GRILO_MS2_PARENT = grl_registry_register_metadata_key (registry, g_param_spec_string ("grilo-mediaserver2-parent", "GriloMediaServer2Parent", "Object path to parent container", NULL, G_PARAM_READWRITE), GRL_METADATA_KEY_INVALID, NULL); if (GRL_METADATA_KEY_GRILO_MS2_PARENT == GRL_METADATA_KEY_INVALID) { g_error ("Unable to register Parent key"); return 1; } /* Load configuration */ load_config (); /* Initialize <grilo-plugin, ms2-server> pairs */ servers = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); g_signal_connect (registry, "source-added", G_CALLBACK (source_added_cb), NULL); g_signal_connect (registry, "source-removed", G_CALLBACK (source_removed_cb), NULL); if (!args || !args[0]) { grl_registry_load_all_plugins (registry, TRUE, NULL); } else { for (i = 0; args[i]; i++) { grl_registry_load_plugin (registry, args[i], NULL); } } g_main_loop_run (g_main_loop_new (NULL, FALSE)); }