On Fri, 2005-03-04 at 16:45 +0100, Murray Cumming wrote: > On Thu, 2005-03-03 at 13:03 -0800, Philip Langdale wrote: > > Hi, > > > > I have a scenario here where there is a GtkAdjustment owned by > > a C gtk widget and a Gtkmm gets the adjustment and then wraps it > > in a Gtkmm wrapper. The wrapper should pass copy=true because it > > isn't the owner of the underlying GtkObject. However, what I > > observe is that the wrapper is created and it increments the > > adjustment's refcount as expected but when the wrapper dies, it > > does not decrement the refcount, and it calls gtk_object_destroy > > which seems incorrect. Because the other ref holders aren't > > expecting destroy to be called, they do not release their refs > > and the object ends up being leaked when the other ref olders > > do release their refs because there is still a +1 thanks to > > the wrapper. > > > > On the other hand, if I pass copy=false, it doesn't touch the > > refcount at all and calls gtk_object_destroy when the wrapper > > dies as you'd expect. > > > > Is there a bug here or am I just expecting the wrong semantics? > > If you tell us exactly what function you are talking about then we can > investigate. A test case would be even better.
Also, in gtkmm, I don't think we ever do an extra refcount on GtkAdjustments. We only do this in combination with Glib::RefPtr<>, which we don't use with GtkObjects. Without Glib::RefPtr<> there is no way to unref it again. -- Murray Cumming [EMAIL PROTECTED] www.murrayc.com www.openismus.com _______________________________________________ gtkmm-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gtkmm-list
