gtask: Clarify when GTask:completed is suitable to use

It’s not suitable to use to check if your own code has already called
`g_task_return_*()`, as it doesn’t directly correlate to that.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>
This commit is contained in:
Philip Withnall 2024-02-06 15:43:12 +00:00
parent 15cef2ea59
commit 90ec3d3499

View File

@ -2454,9 +2454,18 @@ g_task_class_init (GTaskClass *klass)
* GTask:completed: * GTask:completed:
* *
* Whether the task has completed, meaning its callback (if set) has been * Whether the task has completed, meaning its callback (if set) has been
* invoked. This can only happen after g_task_return_pointer(), * invoked.
*
* This can only happen after g_task_return_pointer(),
* g_task_return_error() or one of the other return functions have been called * g_task_return_error() or one of the other return functions have been called
* on the task. * on the task. However, it is not guaranteed to happen immediately after
* those functions are called, as the tasks callback may need to be scheduled
* to run in a different thread.
*
* That means it is **not safe** to use this property to track whether a
* return function has been called on the #GTask. Callers must do that
* tracking themselves, typically by linking the lifetime of the #GTask to the
* control flow of their code.
* *
* This property is guaranteed to change from %FALSE to %TRUE exactly once. * This property is guaranteed to change from %FALSE to %TRUE exactly once.
* *