[gtkmm] Gtkmm-forge digest, Vol 1 #342 - 5 msgs



Send Gtkmm-forge mailing list submissions to
	gtkmm-forge lists sourceforge net

To subscribe or unsubscribe via the World Wide Web, visit
	https://lists.sourceforge.net/lists/listinfo/gtkmm-forge
or, via email, send a message with subject or body 'help' to
	gtkmm-forge-request lists sourceforge net

You can reach the person managing the list at
	gtkmm-forge-admin lists sourceforge net

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Gtkmm-forge digest..."


gtkmm-forge is the mailing list that receives gtkmm bug reports from bugzilla.  A daily digest is sent to gtkmm-main, to encourage people to help fixing the bugs.


Today's Topics:

   1. [Bug 104194] Changed - A window with an option menu seg-faults when closed. (bugzilla-daemon widget gnome org)
   2. [Bug 104332] Changed - Make RefPtr<> a general-purpose smart pointer (bugzilla-daemon widget gnome org)
   3. [Bug 104332] Changed - Make RefPtr<> a general-purpose smart pointer (bugzilla-daemon widget gnome org)
   4. [Bug 104332] Changed - Make RefPtr<> a general-purpose smart pointer (bugzilla-daemon widget gnome org)
   5. [Bug 104332] Changed - Make RefPtr<> a general-purpose smart pointer (bugzilla-daemon widget gnome org)

--__--__--

Message: 1
From: bugzilla-daemon widget gnome org
To: gtkmm-forge lists sourceforge net, jsado_sc1 earthlink net
Cc: 
Date: Mon, 27 Jan 2003 06:47:29 -0500 (EST)
Subject: [gtkmm bugzilla] [Bug 104194] Changed - A window with an option menu seg-faults when closed.

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

http://bugzilla.gnome.org/show_bug.cgi?id=104194

Changed by murrayc usa net 

--- shadow/104194	Sat Jan 25 13:28:33 2003
+++ shadow/104194.tmp.16958	Mon Jan 27 06:47:29 2003
@@ -1,13 +1,13 @@
 Bug#: 104194
 Product: gtkmm
 Version: 2.2
 OS: Linux
 OS Details: Kernel 2.4.20 GCC 3.2 glibc 2.2.5
-Status: RESOLVED   
-Resolution: FIXED
+Status: REOPENED   
+Resolution: 
 Severity: normal
 Priority: Normal
 Component: general
 AssignedTo: gtkmm-forge lists sourceforge net                            
 ReportedBy: jsado_sc1 earthlink net               
 TargetMilestone: ---
@@ -193,6 +193,9 @@
 free'd
 ==1376==    at 0x4003DD29: free (in /usr/lib/valgrind/valgrind.so)
 ==1376==    by 0x4084E295: g_free (in /usr/lib/libglib-2.0.so.0.200.0)
 ==1376==    by 0x41D42F9C: ???
 ==1376==    by 0xE0107000: ???
 
+
+------- Additional Comments From murrayc usa net  2003-01-27 06:47 -------
+Please _attach_ a test case. We can do nothing without that.



--__--__--

Message: 2
From: bugzilla-daemon widget gnome org
To: gtkmm-forge lists sourceforge net, michaelj maine rr com
Cc: 
Date: Mon, 27 Jan 2003 07:44:01 -0500 (EST)
Subject: [gtkmm bugzilla] [Bug 104332] Changed - Make RefPtr<> a general-purpose smart pointer

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

http://bugzilla.gnome.org/show_bug.cgi?id=104332

Changed by murrayc usa net 

--- shadow/104332	Fri Jan 24 11:16:16 2003
+++ shadow/104332.tmp.10719	Mon Jan 27 07:44:01 2003
@@ -1,9 +1,9 @@
 Bug#: 104332
 Product: gtkmm
-Version: 2.2
+Version: 2.4
 OS: Linux
 OS Details: RedHat Linux 8.0
 Status: NEW   
 Resolution: 
 Severity: enhancement
 Priority: Normal



--__--__--

Message: 3
From: bugzilla-daemon widget gnome org
To: gtkmm-forge lists sourceforge net, michaelj maine rr com
Cc: 
Date: Mon, 27 Jan 2003 07:46:43 -0500 (EST)
Subject: [gtkmm bugzilla] [Bug 104332] Changed - Make RefPtr<> a general-purpose smart pointer

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

http://bugzilla.gnome.org/show_bug.cgi?id=104332

Changed by murrayc usa net 

--- shadow/104332	Mon Jan 27 07:44:01 2003
+++ shadow/104332.tmp.12033	Mon Jan 27 07:46:43 2003
@@ -1,16 +1,16 @@
 Bug#: 104332
-Product: gtkmm
-Version: 2.4
+Product: glibmm
+Version: 2.4.x
 OS: Linux
 OS Details: RedHat Linux 8.0
 Status: NEW   
 Resolution: 
 Severity: enhancement
 Priority: Normal
-Component: general
+Component: object
 AssignedTo: gtkmm-forge lists sourceforge net                            
 ReportedBy: michaelj maine rr com               
 TargetMilestone: ---
 URL: 
 Summary: Make RefPtr<> a general-purpose smart pointer
 



--__--__--

