diff options
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 12 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 12 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 12 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 12 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 12 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 12 | ||||
-rw-r--r-- | gdk/gdkwindow.c | 10 | ||||
-rw-r--r-- | gdk/linux-fb/gdkwindow-fb.c | 16 |
9 files changed, 102 insertions, 8 deletions
@@ -1,5 +1,17 @@ 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. + +2001-01-22 <alexl@redhat.com> + * gtk/gtkwindow-decorate.c (gtk_decorated_window_realize): Don't leak the PangoFontDescriptor. diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 7840bcb8e4..8b6f7f4a20 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,5 +1,17 @@ 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. + +2001-01-22 <alexl@redhat.com> + * gtk/gtkwindow-decorate.c (gtk_decorated_window_realize): Don't leak the PangoFontDescriptor. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 7840bcb8e4..8b6f7f4a20 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,17 @@ 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. + +2001-01-22 <alexl@redhat.com> + * gtk/gtkwindow-decorate.c (gtk_decorated_window_realize): Don't leak the PangoFontDescriptor. diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 7840bcb8e4..8b6f7f4a20 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,5 +1,17 @@ 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. + +2001-01-22 <alexl@redhat.com> + * gtk/gtkwindow-decorate.c (gtk_decorated_window_realize): Don't leak the PangoFontDescriptor. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 7840bcb8e4..8b6f7f4a20 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,5 +1,17 @@ 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. + +2001-01-22 <alexl@redhat.com> + * gtk/gtkwindow-decorate.c (gtk_decorated_window_realize): Don't leak the PangoFontDescriptor. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 7840bcb8e4..8b6f7f4a20 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,5 +1,17 @@ 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. + +2001-01-22 <alexl@redhat.com> + * gtk/gtkwindow-decorate.c (gtk_decorated_window_realize): Don't leak the PangoFontDescriptor. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 7840bcb8e4..8b6f7f4a20 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,17 @@ 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. + +2001-01-22 <alexl@redhat.com> + * gtk/gtkwindow-decorate.c (gtk_decorated_window_realize): Don't leak the PangoFontDescriptor. diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 42ded204be..0a703045fd 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -1796,16 +1796,16 @@ gdk_window_invalidate_region (GdkWindow *window, visible_region = gdk_drawable_get_visible_region (window); gdk_region_intersect (visible_region, region); - if (!gdk_region_empty (region)) + if (!gdk_region_empty (visible_region)) { if (private->update_area) { - gdk_region_union (private->update_area, region); + gdk_region_union (private->update_area, visible_region); } else { update_windows = g_slist_prepend (update_windows, window); - private->update_area = gdk_region_copy (region); + private->update_area = gdk_region_copy (visible_region); if (!private->update_freeze_count && !update_idle) update_idle = g_idle_add_full (GDK_PRIORITY_REDRAW, @@ -1830,7 +1830,7 @@ gdk_window_invalidate_region (GdkWindow *window, gdk_window_get_position ((GdkWindow *)child, &x, &y); /* This copy could be saved with a little more complexity */ - child_region = gdk_region_copy (region); + child_region = gdk_region_copy (visible_region); gdk_region_offset (child_region, -x, -y); gdk_window_invalidate_region ((GdkWindow *)child, child_region, TRUE); @@ -1840,6 +1840,8 @@ gdk_window_invalidate_region (GdkWindow *window, } } } + + gdk_region_destroy (visible_region); } GdkRegion * diff --git a/gdk/linux-fb/gdkwindow-fb.c b/gdk/linux-fb/gdkwindow-fb.c index d649328301..a9df73e8ce 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); |