From: Alexander Larsson Date: Thu, 18 Jun 2009 17:43:46 +0000 (+0200) Subject: Use io_prio as mainloop prio for async-emulation (#579449) X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=8cb481fd5ff44c7e82f59948567ad0b417297555;p=dana%2Fcg-glib.git 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. --- diff --git a/gio/gioscheduler.c b/gio/gioscheduler.c index 14b59fea..8d97a56e 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); }