Re: Reference counting

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

 



Tristan Van Berkom wrote:
> On Dec 23, 2007 1:20 AM, Alwin Leerling <leerling@xxxxxxxxxx 
> <mailto:leerling@xxxxxxxxxx>> wrote:
>
>     Hi,
>
>     I'm slightly overwhelmed as to the whole reference counting issue.
>     Could
>     someone explain the though process or logic behind the reference
>     counting or direct me to some information where I can find the
>     correct
>     use. For example, in my code I set up my combo boxes on startup using
>     gtk_list_store_newv and gtk_combo_box_set_model. (Do I need to
>     unref the
>     list_store pointer at this stage?) 
>
>
> This is a question of how you interpret your application, think, do you
> want to give the ownership of your data model to your view widget ?
>
This application is purely the gui part of my system. I have another 
application that does the actual work, so my gui is totally stateless.
To my knowledge is it advantageous to give the ownership to the view 
widget as I don't have to keep variables laying around. If I need
something like the store I can always request it from GTK.
> Will you be having multiple list stores that you might want to keep
> around and alternate the view ?
>
No, I initialise the stores on startup and just add/remove items from them.
> If you unref your list store (passing ownership to the combo box), then
> destroying (freeing) the combo box will take care of finalizing (freeing)
> the list store.
>  
Does this mean that I have to unref the store as soon as I have assigned 
it to the combo (gtk_combo_box_set_model) ?
>
>     At a later stage I am ready to put
>     some data in the combo box, so I get the store (with
>     gtk_combo_box_get_model) and add some entries to the sore. Do I
>     need to
>     unref the aquired pointer? 
>
>
> No. in general gtk_[widget]_get_[parameter]() functions never duplicate
> strings or add references (strings are easier because they are always
> const return values if they are not duplicated).
>
> Usually a returned value that has a reference will note in the docs that
> it must be unreffed (strings from g_object_get() are dupped and objects
> refcount incremented for instance).
>
>     To make matters more confusing, I also have a
>     couple of combo's with filters. I wrote a little stub to acquire
>     the store:
>
>     GtkTreeModel * gtk_combo_get_filter_model( GktComboBox * combo )
>     {
>         return gtk_tree_model_filter_get_model( GTK_TREE_MODEL_FILTER(
>     gtk_combo_box_get_model( combo ) ) );
>     }
>
>     Do I leak a reference here?
>
>
> No.
>
> Also read the description portion of:
>    http://library.gnome.org/devel/gtk/unstable/GtkObject.html
>
I read that but it was not clear to me which GTK calls add references 
and which are not. In my code I never add a reference explicitly but I 
have no idea what the GTK library does. I am heartened by your comment 
that if a GTK library call adds a reference, it is noted in the 
documentation.
> Cheers,
>                  -Tristan
>

Thanks for your help.

Alwin

_______________________________________________
gtk-list mailing list
gtk-list@xxxxxxxxx
http://mail.gnome.org/mailman/listinfo/gtk-list

[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux