From 01440e457e1048196a412d786b4cce4f238002a2 Mon Sep 17 00:00:00 2001 From: Soeren Sandmann Date: Mon, 2 Feb 2004 23:26:55 +0000 Subject: [PATCH] Use a weak reference instead of ref()/unref(). (#60857, reported by Joshua Tue Feb 3 00:14:36 2004 Soeren Sandmann * gdk/x11/gdkgeometry-x11.c (queue_item_free, gdk_window_queue): Use a weak reference instead of ref()/unref(). (#60857, reported by Joshua N Pritikin) * gdk/gdkimage.c (scratch_image_info_for_depth): Formatting fix. --- ChangeLog | 8 ++++++++ ChangeLog.pre-2-10 | 8 ++++++++ ChangeLog.pre-2-4 | 8 ++++++++ ChangeLog.pre-2-6 | 8 ++++++++ ChangeLog.pre-2-8 | 8 ++++++++ gdk/gdkimage.c | 2 +- gdk/x11/gdkgeometry-x11.c | 11 ++++++++--- 7 files changed, 49 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 48d1f5acac..4b9f97292a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Tue Feb 3 00:14:36 2004 Soeren Sandmann + + * gdk/x11/gdkgeometry-x11.c (queue_item_free, gdk_window_queue): + Use a weak reference instead of ref()/unref(). (#60857, reported + by Joshua N Pritikin) + + * gdk/gdkimage.c (scratch_image_info_for_depth): Formatting fix. + Tue Feb 3 00:15:17 2004 Matthias Clasen * gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): Add diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 48d1f5acac..4b9f97292a 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,11 @@ +Tue Feb 3 00:14:36 2004 Soeren Sandmann + + * gdk/x11/gdkgeometry-x11.c (queue_item_free, gdk_window_queue): + Use a weak reference instead of ref()/unref(). (#60857, reported + by Joshua N Pritikin) + + * gdk/gdkimage.c (scratch_image_info_for_depth): Formatting fix. + Tue Feb 3 00:15:17 2004 Matthias Clasen * gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): Add diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 48d1f5acac..4b9f97292a 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,11 @@ +Tue Feb 3 00:14:36 2004 Soeren Sandmann + + * gdk/x11/gdkgeometry-x11.c (queue_item_free, gdk_window_queue): + Use a weak reference instead of ref()/unref(). (#60857, reported + by Joshua N Pritikin) + + * gdk/gdkimage.c (scratch_image_info_for_depth): Formatting fix. + Tue Feb 3 00:15:17 2004 Matthias Clasen * gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): Add diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 48d1f5acac..4b9f97292a 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,11 @@ +Tue Feb 3 00:14:36 2004 Soeren Sandmann + + * gdk/x11/gdkgeometry-x11.c (queue_item_free, gdk_window_queue): + Use a weak reference instead of ref()/unref(). (#60857, reported + by Joshua N Pritikin) + + * gdk/gdkimage.c (scratch_image_info_for_depth): Formatting fix. + Tue Feb 3 00:15:17 2004 Matthias Clasen * gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): Add diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 48d1f5acac..4b9f97292a 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,11 @@ +Tue Feb 3 00:14:36 2004 Soeren Sandmann + + * gdk/x11/gdkgeometry-x11.c (queue_item_free, gdk_window_queue): + Use a weak reference instead of ref()/unref(). (#60857, reported + by Joshua N Pritikin) + + * gdk/gdkimage.c (scratch_image_info_for_depth): Formatting fix. + Tue Feb 3 00:15:17 2004 Matthias Clasen * gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): Add diff --git a/gdk/gdkimage.c b/gdk/gdkimage.c index 61ac976bd7..c7ef2efd90 100644 --- a/gdk/gdkimage.c +++ b/gdk/gdkimage.c @@ -247,7 +247,7 @@ scratch_image_info_for_depth (GdkScreen *screen, image_info->depth = depth; image_info->screen = screen; - /* Try to allocate as few possible shared images */ + /* Try to allocate as few possible shared images */ for (i=0; i < G_N_ELEMENTS (possible_n_images); i++) { if (allocate_scratch_images (image_info, possible_n_images[i], TRUE)) diff --git a/gdk/x11/gdkgeometry-x11.c b/gdk/x11/gdkgeometry-x11.c index 16480277d0..0ad1b5d64a 100644 --- a/gdk/x11/gdkgeometry-x11.c +++ b/gdk/x11/gdkgeometry-x11.c @@ -914,7 +914,11 @@ queue_delete_link (GQueue *queue, static void queue_item_free (GdkWindowQueueItem *item) { - g_object_unref (item->window); + if (item->window) + { + g_object_remove_weak_pointer (G_OBJECT (item->window), + (gpointer *)&(item->window)); + } if (item->type == GDK_WINDOW_QUEUE_ANTIEXPOSE) gdk_region_destroy (item->u.antiexpose.area); @@ -979,12 +983,13 @@ gdk_window_queue (GdkWindow *window, tmp_list = next; } } - - g_object_ref (window); item->window = window; item->serial = NextRequest (GDK_WINDOW_XDISPLAY (window)); + g_object_add_weak_pointer (G_OBJECT (window), + (gpointer *)&(item->window)); + g_queue_push_tail (display_x11->translate_queue, item); }