mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-12 10:45:13 +01:00
add an object member to the structure. (weak_refs_notify): pass
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.
This commit is contained in:
parent
2da4b710cd
commit
f240813ff6
@ -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>
|
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
|
* gtype.h: if __GNUC__ is defined, inline a test for an exact type
|
||||||
|
@ -1181,6 +1181,7 @@ g_object_disconnect (gpointer _object,
|
|||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
GObject *object;
|
||||||
guint n_weak_refs;
|
guint n_weak_refs;
|
||||||
struct {
|
struct {
|
||||||
GWeakNotify notify;
|
GWeakNotify notify;
|
||||||
@ -1195,7 +1196,7 @@ weak_refs_notify (gpointer data)
|
|||||||
guint i;
|
guint i;
|
||||||
|
|
||||||
for (i = 0; i < wstack->n_weak_refs; 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);
|
g_free (wstack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1220,6 +1221,7 @@ g_object_weak_ref (GObject *object,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
wstack = g_renew (WeakRefStack, NULL, 1);
|
wstack = g_renew (WeakRefStack, NULL, 1);
|
||||||
|
wstack->object = object;
|
||||||
wstack->n_weak_refs = 1;
|
wstack->n_weak_refs = 1;
|
||||||
i = 0;
|
i = 0;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,8 @@ typedef void (*GObjectSetPropertyFunc) (GObject *object,
|
|||||||
const GValue *value,
|
const GValue *value,
|
||||||
GParamSpec *pspec);
|
GParamSpec *pspec);
|
||||||
typedef void (*GObjectFinalizeFunc) (GObject *object);
|
typedef void (*GObjectFinalizeFunc) (GObject *object);
|
||||||
typedef void (*GWeakNotify) (gpointer data);
|
typedef void (*GWeakNotify) (gpointer data,
|
||||||
|
GObject *where_the_object_was);
|
||||||
struct _GObject
|
struct _GObject
|
||||||
{
|
{
|
||||||
GTypeInstance g_type_instance;
|
GTypeInstance g_type_instance;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user