Message: 4
From: bugzilla-daemon widget gnome org
To: gtkmm-forge lists sourceforge net, michaelj maine rr com
Cc: 
Date: Mon, 27 Jan 2003 14:21:25 -0500 (EST)
Subject: [gtkmm bugzilla] [Bug 104332] Changed - Make RefPtr<> a general-purpose smart pointer

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

http://bugzilla.gnome.org/show_bug.cgi?id=104332

Changed by murrayc usa net 

--- shadow/104332	Mon Jan 27 07:46:43 2003
+++ shadow/104332.tmp.1998	Mon Jan 27 14:21:25 2003
@@ -20,6 +20,58 @@
 manage references to any kind of SigC::ObjectBase.
 
 ------- Additional Comments From michaelj maine rr com  2003-01-24 11:16 -------
 Created an attachment (id=13805)
 Patch to implement the enhancement
 
+
+------- Additional Comments From murrayc usa net  2003-01-27 14:21 -------
+This seems to be key to the implementation:
+
+To accomplish this, one of the two objects holds a reference to
++//    the other at any given time. The object holding the reference is
++//    the anchor. With one exception, there will always be at least one
++//    external reference to the anchor. The exception is when a wrapper
++//    is newly constructed and has a reference to a GObject, but has not
++//    yet been referenced itself.
++//
++//    Normally, the wrapper is the anchor. The only time that the
++//    GObject is the anchor is when there are no external references to
++//    the wrapper (except for the case described above).
++//    
++//    If the wrapper is the anchor and the last external reference to it
++//    is released, then the GObject becomes the anchor. The GObject is
++//    given a reference to the wrapper and the wrapper's reference to
++//    the GObject is released. This happens in the wrapper's
++//    unreference() method. 
++//
++//    If the GObject is the anchor and an external reference to the
++//    wrapper is acquired, then the wrapper again becomes the anchor.
++//    The wrapper acquires a reference to the GObject and the reference
++//    to the wrapper is removed from the GObject. This happens in the
++//    wrapper's reference() method.
++//
++//    If the GObject is the anchor and its reference count goes to zero,
++//    then the GObject is destroyed and destroy_notify_callback_() is
++//    invoked.
++//
++//    The destroy_notify_callback_() acquires a temporary reference to
++//    the wrapper (which makes it the anchor) and calls the wrapper's
++//    destroy_notify_() virtual method. The destroy_notify_() method
++//    clears the wrapper's pointer to the GObject. Upon return from
++//    destroy_notify_() the temporary reference to the wrapper is
++//    released. Since it is the last reference to the wrapper, the
++//    wrapper is then deleted.
+
+Frankly, that sounds complex and I must admit that I haven't taken the
+time to read it all as slowly as I should. I'd like it if it could be
+described more concisely.
+
+Let's consider this for glibmm 2.4 and try to make a patch for it if
+we like it.
+
+Minor notes:
+- I have already removed RefPtr::is_null() in glibmm 2.4.
+- Be careful when applying the patch - it includes documentation
+changes that might not be wanted and seems to remove essential debug
+output.
+



--__--__--

Message: 5
From: bugzilla-daemon widget gnome org
To: gtkmm-forge lists sourceforge net
Cc: 
Date: Mon, 27 Jan 2003 14:56:14 -0500 (EST)
Subject: [gtkmm bugzilla] [Bug 104332] Changed - Make RefPtr<> a general-purpose smart pointer

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

http://bugzilla.gnome.org/show_bug.cgi?id=104332

Changed by michaelj maine rr com 

--- shadow/104332	Mon Jan 27 14:21:25 2003
+++ shadow/104332.tmp.19867	Mon Jan 27 14:56:14 2003
@@ -72,6 +72,27 @@
 Minor notes:
 - I have already removed RefPtr::is_null() in glibmm 2.4.
 - Be careful when applying the patch - it includes documentation
 changes that might not be wanted and seems to remove essential debug
 output.
 
+
+------- Additional Comments From michaelj maine rr com  2003-01-27 14:56 -------
+It's really not that complex in the implementation. The code that
+primarily implements it is confined to a few short, simple functions.
+It might be possible to simplify it by having the GObject hold a
+RefPtr<> to the wrapper at all times, which is what I did in the
+IOChannel implementation. But that involves the overhead of allocating
+another object on the heap and I wanted to avoid that.
+
+There are a few places where I removed GTKMM_DEBUG_REFERENCE and
+GTKMM_DEBUG_UNREFERENCE macro calls, because what was being referenced
+or unreferenced at those points was the GObject, not the
+Glib::ObjectBase. It may be that a second pair of macros would be
+useful to provide debug output for the two separate cases. I tried to
+leave other debugging output in place.
+
+The reason why it seems complex, perhaps, is that the Glib::ObjectBase
+implementation is doing the necessary work to hide the complexity of
+the GTK+ reference counting implementation. To the end user, things
+are simpler and more consistent because they don't have to worry about
+the eccentric GTK+ behavior.




--__--__--

_______________________________________________
Gtkmm-forge mailing list
Gtkmm-forge lists sourceforge net
https://lists.sourceforge.net/lists/listinfo/gtkmm-forge


End of Gtkmm-forge Digest



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