If I'm trying to create a type derived from GObject, and I'm not clear on
which of the instantiation/destruction methods I should be using for what.
I've looked at GtkObject for reference, but I still don't see why the
things that are done in gtk_object_init (which gets registered as
GTypeInfo.instance_init) are done there as opposed to in
GObject.constructor, and vice versa.
Also, I'm not clear on what should be done in dispose and what in finalize
and why.
Finally, I don't understand why this (from gobject.c, in
g_object_last_unref()) is safe:
if (object->ref_count == 1) /* may have been re-referenced meanwhile
*/
G_OBJECT_GET_CLASS (object)->dispose (object);
#ifdef G_ENABLE_DEBUG
if (g_trap_object_ref == object)
G_BREAKPOINT ();
#endif /* G_ENABLE_DEBUG */
object->ref_count -= 1;
if (object->ref_count == 0) /* may have been re-referenced meanwhile
*/
{
g_signal_handlers_destroy (object);
g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
G_OBJECT_GET_CLASS (object)->finalize (object);
If there is a possibility of object->ref_count being incremented while
g_object_last_unref() runs, shouldn't there be a lock or somehing after
the last check and before the finalize() call?
Thanks to anyone wh ocan enlighten me,
Britton Kerin
__
GNU GPL: "The Source will be with you... always."
_______________________________________________
gtk-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/gtk-list