wayland: Allow a NULL inhibitors hash table
authorEmmanuele Bassi <ebassi@gnome.org>
Mon, 23 Apr 2018 09:57:07 +0000 (10:57 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 23 Apr 2018 22:54:43 +0000 (18:54 -0400)
The shortcuts inhibitors hash table is created when we create a
GdkWaylandWindow implementation for a GdkWindow, and it's destroyed once
we finalize the instance. The fake "root" window we create for the
Wayland display does not have a backing native window, so the shortcuts
inhibitors hash table is set to NULL; this causes a critical error
message when calling g_hash_table_destroy() on it. The finalization of
the root window happens when we close a display connection.

We should use g_clear_pointer(), instead, as it's NULL safe.

Without this change, the displayclose test fails, as all warnings are
considered fatal.

gdk/wayland/gdksurface-wayland.c

index e64cba366b817d0b5b5c107e66e51a77e6c992e4..7823589938c595c2ec05f30ff497a2de47f97d2a 100644 (file)
@@ -914,8 +914,7 @@ gdk_surface_impl_wayland_finalize (GObject *object)
   g_clear_pointer (&impl->opaque_region, cairo_region_destroy);
   g_clear_pointer (&impl->input_region, cairo_region_destroy);
   g_clear_pointer (&impl->staged_updates_region, cairo_region_destroy);
-
-  g_hash_table_destroy (impl->shortcuts_inhibitors);
+  g_clear_pointer (&impl->shortcuts_inhibitors, g_hash_table_unref);
 
   G_OBJECT_CLASS (_gdk_surface_impl_wayland_parent_class)->finalize (object);
 }