From 0ba99e6e7b522973ab2721b13c9dd5c488eeeb66 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 15 Dec 2008 15:04:44 +0100 Subject: [PATCH] Make gdk_windowing_window_destroy a GdkWindowImpl method --- gdk/gdkinternals.h | 19 ------------------- gdk/gdkoffscreenwindow.c | 8 +++++--- gdk/gdkwindow.c | 5 +---- gdk/gdkwindowimpl.h | 18 +++++++++++++++++- gdk/x11/gdkwindow-x11.c | 9 +++++---- 5 files changed, 28 insertions(+), 31 deletions(-) diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index ecc9b097ee..322825f0a2 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -360,23 +360,6 @@ gint _gdk_windowing_get_bits_for_depth (GdkDisplay *display, #define GDK_WINDOW_IS_MAPPED(window) ((((GdkWindowObject*)window)->state & GDK_WINDOW_STATE_WITHDRAWN) == 0) -/* Called to do the windowing system specific part of gdk_window_destroy(), - * - * window: The window being destroyed - * recursing: If TRUE, then this is being called because a parent - * was destroyed. This generally means that the call to the windowing system - * to destroy the window can be omitted, since it will be destroyed as a result - * of the parent being destroyed. Unless @foreign_destroy - * - * foreign_destroy: If TRUE, the window or a parent was destroyed by some external - * agency. The window has already been destroyed and no windowing - * system calls should be made. (This may never happen for some - * windowing systems.) - */ -void _gdk_windowing_window_destroy (GdkWindow *window, - gboolean recursing, - gboolean foreign_destroy); - /* Called when gdk_window_destroy() is called on a foreign window * or an ancestor of the foreign window. It should generally reparent * the window out of it's current heirarchy, hide it, and then @@ -546,8 +529,6 @@ void _gdk_offscreen_window_new (GdkWindow *window, GdkVisual *visual, GdkWindowAttr *attributes, gint attributes_mask); -void _gdk_offscreen_window_destroy (GdkWindow *window, - gboolean recursing); /************************************ diff --git a/gdk/gdkoffscreenwindow.c b/gdk/gdkoffscreenwindow.c index 03b52a6b0b..9b17bf87b5 100644 --- a/gdk/gdkoffscreenwindow.c +++ b/gdk/gdkoffscreenwindow.c @@ -103,9 +103,10 @@ gdk_offscreen_window_init (GdkOffscreenWindow *window) { } -void -_gdk_offscreen_window_destroy (GdkWindow *window, - gboolean recursing) +static void +gdk_offscreen_window_destroy (GdkWindow *window, + gboolean recursing, + gboolean foreign_destroy) { GdkWindowObject *private = GDK_WINDOW_OBJECT (window); GdkOffscreenWindow *offscreen; @@ -1184,6 +1185,7 @@ gdk_offscreen_window_impl_iface_init (GdkWindowImplIface *iface) iface->queue_antiexpose = gdk_offscreen_window_queue_antiexpose; iface->queue_translation = gdk_offscreen_window_queue_translation; iface->get_origin = gdk_offscreen_window_get_origin; + iface->destroy = gdk_offscreen_window_destroy; } #define __GDK_OFFSCREEN_WINDOW_C__ diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 8bcdd3739c..dd8cdfce7e 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -1261,10 +1261,7 @@ _gdk_window_destroy_hierarchy (GdkWindow *window, if (gdk_window_has_impl (private)) { - if (gdk_window_is_offscreen (private)) - _gdk_offscreen_window_destroy (window, recursing); - else - _gdk_windowing_window_destroy (window, recursing, foreign_destroy); + GDK_WINDOW_IMPL_GET_IFACE (private->impl)->destroy (window, recursing, foreign_destroy); } else { diff --git a/gdk/gdkwindowimpl.h b/gdk/gdkwindowimpl.h index ad1f6206e3..eff05b9b75 100644 --- a/gdk/gdkwindowimpl.h +++ b/gdk/gdkwindowimpl.h @@ -112,7 +112,23 @@ struct _GdkWindowImplIface GdkRegion *area, gint dx, gint dy); - + +/* Called to do the windowing system specific part of gdk_window_destroy(), + * + * window: The window being destroyed + * recursing: If TRUE, then this is being called because a parent + * was destroyed. This generally means that the call to the windowing system + * to destroy the window can be omitted, since it will be destroyed as a result + * of the parent being destroyed. Unless @foreign_destroy + * + * foreign_destroy: If TRUE, the window or a parent was destroyed by some external + * agency. The window has already been destroyed and no windowing + * system calls should be made. (This may never happen for some + * windowing systems.) + */ + void (* destroy) (GdkWindow *window, + gboolean recursing, + gboolean foreign_destroy); }; /* Interface Functions */ diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 3b6d56300c..6a51cf7137 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -1001,10 +1001,10 @@ gdk_toplevel_x11_free_contents (GdkDisplay *display, #endif } -void -_gdk_windowing_window_destroy (GdkWindow *window, - gboolean recursing, - gboolean foreign_destroy) +static void +_gdk_x11_window_destroy (GdkWindow *window, + gboolean recursing, + gboolean foreign_destroy) { GdkWindowObject *private = (GdkWindowObject *)window; GdkToplevelX11 *toplevel; @@ -5926,6 +5926,7 @@ gdk_window_impl_iface_init (GdkWindowImplIface *iface) iface->set_static_gravities = gdk_window_x11_set_static_gravities; iface->queue_antiexpose = _gdk_x11_window_queue_antiexpose; iface->queue_translation = _gdk_x11_window_queue_translation; + iface->destroy = _gdk_x11_window_destroy; } #define __GDK_WINDOW_X11_C__