summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2009-06-18 17:43:46 (GMT)
committerAlexander Larsson <alexl@redhat.com>2009-06-18 17:43:46 (GMT)
commit8cb481fd5ff44c7e82f59948567ad0b417297555 (patch)
tree92fabee284195e9c844486da8f8a6ab36a112677
parent9fba81288424cd7ef45e28565fa878c93a962c17 (diff)
downloadglib-8cb481fd5ff44c7e82f59948567ad0b417297555.tar.gz
glib-8cb481fd5ff44c7e82f59948567ad0b417297555.tar.xz
Use io_prio as mainloop prio for async-emulation (#579449)
I'm not sure why we used the elaborate formula to convert the io-priority to the priority of the mainloop idle when emulating async i/o with idles. However, it causes the default io priority to be less than the normal idle prio, so the i/o won't be scheduled if there is an idle outstanding. There is really no great mapping to use here, doing blocking i/o in an idle of any prio is generally bad and apps doing a lot of async i/o should initialize threads. However, if we use the io-priority directly we at least avoid the starvation problem above and make things easier to understand.
-rw-r--r--gio/gioscheduler.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gio/gioscheduler.c b/gio/gioscheduler.c
index 14b59fe..8d97a56 100644
--- a/gio/gioscheduler.c
+++ b/gio/gioscheduler.c
@@ -257,7 +257,7 @@ g_io_scheduler_push_job (GIOSchedulerJobFunc job_func,
/* Threads not available, instead do the i/o sync inside a
* low prio idle handler
*/
- job->idle_tag = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE + 1 + io_priority / 10,
+ job->idle_tag = g_idle_add_full (io_priority,
run_job_at_idle,
job, job_destroy);
}