mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-18 07:34:54 +00:00
shell/window-preview-layout: Fix memory leaks
The WindowInfo allocated when adding a window was not getting free'd when the window was getting removed again or the layout was getting disposed. Also the hash table in which the WindowInfos are stored was not getting free'd on destruction either. Both could result in small leaks after closing the overview. Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5238 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2256>
This commit is contained in:
parent
908156f4bd
commit
8c40b48a09
1 changed files with 16 additions and 1 deletions
|
|
@ -292,6 +292,19 @@ shell_window_preview_layout_dispose (GObject *gobject)
|
|||
G_OBJECT_CLASS (shell_window_preview_layout_parent_class)->dispose (gobject);
|
||||
}
|
||||
|
||||
static void
|
||||
shell_window_preview_layout_finalize (GObject *gobject)
|
||||
{
|
||||
ShellWindowPreviewLayout *self = SHELL_WINDOW_PREVIEW_LAYOUT (gobject);
|
||||
ShellWindowPreviewLayoutPrivate *priv;
|
||||
|
||||
priv = shell_window_preview_layout_get_instance_private (self);
|
||||
|
||||
g_hash_table_destroy (priv->windows);
|
||||
|
||||
G_OBJECT_CLASS (shell_window_preview_layout_parent_class)->finalize (gobject);
|
||||
}
|
||||
|
||||
static void
|
||||
shell_window_preview_layout_init (ShellWindowPreviewLayout *self)
|
||||
{
|
||||
|
|
@ -299,7 +312,8 @@ shell_window_preview_layout_init (ShellWindowPreviewLayout *self)
|
|||
|
||||
priv = shell_window_preview_layout_get_instance_private (self);
|
||||
|
||||
priv->windows = g_hash_table_new (NULL, NULL);
|
||||
priv->windows = g_hash_table_new_full (NULL, NULL, NULL,
|
||||
(GDestroyNotify) g_free);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -314,6 +328,7 @@ shell_window_preview_layout_class_init (ShellWindowPreviewLayoutClass *klass)
|
|||
layout_class->set_container = shell_window_preview_layout_set_container;
|
||||
|
||||
gobject_class->dispose = shell_window_preview_layout_dispose;
|
||||
gobject_class->finalize = shell_window_preview_layout_finalize;
|
||||
gobject_class->get_property = shell_window_preview_layout_get_property;
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue