### Function

# GLib idle_add_full

#### Declaration

    guint
    g_idle_add_full (
      gint priority,
      GSourceFunc function,
      gpointer data,
      GDestroyNotify notify
    )

#### Description

Adds a function to be called whenever there are no higher priority events pending.

If the function returns `G_SOURCE_REMOVE` or `FALSE` it is automatically removed from the list of event sources and will not be called again.

See [memory management of sources][mainloop-memory-management] for details on how to handle the return value and memory management of `data`.

This internally creates a main loop source using `g_idle_source_new()` and attaches it to the global `GMainContext` using g_source_attach(), so the callback will be invoked in whichever thread is running that main context. You can do these steps manually if you need greater control or to use a custom main context.

This function is renamed to `g_idle_add()` in language bindings.

#### Parameters

`priority`

  Type: `gint`

  The priority of the idle source. Typically this will be in the range between `G_PRIORITY_DEFAULT_IDLE` and `G_PRIORITY_HIGH_IDLE`.

`function`

  Type: `GSourceFunc`

  Function to call.

`data`

  Type: `gpointer`

  Data to pass to `function`.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

`notify`

  Type: `GDestroyNotify`

  Function to call when the idle is removed, or `NULL`.

  The argument can be `NULL`.

#### Return value

Type: `guint`

The ID (greater than 0) of the event source.