[gnome-control-center/wip/carlosg/wacom-calibrator-style-leaks: 2/2] wacom: Dispose custom style provider with calibrator
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center/wip/carlosg/wacom-calibrator-style-leaks: 2/2] wacom: Dispose custom style provider with calibrator
- Date: Wed, 1 May 2019 14:11:37 +0000 (UTC)
commit 8f825c5cc0d52845d85349d4399cc84bf2ecaa27
Author: Carlos Garnacho <carlosg gnome org>
Date: Wed May 1 16:06:59 2019 +0200
wacom: Dispose custom style provider with calibrator
Each CalibArea created adds a style provider that is never removed,
remove it on calib_area_free() to avoid the leak.
https://gitlab.gnome.org/GNOME/gnome-control-center/issues/504
panels/wacom/calibrator/calibrator-gui.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
---
diff --git a/panels/wacom/calibrator/calibrator-gui.c b/panels/wacom/calibrator/calibrator-gui.c
index 661fc519d..caff030c8 100644
--- a/panels/wacom/calibrator/calibrator-gui.c
+++ b/panels/wacom/calibrator/calibrator-gui.c
@@ -46,6 +46,7 @@ struct CalibArea
GtkBuilder *builder;
GtkWidget *error_revealer;
GtkWidget *clock;
+ GtkCssProvider *style_provider;
FinishCallback callback;
gpointer user_data;
@@ -310,7 +311,6 @@ calib_area_new (GdkScreen *screen,
GdkWindow *window;
GdkCursor *cursor;
#endif /* FAKE_AREA */
- GtkCssProvider *provider;
GtkGesture *press;
g_return_val_if_fail (callback, NULL);
@@ -328,11 +328,10 @@ calib_area_new (GdkScreen *screen,
calib_area->window = GTK_WIDGET (gtk_builder_get_object (calib_area->builder, "window"));
calib_area->error_revealer = GTK_WIDGET (gtk_builder_get_object (calib_area->builder, "error_revealer"));
calib_area->clock = GTK_WIDGET (gtk_builder_get_object (calib_area->builder, "clock"));
-
- provider = gtk_css_provider_new ();
- gtk_css_provider_load_from_resource (provider,
"/org/gnome/control-center/wacom/calibrator/calibrator.css");
+ calib_area->style_provider = gtk_css_provider_new ();
+ gtk_css_provider_load_from_resource (calib_area->style_provider,
"/org/gnome/control-center/wacom/calibrator/calibrator.css");
gtk_style_context_add_provider_for_screen (gtk_widget_get_screen (calib_area->window),
- GTK_STYLE_PROVIDER (provider),
+ GTK_STYLE_PROVIDER (calib_area->style_provider),
GTK_STYLE_PROVIDER_PRIORITY_USER);
cc_clock_set_duration (CC_CLOCK (calib_area->clock), MAX_TIME);
@@ -420,6 +419,8 @@ calib_area_free (CalibArea *area)
{
g_return_if_fail (area != NULL);
+ gtk_style_context_remove_provider_for_screen (gtk_widget_get_screen (area->window),
+ GTK_STYLE_PROVIDER (area->style_provider));
gtk_widget_destroy (area->window);
g_free (area);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]