static void photos_source_manager_refresh_accounts (PhotosSourceManager *self) { PhotosSourceManagerPrivate *priv = self->priv; GHashTable *new_sources; GList *accounts; GList *l; accounts = goa_client_get_accounts (priv->client); new_sources = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); for (l = accounts; l != NULL; l = l->next) { GoaAccount *account; GoaObject *object = GOA_OBJECT (l->data); PhotosSource *source; const gchar *id; account = goa_object_peek_account (object); if (account == NULL) continue; if (goa_account_get_photos_disabled (account)) continue; if (goa_object_peek_photos (object) == NULL) continue; source = photos_source_new_from_goa_object (GOA_OBJECT (l->data)); id = photos_filterable_get_id (PHOTOS_FILTERABLE (source)); g_hash_table_insert (new_sources, g_strdup (id), g_object_ref (source)); g_object_unref (source); } photos_base_manager_process_new_objects (PHOTOS_BASE_MANAGER (self), new_sources); g_hash_table_unref (new_sources); g_list_free_full (accounts, g_object_unref); }
static void photos_share_point_manager_refresh_share_points (PhotosSharePointManager *self) { GHashTable *new_share_points; GList *extensions; GList *l; guint i; guint n_items; new_share_points = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); extensions = g_io_extension_point_get_extensions (self->extension_point); for (l = extensions; l != NULL; l = l->next) { GError *error; GIOExtension *extension = (GIOExtension *) l->data; GType type; PhotosSharePoint *share_point; const gchar *id; type = g_io_extension_get_type (extension); if (g_type_is_a (type, G_TYPE_INITABLE)) { error = NULL; share_point = PHOTOS_SHARE_POINT (g_initable_new (type, NULL, &error, NULL)); if (share_point == NULL) { const gchar *name; name = g_io_extension_get_name (extension); g_debug ("Unable to initialize share point %s: %s", name, error->message); g_error_free (error); continue; } } else { share_point = PHOTOS_SHARE_POINT (g_object_new (type, NULL)); } id = photos_filterable_get_id (PHOTOS_FILTERABLE (share_point)); g_hash_table_insert (new_share_points, g_strdup (id), g_object_ref (share_point)); g_object_unref (share_point); } n_items = g_list_model_get_n_items (G_LIST_MODEL (self->src_mngr)); for (i = 0; i < n_items; i++) { PhotosSharePoint *share_point = NULL; PhotosSource *source; source = PHOTOS_SOURCE (g_list_model_get_object (G_LIST_MODEL (self->src_mngr), i)); share_point = photos_share_point_manager_create_share_point_online (self, source); if (share_point != NULL) { const gchar *id; id = photos_filterable_get_id (PHOTOS_FILTERABLE (share_point)); g_hash_table_insert (new_share_points, g_strdup (id), g_object_ref (share_point)); } g_clear_object (&share_point); g_object_unref (source); } photos_base_manager_process_new_objects (PHOTOS_BASE_MANAGER (self), new_share_points); g_hash_table_unref (new_share_points); }