[gtk/wip/matthiasc/popup4: 28/94] surface: Simplify destroy implementation
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/matthiasc/popup4: 28/94] surface: Simplify destroy implementation
- Date: Sat, 27 Apr 2019 04:43:45 +0000 (UTC)
commit 59c331c3a48fdc360cca31f7c11e8854d07d2ac5
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Mar 24 16:24:30 2019 -0400
surface: Simplify destroy implementation
Without child surfaces, there is no need to recurse.
gdk/broadway/gdksurface-broadway.c | 1 -
gdk/gdksurface.c | 56 ++++++++++++++------------------------
gdk/gdksurfaceimpl.h | 6 ----
gdk/wayland/gdksurface-wayland.c | 1 -
gdk/x11/gdksurface-x11.c | 5 ++--
5 files changed, 23 insertions(+), 46 deletions(-)
---
diff --git a/gdk/broadway/gdksurface-broadway.c b/gdk/broadway/gdksurface-broadway.c
index 1f6f3ffd57..a5f6600fcd 100644
--- a/gdk/broadway/gdksurface-broadway.c
+++ b/gdk/broadway/gdksurface-broadway.c
@@ -255,7 +255,6 @@ gdk_surface_broadway_ref_cairo_surface (GdkSurface *surface)
static void
_gdk_broadway_surface_destroy (GdkSurface *surface,
- gboolean recursing,
gboolean foreign_destroy)
{
GdkSurfaceImplBroadway *impl;
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c
index 4fde6e7d4b..e0d3149821 100644
--- a/gdk/gdksurface.c
+++ b/gdk/gdksurface.c
@@ -602,8 +602,6 @@ surface_remove_from_pointer_info (GdkSurface *surface,
/**
* _gdk_surface_destroy_hierarchy:
* @surface: a #GdkSurface
- * @recursing: If %TRUE, then this is being called because a parent
- * was destroyed.
* @recursing_native: If %TRUE, then this is being called because a native parent
* was destroyed. This generally means that the call to the
* windowing system to destroy the surface can be omitted, since
@@ -619,8 +617,6 @@ surface_remove_from_pointer_info (GdkSurface *surface,
**/
static void
_gdk_surface_destroy_hierarchy (GdkSurface *surface,
- gboolean recursing,
- gboolean recursing_native,
gboolean foreign_destroy)
{
GdkSurfaceImplClass *impl_class;
@@ -633,42 +629,32 @@ _gdk_surface_destroy_hierarchy (GdkSurface *surface,
display = gdk_surface_get_display (surface);
- switch (surface->surface_type)
+ if (surface->gl_paint_context)
{
- default:
- g_assert_not_reached ();
- break;
-
- case GDK_SURFACE_TOPLEVEL:
- case GDK_SURFACE_TEMP:
- if (surface->gl_paint_context)
- {
- /* Make sure to destroy if current */
- g_object_run_dispose (G_OBJECT (surface->gl_paint_context));
- g_object_unref (surface->gl_paint_context);
- surface->gl_paint_context = NULL;
- }
+ /* Make sure to destroy if current */
+ g_object_run_dispose (G_OBJECT (surface->gl_paint_context));
+ g_object_unref (surface->gl_paint_context);
+ surface->gl_paint_context = NULL;
+ }
- if (surface->frame_clock)
- {
- g_object_run_dispose (G_OBJECT (surface->frame_clock));
- gdk_surface_set_frame_clock (surface, NULL);
- }
+ if (surface->frame_clock)
+ {
+ g_object_run_dispose (G_OBJECT (surface->frame_clock));
+ gdk_surface_set_frame_clock (surface, NULL);
+ }
- _gdk_surface_clear_update_area (surface);
+ _gdk_surface_clear_update_area (surface);
- impl_class = GDK_SURFACE_IMPL_GET_CLASS (surface->impl);
- impl_class->destroy (surface, recursing_native, foreign_destroy);
+ impl_class = GDK_SURFACE_IMPL_GET_CLASS (surface->impl);
+ impl_class->destroy (surface, foreign_destroy);
- surface->state |= GDK_SURFACE_STATE_WITHDRAWN;
- surface->destroyed = TRUE;
+ surface->state |= GDK_SURFACE_STATE_WITHDRAWN;
+ surface->destroyed = TRUE;
- surface_remove_from_pointer_info (surface, display);
+ surface_remove_from_pointer_info (surface, display);
- g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_STATE]);
- g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_MAPPED]);
- break;
- }
+ g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_STATE]);
+ g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_MAPPED]);
}
/**
@@ -686,7 +672,7 @@ void
_gdk_surface_destroy (GdkSurface *surface,
gboolean foreign_destroy)
{
- _gdk_surface_destroy_hierarchy (surface, FALSE, FALSE, foreign_destroy);
+ _gdk_surface_destroy_hierarchy (surface, foreign_destroy);
}
/**
@@ -704,7 +690,7 @@ _gdk_surface_destroy (GdkSurface *surface,
void
gdk_surface_destroy (GdkSurface *surface)
{
- _gdk_surface_destroy_hierarchy (surface, FALSE, FALSE, FALSE);
+ _gdk_surface_destroy_hierarchy (surface, FALSE);
g_object_unref (surface);
}
diff --git a/gdk/gdksurfaceimpl.h b/gdk/gdksurfaceimpl.h
index c5bd90ae7c..4bae67e914 100644
--- a/gdk/gdksurfaceimpl.h
+++ b/gdk/gdksurfaceimpl.h
@@ -100,18 +100,12 @@ struct _GdkSurfaceImplClass
/* Called to do the windowing system specific part of gdk_surface_destroy(),
*
* surface: 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 surface can be omitted, since it will be
- * destroyed as a result of the parent being destroyed.
- * Unless @foreign_destroy
* foreign_destroy: If TRUE, the surface or a parent was destroyed by some
* external agency. The surface has already been destroyed and no
* windowing system calls should be made. (This may never happen
* for some windowing systems.)
*/
void (* destroy) (GdkSurface *surface,
- gboolean recursing,
gboolean foreign_destroy);
diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c
index 887016176d..6cfa7a8876 100644
--- a/gdk/wayland/gdksurface-wayland.c
+++ b/gdk/wayland/gdksurface-wayland.c
@@ -2841,7 +2841,6 @@ gdk_surface_wayland_input_shape_combine_region (GdkSurface *surface,
static void
gdk_wayland_surface_destroy (GdkSurface *surface,
- gboolean recursing,
gboolean foreign_destroy)
{
GdkWaylandDisplay *display;
diff --git a/gdk/x11/gdksurface-x11.c b/gdk/x11/gdksurface-x11.c
index a2c82fc532..2fa822f6a8 100644
--- a/gdk/x11/gdksurface-x11.c
+++ b/gdk/x11/gdksurface-x11.c
@@ -992,8 +992,7 @@ gdk_toplevel_x11_free_contents (GdkDisplay *display,
static void
gdk_x11_surface_destroy (GdkSurface *surface,
- gboolean recursing,
- gboolean foreign_destroy)
+ gboolean foreign_destroy)
{
GdkSurfaceImplX11 *impl = GDK_SURFACE_IMPL_X11 (surface->impl);
GdkToplevelX11 *toplevel;
@@ -1013,7 +1012,7 @@ gdk_x11_surface_destroy (GdkSurface *surface,
impl->cairo_surface = NULL;
}
- if (!recursing && !foreign_destroy)
+ if (!foreign_destroy)
XDestroyWindow (GDK_SURFACE_XDISPLAY (surface), GDK_SURFACE_XID (surface));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]