the priority of the idle source. Typically this will be in the range between #G_PRIORITY_DEFAULT_IDLE and #G_PRIORITY_HIGH_IDLE
function to call
data to pass to @function
function to call when the idle is removed, or %NULL
Return: the ID (greater than 0) of the event source.
2.12
Adds a function to be called whenever there are no higher priority events pending. If the function returns %FALSE it is automatically removed from the list of event sources and will not be called again.
This variant of g_idle_add_full() calls @function with the GDK lock held. It can be thought of a MT-safe version for GTK+ widgets for the following use case, where you have to worry about idle_callback() running in thread A and accessing @self after it has been finalized in thread B:
|[<!-- language="C" --> static gboolean idle_callback (gpointer data) { // gdk_threads_enter(); would be needed for g_idle_add()
SomeWidget *self = data; // do stuff with self
self->idle_id = 0;
// gdk_threads_leave(); would be needed for g_idle_add() return FALSE; }
static void some_widget_do_stuff_later (SomeWidget *self) { self->idle_id = gdk_threads_add_idle (idle_callback, self) // using g_idle_add() here would require thread protection in the callback }
static void some_widget_finalize (GObject *object) { SomeWidget *self = SOME_WIDGET (object); if (self->idle_id) g_source_remove (self->idle_id); G_OBJECT_CLASS (parent_class)->finalize (object); } ]|