From 4db2561dd536c6beb9f8abb5091e9c3b857c5276 Mon Sep 17 00:00:00 2001 From: rhlabs Date: Tue, 10 Mar 1998 06:14:59 +0000 Subject: [PATCH] fixed minor buglets in window tree walker. --- ChangeLog | 4 ++++ ChangeLog.pre-2-0 | 4 ++++ ChangeLog.pre-2-10 | 4 ++++ ChangeLog.pre-2-2 | 4 ++++ ChangeLog.pre-2-4 | 4 ++++ ChangeLog.pre-2-6 | 4 ++++ ChangeLog.pre-2-8 | 4 ++++ gdk/gdkwindow.c | 7 ++++++- gdk/x11/gdkwindow-x11.c | 7 ++++++- 9 files changed, 40 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index d940555f65..fd27efead4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Mar 10 00:49:18 EST 1998 The Rasterman + * gdk/gdkwindow.c: (gdk_window_xid_at) fixed minor memory leak and + minor buglet in tree search. + Mon Mar 9 21:21:19 PST 1998 Shawn T. Amundson * Released 0.99.5 diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index d940555f65..fd27efead4 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,7 @@ +Tue Mar 10 00:49:18 EST 1998 The Rasterman + * gdk/gdkwindow.c: (gdk_window_xid_at) fixed minor memory leak and + minor buglet in tree search. + Mon Mar 9 21:21:19 PST 1998 Shawn T. Amundson * Released 0.99.5 diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index d940555f65..fd27efead4 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,7 @@ +Tue Mar 10 00:49:18 EST 1998 The Rasterman + * gdk/gdkwindow.c: (gdk_window_xid_at) fixed minor memory leak and + minor buglet in tree search. + Mon Mar 9 21:21:19 PST 1998 Shawn T. Amundson * Released 0.99.5 diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index d940555f65..fd27efead4 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,7 @@ +Tue Mar 10 00:49:18 EST 1998 The Rasterman + * gdk/gdkwindow.c: (gdk_window_xid_at) fixed minor memory leak and + minor buglet in tree search. + Mon Mar 9 21:21:19 PST 1998 Shawn T. Amundson * Released 0.99.5 diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index d940555f65..fd27efead4 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,7 @@ +Tue Mar 10 00:49:18 EST 1998 The Rasterman + * gdk/gdkwindow.c: (gdk_window_xid_at) fixed minor memory leak and + minor buglet in tree search. + Mon Mar 9 21:21:19 PST 1998 Shawn T. Amundson * Released 0.99.5 diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index d940555f65..fd27efead4 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,7 @@ +Tue Mar 10 00:49:18 EST 1998 The Rasterman + * gdk/gdkwindow.c: (gdk_window_xid_at) fixed minor memory leak and + minor buglet in tree search. + Mon Mar 9 21:21:19 PST 1998 Shawn T. Amundson * Released 0.99.5 diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index d940555f65..fd27efead4 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,7 @@ +Tue Mar 10 00:49:18 EST 1998 The Rasterman + * gdk/gdkwindow.c: (gdk_window_xid_at) fixed minor memory leak and + minor buglet in tree search. + Mon Mar 9 21:21:19 PST 1998 Shawn T. Amundson * Released 0.99.5 diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 579b9703b1..f7696f23f2 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -85,8 +85,9 @@ gdk_window_xid_at(Window base, gint bx, gint by, gint x, gint y) return child; } } + XFree(list); } - return 0; + return base; } /* @@ -116,6 +117,7 @@ gdk_window_xid_at_coords(gint x, gint y, GList *excludes) private=(GdkWindowPrivate*)window; disp=private->xdisplay; root=private->xwindow; + XGrabServer(disp); if (!XQueryTree(disp,root,&root_win,&parent_win,&list,&num)) return root; if (list) @@ -128,6 +130,7 @@ gdk_window_xid_at_coords(gint x, gint y, GList *excludes) { if (!g_list_find(excludes,(gpointer)child)) { + XUngrabServer(disp); XFree(list); return child; } @@ -135,11 +138,13 @@ gdk_window_xid_at_coords(gint x, gint y, GList *excludes) else { XFree(list); + XUngrabServer(disp); return child; } } } } + XUngrabServer(disp); return root; } diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 579b9703b1..f7696f23f2 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -85,8 +85,9 @@ gdk_window_xid_at(Window base, gint bx, gint by, gint x, gint y) return child; } } + XFree(list); } - return 0; + return base; } /* @@ -116,6 +117,7 @@ gdk_window_xid_at_coords(gint x, gint y, GList *excludes) private=(GdkWindowPrivate*)window; disp=private->xdisplay; root=private->xwindow; + XGrabServer(disp); if (!XQueryTree(disp,root,&root_win,&parent_win,&list,&num)) return root; if (list) @@ -128,6 +130,7 @@ gdk_window_xid_at_coords(gint x, gint y, GList *excludes) { if (!g_list_find(excludes,(gpointer)child)) { + XUngrabServer(disp); XFree(list); return child; } @@ -135,11 +138,13 @@ gdk_window_xid_at_coords(gint x, gint y, GList *excludes) else { XFree(list); + XUngrabServer(disp); return child; } } } } + XUngrabServer(disp); return root; }