From 0e396ee7bb38d485b3a2284637bd15c69c7ce062 Mon Sep 17 00:00:00 2001 From: Sebastian Keller Date: Thu, 11 Feb 2021 15:46:13 +0100 Subject: [PATCH] backends/x11: Unref keymap on finalize Despite keymaps being relatively large, this does not really have much of an impact, because there is only ever one and it's only leaked on shutdown. Part-of: --- src/backends/x11/meta-backend-x11.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/backends/x11/meta-backend-x11.c b/src/backends/x11/meta-backend-x11.c index 9c40ada2c..ae1a91628 100644 --- a/src/backends/x11/meta-backend-x11.c +++ b/src/backends/x11/meta-backend-x11.c @@ -874,6 +874,17 @@ meta_backend_x11_dispose (GObject *object) G_OBJECT_CLASS (meta_backend_x11_parent_class)->dispose (object); } +static void +meta_backend_x11_finalize (GObject *object) +{ + MetaBackendX11 *x11 = META_BACKEND_X11 (object); + MetaBackendX11Private *priv = meta_backend_x11_get_instance_private (x11); + + g_clear_pointer (&priv->keymap, xkb_keymap_unref); + + G_OBJECT_CLASS (meta_backend_x11_parent_class)->finalize (object); +} + static void meta_backend_x11_class_init (MetaBackendX11Class *klass) { @@ -881,6 +892,7 @@ meta_backend_x11_class_init (MetaBackendX11Class *klass) GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->dispose = meta_backend_x11_dispose; + object_class->finalize = meta_backend_x11_finalize; backend_class->create_clutter_backend = meta_backend_x11_create_clutter_backend; backend_class->post_init = meta_backend_x11_post_init; backend_class->grab_device = meta_backend_x11_grab_device;