static void impl_activate (PeasActivatable *bplugin) { RBMtpPlugin *plugin = RB_MTP_PLUGIN (bplugin); RBRemovableMediaManager *rmm; RBShell *shell; gboolean rmm_scanned = FALSE; g_object_get (plugin, "object", &shell, NULL); g_object_get (shell, "removable-media-manager", &rmm, NULL); g_object_unref (shell); /* device detection */ plugin->create_device_source_id = g_signal_connect_object (rmm, "create-source-device", G_CALLBACK (create_source_device_cb), plugin, 0); /* only scan if we're being loaded after the initial scan has been done */ g_object_get (rmm, "scanned", &rmm_scanned, NULL); if (rmm_scanned) rb_removable_media_manager_scan (rmm); g_object_unref (rmm); }
static void impl_activate (PeasActivatable *plugin) { RBGenericPlayerPlugin *pi = RB_GENERIC_PLAYER_PLUGIN (plugin); RBRemovableMediaManager *rmm; RBShell *shell; gboolean scanned; g_object_get (plugin, "object", &shell, NULL); g_object_get (shell, "removable-media-manager", &rmm, NULL); /* watch for new removable media. use connect_after so * plugins for more specific device types can get in first. */ g_signal_connect_after (G_OBJECT (rmm), "create-source-mount", G_CALLBACK (create_source_cb), pi); /* only scan if we're being loaded after the initial scan has been done */ g_object_get (rmm, "scanned", &scanned, NULL); if (scanned) rb_removable_media_manager_scan (rmm); g_object_unref (rmm); g_object_unref (shell); }
static void impl_activate (PeasActivatable *bplugin) { RBIpodPlugin *plugin = RB_IPOD_PLUGIN (bplugin); RBRemovableMediaManager *rmm = NULL; GtkUIManager *uimanager = NULL; RBShell *shell; gboolean scanned; char *file; g_object_get (plugin, "object", &shell, NULL); g_object_get (G_OBJECT (shell), "removable-media-manager", &rmm, "ui-manager", &uimanager, NULL); rb_media_player_source_init_actions (shell); /* add ipod UI */ plugin->action_group = gtk_action_group_new ("iPodActions"); gtk_action_group_set_translation_domain (plugin->action_group, GETTEXT_PACKAGE); _rb_action_group_add_display_page_actions (plugin->action_group, G_OBJECT (shell), rb_ipod_plugin_actions, G_N_ELEMENTS (rb_ipod_plugin_actions)); gtk_ui_manager_insert_action_group (uimanager, plugin->action_group, 0); file = rb_find_plugin_data_file (G_OBJECT (bplugin), "ipod-ui.xml"); plugin->ui_merge_id = gtk_ui_manager_add_ui_from_file (uimanager, file, NULL); g_free (file); /* watch for new removable media, and cause a rescan */ g_signal_connect (G_OBJECT (rmm), "create-source-mount", G_CALLBACK (create_source_cb), plugin); /* only scan if we're being loaded after the initial scan has been done */ g_object_get (G_OBJECT (rmm), "scanned", &scanned, NULL); if (scanned) rb_removable_media_manager_scan (rmm); g_object_unref (rmm); g_object_unref (uimanager); g_object_unref (shell); }
static void impl_activate (PeasActivatable *bplugin) { RBMtpPlugin *plugin = RB_MTP_PLUGIN (bplugin); GtkUIManager *uimanager = NULL; RBRemovableMediaManager *rmm; char *file = NULL; RBShell *shell; #if defined(HAVE_GUDEV) gboolean rmm_scanned = FALSE; #else int num_mtp_devices; LIBMTP_raw_device_t *mtp_devices; #endif g_object_get (plugin, "object", &shell, NULL); g_object_get (shell, "ui-manager", &uimanager, "removable-media-manager", &rmm, NULL); /* ui */ rb_media_player_source_init_actions (shell); plugin->action_group = gtk_action_group_new ("MTPActions"); gtk_action_group_set_translation_domain (plugin->action_group, GETTEXT_PACKAGE); _rb_action_group_add_display_page_actions (plugin->action_group, G_OBJECT (shell), rb_mtp_plugin_actions, G_N_ELEMENTS (rb_mtp_plugin_actions)); gtk_ui_manager_insert_action_group (uimanager, plugin->action_group, 0); file = rb_find_plugin_data_file (G_OBJECT (bplugin), "mtp-ui.xml"); plugin->ui_merge_id = gtk_ui_manager_add_ui_from_file (uimanager, file, NULL); g_object_unref (uimanager); g_object_unref (shell); /* device detection */ #if defined(HAVE_GUDEV) plugin->create_device_source_id = g_signal_connect_object (rmm, "create-source-device", G_CALLBACK (create_source_device_cb), plugin, 0); /* only scan if we're being loaded after the initial scan has been done */ g_object_get (rmm, "scanned", &rmm_scanned, NULL); if (rmm_scanned) rb_removable_media_manager_scan (rmm); #else if (rb_mtp_plugin_setup_dbus_hal_connection (plugin) == FALSE) { rb_debug ("not scanning for MTP devices because we couldn't get a HAL context"); g_object_unref (rmm); return; } rb_profile_start ("scanning for MTP devices"); LIBMTP_Detect_Raw_Devices (&mtp_devices, &num_mtp_devices); if (num_mtp_devices > 0) { int num_hal_devices; char **hal_devices; int i; rb_debug ("%d MTP devices found", num_mtp_devices); hal_devices = libhal_get_all_devices (plugin->hal_context, &num_hal_devices, NULL); for (i = 0; i < num_hal_devices; i++) { /* should narrow this down a bit - usb only, for a start */ rb_mtp_plugin_maybe_add_source (plugin, hal_devices[i], mtp_devices, num_mtp_devices); } libhal_free_string_array (hal_devices); } if (mtp_devices != NULL) { free (mtp_devices); } rb_profile_end ("scanning for MTP devices"); #endif g_object_unref (rmm); }
static void rb_removable_media_manager_cmd_scan_media (GtkAction *action, RBRemovableMediaManager *manager) { rb_removable_media_manager_scan (manager); }
static void check_devices_action_cb (GSimpleAction *action, GVariant *parameter, gpointer data) { rb_removable_media_manager_scan (RB_REMOVABLE_MEDIA_MANAGER (data)); }
static void impl_activate (RBPlugin *plugin, RBShell *shell) { RBAudioCdPlugin *pi = RB_AUDIOCD_PLUGIN (plugin); RBRemovableMediaManager *rmm; gboolean scanned; GObject *shell_player; RBPlayer *player_backend; GtkUIManager *uimanager; char *filename; pi->sources = g_hash_table_new_full (g_direct_hash, g_direct_equal, g_object_unref, g_object_unref); pi->shell = shell; g_object_get (shell, "removable-media-manager", &rmm, "ui-manager", &uimanager, NULL); filename = rb_plugin_find_file (plugin, "audiocd-ui.xml"); if (filename != NULL) { pi->ui_merge_id = gtk_ui_manager_add_ui_from_file (uimanager, filename, NULL); } else { g_warning ("Unable to find file: audiocd-ui.xml"); } g_free (filename); g_object_unref (uimanager); /* watch for new removable media. use connect_after so * plugins for more specific device types can get in first. */ g_signal_connect_after (rmm, "create-source-mount", G_CALLBACK (create_source_cb), pi); /* only scan if we're being loaded after the initial scan has been done */ g_object_get (G_OBJECT (rmm), "scanned", &scanned, NULL); if (scanned) { rb_removable_media_manager_scan (rmm); } g_object_unref (rmm); /* player backend hooks: specify the device, limit read speed, and disable paranoia * in source elements, and when changing between tracks on the same CD, just seek * between them, rather than closing and reopening the device. */ shell_player = rb_shell_get_player (shell); g_object_get (shell_player, "player", &player_backend, NULL); if (player_backend) { GObjectClass *klass = G_OBJECT_GET_CLASS (player_backend); if (g_signal_lookup ("prepare-source", G_OBJECT_CLASS_TYPE (klass)) != 0) { g_signal_connect_object (player_backend, "prepare-source", G_CALLBACK (rb_audiocd_plugin_prepare_player_source_cb), plugin, 0); } if (g_signal_lookup ("reuse-stream", G_OBJECT_CLASS_TYPE (klass)) != 0) { g_signal_connect_object (player_backend, "can-reuse-stream", G_CALLBACK (rb_audiocd_plugin_can_reuse_stream_cb), plugin, 0); g_signal_connect_object (player_backend, "reuse-stream", G_CALLBACK (rb_audiocd_plugin_reuse_stream_cb), plugin, 0); } } /* encoder hooks: specify the device and set the paranoia level (if available) on * source elements. */ g_signal_connect_object (rb_encoder_factory_get (), "prepare-source", G_CALLBACK (rb_audiocd_plugin_prepare_encoder_source_cb), plugin, 0); g_signal_connect_object (shell_player, "playing-uri-changed", G_CALLBACK (rb_audiocd_plugin_playing_uri_changed_cb), plugin, 0); }