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 impl_activate (PeasActivatable *bplugin) { RBNotificationPlugin *plugin; RBShell *shell; rb_debug ("activating notification plugin"); plugin = RB_NOTIFICATION_PLUGIN (bplugin); g_object_get (plugin, "object", &shell, NULL); g_object_get (shell, "shell-player", &plugin->shell_player, "db", &plugin->db, NULL); /* connect various things */ g_signal_connect_object (shell, "notify-playing-entry", G_CALLBACK (shell_notify_playing_cb), plugin, 0); g_signal_connect_object (shell, "notify-custom", G_CALLBACK (shell_notify_custom_cb), plugin, 0); g_signal_connect_object (plugin->shell_player, "playing-song-changed", G_CALLBACK (playing_entry_changed_cb), plugin, 0); g_signal_connect_object (plugin->shell_player, "playing-changed", G_CALLBACK (playing_changed_cb), plugin, 0); g_signal_connect_object (plugin->db, "entry_extra_metadata_notify::" RHYTHMDB_PROP_STREAM_SONG_TITLE, G_CALLBACK (db_stream_metadata_cb), plugin, 0); g_signal_connect_object (plugin->db, "entry_extra_metadata_notify::" RHYTHMDB_PROP_STREAM_SONG_ARTIST, G_CALLBACK (db_stream_metadata_cb), plugin, 0); g_signal_connect_object (plugin->db, "entry_extra_metadata_notify::" RHYTHMDB_PROP_STREAM_SONG_ALBUM, G_CALLBACK (db_stream_metadata_cb), plugin, 0); plugin->art_store = rb_ext_db_new ("album-art"); /* hook into shell preferences so we can poke stuff into the general prefs page? */ g_object_unref (shell); }
static void request_cover_art (MxFrame *frame, RhythmDBEntry *entry) { RBExtDBKey *key; RBExtDB *art_store; art_store = rb_ext_db_new ("album-art"); key = rhythmdb_entry_create_ext_db_key (entry, RHYTHMDB_PROP_ALBUM); rb_ext_db_request (art_store, key, (RBExtDBRequestCallback) art_cb, g_object_ref (frame), g_object_unref); rb_ext_db_key_free (key); g_object_unref (art_store); }
static gboolean device_opened_idle (DeviceOpenedData *data) { RBMtpSourcePrivate *priv = MTP_SOURCE_GET_PRIVATE (data->source); int i; GstEncodingTarget *target; GList *profiles = NULL; if (data->name != NULL) { g_object_set (data->source, "name", data->name, NULL); } /* when the source name changes after this, try to update the device name */ g_signal_connect (G_OBJECT (data->source), "notify::name", (GCallback)rb_mtp_source_name_changed_cb, NULL); rb_media_player_source_load (RB_MEDIA_PLAYER_SOURCE (data->source)); for (i = 0; i < data->num_types; i++) { const char *mediatype; gboolean prepend; if (i <= LIBMTP_FILETYPE_UNKNOWN) { priv->supported_types[data->types[i]] = 1; } mediatype = NULL; prepend = FALSE; switch (data->types[i]) { case LIBMTP_FILETYPE_WAV: /*mediatype = "audio/x-wav";*/ /* don't bother including this? */ break; case LIBMTP_FILETYPE_MP3: mediatype = "audio/mpeg"; prepend = TRUE; /* always goes first if supported */ break; case LIBMTP_FILETYPE_WMA: mediatype = "audio/x-wma"; break; case LIBMTP_FILETYPE_OGG: mediatype = "audio/x-vorbis"; break; case LIBMTP_FILETYPE_MP4: case LIBMTP_FILETYPE_M4A: case LIBMTP_FILETYPE_AAC: mediatype = "audio/x-aac"; break; case LIBMTP_FILETYPE_WMV: mediatype = "audio/x-ms-wmv"; /* media type? */ break; case LIBMTP_FILETYPE_ASF: mediatype = "video/x-ms-asf"; /* media type? */ break; case LIBMTP_FILETYPE_FLAC: mediatype = "audio/x-flac"; break; case LIBMTP_FILETYPE_JPEG: rb_debug ("JPEG (album art) supported"); priv->album_art_supported = TRUE; break; default: rb_debug ("unknown libmtp filetype %s supported", LIBMTP_Get_Filetype_Description (data->types[i])); break; } if (mediatype != NULL) { GstEncodingProfile *profile; profile = rb_gst_get_encoding_profile (mediatype); if (profile != NULL) { rb_debug ("media type %s supported", mediatype); if (prepend) { profiles = g_list_prepend (profiles, profile); } else { profiles = g_list_append (profiles, profile); } } else { rb_debug ("no encoding profile for supported media type %s", mediatype); } } } if (priv->album_art_supported) { priv->art_store = rb_ext_db_new ("album-art"); } target = gst_encoding_target_new ("mtpdevice", "device", "", profiles); g_object_set (data->source, "encoding-target", target, NULL); g_object_unref (data->source); free (data->types); g_free (data->name); g_free (data); return FALSE; }