Re: Question about pixbuf

On Wed, 2008-04-30 at 19:10 -0500, Moises wrote:

> when I use g_object_unref decreases reference count
> and when this hit 0, the object is released, but when
> does it  hit 0?

when the last reference, created by the construction of an object, is

  instance = g_object_new (type, ...);
  g_object_unref (instance); /* the object is disposed */

>  when the program ends and eventually
> released all memory or immediately that I used
> g_object_unref?.

if g_object_unref() has been called and it was the last reference then
the object is disposed and the instance becomes a pointer to an invalid

> because apparently does not work because I have the
> following
> imgPixbuf = gdk_pixbuf_new_from_file(xfileName,
> error);
> ...
> g_object_unref (imgPixbuf);
> but still I get data of pixbuf with: 

you are get garbage, which does not segfault on you for a simple matter
of chance. unless the "..." in between did not increase the reference
count of the object.

> imgPixbuf = gdk_pixbuf_new_from_file(xfileName,
> error);
> ...
> g_object_unref (imgPixbuf);
> width=gdk_pixbuf_get_width(imgPixbuf);
> then the object is not destroyed

the object is disposed, but not set to NULL. no free/dispose function
will set the pointer to NULL for you - at least, not in GLib.


Emmanuele Bassi,

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]