kiran-menu/0001-fix-tray-Fix-memory-leak-due-to-notification-area.patch
wangxiaoqing 7d95355a8f Fix memory leak due to notification area
Signed-off-by: wangxiaoqing <wangxiaoqing@kylinsec.com.cn>
2022-12-01 15:01:35 +08:00

104 lines
2.8 KiB
Diff

From ef54af3c33b1e779a3fc11ff5925ffe07c137958 Mon Sep 17 00:00:00 2001
From: wangxiaoqing <wangxiaoqing@kylinsec.com.cn>
Date: Thu, 1 Dec 2022 11:21:44 +0800
Subject: [PATCH] fix(tray): Fix memory leak due to notification area.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 修复由于通知区域导致内存泄漏的问题
Closes #I63Q6H
Signed-off-by: wangxiaoqing <wangxiaoqing@kylinsec.com.cn>
---
src/tray/kiran-notify-icon-window.c | 3 +++
src/tray/kiran-sn-icon.c | 4 ++++
src/tray/kiran-tray.c | 2 ++
src/tray/kiran-x11-tray-icon.cpp | 6 +-----
4 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/tray/kiran-notify-icon-window.c b/src/tray/kiran-notify-icon-window.c
index 07fe89a..37381f4 100644
--- a/src/tray/kiran-notify-icon-window.c
+++ b/src/tray/kiran-notify-icon-window.c
@@ -198,6 +198,7 @@ kiran_notify_icon_window_focus_in_event(GtkWidget *widget,
break;
}
}
+ g_list_free(children);
}
return FALSE;
@@ -232,6 +233,7 @@ kiran_notify_icon_window_focus_out_event(GtkWidget *widget,
break;
}
}
+ g_list_free(children);
return FALSE;
}
@@ -415,6 +417,7 @@ kiran_notify_icon_window_icons_refresh(KiranNotifyIconWindow *window,
}
gtk_widget_set_size_request(GTK_WIDGET(window), max_row * 40, (row + 1) * 40);
+ g_list_free(children);
}
static void
diff --git a/src/tray/kiran-sn-icon.c b/src/tray/kiran-sn-icon.c
index f312458..a36040d 100644
--- a/src/tray/kiran-sn-icon.c
+++ b/src/tray/kiran-sn-icon.c
@@ -542,6 +542,10 @@ update(KiranSnIcon *icon)
}
gtk_image_set_from_surface(GTK_IMAGE(priv->image), surface);
+ if(surface)
+ {
+ cairo_surface_destroy(surface);
+ }
g_free(priv->icon);
priv->icon = g_strdup(priv->icon_name);
}
diff --git a/src/tray/kiran-tray.c b/src/tray/kiran-tray.c
index c169a1e..9b40d96 100644
--- a/src/tray/kiran-tray.c
+++ b/src/tray/kiran-tray.c
@@ -227,6 +227,7 @@ gsettings_changed_panel_icon_ids(GSettings *settings,
g_strfreev(panel_icon_ids);
}
+ g_list_free(children);
}
static void
@@ -494,6 +495,7 @@ kiran_tray_icons_refresh(KiranTray *tray)
NULL);
col++;
}
+ g_list_free(children);
}
static void
diff --git a/src/tray/kiran-x11-tray-icon.cpp b/src/tray/kiran-x11-tray-icon.cpp
index b31a97b..63e6a80 100644
--- a/src/tray/kiran-x11-tray-icon.cpp
+++ b/src/tray/kiran-x11-tray-icon.cpp
@@ -535,11 +535,7 @@ kiran_x11_tray_icon_new(Window icon_window)
icon->priv->has_desktop = FALSE;
}
}
- else
- {
- g_free(res_name);
- }
-
+ g_free(res_name);
g_free(res_class);
return GTK_WIDGET(icon);
--
2.36.1