summaryrefslogtreecommitdiff
path: root/gdk/linux-fb/gdkwindow-fb.c
diff options
context:
space:
mode:
author2 <alexl@redhat.com>2001-01-22 14:35:49 +0000
committerAlexander Larsson <alexl@src.gnome.org>2001-01-22 14:35:49 +0000
commita081fe7d541c670d9017f60f3b9dd1b93affe9f5 (patch)
treeaed7b0967de0d1e2bd24834b8722e9751dc72f2a /gdk/linux-fb/gdkwindow-fb.c
parent18cb3ee139977e975201b9da81794b5ff7f0826c (diff)
downloadgdk-pixbuf-a081fe7d541c670d9017f60f3b9dd1b93affe9f5.tar.gz
Don't leak visible_region. Use visible_region instead of region.
2001-01-22 <alexl@redhat.com> * gdk/gdkwindow.c (gdk_window_invalidate_region): Don't leak visible_region. Use visible_region instead of region. * gdk/linux-fb/gdkwindow-fb.c (gdk_window_new): Don't do extra gdk_drawable_ref(). This is not X. (gdk_fb_window_find_focus, gdk_fb_change_focus): make sure gdk_fb_focused_window is ref:ed. (gdk_fb_window_send_crossing_events): Watch out for destroyed windows.
Diffstat (limited to 'gdk/linux-fb/gdkwindow-fb.c')
-rw-r--r--gdk/linux-fb/gdkwindow-fb.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/gdk/linux-fb/gdkwindow-fb.c b/gdk/linux-fb/gdkwindow-fb.c
index d64932830..a9df73e8c 100644
--- a/gdk/linux-fb/gdkwindow-fb.c
+++ b/gdk/linux-fb/gdkwindow-fb.c
@@ -254,8 +254,6 @@ gdk_window_new (GdkWindow *parent,
impl->drawable_data.colormap = NULL;
}
- gdk_drawable_ref (window);
-
if (impl->drawable_data.colormap)
gdk_colormap_ref (impl->drawable_data.colormap);
@@ -488,7 +486,7 @@ gdk_fb_window_find_focus (void)
return _gdk_fb_keyboard_grab_window;
if (!gdk_fb_focused_window)
- gdk_fb_focused_window = gdk_parent_root;
+ gdk_fb_focused_window = gdk_window_ref (gdk_parent_root);
return gdk_fb_focused_window;
}
@@ -525,8 +523,11 @@ gdk_fb_change_focus (GdkWindow *new_focus_window)
event = (GdkEventFocus *)gdk_event_make (event_win, GDK_FOCUS_CHANGE, TRUE);
event->in = TRUE;
}
+
+ if (gdk_fb_focused_window)
+ gdk_window_unref (gdk_fb_focused_window);
+ gdk_fb_focused_window = gdk_window_ref (new_win);
}
- gdk_fb_focused_window = new_win;
}
static GdkWindow *
@@ -597,6 +598,13 @@ gdk_fb_window_send_crossing_events (GdkWindow *src,
if (a==b)
return;
+ /* gdk_fb_window_containing_pointer might have been destroyed.
+ * The refcount we hold on it should keep it, but it's parents
+ * might have died.
+ */
+ if (GDK_WINDOW_DESTROYED (a))
+ a = gdk_parent_root;
+
gdk_fb_mouse_get_info (&x, &y, &my_mask);
c = gdk_fb_find_common_ancestor (a, b);