add an object member to the structure. (weak_refs_notify): pass
authorJames Henstridge <james@daa.com.au>
Sat, 18 Aug 2001 03:07:48 +0000 (03:07 +0000)
committerJames Henstridge <jamesh@src.gnome.org>
Sat, 18 Aug 2001 03:07:48 +0000 (03:07 +0000)
2001-08-17  James Henstridge  <james@daa.com.au>

* gobject.c (WeakRefStack): add an object member to the structure.
(weak_refs_notify): pass wstack->object as extra argument to
notify functions.
(g_object_weak_ref): set wstack->object when initialising
WeakRefStack.

* gobject.h (GWeakNotify): add second argument to prototype which
gives the pointer to where the object that is being disposed of
was.

gobject/ChangeLog
gobject/gobject.c
gobject/gobject.h

index 7a69dea..7e5a608 100644 (file)
@@ -1,3 +1,15 @@
+2001-08-17  James Henstridge  <james@daa.com.au>
+
+       * gobject.c (WeakRefStack): add an object member to the structure.
+       (weak_refs_notify): pass wstack->object as extra argument to
+       notify functions.
+       (g_object_weak_ref): set wstack->object when initialising
+       WeakRefStack.
+
+       * gobject.h (GWeakNotify): add second argument to prototype which
+       gives the pointer to where the object that is being disposed of
+       was.
+
 Wed Jul 18 19:42:31 2001  Tim Janik  <timj@gtk.org>
 
         * gtype.h: if __GNUC__ is defined, inline a test for an exact type
index e1855e1..3cbdaf4 100644 (file)
@@ -1181,6 +1181,7 @@ g_object_disconnect (gpointer     _object,
 }
 
 typedef struct {
+  GObject *object;
   guint n_weak_refs;
   struct {
     GWeakNotify notify;
@@ -1195,7 +1196,7 @@ weak_refs_notify (gpointer data)
   guint i;
 
   for (i = 0; i < wstack->n_weak_refs; i++)
-    wstack->weak_refs[i].notify (wstack->weak_refs[i].data);
+    wstack->weak_refs[i].notify (wstack->weak_refs[i].data, wstack->object);
   g_free (wstack);
 }
 
@@ -1220,6 +1221,7 @@ g_object_weak_ref (GObject    *object,
   else
     {
       wstack = g_renew (WeakRefStack, NULL, 1);
+      wstack->object = object;
       wstack->n_weak_refs = 1;
       i = 0;
     }
index 582f81c..0b4dbc9 100644 (file)
@@ -54,7 +54,8 @@ typedef void (*GObjectSetPropertyFunc)  (GObject      *object,
                                          const GValue *value,
                                          GParamSpec   *pspec);
 typedef void (*GObjectFinalizeFunc)     (GObject      *object);
-typedef void (*GWeakNotify)            (gpointer      data);
+typedef void (*GWeakNotify)            (gpointer      data,
+                                        GObject      *where_the_object_was);
 struct  _GObject
 {
   GTypeInstance g_type_instance;