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.
This commit is contained in:
Alexander Larsson 2009-06-18 19:43:46 +02:00
parent 9fba812884
commit 8cb481fd5f

View File

@ -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);
}