### Method

# Shell Global run_at_leisure

#### Declaration [src]

    void
    shell_global_run_at_leisure (
      ShellGlobal* global,
      ShellLeisureFunction func,
      gpointer user_data,
      GDestroyNotify notify
    )

#### Description [src]

Schedules a function to be called the next time the shell is idle. Idle means here no animations, no redrawing, and no ongoing background work. Since there is currently no way to hook into the Clutter master clock and know when is running, the implementation here is somewhat approximation. Animations may be detected as terminating early if they can be drawn fast enough so that the event loop goes idle between frames.

The intent of this function is for performance measurement runs where a number of actions should be run serially and each action is timed individually. Using this function for other purposes will interfere with the ability to use it for performance measurement so should be avoided.

#### Parameters

`func`

  Type: `ShellLeisureFunction`

  Function to call at leisure.

`user_data`

  Type: `gpointer`

  Data to pass to `func`.

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

`notify`

  Type: `GDestroyNotify`

  Function to call to free `user_data`.