mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-05-04 21:16:52 +02:00
gtask: Document signal handler reference counting
Explain why the signal handler holds a reference to the GTask, even though that causes a reference loop at first glance. https://bugzilla.gnome.org/show_bug.cgi?id=736806
This commit is contained in:
parent
c6838ffaa1
commit
925913d8dd
@ -1274,6 +1274,14 @@ g_task_start_task_thread (GTask *task,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This introduces a reference count loop between the GTask and
|
||||||
|
* GCancellable, but is necessary to avoid a race on finalising the GTask
|
||||||
|
* between task_thread_cancelled() (in one thread) and
|
||||||
|
* g_task_thread_complete() (in another).
|
||||||
|
*
|
||||||
|
* Accordingly, the signal handler *must* be removed once the task has
|
||||||
|
* completed.
|
||||||
|
*/
|
||||||
g_signal_connect_data (task->cancellable, "cancelled",
|
g_signal_connect_data (task->cancellable, "cancelled",
|
||||||
G_CALLBACK (task_thread_cancelled),
|
G_CALLBACK (task_thread_cancelled),
|
||||||
g_object_ref (task),
|
g_object_ref (task),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user