Kalle Vahlman wrote:
> 2006/12/18, Attilio Fiandrotti <[EMAIL PROTECTED]>:
> 
>> Attilio Fiandrotti wrote:
>> > Hi
>> >
>> > I recently noticed the the size of a generic gtk/dfb application
>> > considerably grows over time while the same application, but compiled
>> > for gtk/x11, does not.
>> >
>> > The attached example aplication permanently sets up a window and an
>> > external box and at every proram's iteration a textview is created,
>> > packed into the external box and then destroyed.
>> >
>> > Compiling for gtk/x11, the total amount of memory allocated by the
>> > process remains constant, while under gtk/dfb the process image size
>> > grown of some tens of KB every 3 or 4 iterations.
>> >
>> > I wonder what's the reason of this difference: am i doing something
>> > wrong when i gtk_widget_destroy() the textview ? Is gtk/dfb leaking
>> > somewhere ?
> 
> 
> I would say yes, calling gtk_container_remove() on it is the way you
> are supposed to take a widget from a container. Removing a widget from
> its container will decrease the refcount of the widget to 0 and thus
> destroy it (unless reffed by someone else of course). Now, it _should_
> work both ways, but I think the expected method is worth the trouble
> to at least test whether it fixes the bug (no high hopes for that to
> happen though, since removing from the container is a part of the
> destruction process. But you never know! ;).

In the real application (the GTK frontend for debian-installer) we have 
a toplevel window and some widgets that are never destroyed, while 
others get created and then deleted at every installation step.

When a step is done i remove via gtk_widget_destroy() a box which holds, 
as children, all the widgets i no longer need, and here is where the 
leak happens.

Your hint is somehow a workaround: gtk_container_remove() decerements 
ref counter and causes memory release, even if i still get a lot of 
warnings afterwards.

In the unlucky case this bug cannot be fixed properly, then the 
gtk_container_remove() trick may do as a workaround.

thanks

Attilio

In the (unlucky) case this leak cannot be properly fixed, your hint allow

I tried the g_object_unref()
_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list

Reply via email to