Load and populate the recent-items in a single pass

There's no real asynchronicity going on, anyway, so let's do both within
a single iteration of the idle handler.
Signed-off-by: default avatarFederico Mena Quintero <federico@gnome.org>
parent e9c0faba
......@@ -9301,7 +9301,6 @@ typedef struct
{
GtkFileChooserDefault *impl;
GList *items;
guint needs_sorting : 1;
} RecentLoadData;
static void
......@@ -9396,30 +9395,18 @@ recent_idle_load (gpointer data)
if (!impl->recent_manager)
return FALSE;
/* first iteration: load all the items */
load_data->items = gtk_recent_manager_get_items (impl->recent_manager);
if (!load_data->items)
{
load_data->items = gtk_recent_manager_get_items (impl->recent_manager);
if (!load_data->items)
return FALSE;
load_data->needs_sorting = TRUE;
return FALSE;
return TRUE;
}
/* second iteration: MRU sorting and clamping, and populating the model */
if (load_data->needs_sorting)
{
if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
populate_model_with_recent_items (impl, load_data->items);
else
populate_model_with_folders (impl, load_data->items);
if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
populate_model_with_recent_items (impl, load_data->items);
else
populate_model_with_folders (impl, load_data->items);
g_list_foreach (load_data->items, (GFunc) gtk_recent_info_unref, NULL);
g_list_free (load_data->items);
load_data->items = NULL;
}
g_list_foreach (load_data->items, (GFunc) gtk_recent_info_unref, NULL);
g_list_free (load_data->items);
load_data->items = NULL;
return FALSE;
}
......@@ -9439,7 +9426,6 @@ recent_start_loading (GtkFileChooserDefault *impl)
load_data = g_new (RecentLoadData, 1);
load_data->impl = impl;
load_data->items = NULL;
load_data->needs_sorting = TRUE;
/* begin lazy loading the recent files into the model */
impl->load_recent_id = gdk_threads_add_idle_full (G_PRIORITY_HIGH_IDLE + 30,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment