blob: 92a6e8384d5f59acddb7490cded0810d25fe76be [file] [log] [blame]
Brad Bishopc342db32019-05-15 21:57:59 -04001From f86486e128f62ed5a531163535d11f0aa0268928 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
3Date: Sun, 5 May 2019 20:45:26 +0200
4Subject: [PATCH] Fix memory-leak and reduce cpu-load slightly
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9* when setting font remove old css provider befor setting new
10 -> fix memory leak
11* do call cpufreq_label_set_font only on init and when font was changed
12 -> reduce cpu-load
13
14Fixes https://bugzilla.xfce.org/show_bug.cgi?id=15218
15
16Upstream-Status: Submitted [1]
17
18[1] https://bugzilla.xfce.org/attachment.cgi?id=8492
19
20Signed-off-by: Andreas MΓΌller <schnitzeltony@gmail.com>
21---
22 panel-plugin/xfce4-cpufreq-configure.c | 4 ++++
23 panel-plugin/xfce4-cpufreq-plugin.c | 13 +++++++++++--
24 panel-plugin/xfce4-cpufreq-plugin.h | 2 ++
25 3 files changed, 17 insertions(+), 2 deletions(-)
26
27diff --git a/panel-plugin/xfce4-cpufreq-configure.c b/panel-plugin/xfce4-cpufreq-configure.c
28index 1205fc9..48e72ff 100644
29--- a/panel-plugin/xfce4-cpufreq-configure.c
30+++ b/panel-plugin/xfce4-cpufreq-configure.c
31@@ -85,7 +85,10 @@ button_fontname_update(GtkWidget *button, gboolean update_plugin)
32 }
33
34 if (update_plugin)
35+ {
36+ cpufreq_label_set_font ();
37 cpufreq_update_plugin (TRUE);
38+ }
39 }
40
41
42@@ -155,6 +158,7 @@ button_fontcolor_clicked (GtkWidget *button, void *data)
43 gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (button), color);
44 cpuFreq->options->fontcolor = gdk_rgba_to_string (color);
45 g_free (color);
46+ cpufreq_label_set_font ();
47 cpufreq_update_plugin (TRUE);
48 }
49
50diff --git a/panel-plugin/xfce4-cpufreq-plugin.c b/panel-plugin/xfce4-cpufreq-plugin.c
51index e886121..8d7c9e5 100644
52--- a/panel-plugin/xfce4-cpufreq-plugin.c
53+++ b/panel-plugin/xfce4-cpufreq-plugin.c
54@@ -44,6 +44,7 @@ cpufreq_label_set_font (void)
55 {
56 gchar *css = NULL, *css_font = NULL, *css_color = NULL;
57 GtkCssProvider *provider;
58+ GtkStyleContext *context;
59 PangoFontDescription *font;
60
61 if (G_UNLIKELY (cpuFreq->label == NULL))
62@@ -76,11 +77,17 @@ cpufreq_label_set_font (void)
63 if (css)
64 {
65 provider = gtk_css_provider_new ();
66+ context = GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (cpuFreq->label)));
67+
68+ if (currentProvider)
69+ gtk_style_context_remove_provider (context, currentProvider);
70
71 gtk_css_provider_load_from_data (provider, css, -1, NULL);
72 gtk_style_context_add_provider (
73- GTK_STYLE_CONTEXT (gtk_widget_get_style_context (GTK_WIDGET (cpuFreq->label))),
74+ context,
75 GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
76+
77+ currentProvider = provider;
78 }
79
80 g_free (css);
81@@ -420,7 +427,6 @@ cpufreq_update_plugin (gboolean reset_label_size)
82
83 if (cpuFreq->layout_changed)
84 {
85- cpufreq_label_set_font ();
86 cpufreq_widgets_layout ();
87 }
88
89@@ -601,6 +607,7 @@ cpufreq_widgets (void)
90
91 gtk_widget_show_all (cpuFreq->button);
92
93+ cpufreq_label_set_font ();
94 cpufreq_update_plugin (TRUE);
95 }
96
97@@ -775,6 +782,8 @@ cpufreq_construct (XfcePanelPlugin *plugin)
98 {
99 xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
100
101+ currentProvider = NULL;
102+
103 cpuFreq = g_new0 (CpuFreqPlugin, 1);
104 cpuFreq->options = g_new0 (CpuFreqPluginOptions, 1);
105 cpuFreq->plugin = plugin;
106diff --git a/panel-plugin/xfce4-cpufreq-plugin.h b/panel-plugin/xfce4-cpufreq-plugin.h
107index a6895e4..6338698 100644
108--- a/panel-plugin/xfce4-cpufreq-plugin.h
109+++ b/panel-plugin/xfce4-cpufreq-plugin.h
110@@ -95,6 +95,8 @@ typedef struct
111
112 CpuFreqPlugin *cpuFreq;
113
114+GtkCssProvider *currentProvider;
115+
116 G_BEGIN_DECLS
117
118 void
119--
1202.20.1
121