Re: [anjuta-devel] New project interface and introspection
- From: Abderrahim Kitouni <a kitouni gmail com>
- To: Sébastien Granjoux <seb sfo free fr>
- Cc: anjuta-devel-list gnome org
- Subject: Re: [anjuta-devel] New project interface and introspection
- Date: Thu, 23 Sep 2010 17:56:57 +0100
Sorry for not answering your previous mail, I was too busy.
في ر، 22-09-2010 عند 22:02 +0200 ، كتب Sébastien Granjoux:
I have changed the AnjutaProjectNode to use GObject, it's working but
there are two issues.
1. In C, when you create a node you get a reference to it and when you
add it in the project, the parent increment the reference count too. So
you need to call g_object_unref after inserting each node in the project
which is the most common operation. I have thought to use floating
reference, but I'm afraid I have to use some uncommon functions those
will not be fully supported. In Python, it doesn't matter because the
call to g_object_unref is done automatically.
Both Gtk and Clutter use floating references. So there shouldn't be a
problem with them. However, I see that you're calling
g_object_force_floating which is dangerous (and potentially wrong).
I feel that it should be a unref there (not sure though).
2. Reloading a node is done in a different thread. To avoid accessing
the same object from a different thread, before loading the node, I
remove it from the project tree replacing it with a dummy node and pass
the original node to the loading function. But if some other piece of
code has kept a reference on the original node, it is possible that both
the worker thread and this code use the same object. So, it's quite
dangerous to get a reference on a node object anyway.
That's right, but who would want to keep a reference anyway? I think
it's not a problem, but if we find a use to keeping node references
around, we can add a new signal so anyone having a reference can use the
reference to the proxy or drop the reference altogether.
] [Thread Prev