But that's not how the code is written: g_task_run_in_thread(obj->task, custom_object_work) -> custom_object_worker() -> signal_emit() -> g_idle_add_full(..., signal_emitter, ...); signal_emitter() is the function that *actually* emits the signal. signal_emitter() is supposed to be running in the main context thread by the virtue of being the g_idle_add_full() callback. Are you saying that the g_idle_add_full() callback also runs in the worker thread? On Wed, Feb 27, 2019 at 4:54 PM Paul Davis <paul@xxxxxxxxxxxxxxxxxxxxx> wrote: > > > > On Wed, Feb 27, 2019 at 5:46 PM Mitko Haralanov <voidtrance@xxxxxxxxx> wrote: >> >> How is that? The update is happening from a callback executed by the >> main context thread? > > > g_task_run_in_thread(obj->task, custom_object_worker); > > custom_object_worker() emits the "updated" signal. the handler modifies the model. > _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx https://mail.gnome.org/mailman/listinfo/gtk-list