On Thu, Jan 15, 2009 at 05:18:40PM +0000, Richard W.M. Jones wrote:
On Tue, Jan 13, 2009 at 05:43:08PM +0000, Daniel P. Berrange wrote:
> With the domain events code, the callbacks triggered upon events get given
> a virDomainPtr object instance. In many cases it'd be desirable to grab
> this object and keep it in your app code. Unfortunately it is free'd the
> moment the callback finishes executing.
>
> When allowing multiple threads to access a single virConnectPtr object
> it is neccessary to ensure no thread releases it (virConnectCLose) while
> another thread is still using it.
>
> The way to address both of these problems is to allow an application to
> take an explicit reference on the object in question. So this patch
> exposes methods to allow an app to increment the ref count on all our
> public objects. To release the ref count, the existing virConectClose/
> virDOmainFree, etc methods suffice
>
> include/libvirt/libvirt.h | 6 +
> include/libvirt/libvirt.h.in | 6 +
> src/libvirt.c | 183 +++++++++++++++++++++++++++++++++++++++++++
> src/libvirt_public.syms | 12 ++
> 4 files changed, 206 insertions(+), 1 deletion(-)
Poor man's garbage collection ... +1.
Yeah it's unfortunate we have to add this at the API level, but
unfortunately there is no way around.
I wonder if we could resurrect some of the deprecated fields of
error structure now, seems to me that would be possible now.
Patch looks fine, +1
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/