sor3listmodel: Do time-based batching

Stop a sorting step if it has run for more than 1.5ms.
This is an attempt to improve interactivity during
incremental sorting.
This commit is contained in:
Matthias Clasen
2020-07-11 15:12:17 -04:00
parent 5a4840b245
commit 8cd8039820

View File

@@ -305,7 +305,7 @@ gtk_sor3_list_model_sort_cb (gpointer data)
start = self->sorted_to;
n_items = sort_array_get_size (&self->items);
end = MIN (512, n_items - start);
end = n_items - start;
changed_start = G_MAXUINT;
changed_end = 0;
@@ -314,6 +314,9 @@ gtk_sor3_list_model_sort_cb (gpointer data)
{
iqs (&self->items, self->sorted_to, &self->stack, self->sorter, &changed_start, &changed_end);
self->sorted_to++;
if (g_get_monotonic_time () - begin > 1500)
break;
}
if (self->sorted_to >= n_items)