[gtkmm] Gtkmm-forge digest, Vol 1 #342 - 5 msgs
- From: gtkmm-forge-request lists sourceforge net
- To: gtkmm-forge lists sourceforge net
- Subject: [gtkmm] Gtkmm-forge digest, Vol 1 #342 - 5 msgs
- Date: Mon, 27 Jan 2003 12:01:18 -0800
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]