[patch] mainloop




This patch makes some fairly major changes to the GTK mainloop.  The
main effective difference is that the mainloop can be called
recursively from within a timeout or idle function. This probably
isn't too useful for GTK programs in general, but it is meant to allow
to allow the gtk mainloop to be used for hybrid GTK/ILU programs.

It also fixes a problem where if the gtk_main_quit() was called from
a timeout, it wouldn't take effect until after the next events.

As before, little effort is made to make sure that timers go off
exactly at the assigned time. If people feel this is important, it
could be fixed at the cost of another system call (gettimeofday()) per
main loop iteration. (~5-6 microseconds on my system.)

I've tested the timeouts pretty extensively, the idles less so.  If
you use such things extensively in your programs, you might want to
give a spin and see if it breaks anything.

Regards,
                                        Owen

begin 644 gtk+970925-otaylor-mainloop.patch.gz
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
>;K$[G&G/]Z9^(.#O41)\*GE]?\G\#WV:.?%Z30``
`
end



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]