Hi, I'm having some difficulties with figuring out how to properly structure an 
object of mine; the object takes in a GSocketConnection and generates in/output 
streams and starts a read_line loop. However, when I go to destroy the object, 
calling g_cancellable_cancel within either the finalize or dispose functions 
causes the read cycle to incorrectly fail. This is because of an initial 
g_return_if_fail assertion at the beginning of the read cycle's asynchronous 
callback as the object has been freed and the user_data pointer is no longer 
valid.

Here's the relavent section of code for this issue, sorry if it's not too clean 
right now:
http://pastebin.com/Yt6RX5qQ

I saw that gfilenamecompleter.c in the gio source folder uses a separate 
structure containing the GCancellable as well as the object, and I suppose one 
could always do manual cycle through the main loop through checking for and 
dispatching events within the finalize function in order to have the read's 
_async part complete, but both seem like sub-optimal solutions, so I was 
wondering if anyone on the list could lend their input on this matter.

-- 
Nader Morshed <morshed.na...@gmail.com>
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to